Arduino 專題教學-實測類比溫度感測器 LM35

類比溫度感測器 LM35

LM35是一款只需要一個類比接口就可以使用的溫度感測器,但在使用前需要知道它的眉角(台語),首先我們來參考一下它的 Datasheet,從它的 Datasheet可以知道電壓與溫度的關係,當0度C時我們量測到的電壓為 0V,每上升1度C電壓就增加 10mV,知道這個眉角後我們就能透過計算得出我們實際的溫度是幾度。

材料清單

ARDUINO UNO R3

LM35 類比溫度感測器

3條杜邦線(公/母)

小編使用 UNO來擔任這次教學的主角,接線圖如下:

接線圖
接線圖

我們從A0讀取到的值並不是溫度也不是電壓的實際值,需要經過百分比與單位換算才能得到我們想要的溫度值。Arduino UNO的 analog輸入(A0~A5)所能讀到的範圍是 0~1024,而Arduino電壓範圍為 0~5V,所以我們可以透過下面的公式得到轉換後的電壓為幾V:

轉換的電壓 = ( A0的值 / 1024 ) x 5

求得 A0轉換後的電壓值後,透過從 Datasheet知道的~每上升1度C電壓就增加 10mV,我們將轉換後的電壓值再除 10mV就可以得出溫度值了。

溫度 = 轉換的電壓 / 10mV

參考程式

//=========================================================
float Temp; //新增一個格式為浮點數的變數 Temp
void setup() {
Serial.begin(9600); //設定序列埠監控視窗的鮑率為 9600
pinMode(A0,INPUT); //設定 A0為輸入
}
void loop() {
Temp = analogRead(A0); //將A0讀到的值放入變數 Temp
Temp = (Temp / 1024 * 5) / 0.01; //透過計算轉換成溫度
Serial.println(Temp); //將溫度顯示在序列埠監控視窗
delay(1000); //延遲 1秒
}
//=========================================================

程式打好後就能打開序列埠監控視窗看看數值正不正確。

打開序列埠監控視窗查看數值是否正確

我們從監控視窗能看到數值與實際溫度差不多,也試著用手壓住感測器看看溫度上升的情形,發現溫度都有正常上升,但整體溫度讀值似乎不太穩定。對此小編相當苦惱,特別請教我們的神隊友大大來幫助我們。

我們需要透過取樣平均化來改進這樣的狀況,讓我們的數值不要這麼漂移。在程式當中會用到 for迴圈來加總10次測量到的溫度值,最後再除10來取得平均溫度。

參考程式

//=================================================
float Temp; //新增一個格式為浮點數的變數 Temp
float NewTemp = 0; //新增一個格式為浮點數的變數 NewTemp
//並設定 NewTemp初始值為0
void setup() {
Serial.begin(9600); //設定序列埠監控視窗的鮑率為 9600
pinMode(A0,INPUT); //設定 A0為輸入
}
void loop() {
for(char i=0;i<10;i++) { //for 迴圈,迴圈10次
Temp = analogRead(A0); //將A0讀到的值放入變數 Temp
Temp = (Temp / 1024 * 5) / 0.01; //透過計算轉換成溫度
NewTemp = NewTemp + Temp; //將讀取到的值加上NewTemp
//再放入NewTemp
}
NewTemp = NewTemp / 10; //將加了10次的值除10得平均
Serial.println(NewTemp); //將溫度顯示在序列埠監控視窗
delay(1000); //延遲 1秒
NewTemp = 0; //將NewTemp清為0
}
//=================================================

透過平均化後可以看到數值變得比較穩定了。

平均化後的數值

您是不是成功了呢? 本次的教學就到這邊啦,下次會教大家使用伺服馬達搭配這次學到的LM35來製作一個可愛的溫度計,那就下次再見啦~