基于AVR單片機對熱敏電阻的溫度測量
![基于AVR單片機對熱敏電阻的溫度測量](http://editerupload.eepw.com.cn/fetch/20140120/216174_2_0.jpg)
4 軟件設(shè)計
基于ATmage88捕獲中斷測溫程序流程圖如圖5所示,包括主程序流程圖,捕獲中斷流程圖和定時溢出中斷流程圖。
![基于AVR單片機對熱敏電阻的溫度測量](http://editerupload.eepw.com.cn/fetch/20140120/216174_2_1.jpg)
ATmage88定時器初始化涉及TCCR1B,TIMSK1控制寄存器的配置,介紹如下:
![基于AVR單片機對熱敏電阻的溫度測量](http://editerupload.eepw.com.cn/fetch/20140120/216174_2_2.jpg)
ICNC1:輸入捕捉噪聲抑制器,“1”啟用;
ICES1:捕捉觸發(fā)沿選擇,“1”上升沿,“0”下降沿;
CS1[2:0]:時鐘選擇,有多種預(yù)分頻時鐘可供選擇;
ICIE1:T/C1輸入捕捉中斷使能;
TOIE1:T/C1溢出中斷使能。
定時器T1初始化代碼如下(AVR-GCC):
![基于AVR單片機對熱敏電阻的溫度測量](http://editerupload.eepw.com.cn/fetch/20140120/216174_2_3.jpg)
其中宏定義Tp=0;Tt=1;需要定義數(shù)組:
uint16_t timeL[2],timeH[2],counter[2]
當(dāng)測量時間超過定時器最長計時時,定時器會溢出,定時器T1溢出中斷函數(shù)代碼如下:
![基于AVR單片機對熱敏電阻的溫度測量](http://editerupload.eepw.com.cn/fetch/20140120/216174_2_4.jpg)
最后通過查表法就可以得到測量的溫度。查表溫度間隔一般為1℃,如果忽略熱敏電阻1℃以內(nèi)的非線性誤差,可以將兩攝氏度之間取線性計算,這樣可以得到0.1℃的分辨率。
5 結(jié) 語
筆者應(yīng)用該方法已設(shè)計出一款溫度計,在范圍-10~80℃時,分辨率達到0.1℃,誤差在0.5℃以內(nèi)。本文充分利用了AVR的捕獲功能,使得電路簡潔,成本低廉。
評論