今天偷懶一下,幾本上TMP36 跟LM35一樣每度C會多10mV的輸出,不一樣的是TMP36有偏移500mV的電壓,也就是25度C時電壓輸出是750mV要記得轉換時扣掉.
/*
這是用 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; //指定TMP36輸入到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 - 0.5) * 100 ; // TMP36有500mV的偏移電壓要先扣除,在把電壓轉成溫度,每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);
}
沒有留言:
張貼留言