湯鍇杰, 栗 燦, 王 迪, 張 琴
(重慶交通大學(xué) 機(jī)電與汽車工程學(xué)院,重慶 400074)
測溫系統(tǒng)在糧食倉儲、醫(yī)療保健、交通運(yùn)輸、智能家居和溫室大棚以及電力電訊系統(tǒng)等領(lǐng)域都有廣泛應(yīng)用,帶有報警功能的系統(tǒng)還能減少溫度事故的風(fēng)險[1]。
目前,測溫裝置采集的溫度值仍以模擬信號為主,微處理器只能處理數(shù)字信號,需先A/D轉(zhuǎn)換,使得裝置結(jié)構(gòu)復(fù)雜、精度不高,數(shù)字式溫度傳感器的出現(xiàn)解決這一問題。以DS18B20為代表的新型數(shù)字溫度傳感器集溫度采集和A/D轉(zhuǎn)換于一體,直接輸出數(shù)字信號,與單片機(jī)接口電路簡單[2]。DS18B20具有單總線、體積小、分辨率高、抗干擾強(qiáng)等特點(diǎn),在凍土區(qū)公路路基溫度場測量[3]和軸承溫度檢測[4]等場合都有應(yīng)用。該傳感器有唯一的64位序列號,單信號線能掛多器件,實(shí)現(xiàn)遠(yuǎn)距離、多點(diǎn)分布式測溫。
本文以51單片機(jī)為處理核心,利用DS18B20組成測溫模塊,加上按鍵模塊、顯示模塊和報警模塊等,設(shè)計出一種多場合適用的數(shù)字式溫度采集報警系統(tǒng),實(shí)現(xiàn)指定溫度的同步采集、顯示、報警和控制多重功能。該測溫報警系統(tǒng)已通過PROTUS仿真平臺的模擬仿真測試,并用電路板成功驗(yàn)證其功能,裝置運(yùn)行穩(wěn)定、測溫效果好、誤差小。
該系統(tǒng)包括核心AT89S52單片機(jī)及其外圍電路、測溫模塊(DS18B20數(shù)字式溫度傳感器)、電源模塊、顯示模塊(驅(qū)動電路、多位LED數(shù)碼管)、按鍵模塊、報警模塊(蜂鳴器、LED發(fā)光二極管),如圖1所示。
圖1 測溫系統(tǒng)框圖
采用DS18B20智能溫度傳感器,輸出數(shù)字信號,無需處理和轉(zhuǎn)換,只要嚴(yán)格遵守DS18B20的讀寫時序就能準(zhǔn)確讀取實(shí)時溫度[5]。
該系統(tǒng)精度高,程序相對復(fù)雜,但電路簡單、體積小,有利于系統(tǒng)的智能化和輕量化。單總線掛多片DS18B20,微機(jī)只需一根數(shù)據(jù)線能與多片DS18B20通信的特點(diǎn)[6]也符合多點(diǎn)測溫的要求。
本系統(tǒng)處理器選用AT89S52單片機(jī)。AT89S52是Atmel公司的一種高性能、低功耗8位CMOS微處理器,8K系統(tǒng)可編程FLASH存儲器使其下載線路簡單,并能實(shí)現(xiàn)串并行模式的在線編程[7]。該芯片內(nèi)部有3個16位定時/計數(shù)器,1個全雙工串行口,4個I/O口和256 bytes的RAM,程序調(diào)試方便。
DS18B20溫度傳感器是DALLAS半導(dǎo)體公司生產(chǎn)的一線式智能數(shù)字溫度傳感器,是世界上首片支持“單線總線”接口的溫度傳感器,具有傳輸距離遠(yuǎn)、體積小、接口簡單等特點(diǎn)[8]。
DS18B20內(nèi)部主要由溫度傳感器、配置寄存器、64位的ROM和高低報警觸發(fā)器TH和TL等部件構(gòu)成[9],其中,光刻ROM是實(shí)現(xiàn)多點(diǎn)測溫的關(guān)鍵。
溫度測量轉(zhuǎn)換后以16位帶符號擴(kuò)展的二進(jìn)制補(bǔ)碼形式輸出,儲存在DS18B20 2個8 bit的RAM中。
系統(tǒng)的硬件電路主要由測溫模塊、電源模塊、顯示模塊、報警模塊和按鍵模塊這5大模塊組成??傮w電路原理圖如圖2所示,AT89S52單片機(jī)接一個11.059 2 MHz的晶振電路提供外部時鐘,復(fù)位端RESET接看門狗電路,形成一個最小單片機(jī)系統(tǒng)。
系統(tǒng)能實(shí)現(xiàn)以下功能:
1)DS18B20采集溫度,單片機(jī)負(fù)責(zé)對傳感器的通信和控制;2)顯示模塊實(shí)時顯示處理后的溫度值;3)報警模塊監(jiān)測溫度范圍,當(dāng)超過溫度上下限時利用LED二極管和蜂鳴器產(chǎn)生報警信號,提醒使用者采取措施;4)按鍵模塊根據(jù)需要設(shè)置報警值,提高實(shí)用性。
電路采用+5 V的工作電壓為單片機(jī)、采集、報警等電路供電,硬件制作時另外加入一個獨(dú)立電源模塊。
DS18B20利用單總線特點(diǎn),通過一只4.7 kΩ上拉電阻器把溫度輸出端DQ和P0.3口相連,單片機(jī)通過該導(dǎo)線對初始化傳感器和完成溫度采集。傳感器的GND接地,VDD可以采用數(shù)據(jù)線供電,也可以采用外部供電,為提高抗干擾能力,本設(shè)計采用外部電源供電方式。
圖2 硬件電路結(jié)構(gòu)
為節(jié)約硬件接口,采用動態(tài)掃描顯示方案。動態(tài)掃描是循環(huán)移位法,利用人眼的視覺暫留實(shí)現(xiàn)連續(xù)顯示的效果。本設(shè)計采用6位帶小數(shù)點(diǎn)的8段共陰極數(shù)碼管來顯示溫度值,其中,第一位是正負(fù)符號位,第二,三,四,五位分別顯示溫度的百位、十位、個位和小數(shù)位數(shù)值,最后一位顯示溫度單位℃。單片機(jī)的P2口(P2.0~P2.7共8位對應(yīng)8個字段)通過驅(qū)動芯片74LS245與數(shù)碼管的段選公共信號線相連,P3口的P3.0~P3.5與數(shù)碼管的位選信號線相連,實(shí)現(xiàn)位選控制。
為了增加安全系數(shù),報警電路采用聲光雙重保障的報警方式,包括1個蜂鳴器和2個不同顏色的LED發(fā)光二極管。采集的溫度不斷地與設(shè)定的溫度閾值比較,當(dāng)溫度高于上限閾值時,P3.7口的蜂鳴器發(fā)出高頻報警信號,同時點(diǎn)亮P0.6口的紅色LED燈,進(jìn)行高溫報警;當(dāng)溫度低于下限閾值時,蜂鳴器發(fā)出低頻報警信號,同時點(diǎn)亮P0.7口的藍(lán)色LED燈,進(jìn)行低溫報警。
通過按鍵實(shí)現(xiàn)人機(jī)交互,調(diào)整溫度閾值,使系統(tǒng)適用更多場合。此模塊由兩部分組成,一部分是控制按鍵(K1~K4),另一部分是指示燈,占用單片機(jī)P1.0~P1.5端口,具體見圖3。當(dāng)按下K1,紅燈亮,表明進(jìn)入上限設(shè)置狀態(tài),通過按鍵K2(+)和K3(-)調(diào)整溫度,同時顯示模塊同步顯示溫度值設(shè)置,調(diào)整完成后再次按下K1退出。下限溫度值調(diào)整(K4)過程與上限一致,不再贅述。
DS18B20硬件電路簡單,須用相對復(fù)雜的軟件設(shè)計提供合理的邏輯時序,才能保證工作的可靠準(zhǔn)確[10]。DS18B20主要包括初始化、總線讀取和總線寫入3種操作,而且都必須嚴(yán)格遵循時序要求,下面將對這三方面進(jìn)行深入分析。
根據(jù)DS18B20的通信協(xié)議,傳感器在工作時必須利用其提供的ROM指令和存儲器RAM指令進(jìn)行操作,2種指令都以8 bit字長的十六進(jìn)制形式在程序中出現(xiàn),常用的代碼和具體含義如表1和表2所示。每次溫度轉(zhuǎn)換一般都經(jīng)過三步:復(fù)位操作、發(fā)送ROM指令、發(fā)送RAM指令,然后讀取溫度。
表1 ROM指令
表2 RAM指令
初始化是DS18B20底層基本操作之一,相當(dāng)在單片機(jī)和傳感器之間建立通信橋梁,為后面操作做準(zhǔn)備。初始化脈沖包括CPU發(fā)出的復(fù)位脈沖和傳感器發(fā)出的響應(yīng)脈沖。初始化脈沖時序如圖3所示。
圖3 DS18B20初始化時序
主機(jī)先發(fā)出480~960 μs的復(fù)位脈沖(低電平信號),然后釋放總線進(jìn)入接收模式(RX),當(dāng)DS18B20檢測到總線釋放時的上升沿后等待15~60 μs,然后發(fā)出一個延時60~240 μs的低電平響應(yīng)脈沖,此時傳感器的DQ置1,主機(jī)也置1,初始化過程完畢,傳感器處于既可讀取又可寫入的狀態(tài)。
單片機(jī)向DS18B20寫數(shù)據(jù),是指令和數(shù)據(jù)發(fā)送的基本操作,采用位右移操作實(shí)現(xiàn)低位在前高位在后的逐位寫入,主要包括寫“0”和寫“1”2種時序。寫時序從主機(jī)拉低總線大于1 μs開始,在隨后的15 μs內(nèi)把待發(fā)送的信號發(fā)送至DQ上,等待傳感器對其進(jìn)行采樣,傳感器在45 μs內(nèi)完成對數(shù)據(jù)的采集。數(shù)據(jù)采集時,如果總線是高電平,寫入邏輯“1”;反之,寫入邏輯“0”。從圖4的寫時序看出,一個寫周期至少需要60 μs,2個寫周期之間須有一個大于1 μs的間隔。
圖4 DS18B20寫入時序
單片機(jī)從DS18B20讀取數(shù)據(jù),包括溫度的采集和其他狀態(tài)信息的回傳,也是以位為單位,包括讀“0”和讀“1”兩種時序。讀取也是以總線拉低至少1 μs作為啟動信號,然后置1并保持至少60 μs進(jìn)入接收狀態(tài)。傳感器在接收到啟動信號后15 μs內(nèi)把數(shù)據(jù)(0或1)發(fā)送到DQ端供單片機(jī)讀取,主機(jī)由低到高依次讀取8位二進(jìn)制數(shù),隨后的45 μs又釋放總線。讀時序如圖5所示,這是一個讀“1”的時序圖,即使主機(jī)在15 μs內(nèi)就完成數(shù)據(jù)讀取,仍要求1個讀周期應(yīng)大于60 μs,且2個讀周期之間要有一個大于1 μs的恢復(fù)間隔。
圖5 DS18B20讀取時序
下面以溫度采集程序?yàn)槔?,對源代碼進(jìn)行簡單說明:
∥功能:啟動DS18B20溫度轉(zhuǎn)換
Void Convert_18B20(Void)
{RST_18B20(); ∥初始化
WR_18B20(0xcc); ∥跳過ROM識別
WR_18B20(0x44); ∥啟動溫度轉(zhuǎn)換}
∥功能:讀取返回DS18B20溫度值
Int Read_18B20(Void)
{RST_18B20(); ∥初始化
WR_18B20(0xcc); ∥跳過ROM識別
WR_18B20(0xbe); ∥讀DS18B20暫存器
Temp_8[0]=RD_18B20; ∥讀溫度低位
Temp_8[1]=RD_18B20; ∥讀溫度高位
return(Temp_8); ∥返回2字節(jié)溫度值}
測試溫度值如表3。
表3 真實(shí)值與測量值對比
系統(tǒng)誤差小于0.5,測試結(jié)果表明:系統(tǒng)的精確度較高,實(shí)用性強(qiáng)。
本文設(shè)計了一種基于AT89S52單片機(jī)和DS18B20數(shù)字溫度傳感器的溫度采集報警系統(tǒng),對軟硬件設(shè)計進(jìn)行詳細(xì)說明。該設(shè)計具有結(jié)構(gòu)簡單、精度高和穩(wěn)定性好等優(yōu)點(diǎn), 適用于糧倉、電力機(jī)房、軸瓦、空調(diào)、冰箱和工農(nóng)業(yè)等領(lǐng)域,DS18B20單總線和多點(diǎn)式測溫特點(diǎn)使其擴(kuò)展性加強(qiáng),具有廣闊的市場前景。
參考文獻(xiàn):
[1] 李會聰.DS18B20多點(diǎn)測溫方法探討[J].微計算機(jī)信息,2010,26 (9):166-167,188.
[2] 張宇寧,周 穎.DS18B20數(shù)字式溫度測量裝置的研究[J].機(jī)械工程與自動化,2012(4):149-151.
[3] 何東坡,任貴波,韓春鵬 ,等.DS18B20在季凍土區(qū)公路路基溫度場測量中的應(yīng)用[J ].電子技術(shù)應(yīng)用,2010,36 (4 ):48-50.
[4] 張海傳,吳晨霞,許東衛(wèi),等.低功耗軸承溫度無線檢測系統(tǒng)的設(shè)計[J ].電子技術(shù)應(yīng)用,2009,35 (10 ):96-98,102.
[5] 趙海蘭,趙祥偉.智能溫度傳感器DS18B20的原理與應(yīng)用[J].現(xiàn)代電子技術(shù),2003(4):32-34.
[6] 潘 勇,孟慶斌.基于DS18B20的多點(diǎn)溫度測量系統(tǒng)設(shè)計[J].電子測量技術(shù),2008(9):91-93.
[7] 胡亞琦.單片機(jī)原理及應(yīng)用系統(tǒng)設(shè)計[M].西安:西安電子科技大學(xué)出版社,2010,10.
[8] 劉建亭,毛善坤.DS18B20工作原理及基于C語言的接口設(shè)計[J].儀器儀表用戶,2005(6):138-140.
[9] Qiao Xiaojun,He Xiuhong.Design and implement of multi-point soil temperature measurement system[J].Journal of Shenyang Agricultural University,2006(37):126-127.
[10] 顧振宇,劉魯源,杜振輝.DS18B20接口的C語言程序設(shè)計[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2002(7):22-24.