
LM35是一款只需要一個類比接口就可以使用的溫度感測器,但在使用前需要知道它的眉角(台語),首先我們來參考一下它的 Datasheet,從它的 Datasheet可以知道電壓與溫度的關係,當0度C時我們量測到的電壓為 0V,每上升1度C電壓就增加 10mV,知道這個眉角後我們就能透過計算得出我們實際的溫度是幾度。
材料清單
小編使用 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來製作一個可愛的溫度計,那就下次再見啦~