在傳統的模擬信號遠距離溫度測量系統中,需要很好的解決引線誤差補償問題、多點測量切換誤差問題和放大電路零點漂移誤差問題等技術問題,才能夠達到較高的測量精度。我們在為某水電站開發水輪發電機組軸瓦溫度實時監測系統時,為了克服上面提到的三個問題,采用了新型數字溫度傳感器DS1820,在對其測溫原理進行詳細分析的基礎上,提出了提高DS1820測量精度的方法,使DS1820的測量精度由0.5℃提高到0.1℃以上,取得了良好的測溫效果。 1 DS1820簡介 DS1820是美國DALLAS半導體公司生產的可組網數字式溫度傳感器,在其內部使用了在板(ON-B0ARD)專利技術。全部傳感元件及轉換電路集成在形如一只三極管的集成電路內。與其它溫度傳感器相比,DS1820具有以下特性: (1)獨特的單線接口方式,DS1820在與微處理器連接時僅需要一條口線即可實現微處理器與DS1820的雙向通訊。 (2)DS1820支持多點組網功能,多個DS1820可以并聯在唯一的三線上,實現多點測溫。 (3)DS1820在使用中不需要任何外圍元件。 (4)溫范圍-55℃~+125℃,固有測溫分辨率0.5℃。 (5)測量結果以9位數字量方式串行傳送。 DS1820內部結構框圖如圖1所示。 DS1820測溫原理如圖2所示。圖中低溫度系數晶振的振蕩頻率受溫度影響很小,用于產生固定頻率的脈沖信號送給計數器1。高溫度系數晶振隨溫度變化其振蕩率明顯改變,所產生的信號作為計數器2的脈沖輸入。計數器1和溫度寄存器被預置在-55℃所對應的一個基數值。計數器1對低溫度系數晶振產生的脈沖信號進行減法計數,當計數器1的預置值減到0時,溫度寄存器的值將加1,計數器1的預置將重新被裝入,計數器1重新開始對低溫度系數晶振產生的脈沖信號進行計數,如此循環直到計數器2計數到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數值即為所測溫度。圖2中的斜率累加器用于補償和修正測溫過程中的非線性,其輸出用于修正計數器1的預置值。 在正常測溫情況下,DS1820的測溫分辯率為0.5℃以9位數據格式表示,其中最低有效位(LSB)由比較器進行0.25℃比較,當計數器1中的余值轉化成溫度后低于0.25℃時,清除溫度寄存器的最低位(LSB),當計數器1中的余值轉化成溫度后高于0.25℃,置位溫度寄存器的最低位(LSB),如-25.5℃對應的9位數據格式如下: 2 提高DS1820測溫精度的途徑 DS1820正常使用時的測溫分辨率為0.5℃,這對于水輪發電機組軸瓦溫度監測來講略顯不足,在對DS1820測溫原理詳細分析的基礎上,我們采取直接讀取DS1820內部暫存寄存器的方法,將DS1820的測溫分辨率提高到0.1℃~0.01℃. DS1820內部暫存寄存器的分布如表1所示,其中第7字節存放的是當溫度寄存器停止增值時計數器1的計數剩余值,第8字節存放的是每度所對應的計數值,這樣,我們就可以通過下面的方法獲得高分辨率的溫度測量結果。首先用DS1820提供的讀暫存寄存器指令(BEH)讀出以0.5℃為分辨率的溫度測量結果,然后切去測量結果中的最低有效位(LSB),得到所測實際溫度整數部分T整數,然后再用BEH指令讀取計數器1的計數剩余值M剩余和每度計數值M每度,考慮到DS1820測量溫度的整數部分以0.25℃、0.75℃為進位界限的關系,實際溫度T實際可用下式計算得到: T實際=(T整數-0.25℃)+(M每度-M剩余)/M每度 3 DS1820使用中注意事項 DS1820雖然具有測溫系統簡單、測溫精度高、連接方便、占用口線少等優點,但在實際應用中也應注意以下幾方面的問題: (1)較小的硬件開銷需要相對復雜的軟件進行補償,由于DS1820與微處理器間采用串行數據傳送,因此,在對DS1820進行讀寫編程時,必須嚴格的保證讀寫時序,否則將無法讀取測溫結果。在使用PL/M、C等高級語言進行系統程序設計時,對DS1820操作部分最好采用匯編語言實現。 (2)在DS1820的有關資料中均未提及單總線上所掛DS1820數量問題,容易使人誤認為可以掛任意多個DS1820,在實際應用中并非如此。當單總線上所掛DS1820超過8個時,就需要解決微處理器的總線驅動問題,這一點在進行多點測溫系統設計時要加以注意。 (3)連接DS1820的總線電纜是有長度限制的。試驗中,當采用普通信號電纜傳輸長度超過50m時,讀取的測溫數據將發生錯誤。當將總線電纜改為雙絞線帶屏蔽電纜時,正常通訊距離可達150m,當采用每米絞合次數更多的雙絞線帶屏蔽電纜時,正常通訊距離進一步加長。這種情況主要是由總線分布電容使信號波形產生畸變造成的。因此,在用DS1820進行長距離測溫系統設計時要充分考慮總線分布電容和阻抗匹配問題。 (4)在DS1820測溫程序設計中,向DS1820發出溫度轉換命令后,程序總要等待DS1820的返回信號,一旦某個DS1820接觸不好或斷線,當程序讀該DS1820時,將沒有返回信號,程序進入死循環。這一點在進行DS1820硬件連接和軟件設計時也要給予一定的重視。 |