2016年1月9日 星期六

Arduino TMP36 + Nokia 5110 溫度計

       今天偷懶一下,幾本上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);
}



沒有留言:

張貼留言