李曉慧,周孝進,徐曉明
蘇州大學物理科學與技術學院,江蘇蘇州 215000
溫度是工業生產中常見的和最基本的參數之一,在生產過程中常需對溫度進行檢測和監控[1]。近年來,利用單片機和傳感器實現對溫度的精確測量,提高了生產的自動化程度,且成本低廉,應用十分廣泛,因此,研究溫度的測量方法和裝置具有重要的意義[2]。本文所用溫度傳感器是美國DALLAS公司生產的DS18B20,它集溫度測量和A/D轉換于一體,直接輸出數字量,傳輸距離遠,可以很方便地實現多點測量,硬件電路結構簡單,與單片機接口幾乎不需要外圍元件[3]。
本文研究的對象是分布式測溫系統,之前關于這方面的研究還存在如下問題:1)單片機的選擇過于復雜;2)分布的點不夠多,不能反應環境整體情況;3)多數系統僅有測溫顯示部分,缺少其他的輔助部件;4)有些模塊不簡化,系統過于冗雜等。本文在分布式測量的基礎上,采用多個數字溫度傳感器DS18B20結合Atmega16芯片和PC機,設計出溫度采集和控制系統。該系統不僅能對多點溫度進行測量和顯示,同時對遇到超出PC機的溫度設置范圍的情況能及時發出報警信號并控制功率設備工作。
DS18B20是一款單總線數字式溫度傳感器。測試溫度范圍為-55~+l25℃,精度為0.5℃,測量的溫度值用9~12位數字表示,最大轉換時間為750ms。轉換分辨率和溫度超標報警的上、下限值都可由用戶設定。DS18B20利用DALLAS的單總線控制協議和單線控制信號在總路線上來實現數據的讀寫。它的工作電壓為3V~5.5V(將外部電源接在VDD腳),在沒有外部電源的情況下,電源由總線為高電平DQ腳上的上拉電阻提供(寄生供電模式),此時VDD腳接地。
DS18B20的具體測溫原理如下。低溫度系數晶振的振蕩頻率受溫度的影響很小,用于固定頻率的脈沖信號;高溫度系數晶振隨溫度變化其振蕩頻率明顯改變,所產生的信號作為脈沖輸入。根據低溫度系數晶振和高溫度系數晶振的差可以計算出準確溫度。
當DS18B20處于寫存儲器操作和溫度A/D轉換操作時,總線上必須有很強的上拉,采用寄生電源供電方式時VDD和GND端需接地。另外,由于單線制只有一根線,因此發送接口必須是三態的。同時,系統對DS18B20的各種操作必須按協議進行,其操作協議為:初始化DS18B20——ROM功能命令——發存儲器操作命令——處理數據。
為了達到分布式溫度測量與顯示功能,系統分為5個模塊:電源模塊、測溫模塊、報警模塊、顯示模塊和控制模塊。該系統的整體結構框圖如圖1所示:

圖1 系統結構框圖
電源電路輸出電壓+5V的穩壓電源,它由電源變壓器B,橋式整流電路BRIDGE,濾波電容C1、C3,防止自激電容C2、C4和一只固定式三端穩壓器(LM7805)搭成的。
溫度傳感器用數字式DS18B20,采用單總線模式與單片機相連,逐個測得溫度,送到單片機處理,求得平均溫度。
顯示電路采用7SEG-MPX4-CC四位LED數碼管,PC口輸出斷碼,掃描通過PA.4-PA.7控制。單片機處理后的數據送到顯示口,先逐個顯示各個DS18B20的數據,然后顯示平均值,同時在其中加入時間模塊,可以顯示出每個點的測溫時間。
報警電路由一個三極管和蜂鳴器所組成,其控制部分由三極管、二極管、電阻以及繼電器所組成,其信號是從單片機的一個準雙向口輸出到三極管的基極。用鍵盤可以對報警的上下限進行設置。報警裝置后連接一個功率控制單元(如電機、風扇等設備),根據溫度與設定值的比較,相應啟動該單元。
Atmega16單片機通過RS232和RS485的轉換接口與PC機相連,通過鍵盤的人機界面,控制運行的程序和顯示結果的處理。
在設計程序時,由于DS18B20采用單總線的數據傳輸方式,所有的輸入和輸出都是通過一條總線實現的,因此它的時序就顯得非常重要。所有的數據傳輸必須從字節的低位開始,編寫程序時必須按照其對應的時序操作,否則不能獲得完整正確的數據。本系統程序主要分為主程序和子程序兩部分。
主程序的主要功能是負責溫度的實時顯示, 讀出并處理DS18B20的測量溫度值。其主要包括4個部分,即初始化部分、讀取溫度值部分、調用顯示子程序以及結束返回部分。
讀出溫度子程序是先對單個DS18B20進行溫度測量,然后用掃描方式,即每隔一秒讀取其中一個,這樣依次讀取各個溫度值,用數碼管LED進行顯示。
報警子程序是當單片機讀取完數據后就開始檢測溫度值是否超過了預設的溫度值范圍。其程序流程圖如圖2所示:

圖2 報警子程序流程圖

圖3 實驗結果顯示圖
本實驗(以8個DS18B20為例)采用Proteus軟件進行仿真。若以8個DS18B20計算,各點所測溫度為25℃,26℃,24℃,24.5℃,26.5℃,26℃,25℃,25.5℃,則用數學方法得平均溫度為25.3125℃,而顯示溫度為25.3℃。結果如圖3所示(見左圖)。
本文設計的分布式溫度測量和控制系統,有效地結合了多個DS18B20芯片進行分布式溫度采集,并且實時顯示。Atmega16芯片可以根據PC機的溫度設置范圍發出報警和控制信號。實驗結果表明,本系統,可以有效地對8個點的溫度進行測量并分別顯示,遇到超出PC機的溫度設置范圍的情況能及時發出報警信號并控制風機設備工作。系統可以廣泛應用在工農業等溫度測量及控制領域。
本文設計的系統的各模塊采用有線銜接方式,有待集成、簡化,并且要向智能化、精簡化和無線化發展。Atmega16芯片可以最多銜接16路溫度測量模塊,如果換用更高性能的芯片或采用分層次銜接,可以銜接64路或更多的測溫子模塊。這些都有待進一步研究。
[1]卜范玉,王曉飛.單片機在數字式多路溫度采集系統中的應用[J].管理觀察,2009,4:179-180.
[2]黃慧,殷興輝.基于DS18B20的高分辨率溫度數據采集[J].電子測量技術,2009,6(32):131-133.
[3]易麗華,黃俊.基于AT89C51單片機與DS18B20的溫度測量系統[J].電子與封裝,2005,5(9):39-43.
[4]陳雷,王忠東,陳爽.基于虛擬儀器的分布式溫度監控系統[J].儀表技術與傳感器,2009,6:64-67.
[5]朱群峰,黃磊,唐杰,王躍球.基于DS18B20的單總線多路溫度采集系統[J].儀表技術,2008,12:29-31.