鄒顯圣
(大連職業技術學院,遼寧大連 116037)
小環境溫度監測在各種不同類型的精密儀器間、倉庫中有著廣泛的應用。但目前多數精密儀器間、倉庫溫度的管理水平仍然停留在人工監測、人工記錄數據、人工控制的較低水平,往往無法做到實時自動控制,離無人值守的自動化水平還有較大的差距[1]。為此,針對小環境溫度控制的發展現狀和事實,開發了一套基于AT89C51單片機和單總線技術的通用型溫度監測系統。該系統的溫度傳感器采用Dallas公司的DS18B20數字式溫度傳感器。利用計算機技術實現對小環境溫度的智能化監測,符合溫度自動化控制的發展趨勢[2]。
單總線(1-Wire)是美國Dallas Semiconductor公司的一項專利技術。與目前廣泛使用的其他串行數據總線(如I2C總線、SPI總線等)不同,它采用單根信號線完成數據的雙向傳輸,并同時通過該信號線為單總線器件提供電源,具有節省I/O引腳資源、結構簡單、成本低廉、便于總線擴展和維護等諸多優點。它將地址線、數據線、控制線合為一根信號線,設備(主機或從機)通過一個漏極開路或三態端口連至該數據線,以允許設備在不發送數據時能夠釋放總線,而讓其他設備使用總線。其內部等效電路如圖1所示[3]。單總線通常要求外接一個約為4.7 kΩ的上拉電阻,這樣,當總線閑置時,其狀態為高電平。主機和從機之間的通信可通過3個步驟完成,分別為初始化1-Wire器件、識別1-Wire器件和交換數據。由于它們是主從結構,只有主機呼叫從機時,從機才能應答,因此主機訪問1-Wire器件都必須嚴格遵循單總線命令序列,即初始化、ROM命令、功能命令。如果出現序列混亂,1-Wire器件將不響應主機(搜索ROM命令,報警搜索命令除外)[4]。

單總線器件通常采用3引腳TO-92封裝,外形類似于小功率三極管。在3個引腳中有1個公共地端、1個數據輸入/輸出端和1個電源端,這個電源端可以為單總線器件提供電源,從而免除總線集中饋電。對于大多數采用總線集中供電的單總線器件,等效于在各器件內部有1個5 mA的恒流電源,從而使得單總線器件功耗較低。單總線技術允許在這根信號線上掛上百個由Dallas公司提供的芯片作為控制對象。單總線器件的最基本特點就是每個器件都有1個采用激光刻制的序列號。該序列號是由64位二進制數組成的識別碼,其中包括8位單總線芯片的分類碼(Family Code)、48位標識器件本身的序列號(Serial Number)和8位循環校驗碼(CRC Code),如圖2所示[5]。


DS18B20是美國Dallas公司生產的單總線數字式溫度傳感器,如圖3所示。具有結構簡單,操作靈活,無需外接電路的優點。在使用過程中,可由一根I/O數據線既供電又傳輸數據,并可由用戶設置溫度報警界限,被廣泛應用于精密儀器間、存儲倉庫等需要測量和控制溫度的地方[6]。
DS18B20測溫范圍為-55℃~125℃,在-10℃ ~85℃范圍內保持±0.5℃的精度;可編程的分辨率為9~12位,對應的可分辨溫度分別為0.5℃、0.25℃、0.125℃和0.062 5℃,可實現高精度測溫[7]。此外,傳感器內部還具有掉電數據不丟失的可擦寫存儲單元,可用該單元存儲設定的報警溫度值;DS18B20支持多點組網功能,多個DS18B20可以并聯在唯一的三線上,實現組網多點測溫。
DS18B20內部結構如圖4所示,主要由4部分組成:64位光刻ROM、溫度傳感器、非揮發的溫度報警觸發器TH和TL、配置寄存器。光刻ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。光刻ROM的作用是使每一個DS18B20都各不相同,這樣就可以實現一根總線上掛接多個DS18B20的目的[8]。
由于溫度傳感器采用數字輸出形式,故不需要A/D轉換器。

為了適應對多個監測點的監測與管理,系統設計時采用了分布式系統的組成方式。從機由1個上位機進行監測管理;上下采用主從式監測管理形式。
溫度監測系統的硬件電路主要包括溫度信號采集、單片機數據處理、報警電路和與上位機通信4部分組成。其中溫度信號采集選用了智能傳感器DS18B20,單片機選用AT89C51,報警電路選用了聲光報警。電路整體方案圖如圖5所示。
系統的各個部分功能為:主機為管理機,完成參數設置、數據存儲、處理及管理功能;從機為控制機,采用單片機AT89C51,直接實現對溫度的監測功能,并能在主機關機的條件下實現所有的監測功能;從機與主控機的通信采用RS-232數據通信方式。主機通過其向從機發送控制參數,從機將現場采集數據通過其傳給主機;數據采集實現對傳感器及運行設備的監測;輸入部分的輸入模塊將采集的信號轉換后輸入到從機,經數據線將該信號傳送到上位管理機進行最后的數據的處理。

系統以AT89C51單片機為核心,可對16個測點的溫度進行監測。測量所得到的溫度值存儲在非易失性RAM芯片DS1230Y中,AT89C51同時可以通過RS-232串行接口將數據集中上傳到監控中心的PC機進行存檔、分析。監測系統將不間斷對下屬的各個節點進行巡檢,并將溫度值間隔一段時間進行一次存儲,對于出現了溫度異常的時刻及溫度數值立即進行存儲,并發出聲光報警信號。當監控中心從監測系統讀取測量數據時,監測系統將記錄的數據上傳給監控中心。
圖5中,蜂鳴器B1用于在溫度超出設定值范圍時提供聲音報警。它由單片機的 P1.1引腳控制,當P1.1引腳被置為低電平時,蜂鳴器鳴叫。發光二極管DS1用于在溫度超出設定范圍時提供閃爍的光報警信號。它由單片機的P1.0引腳控制,當P1.0引腳被置為低電平時,發光二極管 DS1處于閃爍狀態。DS1230Y是Dallas公司生產的非易失性RAM存儲器,存儲容量為32 kB。將地址線A15用于DS1230Y的片選,這樣得到DS1230Y的地址范圍是0000H~7FFFH。CN2插座用于連接數字溫度傳感器DS18B20,監測系統可連接的16個測點都并行連接在從CN2引出去的3個接線端子上,用于DS18B20數據輸入/輸出的I/O端口DQ連接到單片機的P1.2引腳。
在單總線系統中,軟件設計是技術的關鍵。簡單的硬件配置是靠復雜的軟件來支撐的。在溫度監測系統的軟件設計過程中,采用了模塊化的設計思想,利用C51語言進行程序設計。主程序流程圖如圖6所示[9]。





采用滑動平均算法計算各個區域的溫度平均值。滑動平均算法:采用隊列作為測量數據存儲器,隊列長度固定為16,每進行一次新的測量,就把測量結果放在隊尾,而去掉原來隊首的1個數據,使隊列中始終有16個新數據。只要把隊列中的16個數據進行算術平均,就可得到新的算術平均值。這樣,每進行一次測量,就可以計算出1個新的算術平均值。若系統中連接有16個傳感器即有16個采樣點,則各去掉最大和最小的各2點,對余下的12個點再求平均值。
設采樣值按大小順序排序后為x1<x2<…<x15<x16,則實時計算的各個區域溫度平均值ˉY為

實驗證明:這種算法效果好,速度快,完全可以用于系統計算平均值[10]。
該監測系統是為較小面積的精密儀器實驗室、倉庫、工作間而設計,所以在軟、硬件的設計上僅僅預留了16個測點。但該系統采用了完全模塊化的設計思想,并為眾多監測系統的組網使用提供了接口,使得該監測系統既可以作為一個獨立的小系統運行,也可以作為大型監控系統的一個子系統運行,具有較強的靈活性。
[1]楊金巖,鄭應強,張振仁.8051單片機數據傳輸接口擴展技術與應用實例[M].北京:人民郵電出版社,2005.
[2]姚良,張振仁.基于MODBUS協議的小環境恒濕系統設計[J].儀表技術與傳感器,2006,6(6):35 -37.
[3]高占鳳,劉玉紅,杜彥良,等.基于單總線技術的溫濕度監測系統[J].電子器件,2006,12(4):1135 -1138.
[4]鄒顯圣.單片機原理與應用項目式教程[M].北京:機械工業出版社,2010.
[5]白宜誠,楊學順,肖建平,等.單總線技術在地電場多電極數據采集系統中的應用[J].中南大學學報:自然科學版,2004,6(3):457-462.
[6]付華科,任子暉,李偉濼.基于單片機的礦井瓦斯濃度及溫度監測系統設計[J].儀表技術與傳感器,2010,7(7):87 -91.
[7]雷建龍.單總線數字溫度傳感器DS18B20在礦井溫度監測中的應用[J].礦山機械,2006,9(34):34 -36.
[8]王勝利,馮偉,劉劍科.單總線分布式測溫系統[J].工礦自動化,2005,10(5):49 -51.
[9]王文成.基于單片機的糧倉多點溫度監測系統設計[J].農機化研究,2010,7(7):90 -92.
[10]劉瑋婧,魏學業,謝濤.分布式環境監測系統中的溫度監測設計[J].鐵道通信信號,2005,11(11):50 -52.