Arduino + LM35 溫度計 Nokia 5110 LCD 顯示
LM35 是類比溫度感測IC,使用5V電源 溫度每增加 1度C輸出增加 10mV,在25度C時輸出是250mV,是一個很方便的感溫零件.
Arduino ADC是10位元,也就是會把電壓分時1024等份,而這1024等份怎麼分就是用基準電壓在分,Arduino 在沒指定的狀況下基準是5V,所以每位元電表的電壓是5/1024=0.00488V,LM35每度是0.01V 所以LM35經Arduino轉換後能得到的解析度約為0.5度,如果基準電壓降為2.5V那Arduino轉換後解析度會是0.25度C,但是Arduino並無2.5V的電源,所以就用Aeduino上有的3.3V做為基準,3.3V為基準能得到的解析度為 3.3/1024=0.00322V約為0.33度C.
這回一樣是用 Noika 5510 LCD 做演示.
程式碼
/*
這是用 Adafruit LCD 驅動程式是在 Adafruit 下載
https://www.adafruit.com/products/338
雖然是 BSD License 還是呼籲多買 Adafruit 的產品
Adafruit 老闆是美女喔!!
LCD 腳位定義
pin 7 - Serial clock out (SCLK)
pin 6 - Serial data out (DIN)
pin 5 - Data/Command select (D/C)
pin 4 - LCD chip select (CS)
pin 3 - LCD reset (RST)
*/
#include "Adafruit_GFX.h" //LCM 定義程式!!這三個要擺一起!!!
#include "Adafruit_PCD8544.h"
Adafruit_PCD8544 display = Adafruit_PCD8544 (7, 6, 5, 4, 3); //LCD 的腳位定義
#define aref_voltage 3.3 //指定基準電壓
int tempPin = 0; //指定LM35輸入到Arduino的腳位
int tempReading;
void setup(void) {
display.begin(); //這是 Adafruit_PCD8544 Library 定義的
display.setContrast(60); //LCD 對比
delay(1000);
display.clearDisplay(); // 清除LCD內容
display.setTextSize(2); // 設定LCD自形大小
display.setTextColor(BLACK); //定義LCD顏色顏色
Serial.begin(9600);
analogReference(EXTERNAL);
}
void loop(void) {
tempReading = analogRead(tempPin); //讀電LM35輸出壓值
float voltage = tempReading * aref_voltage; //基準電壓與ADC後的值轉換
voltage /= 1024.0;
float temperatureC = voltage * 100 ; // 把電壓轉成溫度,每10mV 1度
Serial.print(temperatureC); Serial.println(" degrees C"); //串列埠輸出溫度C
display.clearDisplay(); // 清除LCD內容
display.print(temperatureC); // 顯示測到的溫度 度C
display.println("C"); // 顯示字串 "C" 然後換行
float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0; //將度C轉成度F
Serial.print(temperatureF); Serial.println(" degrees F"); //串列埠輸出溫度C
display.print(temperatureF); // 顯示測到的溫度 度F
display.println("F"); // 顯示字串 "F" 然後換行
display.display();
delay(1000);
}
上傳後 串列埠也會有輸出
沒有留言:
張貼留言