孫蔚
(陜西工業職業技術學院信息工程學院,712000)
在日常生活及工業生產過程中,經常要用到溫度的檢測及控制,溫度是生產過程和科學實驗中普遍而且重要的物理參數之一。隨著新技術的不斷開發與應用,近年來單片機發展十分迅速,一個以微機應用為主的新技術革命浪潮正在蓬勃興起,單片機的實際的使用范圍已經包含了化工、冶金、電力、機械、食品、建筑等多個行業[1]。傳統的溫度采集方法不僅費時費力,而且精度差,單片機的出現使得溫度的采集和數據處理問題能夠得到很好的解決。
本文以實驗室水箱為被控對象,進行了智能溫控系統設計,本系統首先將溫度采集后發給單片機進行處理,并通過16位矩陣鍵盤設定上下限溫度,當溫度超過設定值后,單片機將控制溫度控制模塊啟動,使溫度在一定的范圍內保持恒定。所有溫度數據均通過液晶顯示器顯示出來,為了防止掉電引起的數據丟失,系統將某些時間點的溫度數據和溫度上下限的設定值存儲在外存儲器中。

圖1 系統總體框架
系統主要包括單片機控制模塊,溫度采集模塊,溫度上下限設定模塊、液晶顯示模塊,溫度控制模塊,以及外部存儲模塊等六大部分。系統總體框架如圖1所示。
單片機控制模塊是整個系統的核心,它控制了溫度的采集、溫度上下限值的設定、溫度超限時加熱器的啟動。本文選用宏晶科技公司生產的一款型號為STC89C52RC的單片機。STC89C52在I/O 口的數量、RAM 容量、功能實現等多個方面都優于較早型號的單片機,其32個雙向I/O 口可用于多路電機轉速和轉向信號的發送以及限位信號的接收;而512字節RAM 可夠用于存儲上位機發送來的數據,而不需要存儲擴展[2];時鐘頻率也滿足需求。串口可直接下載程序到單片機上并可多次擦除,方便了程序的隨時改進和調試。而且此款單片機無讀出命令,解密困難,很好地保護了知識產權。
對于溫度數據采集的主要系統是根據DALLAS 公司制造的一線式的數字溫度傳感器DS18B20的相關數據來進行采集的。在系統當中具備獨特的單總線接口方式,僅需使用1個端口就能實現與單片機的雙向通訊,讀寫和完成溫度變換所需的電源可以由數據線本身提供而無需外部電源。溫度傳感器 DS18B20的溫度的理論的測試區間是零下55攝氏度到零上125攝氏度之間,溫度測試的分辨率可以達到0.0625攝氏度[3],最后的測試結果通常以9到12位數字量的方式來輸出數字溫度,把信號通過“一線總線”發送給CPU,并且還可以發送CRC 效驗碼,在信號發送過程中信號的抗干擾糾錯能力是非常強的。
在DS18B20的內部主要有下面幾部分組成:溫度傳感器、64位的ROM 光感刻錄、配置寄存器以及溫度警報觸發器TL 和TH。其中光雕ROM的64位序列號主要是產品出廠前就刻錄好,它是每一個DS18B20的地址的序列號。我們通過這個64位序列號就能夠使DS18B20的每個功能都不一樣,從而真正的實現可以一線上掛接好幾個DS18B20的目標。
DS18B20的溫度測試的流程如下圖中所示。在圖中我們可以發現低溫的溫度的系數晶振基本上不受到溫度的影響,同時把產生的頻率固定的晶振傳輸給計數器1。但是高溫的溫度系數的晶振受溫度影響比較明顯,振蕩率發生改變,并且所產生的晶振信號發送給計數器2。在計數器1中的溫度的設置范圍在零下55攝氏度的范圍內。在計數器1中對于低溫的溫度系數進行基本加減法運算,假如當計數器1中的預置的值變為0,那么就可以把溫度寄存器的結果在加1,這是使得計數器1的預置值被重置,計數器1再次在開始對于低溫溫度系數的晶振進行信號記錄,這時當計數器2的預置值變為0時,可以停止對于溫度寄存器的累加,此時的溫度寄存器的最終的值就是所得到的溫度。在下圖當中的斜率累加器主要的作用就在于對于溫度測試過程中的非線性數據進行修正和填補,它的結果主要是用于對于計數器1的預置修正。

圖2 DS18B20測溫原理圖
在本系統溫度控制電路中,單片機通過控制三極管的通斷控制繼電器,達到控制電熱器的目的。當溫度低于設定溫度下限時,單片機發送低電平信號經過74LS04非門電路后變為高電平,使NPN 型三極管導通,繼電器使電源與電熱器接通。電熱器加熱,溫度慢慢升高。當溫度高于設定溫度上限時,單片機發送高電平信號經過74LS04非門電路后變為低電平。使NPN 型三極管截止,繼電器使電源與制冷系統接通,制冷系統工作,溫度慢慢降低。當繼電器突然斷電時。會產生很大的反向電流,反接在三極管兩端的二極管可將反向電流分流,達到保護三極管的作用[4]。
DS18B20和單片機連接方式是通過一條數據線進行連接,信號的傳輸方式主要是進行串行。對于最終的溫度數值的讀取,需要根據時序配合關系來對于程序進行編制。在DS18B20的數值傳輸中具有專門的通信協議來進行完整性限制。在通信協議上對于總線信號進行了多累信號規定。比如影響脈沖、復位脈沖、以及讀寫信號0和1的信號時序[5]。在對于DS18B20的時序的嚴格的規定情況下的操作過程,主要就是對于通過各類的軟件來進行對于硬件設備的串接。具體操作如下:
復位主要是把時序進行恢復,這一過程是傳輸過程中的開始階段。在這個復位的過程上主要是通過主要設備發出相關的復位脈沖來同DS18B20的響應脈沖進行結合。通過在主設備的復位過程當中,通常主設備的拉低的數據線最少到480μS,當這種情況時DS18B20就會接受這一復位的脈沖信號,從而和主設備進行信號傳輸,在數據線的上拉電阻的影響下,使得數據線的電平被提升,同時使得主設備開始接受信號。這過程當中DS18B20的檢測的延時出現到15到60μS,使得拉低的總線延時60到240μS來進行信號的應答。這時主機才能對它進行其他操作。
基本上所有的DS18B20在產品出廠時都有一個唯一的64位的序列號,在溫度傳感器被使用以前,都需要把傳感器串接到I/O的接口中去,比如:p1.0,然后在對于溫度傳感器的序列號進行數據讀取。只有在DS18B20讀取都了設備對于序列號的讀取才能夠進行數據的發送。因此通常主設備進行數據信號發送后,都需要進行讀時序過程,這樣方便DS18B20進行數據的傳輸。基本上任何的讀時序都需要有60μS,同時在兩個分開的讀時序中間需要有最少1μS的時間恢復。讀時序過程基本先是主設備發送,在通過數據線的高電平,把數據線進行1μS的拉低,同時對于數據線進行釋放。如果主設備進行讀時序,那么DS18B20在數據線中的發送數據主要為1和0。如果發送信號為1,那么數據線保持高電平。假如發送信號為0,那么DS18B20進行數據線的拉低,并且在過程后期釋放數據線。DS18B20所發送的數據在15μS的時序中是能夠保持真實有效的。所以說主設備在進行讀時序過程中必須要能夠釋放數據線,同時保持時序能夠在15μS中進行數據線讀取。
寫時序主要就包含有對于1和0的寫時序。其中1的時序基本是都是主設備對于DS18B20進行數據1寫入,0時序主要就是主設備對于DS18B20進行數據0寫入。不管是何種寫時序都需要最少60μS,同時兩個分開的寫時序中間需要有最少1μS的時間恢復。這兩類的寫時序都是從主設備開始來對數據線進行電平拉低。在進行1時序寫入時,主設備在對于數據線進行拉低情況下,然后在15μS 以內進行數據線的釋放,因為對于電阻上拉使得數據線到了高電平狀態;不過在進行0時序的寫入時,主設備在對于數據進行拉低的情況下,在時序中保持低電平那么就能夠有最少60μS。在進行寫時序的15到60μS 之間,DS18B20進行對于數據線電平狀態的讀取。假如該過程當中的數據線狀態為高電平,那么就進行1數據寫入,不然的話就是進行邏輯0的寫入。
系統軟件采用 keil c51編制。
復位子程序:



對于子程序的延時過程void delay(unsigned char time),其中的延時的時間為25us×time
微型計算機在智能化電器發展中起著至關重要的作用,而單片機經濟實用、開發簡便,因而在工業控制、家電智能化等領域占據了廣泛的市場。這里針對目前溫度控制器現狀設計了一種新方案,該方案主要是應用DS18B20來進行溫度的測控,在AT89S52的單片機中進行對于溫度的控制,這樣就能夠實現硬件應用方便,溫度控制能力強(溫度誤差控制在2攝氏度之內)、價格不高、功能強并且體積小等的特點,并且在于對于需要對溫度進行零下55攝氏度到零上125攝氏度的溫度控制的條件下,基本上都能夠實現對于溫度數據采集、顯示和控制過程,這樣也是一種十分全面的智能化的溫控系統。
[1]黎惠成等一種基于模糊控制的溫度控制系統設計[J].計算機技術與發展.2009.19(12):236-239
[2]潘新民.微型計算控制技術[M].清華大學出版社.1999.8
[3]趙鴻圖.基于單片機的溫度控制系統的設計與實現[J].微計算機信息2008.24(9):54-56
[4]余瑾;姚燕.基于DS18B20測溫的單片機溫度控制系統[J].微計算機信息.2009.25(03):105-107
[5]黃保瑞等.基于AT89C51單片機的溫度測控系統設計[J].現代電子技術.2011.3:78-80