李曉慧,周孝進(jìn),徐曉明
蘇州大學(xué)物理科學(xué)與技術(shù)學(xué)院,江蘇蘇州 215000
溫度是工業(yè)生產(chǎn)中常見的和最基本的參數(shù)之一,在生產(chǎn)過程中常需對溫度進(jìn)行檢測和監(jiān)控[1]。近年來,利用單片機(jī)和傳感器實(shí)現(xiàn)對溫度的精確測量,提高了生產(chǎn)的自動化程度,且成本低廉,應(yīng)用十分廣泛,因此,研究溫度的測量方法和裝置具有重要的意義[2]。本文所用溫度傳感器是美國DALLAS公司生產(chǎn)的DS18B20,它集溫度測量和A/D轉(zhuǎn)換于一體,直接輸出數(shù)字量,傳輸距離遠(yuǎn),可以很方便地實(shí)現(xiàn)多點(diǎn)測量,硬件電路結(jié)構(gòu)簡單,與單片機(jī)接口幾乎不需要外圍元件[3]。
本文研究的對象是分布式測溫系統(tǒng),之前關(guān)于這方面的研究還存在如下問題:1)單片機(jī)的選擇過于復(fù)雜;2)分布的點(diǎn)不夠多,不能反應(yīng)環(huán)境整體情況;3)多數(shù)系統(tǒng)僅有測溫顯示部分,缺少其他的輔助部件;4)有些模塊不簡化,系統(tǒng)過于冗雜等。本文在分布式測量的基礎(chǔ)上,采用多個(gè)數(shù)字溫度傳感器DS18B20結(jié)合Atmega16芯片和PC機(jī),設(shè)計(jì)出溫度采集和控制系統(tǒng)。該系統(tǒng)不僅能對多點(diǎn)溫度進(jìn)行測量和顯示,同時(shí)對遇到超出PC機(jī)的溫度設(shè)置范圍的情況能及時(shí)發(fā)出報(bào)警信號并控制功率設(shè)備工作。
DS18B20是一款單總線數(shù)字式溫度傳感器。測試溫度范圍為-55~+l25℃,精度為0.5℃,測量的溫度值用9~12位數(shù)字表示,最大轉(zhuǎn)換時(shí)間為750ms。轉(zhuǎn)換分辨率和溫度超標(biāo)報(bào)警的上、下限值都可由用戶設(shè)定。DS18B20利用DALLAS的單總線控制協(xié)議和單線控制信號在總路線上來實(shí)現(xiàn)數(shù)據(jù)的讀寫。它的工作電壓為3V~5.5V(將外部電源接在VDD腳),在沒有外部電源的情況下,電源由總線為高電平DQ腳上的上拉電阻提供(寄生供電模式),此時(shí)VDD腳接地。
DS18B20的具體測溫原理如下。低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于固定頻率的脈沖信號;高溫度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號作為脈沖輸入。根據(jù)低溫度系數(shù)晶振和高溫度系數(shù)晶振的差可以計(jì)算出準(zhǔn)確溫度。
當(dāng)DS18B20處于寫存儲器操作和溫度A/D轉(zhuǎn)換操作時(shí),總線上必須有很強(qiáng)的上拉,采用寄生電源供電方式時(shí)VDD和GND端需接地。另外,由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的。同時(shí),系統(tǒng)對DS18B20的各種操作必須按協(xié)議進(jìn)行,其操作協(xié)議為:初始化DS18B20——ROM功能命令——發(fā)存儲器操作命令——處理數(shù)據(jù)。
為了達(dá)到分布式溫度測量與顯示功能,系統(tǒng)分為5個(gè)模塊:電源模塊、測溫模塊、報(bào)警模塊、顯示模塊和控制模塊。該系統(tǒng)的整體結(jié)構(gòu)框圖如圖1所示:
圖1 系統(tǒng)結(jié)構(gòu)框圖
電源電路輸出電壓+5V的穩(wěn)壓電源,它由電源變壓器B,橋式整流電路BRIDGE,濾波電容C1、C3,防止自激電容C2、C4和一只固定式三端穩(wěn)壓器(LM7805)搭成的。
溫度傳感器用數(shù)字式DS18B20,采用單總線模式與單片機(jī)相連,逐個(gè)測得溫度,送到單片機(jī)處理,求得平均溫度。
顯示電路采用7SEG-MPX4-CC四位LED數(shù)碼管,PC口輸出斷碼,掃描通過PA.4-PA.7控制。單片機(jī)處理后的數(shù)據(jù)送到顯示口,先逐個(gè)顯示各個(gè)DS18B20的數(shù)據(jù),然后顯示平均值,同時(shí)在其中加入時(shí)間模塊,可以顯示出每個(gè)點(diǎn)的測溫時(shí)間。
報(bào)警電路由一個(gè)三極管和蜂鳴器所組成,其控制部分由三極管、二極管、電阻以及繼電器所組成,其信號是從單片機(jī)的一個(gè)準(zhǔn)雙向口輸出到三極管的基極。用鍵盤可以對報(bào)警的上下限進(jìn)行設(shè)置。報(bào)警裝置后連接一個(gè)功率控制單元(如電機(jī)、風(fēng)扇等設(shè)備),根據(jù)溫度與設(shè)定值的比較,相應(yīng)啟動該單元。
Atmega16單片機(jī)通過RS232和RS485的轉(zhuǎn)換接口與PC機(jī)相連,通過鍵盤的人機(jī)界面,控制運(yùn)行的程序和顯示結(jié)果的處理。
在設(shè)計(jì)程序時(shí),由于DS18B20采用單總線的數(shù)據(jù)傳輸方式,所有的輸入和輸出都是通過一條總線實(shí)現(xiàn)的,因此它的時(shí)序就顯得非常重要。所有的數(shù)據(jù)傳輸必須從字節(jié)的低位開始,編寫程序時(shí)必須按照其對應(yīng)的時(shí)序操作,否則不能獲得完整正確的數(shù)據(jù)。本系統(tǒng)程序主要分為主程序和子程序兩部分。
主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示, 讀出并處理DS18B20的測量溫度值。其主要包括4個(gè)部分,即初始化部分、讀取溫度值部分、調(diào)用顯示子程序以及結(jié)束返回部分。
讀出溫度子程序是先對單個(gè)DS18B20進(jìn)行溫度測量,然后用掃描方式,即每隔一秒讀取其中一個(gè),這樣依次讀取各個(gè)溫度值,用數(shù)碼管LED進(jìn)行顯示。
報(bào)警子程序是當(dāng)單片機(jī)讀取完數(shù)據(jù)后就開始檢測溫度值是否超過了預(yù)設(shè)的溫度值范圍。其程序流程圖如圖2所示:
圖2 報(bào)警子程序流程圖
圖3 實(shí)驗(yàn)結(jié)果顯示圖
本實(shí)驗(yàn)(以8個(gè)DS18B20為例)采用Proteus軟件進(jìn)行仿真。若以8個(gè)DS18B20計(jì)算,各點(diǎn)所測溫度為25℃,26℃,24℃,24.5℃,26.5℃,26℃,25℃,25.5℃,則用數(shù)學(xué)方法得平均溫度為25.3125℃,而顯示溫度為25.3℃。結(jié)果如圖3所示(見左圖)。
本文設(shè)計(jì)的分布式溫度測量和控制系統(tǒng),有效地結(jié)合了多個(gè)DS18B20芯片進(jìn)行分布式溫度采集,并且實(shí)時(shí)顯示。Atmega16芯片可以根據(jù)PC機(jī)的溫度設(shè)置范圍發(fā)出報(bào)警和控制信號。實(shí)驗(yàn)結(jié)果表明,本系統(tǒng),可以有效地對8個(gè)點(diǎn)的溫度進(jìn)行測量并分別顯示,遇到超出PC機(jī)的溫度設(shè)置范圍的情況能及時(shí)發(fā)出報(bào)警信號并控制風(fēng)機(jī)設(shè)備工作。系統(tǒng)可以廣泛應(yīng)用在工農(nóng)業(yè)等溫度測量及控制領(lǐng)域。
本文設(shè)計(jì)的系統(tǒng)的各模塊采用有線銜接方式,有待集成、簡化,并且要向智能化、精簡化和無線化發(fā)展。Atmega16芯片可以最多銜接16路溫度測量模塊,如果換用更高性能的芯片或采用分層次銜接,可以銜接64路或更多的測溫子模塊。這些都有待進(jìn)一步研究。
[1]卜范玉,王曉飛.單片機(jī)在數(shù)字式多路溫度采集系統(tǒng)中的應(yīng)用[J].管理觀察,2009,4:179-180.
[2]黃慧,殷興輝.基于DS18B20的高分辨率溫度數(shù)據(jù)采集[J].電子測量技術(shù),2009,6(32):131-133.
[3]易麗華,黃俊.基于AT89C51單片機(jī)與DS18B20的溫度測量系統(tǒng)[J].電子與封裝,2005,5(9):39-43.
[4]陳雷,王忠東,陳爽.基于虛擬儀器的分布式溫度監(jiān)控系統(tǒng)[J].儀表技術(shù)與傳感器,2009,6:64-67.
[5]朱群峰,黃磊,唐杰,王躍球.基于DS18B20的單總線多路溫度采集系統(tǒng)[J].儀表技術(shù),2008,12:29-31.