楊獻(xiàn)偉
(西山煤電(集團(tuán))公司官地礦,山西 太原 030022)
隨著信息化的不斷深入和發(fā)展,信息機(jī)房中設(shè)備對環(huán)境的要求也越來越高,尤其是機(jī)房溫度對核心設(shè)備通信效率有著較大的影響。目前,大部分機(jī)房中的空調(diào)系統(tǒng),雖然在設(shè)定一定的溫度后,會自動進(jìn)行調(diào)節(jié)機(jī)房溫度,但是對于值班人員來說,如果想要了解機(jī)房溫度的實(shí)時(shí)情況,須進(jìn)入機(jī)房進(jìn)行觀測,這對機(jī)房環(huán)境中的恒溫狀況會引起一定的擾動,導(dǎo)致破壞機(jī)房現(xiàn)有的恒溫環(huán)境,對核心設(shè)備造成一定的影響。
本文設(shè)計(jì)的信息機(jī)房溫度在線實(shí)時(shí)監(jiān)測系統(tǒng),主要以DS18B20為溫度芯片,ATMEGA16L為單片機(jī)控制單元,LCD1602為顯示器件,利用RS485總線配合上位機(jī)程序與PC機(jī)進(jìn)行通信,實(shí)現(xiàn)機(jī)房溫度在線實(shí)時(shí)監(jiān)測。
DS18B20是美國DALLAS半導(dǎo)體公司生產(chǎn)的單總線數(shù)字式溫度傳感器,它是通過對其內(nèi)部溫度系統(tǒng)振蕩器輸出的脈沖信號計(jì)數(shù)來測量溫度,并在芯片內(nèi)部將溫度信號轉(zhuǎn)換成串行數(shù)字信號后,通過外部微處理器對其進(jìn)行一系列的讀寫操作來取得溫度值,它的測溫范圍為-50℃ ~+125℃,這個(gè)溫度范圍對于機(jī)房來說,是完全可以滿足的。DSl8B20的內(nèi)部結(jié)構(gòu)圖見圖1。
圖1 DS18B20內(nèi)部結(jié)構(gòu)示意圖
ATmega16L芯片是基于增強(qiáng)的AVR RISC(精簡指令集)結(jié)構(gòu)所設(shè)計(jì),屬于低功耗8位CMOS微處理器,是比51單片機(jī)功能更為強(qiáng)大的微處理器,其指令在單時(shí)鐘周期內(nèi)就可執(zhí)行完成,所以ATmega16L的數(shù)據(jù)吞吐率高達(dá)1 MIPS/MHz,對于本系統(tǒng)中的數(shù)據(jù)處理量來說,也是可以滿足的,所以選擇該芯片用于主控芯片。
本系統(tǒng)是由AVR最小系統(tǒng)、測溫系統(tǒng)、顯示系統(tǒng)和通信系統(tǒng)等主要部分組成。
AVR單片機(jī)由ATMEGA16L為主控單元,外部8 M晶振提供振蕩源,配有復(fù)位電路以及外接5 V恒流源等,實(shí)現(xiàn)了AVR最小系統(tǒng)的運(yùn)行,是該溫度監(jiān)測系統(tǒng)的核心控制部分。
測溫電路是為DS18B20數(shù)據(jù)線串接10 kΩ的電阻后與ATMEGA16L的PA0相連,通過嚴(yán)格的時(shí)序與其通信,啟動并獲取其實(shí)時(shí)的溫度。
顯示系統(tǒng)是通過4組按鍵設(shè)定上限溫度和下限溫度,并保存在AVR的EEROM中,系統(tǒng)啟動后將對其實(shí)時(shí)溫度進(jìn)行顯示,并做出判斷,若越界,則能使蜂鳴電路發(fā)出報(bào)警。
通信電路是通過RS485接口每隔100 ms向上位機(jī)發(fā)一次溫度信息,上位機(jī)將接收到的數(shù)據(jù),利用上位機(jī)程序?qū)崟r(shí)地在PC機(jī)上顯示溫度曲線。
由于DS18B20采用的是單總線協(xié)議方式,有嚴(yán)格的時(shí)序邏輯,所以讀寫時(shí)序顯得尤為重要。其復(fù)位、讀和寫時(shí)序圖見圖2~4。
操作DS18B20的所有時(shí)序邏輯都是將ATMEGA16L芯片作為主設(shè)備,DS18B20芯片作為從設(shè)備,每一次命令和數(shù)據(jù)的傳輸都是從ATMEGA16L發(fā)送指令,主動啟動寫時(shí)序開始,在進(jìn)行寫命令后,ATMEGA16L再發(fā)送相應(yīng)指令啟動讀時(shí)序完成數(shù)據(jù)接收。所有的數(shù)據(jù)和命令的傳輸都是遵循低位在先的原則來進(jìn)行的。
溫度監(jiān)測系統(tǒng)啟動自檢完成后,初始化各部件,然后進(jìn)行主循環(huán)。在主循環(huán)中,讀取溫度—〉顯示溫度—〉向上位機(jī)發(fā)信息—〉判斷及是否報(bào)警。其中的中斷部分是按鍵中斷程序,用來設(shè)定監(jiān)測溫度的上下限閾值。
3.2.1 初始化部分程序
3.2.2 向DS18B20寫操作部分
3.2.3 讀取DS18B20計(jì)數(shù)部分
3.2.4 轉(zhuǎn)換計(jì)數(shù)為溫度值
3.2.5 串口通信部分
3.2.6 上位機(jī)部分
上位機(jī)程序采用VS2005中的C#進(jìn)行WINDOW FORM編程,利用圖形組件實(shí)時(shí)地顯示出溫度的波動曲線。部分程序如下:
該程序段僅顯示出接收AVR單片機(jī)的數(shù)據(jù)部分,曲線顯示溫度部分程序代碼較復(fù)雜,限于篇幅,在此未列出。
AVR單片機(jī)以其結(jié)構(gòu)簡單,功能強(qiáng)大,協(xié)議支持多,在實(shí)際生產(chǎn)和科學(xué)研究中有著較為廣闊應(yīng)用前景。本系統(tǒng)利用DS18B20芯片作為溫度傳感器,只需要1根數(shù)據(jù)線就可完成與單片機(jī)的通信。RS485總線將采集到的溫度數(shù)據(jù)實(shí)時(shí)地傳輸給值班室的監(jiān)測主機(jī),值班人員在電腦前便可實(shí)時(shí)了解機(jī)房內(nèi)部溫度的波動情況,保障了機(jī)房核心設(shè)備對環(huán)境中溫度無較大波動的要求。該系統(tǒng)的成功應(yīng)用,不僅提高了工作效率,而且會使機(jī)房管理更為有效、規(guī)范和完善。