賀淑敏 盛樹軍
摘 要:溫度檢測一般有兩種方式,一是模擬采集后再進行數字轉換;另一種是直接利用溫度傳感器輸出數字量。本文考慮的主要因素是控制成本和便利性,對精度要求不是特別高,所以采用了18B20數字溫度傳感器。相對原系統增加了無線傳輸功能,大大方便了對冷庫溫度信息的掌控。無線傳輸部分采用了集成模塊,價格便宜、功能穩定,極大縮短了開發周期,使系統能夠在短期內投入使用。
關鍵詞:溫度采集 18B20 無線傳輸
中圖分類號:TP368 文獻標識碼:A 文章編號:1672-3791(2014)07(a)-0023-02
有一私人冷庫在仲夏期間由于意外情況崩潰,就剩制冷壓縮機還正常。庫房中儲藏的都是肉類,如果不能及時降溫的話,損失非常大。應急措施只能先將原供電線路臨時更換,用人工方式定時開關壓縮機來制冷,這種方式顯然不能持久。原系統設計公司已經倒閉,無法購買產品,所以當務之急就是重新設計溫度控制系統。由于是私人使用,老板特別交代成本越低越好。
在重新設計之前,我大致了解了一下原系統采用的是AD590+A/D模塊+三菱PLC的方式。在成本優先的前提下,有必要對比一下幾種備選方案。
方案1:繼續采用原系統。AD590功能單一、測量誤差小、響應速度快。輸出信號必須外加A/D轉換電路或采用A/D模塊處理后才能變成數字量。若使用轉換電路,則程序工作量大、外圍電路復雜;使用A/D模塊的話,就必須與PLC配合,系統成本高。
方案2:采用DS18B20數字溫度傳感器。DS18B20功耗低、抗干擾能力強,采用單總線工作方式,既能單點測溫,也可構成多點測控系統。最明顯的優勢是它直接輸出數字信號,無需A/D轉換就能被處理器接受,測溫范圍-55℃~+125℃。
本冷庫常年要求溫度范圍是-18℃~ -5℃,結合以上介紹,采用DS18B20比較合適。處理器采用常見的STC89C52,造價低、使用經驗成熟。在準備過程中,應使用者的要求臨時增加了無線數據傳輸功能。
(1)溫度采集與控制電路顯示部分采用S03641B四位一體LED,千位用于顯示正負號,若為正值則不顯示,若為負值則顯示“-”。需要注意18B20的控制方法,特別是18B20對時序要求非常嚴格,本系統用的是51匯編語言,所以一定要根據晶振頻率計算好合適的時序,否則傳感器不工作。為了加強穩定性,單片機晶振選取了6MHz,速度不快,但對系統來說基本夠用。現將系統主程序的溫度轉換部分示例。
acall rst;調用初始化子程序
jnb f0,main;判斷是否將1820有效復位,f0為1則復位有效
mov a,#44h;發溫度轉換命令
mov r6,#16;利用重復調用顯示子程序延時約1s,時間必須
;大于等于750ms,否則讀不出正確的數值,只會有85度一個值
acall rst;再復位
jnb f0,main1;判斷傳感器復位是否有效
mov a,#0beh;讀暫存器命令
acall r2b;讀取暫存器中的溫度值2個字節,存放于lsb/msb中
acall get_thm;此子程序作用是將lsb/msb組合為一個字節,得到完整的溫度數值
溫度數值被正確讀出后的工作有三部分。
一是將溫度顯示出來,由于是四位一體數碼管,只有動態掃描一種,注意控制好掃描頻率即可,不再贅述。
二是將讀取的溫度值與事先設定的標準溫度進行對比,如果采集溫度高于設定溫度范圍則壓縮機開始工作。在主程序中,get_thm子程序的作用是用來組合最后的溫度數值,事先設定的溫度值有兩個,-5℃(maxThm)和-18℃(minThm)。若高于-5℃,則通過P3.0管腳發出一低電平控制命令,經過7404反相后進入ULN2003第一組輸入端,二次反相驅動后輸出接通固態繼電器(SSR),再通過接觸器接通壓縮機電源,制冷過程開始。為了避免壓縮機頻繁啟停,程序設定制冷溫度必須低于-18℃后壓縮機才能停止。
三是將讀取的數值通過SI4432模塊發送出去。為了縮短開發周期,在淘寶上選擇了成品SI4432無線收發模塊,帶高增益天線每塊只需28元,性價比很高。模塊與單片機的接線方式如下。
在接收模式下,通過SPI直接操作數據緩沖區即可。由于STC89C52沒有SPI接口,所以只能用軟件來模擬。這里用P1.0模擬主設備的數據輸出端SDO,P1.1模擬SPI的時鐘輸出端SCK,P1.2模擬從機選擇端SCS,P1.3模擬數據輸入SDI。SI4432的數據傳送模式有三種:FIFO模式、直接模式和PN9模式,在FIFO模式是下使用片內的堆棧區來發送接收數據,通過對寄存器的連續讀寫進行的。這種方式原理簡單,缺點是傳輸距離沒有直接模式遠。為了穩定性的需要,盡可能降低程序復雜度,這里采用了FIFO模式。由于冷庫溫度不會突然變化,所以對實時性要求不高,數據傳輸任務量很小,系統主程序刻意設定了十秒鐘傳輸一次,這樣就大大降低了無線收發模塊的任務量,從而間接提高了穩定性。
(2)接收顯示與報警電路這部分電路功能上主要是顯示與報警驅動兩部分。
由無線模塊接收到的溫度值通過數碼管顯示的同時,也要與存儲在制定單元的設定值進行比較:如果溫度高于-5℃或低于-18℃的時間超過半小時,則認定系統出現故障,通過P3.4管腳發出信號,經過LM386驅動報警蜂鳴器工作,直至溫度恢復正常。
由于本系統在設計過程中時間比較倉促,很多功能還有待完善,比如可增加鍵盤輸入溫度值功能;與組態軟件聯機實現數據實時記錄的功能和多點溫度測量功能等。在調試過程中當傳輸距離超過200米時偶爾出現掉幀現象,這一問題在將無線模塊天線引出冷庫后得以解決。
參考文獻
[1] 吳金戌.8051單片機實踐與應用[M].清華大學出版社,2002(9).