熱敏電阻價(jià)格便宜,易于用于溫度測(cè)量。唯一復(fù)雜的部分是用于將電壓輸出電平轉(zhuǎn)換為測(cè)量溫度的數(shù)學(xué)運(yùn)算,但是我們?cè)谙旅娴腁rduino草圖中為您提供了這一點(diǎn)。
本教程中使用的軟件可以在這里下載:
Arduino熱敏電阻軟件
本教程中使用的硬件:
- 熱敏電阻溫度傳感器 (您還需要一個(gè)10k電阻)。
- Arduino板(Uno,Mega,Duemilanove等)
說明:
-----
如果這是您的第一個(gè)Arduino項(xiàng)目,請(qǐng)首先閱讀我們的“ Arduino:入門 ”教程。
-----
我們將使用LCD讀取熱敏電阻的溫度。按照我們的Arduino LCD教程,使液晶顯示器與您的Arduino一起工作。如果您不想使用LCD來獲取溫度讀數(shù),則可以隨時(shí)更改草圖以使用Arduino的串行連接到計(jì)算機(jī),從串行監(jiān)視器讀取溫度。
使用您的無焊料面包板做熱敏電阻連接:
軟件:
在這里下載示例Arduino熱敏電阻軟件,并解壓縮文件。
您現(xiàn)在將有一個(gè)名為“arduino_thermistor”的文件夾
啟動(dòng)Arduino軟件并通過點(diǎn)擊File-> Sketchbook-> Open來加載Arduino熱敏電阻的例子程序
導(dǎo)航到arduino_thermistor文件夾并選擇“arduino_thermistor.pde”文件。
點(diǎn)擊“Upload to I / O board”按鈕,將Arduino熱敏電阻草圖傳送到Arduino板上。上傳之后,您應(yīng)該看到LCD上顯示的當(dāng)前溫度。
這里是代碼:
/ *
Arduino熱敏電阻示例軟件
教程:http://www.hacktronics.com/Tutorials/arduino-thermistor-tutorial
Copyright(c)2010 Mark McComb,hacktronics LLC
許可證:http://www.opensource.org/licenses/mit -license.php(去瘋狂)
* /
#包括<LiquidCrystal.h>
的#include <math.h>中
/ *
LCD連接:
RS(LCD銷4)Arduino的銷12
RW(LCD引腳5)到Arduino的銷11
使(LCD引腳6)到Arduino引腳10
LCD引腳15到Arduino引腳13
LCD引腳d4,d5,d6,d7到Arduino引腳5,4,3,2
* /
液晶LCD(12,11,10, 3,2);
int backLight = 13; //引腳13將控制背光燈
void setup(void){
pinMode(backLight,OUTPUT);
digitalWrite(backLight,HIGH); //打開背光 將“HIGH”替換為“LOW”將其關(guān)閉。
lcd.begin(20,4); //行,列。使用16,2為一個(gè)16x2液晶顯示器等
lcd.clear(); //開始一個(gè)空白的屏幕
lcd.setCursor(0,0); //設(shè)置光標(biāo)到列0,行0
}
double Thermister(int RawADC){
double Temp;
對(duì)于公式
Temp = log(((10240000 / RawADC) - 10000)),請(qǐng)參閱http://en.wikipedia.org/wiki/Thermistor 。
Temp = 1 /(0.001129148 +(0.000234125 * Temp)+(0.0000000876741 * Temp * Temp * Temp));
溫度=溫度 - 273.15; //將Kelvin轉(zhuǎn)換成Celcius
返回Temp;
}
void printTemp(void){
double fTemp;
double temp = Thermister(analogRead(0)); //讀取傳感器
lcd.clear();
lcd.setCursor(0,0);
lcd.print(“溫度是:”);
lcd.setCursor(0,1);
lcd.print(溫度);
lcd.print(“C /”);
fTemp =(temp * 1.8)+32.0; //轉(zhuǎn)換為美國(guó)
lcd.print(fTemp);
lcd.print(“F”);
if(fTemp> 68 && fTemp <78){
lcd.setCursor(0,3);
lcd.print(“非常舒服”);
}
}
void loop(void){
printTemp();
延遲(1000);
}