鄒顯圣
(大連職業(yè)技術(shù)學(xué)院,遼寧大連 116037)
小環(huán)境溫度監(jiān)測(cè)在各種不同類型的精密儀器間、倉(cāng)庫(kù)中有著廣泛的應(yīng)用。但目前多數(shù)精密儀器間、倉(cāng)庫(kù)溫度的管理水平仍然停留在人工監(jiān)測(cè)、人工記錄數(shù)據(jù)、人工控制的較低水平,往往無(wú)法做到實(shí)時(shí)自動(dòng)控制,離無(wú)人值守的自動(dòng)化水平還有較大的差距[1]。為此,針對(duì)小環(huán)境溫度控制的發(fā)展現(xiàn)狀和事實(shí),開發(fā)了一套基于AT89C51單片機(jī)和單總線技術(shù)的通用型溫度監(jiān)測(cè)系統(tǒng)。該系統(tǒng)的溫度傳感器采用Dallas公司的DS18B20數(shù)字式溫度傳感器。利用計(jì)算機(jī)技術(shù)實(shí)現(xiàn)對(duì)小環(huán)境溫度的智能化監(jiān)測(cè),符合溫度自動(dòng)化控制的發(fā)展趨勢(shì)[2]。
單總線(1-Wire)是美國(guó)Dallas Semiconductor公司的一項(xiàng)專利技術(shù)。與目前廣泛使用的其他串行數(shù)據(jù)總線(如I2C總線、SPI總線等)不同,它采用單根信號(hào)線完成數(shù)據(jù)的雙向傳輸,并同時(shí)通過(guò)該信號(hào)線為單總線器件提供電源,具有節(jié)省I/O引腳資源、結(jié)構(gòu)簡(jiǎn)單、成本低廉、便于總線擴(kuò)展和維護(hù)等諸多優(yōu)點(diǎn)。它將地址線、數(shù)據(jù)線、控制線合為一根信號(hào)線,設(shè)備(主機(jī)或從機(jī))通過(guò)一個(gè)漏極開路或三態(tài)端口連至該數(shù)據(jù)線,以允許設(shè)備在不發(fā)送數(shù)據(jù)時(shí)能夠釋放總線,而讓其他設(shè)備使用總線。其內(nèi)部等效電路如圖1所示[3]。單總線通常要求外接一個(gè)約為4.7 kΩ的上拉電阻,這樣,當(dāng)總線閑置時(shí),其狀態(tài)為高電平。主機(jī)和從機(jī)之間的通信可通過(guò)3個(gè)步驟完成,分別為初始化1-Wire器件、識(shí)別1-Wire器件和交換數(shù)據(jù)。由于它們是主從結(jié)構(gòu),只有主機(jī)呼叫從機(jī)時(shí),從機(jī)才能應(yīng)答,因此主機(jī)訪問(wèn)1-Wire器件都必須嚴(yán)格遵循單總線命令序列,即初始化、ROM命令、功能命令。如果出現(xiàn)序列混亂,1-Wire器件將不響應(yīng)主機(jī)(搜索ROM命令,報(bào)警搜索命令除外)[4]。
單總線器件通常采用3引腳TO-92封裝,外形類似于小功率三極管。在3個(gè)引腳中有1個(gè)公共地端、1個(gè)數(shù)據(jù)輸入/輸出端和1個(gè)電源端,這個(gè)電源端可以為單總線器件提供電源,從而免除總線集中饋電。對(duì)于大多數(shù)采用總線集中供電的單總線器件,等效于在各器件內(nèi)部有1個(gè)5 mA的恒流電源,從而使得單總線器件功耗較低。單總線技術(shù)允許在這根信號(hào)線上掛上百個(gè)由Dallas公司提供的芯片作為控制對(duì)象。單總線器件的最基本特點(diǎn)就是每個(gè)器件都有1個(gè)采用激光刻制的序列號(hào)。該序列號(hào)是由64位二進(jìn)制數(shù)組成的識(shí)別碼,其中包括8位單總線芯片的分類碼(Family Code)、48位標(biāo)識(shí)器件本身的序列號(hào)(Serial Number)和8位循環(huán)校驗(yàn)碼(CRC Code),如圖2所示[5]。
DS18B20是美國(guó)Dallas公司生產(chǎn)的單總線數(shù)字式溫度傳感器,如圖3所示。具有結(jié)構(gòu)簡(jiǎn)單,操作靈活,無(wú)需外接電路的優(yōu)點(diǎn)。在使用過(guò)程中,可由一根I/O數(shù)據(jù)線既供電又傳輸數(shù)據(jù),并可由用戶設(shè)置溫度報(bào)警界限,被廣泛應(yīng)用于精密儀器間、存儲(chǔ)倉(cāng)庫(kù)等需要測(cè)量和控制溫度的地方[6]。
DS18B20測(cè)溫范圍為-55℃~125℃,在-10℃ ~85℃范圍內(nèi)保持±0.5℃的精度;可編程的分辨率為9~12位,對(duì)應(yīng)的可分辨溫度分別為0.5℃、0.25℃、0.125℃和0.062 5℃,可實(shí)現(xiàn)高精度測(cè)溫[7]。此外,傳感器內(nèi)部還具有掉電數(shù)據(jù)不丟失的可擦寫存儲(chǔ)單元,可用該單元存儲(chǔ)設(shè)定的報(bào)警溫度值;DS18B20支持多點(diǎn)組網(wǎng)功能,多個(gè)DS18B20可以并聯(lián)在唯一的三線上,實(shí)現(xiàn)組網(wǎng)多點(diǎn)測(cè)溫。
DS18B20內(nèi)部結(jié)構(gòu)如圖4所示,主要由4部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL、配置寄存器。光刻ROM中的64位序列號(hào)是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。光刻ROM的作用是使每一個(gè)DS18B20都各不相同,這樣就可以實(shí)現(xiàn)一根總線上掛接多個(gè)DS18B20的目的[8]。
由于溫度傳感器采用數(shù)字輸出形式,故不需要A/D轉(zhuǎn)換器。
為了適應(yīng)對(duì)多個(gè)監(jiān)測(cè)點(diǎn)的監(jiān)測(cè)與管理,系統(tǒng)設(shè)計(jì)時(shí)采用了分布式系統(tǒng)的組成方式。從機(jī)由1個(gè)上位機(jī)進(jìn)行監(jiān)測(cè)管理;上下采用主從式監(jiān)測(cè)管理形式。
溫度監(jiān)測(cè)系統(tǒng)的硬件電路主要包括溫度信號(hào)采集、單片機(jī)數(shù)據(jù)處理、報(bào)警電路和與上位機(jī)通信4部分組成。其中溫度信號(hào)采集選用了智能傳感器DS18B20,單片機(jī)選用AT89C51,報(bào)警電路選用了聲光報(bào)警。電路整體方案圖如圖5所示。
系統(tǒng)的各個(gè)部分功能為:主機(jī)為管理機(jī),完成參數(shù)設(shè)置、數(shù)據(jù)存儲(chǔ)、處理及管理功能;從機(jī)為控制機(jī),采用單片機(jī)AT89C51,直接實(shí)現(xiàn)對(duì)溫度的監(jiān)測(cè)功能,并能在主機(jī)關(guān)機(jī)的條件下實(shí)現(xiàn)所有的監(jiān)測(cè)功能;從機(jī)與主控機(jī)的通信采用RS-232數(shù)據(jù)通信方式。主機(jī)通過(guò)其向從機(jī)發(fā)送控制參數(shù),從機(jī)將現(xiàn)場(chǎng)采集數(shù)據(jù)通過(guò)其傳給主機(jī);數(shù)據(jù)采集實(shí)現(xiàn)對(duì)傳感器及運(yùn)行設(shè)備的監(jiān)測(cè);輸入部分的輸入模塊將采集的信號(hào)轉(zhuǎn)換后輸入到從機(jī),經(jīng)數(shù)據(jù)線將該信號(hào)傳送到上位管理機(jī)進(jìn)行最后的數(shù)據(jù)的處理。
系統(tǒng)以AT89C51單片機(jī)為核心,可對(duì)16個(gè)測(cè)點(diǎn)的溫度進(jìn)行監(jiān)測(cè)。測(cè)量所得到的溫度值存儲(chǔ)在非易失性RAM芯片DS1230Y中,AT89C51同時(shí)可以通過(guò)RS-232串行接口將數(shù)據(jù)集中上傳到監(jiān)控中心的PC機(jī)進(jìn)行存檔、分析。監(jiān)測(cè)系統(tǒng)將不間斷對(duì)下屬的各個(gè)節(jié)點(diǎn)進(jìn)行巡檢,并將溫度值間隔一段時(shí)間進(jìn)行一次存儲(chǔ),對(duì)于出現(xiàn)了溫度異常的時(shí)刻及溫度數(shù)值立即進(jìn)行存儲(chǔ),并發(fā)出聲光報(bào)警信號(hào)。當(dāng)監(jiān)控中心從監(jiān)測(cè)系統(tǒng)讀取測(cè)量數(shù)據(jù)時(shí),監(jiān)測(cè)系統(tǒng)將記錄的數(shù)據(jù)上傳給監(jiān)控中心。
圖5中,蜂鳴器B1用于在溫度超出設(shè)定值范圍時(shí)提供聲音報(bào)警。它由單片機(jī)的 P1.1引腳控制,當(dāng)P1.1引腳被置為低電平時(shí),蜂鳴器鳴叫。發(fā)光二極管DS1用于在溫度超出設(shè)定范圍時(shí)提供閃爍的光報(bào)警信號(hào)。它由單片機(jī)的P1.0引腳控制,當(dāng)P1.0引腳被置為低電平時(shí),發(fā)光二極管 DS1處于閃爍狀態(tài)。DS1230Y是Dallas公司生產(chǎn)的非易失性RAM存儲(chǔ)器,存儲(chǔ)容量為32 kB。將地址線A15用于DS1230Y的片選,這樣得到DS1230Y的地址范圍是0000H~7FFFH。CN2插座用于連接數(shù)字溫度傳感器DS18B20,監(jiān)測(cè)系統(tǒng)可連接的16個(gè)測(cè)點(diǎn)都并行連接在從CN2引出去的3個(gè)接線端子上,用于DS18B20數(shù)據(jù)輸入/輸出的I/O端口DQ連接到單片機(jī)的P1.2引腳。
在單總線系統(tǒng)中,軟件設(shè)計(jì)是技術(shù)的關(guān)鍵。簡(jiǎn)單的硬件配置是靠復(fù)雜的軟件來(lái)支撐的。在溫度監(jiān)測(cè)系統(tǒng)的軟件設(shè)計(jì)過(guò)程中,采用了模塊化的設(shè)計(jì)思想,利用C51語(yǔ)言進(jìn)行程序設(shè)計(jì)。主程序流程圖如圖6所示[9]。
采用滑動(dòng)平均算法計(jì)算各個(gè)區(qū)域的溫度平均值?;瑒?dòng)平均算法:采用隊(duì)列作為測(cè)量數(shù)據(jù)存儲(chǔ)器,隊(duì)列長(zhǎng)度固定為16,每進(jìn)行一次新的測(cè)量,就把測(cè)量結(jié)果放在隊(duì)尾,而去掉原來(lái)隊(duì)首的1個(gè)數(shù)據(jù),使隊(duì)列中始終有16個(gè)新數(shù)據(jù)。只要把隊(duì)列中的16個(gè)數(shù)據(jù)進(jìn)行算術(shù)平均,就可得到新的算術(shù)平均值。這樣,每進(jìn)行一次測(cè)量,就可以計(jì)算出1個(gè)新的算術(shù)平均值。若系統(tǒng)中連接有16個(gè)傳感器即有16個(gè)采樣點(diǎn),則各去掉最大和最小的各2點(diǎn),對(duì)余下的12個(gè)點(diǎn)再求平均值。
設(shè)采樣值按大小順序排序后為x1<x2<…<x15<x16,則實(shí)時(shí)計(jì)算的各個(gè)區(qū)域溫度平均值ˉY為
實(shí)驗(yàn)證明:這種算法效果好,速度快,完全可以用于系統(tǒng)計(jì)算平均值[10]。
該監(jiān)測(cè)系統(tǒng)是為較小面積的精密儀器實(shí)驗(yàn)室、倉(cāng)庫(kù)、工作間而設(shè)計(jì),所以在軟、硬件的設(shè)計(jì)上僅僅預(yù)留了16個(gè)測(cè)點(diǎn)。但該系統(tǒng)采用了完全模塊化的設(shè)計(jì)思想,并為眾多監(jiān)測(cè)系統(tǒng)的組網(wǎng)使用提供了接口,使得該監(jiān)測(cè)系統(tǒng)既可以作為一個(gè)獨(dú)立的小系統(tǒng)運(yùn)行,也可以作為大型監(jiān)控系統(tǒng)的一個(gè)子系統(tǒng)運(yùn)行,具有較強(qiáng)的靈活性。
[1]楊金巖,鄭應(yīng)強(qiáng),張振仁.8051單片機(jī)數(shù)據(jù)傳輸接口擴(kuò)展技術(shù)與應(yīng)用實(shí)例[M].北京:人民郵電出版社,2005.
[2]姚良,張振仁.基于MODBUS協(xié)議的小環(huán)境恒濕系統(tǒng)設(shè)計(jì)[J].儀表技術(shù)與傳感器,2006,6(6):35 -37.
[3]高占鳳,劉玉紅,杜彥良,等.基于單總線技術(shù)的溫濕度監(jiān)測(cè)系統(tǒng)[J].電子器件,2006,12(4):1135 -1138.
[4]鄒顯圣.單片機(jī)原理與應(yīng)用項(xiàng)目式教程[M].北京:機(jī)械工業(yè)出版社,2010.
[5]白宜誠(chéng),楊學(xué)順,肖建平,等.單總線技術(shù)在地電場(chǎng)多電極數(shù)據(jù)采集系統(tǒng)中的應(yīng)用[J].中南大學(xué)學(xué)報(bào):自然科學(xué)版,2004,6(3):457-462.
[6]付華科,任子暉,李偉濼.基于單片機(jī)的礦井瓦斯?jié)舛燃皽囟缺O(jiān)測(cè)系統(tǒng)設(shè)計(jì)[J].儀表技術(shù)與傳感器,2010,7(7):87 -91.
[7]雷建龍.單總線數(shù)字溫度傳感器DS18B20在礦井溫度監(jiān)測(cè)中的應(yīng)用[J].礦山機(jī)械,2006,9(34):34 -36.
[8]王勝利,馮偉,劉劍科.單總線分布式測(cè)溫系統(tǒng)[J].工礦自動(dòng)化,2005,10(5):49 -51.
[9]王文成.基于單片機(jī)的糧倉(cāng)多點(diǎn)溫度監(jiān)測(cè)系統(tǒng)設(shè)計(jì)[J].農(nóng)機(jī)化研究,2010,7(7):90 -92.
[10]劉瑋婧,魏學(xué)業(yè),謝濤.分布式環(huán)境監(jiān)測(cè)系統(tǒng)中的溫度監(jiān)測(cè)設(shè)計(jì)[J].鐵道通信信號(hào),2005,11(11):50 -52.