在單片機與 Arduino 專案中,LM35 溫度感測器 是一款非常經典且易於使用的類比溫度感測元件。與需要複雜通訊協定的數位感測器(如 DS18B20)不同,LM35 直接輸出與攝氏溫度成正比的線性電壓訊號,非常適合用來學習 Arduino 的 類比輸入(Analog Input / ADC) 應用。
本篇文章將手把手帶你了解 LM35 的運作原理,並提供完整的接線說明與 Arduino 程式碼。
什麼是 LM35 溫度感測器?
LM35(常見封裝版本為 LM35DZ)是一款精密的攝氏溫度感測器,其輸出電壓與攝氏溫度(°C)成 絕對線性關係。
LM35 核心規格與特點:
線性輸出: 溫度每升高 ,輸出電壓增加 (即 )。
零度基準: 在 時,輸出電壓為 。
工作電壓廣: 支援 DC 至 供電(常用 )。
測量範圍與精度: 典型量測範圍為 至 ,在室溫 下精度高達 。
低功耗: 工作電流小於 ,自我發熱極低(在靜止空氣中小於 )。
LM35 溫度計算公式推導
Arduino Uno 的類比輸入腳位(A0~A5)具有 10 位元(10-bit)的模數轉換器(ADC),能將 的電壓轉為 的數位數值:
讀取電壓值(V):
換算為毫伏特(mV):
計算攝氏溫度(°C): 由於每 ,因此:
實驗所需硬體材料
進行本實作前,請準備以下電子零件(可前往商店選購):
Arduino Uno R3 開發板 x 1
USB 傳輸線 x 1
LM35 / LM35DZ 溫度感測器 x 1
麵包板與杜邦跳線 若干
🛍️ 準備好你的硬體工具了嗎?
推薦選購:點擊連結可直接前往商城選購
硬體電路接線說明
將 LM35 的 有字平坦面(TO-92 封裝)朝向自己,腳位由左至右依序為 Pin 1 (VCC)、Pin 2 (Out)、Pin 3 (GND)。
⚠️ 重要提醒: 請務必確認接線方向!如果 VCC 與 GND 接反,LM35 會迅速發熱甚至燒毀。
完整 Arduino 程式碼範例
這裡提供兩種程式寫法:一種為精準浮點數寫法(推薦),另一種為使用位移運算優化的高效寫法。
推薦寫法:高精度浮點數讀取範例
// 定義 LM35 接在 Arduino 的類比腳位 A3
const int lm35Pin = A3;
void setup() {
// 初始化序列埠通訊,鮑率設定為 9600
Serial.begin(9600);
Serial.println("LM35 溫度感測器初始化完成!");
}
void loop() {
// 讀取 A3 腳位的類比數值 (0 ~ 1023)
int val = analogRead(lm35Pin);
// 根據公式計算攝氏溫度 (5.0V / 1024 / 0.01V)
float tempC = (val * 500.0) / 1024.0;
// 輸出結果至序列埠監控視窗
Serial.print("目前環境溫度: ");
Serial.print(tempC, 1); // 保留一位小數
Serial.println(" °C");
// 每 0.5 秒更新一次資料
delay(500);
}
進階寫法:位移運算優化寫法(適合記憶體受限專案)
利用 的位移計算,可在不調用浮點數運算庫的情況下快速算出整數溫度:
void setup()
{
Serial.begin(9600);
}
void loop()
{
unsigned int val; //定義變數val
unsigned int dat;//定義變數dat
val=analogRead(3);//將val設置為讀取到的A3的數值
dat=(125*val)>>8;//計算當前溫度數字dat
Serial.print("Temp:"); //顯示 Temp:
Serial.print(dat); //顯示計算的温度值
Serial.println("C");//顯示C,並自動換行
delay(500); //延遲0.5S
}成果驗證與測試
將 Arduino Uno 經由 USB 線連接至電腦並上傳程式。
開啟 Arduino IDE 的 序列埠監控視窗(Serial Monitor),並選擇 9600 baud。
視窗會每隔 0.5 秒印出當前環境溫度。
測試方式: 用手指輕輕按壓 LM35 表面,體溫會使感測器輸出電壓上升,序列埠呈現的溫度數值便會隨之升高。
常見問題與除錯(FAQ)
Q1:為什麼讀取到的溫度數值一直浮動跳動?
類比訊號容易受到電源噪訊影響。建議處理方式:
多重採樣取平均值: 在程式中連續讀取 10 次並計算平均值。
加上濾波電容: 在 LM35 的 VCC 與 GND 之間並聯一個 (104)瓷片電容。
Q2:LM35 與 DS18B20、DHT11 有什麼不同?該如何選擇?
LM35: 類比輸出,不需安裝第三方程式庫,反應快速,適合基礎學習與簡單溫度監控。
DS18B20: 數位單線(1-Wire)傳輸,抗干擾能力強,支援防水探頭與多點串接。
DHT11: 同時支援溫度與濕度量測,但溫度精確度較低。
延伸學習與推薦教學



