2016年1月24日 星期日

Arduino UNO學習350.溫度計LM35


Arduino UNO學習350.溫度計LM35

此學習使用LM35DZ元件,是一顆有3隻腳的溫度感測元件,
測量範圍0~100度C,腳位為電源(印字面左)/訊號/GND,接錯會燒壞,

硬體準備
溫感元件LM35*1
 
 
LM35DZ溫感器的訊號關係為C=10mV=0.01V,
換算UNO輸入數據為電壓5V/1024=0.0049V,
即為腳位訊號*0.0049v/0.01v=1度C,
也就是訊號值*0.49就可得到幾度C,
並將得到的C值換算成F華氏=攝氏C*1.8+32,
打開監控視窗分別顯示”輸入訊號值+攝氏C+華氏F”
5秒傳送一次,ArduBlock拼圖如下↓
 
int _ABVAR_1_C = 0 ;

void setup()
{
Serial.begin(9600);
}

void loop()
{
Serial.print( analogRead(0) );
Serial.println();
        Serial.print( ( ( analogRead(0) * 0.0049 ) / 0.01 ) );
        Serial.print(" ");
Serial.print( "C" );
Serial.println();
        _ABVAR_1_C = ( ( analogRead(0) * 0.0049 ) / 0.01 ) ;
        Serial.print( ( ( _ABVAR_1_C * 1.8 ) + 32 ) );
        Serial.print(" ");
Serial.print( "F" );
Serial.println();
        delay( 5000 );
}
上傳執行後會先顯示原本得到的數據,再轉算為攝氏度,再顯示華氏度,
有發現不肖業者將便宜的三極管磨去標簽後重新印字販賣,
接上後數據會有規率性的高低起浮,可參考學習310內建範例-接收類比訊號
先套用內建範例>Basics>AnalogReadSerial
先取得讀取數據是否正常,再進行數據轉換,

簡化半秒顯示度C,加上int整數指令+0.5為四捨五入,方便顯示在液晶上用
 void setup()
{
Serial.begin(9600);
        Serial.begin(9600);
}

void loop()
{
 Serial.print( int ( ( ( analogRead(0) * 0.0049 ) / 0.01 )+0.5 ) );
 Serial.println();
 delay( 500 );
}

補充~非整數顯示小數1位
Serial.print((( analogRead(0) * 0.0049 ) / 0.01 ),1);

沒有留言:

張貼留言