1 DSl8820簡介
DS18820數字溫度計是DALEAS公司生產的1一Wire,即單總線器件,屬于新一代適配微處理器的智能數字溫度傳感器。將溫度感測、信號變換、A/D轉換和加熱功能集成到一個芯片上,采用T0—92封裝,接口非常簡單。其引腳和封裝如圖1所示,DQ為數字信號輸入/輸出端;GND為電源地;VDD為外接供電電源輸入端(在寄生電源接線方式時接地)。
2 DSl8820的內部結構和工作時序
2.1 DSl8820的內部結構
DSl8820內部結構如圖2所示,主要由4部分組成:64位ROM、溫度傳感器、非揮發的溫度報警觸發器TH和TL、配置寄存器。
ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DSl8820的地址序列碼,每個DSl8820的64位序列號均不相同。64位ROM的排的循環冗余校驗碼(CRC=X8+X5+X4+1)。ROM的作用是使每一個DSl8820都各不相同,這樣就可以實現一根總線上掛接多個DSl8820的目的。高速暫存器是一個9字節的存儲器。開始兩個字節包含被測溫度的數字量信息;第3、4、5字節分別是TH、TL、配置寄存器的臨時拷貝,每一次上電復位時被刷新;第6、7、8字節未用,表現為全邏輯1;第9字節讀出的是前面所有8個字節的CRC碼,可用來保證通信正確。
DSl8820中的溫度傳感器可完成對溫度的測量,并用16位符號擴展的二進制補碼形式輸出溫度值,以0.0625℃/LSB形式表達,其中S為符號位。例+125℃的數字輸出為07DOH,+25.06℃的數字輸出為019lH,一25.06℃的數字輸出為FF6FH,一55℃的數字輸出為FC90H。
高低溫報警觸發器TH和TL、配置寄存器均由一個字節的EEPROM組成,使用一個存儲器功能命令可對TH、TL或配置寄存器寫入。其中配置寄存器的格式如下:
R1、RO決定溫度轉換的精度位數:RlR0=“00”,9位精度,最大轉換時間為93.75ms;R1RO=“01”,10位精度,最大轉換時間為187.5ms;R1RO=“10”,11位精度,最大轉換時間為375ms;R1R0=“11”,12位精度,最大轉換時間為750ms;默認為12位精度。
2.2 DSl8820的工作時序
DSl8820的一線工作協議流程是:初始化→ROM操作指令→存儲器操作指令→數據傳輸。其工作時序包括初始化時序、寫時序和讀時序,如下圖3所示:
(1)DSl8820的復位時序
(2)DSl8820的讀時序
對于DSl8820的讀時序分為讀0時序和讀1時序兩個過程。對于DSl8820的讀時隙是從主機把單總線拉低之后,在15秒之內就得釋放單總線,以讓DSl8820把數據傳輸到單總線上。DSl8820在完成一個讀時序過程,至少需要60us才能完成。
(3)DSl8820的寫時序
對于DSl8820的寫時序仍然分為寫0時序和寫1時序兩個過程。
對于DSl8820寫0時序和寫1時序的要求不同,當要寫O時序時,單總線要被拉低至~>60us,保證DSl8820能夠在15us到45us之間能夠正確地采樣IO總線上的“O”電平,當要寫l時序時,單總線被拉低之后,在15us之內就得釋放單總線。
3 DSl8820的應用設計
DSl8820采用的是1一Wire總線協議方式,即在一根數據線實現數據的雙向傳輸。對AT89S5l單片機來說,硬件上并不支持單總線協議,因此必須采用軟件的方法來模擬單總線的協議時序來完成對Dsl8820芯片的訪問。
3.1 硬件設計
DSl8820采用的是1一Wire總線協議方式,即在一根數據線實現數據的雙向串行傳輸,所以硬件接口電路非常簡單。需要注意的地方是:DQ數據線需要接上拉電阻。DSl8820有兩種接線方式:寄生電源方式和外接電源方式。圖3以MCS一5l系列單片機為例,畫出了DSl8820與微處理器的典型連接。圖4(上)中DSl8820采用寄生電源方式,其VDD和GND端均接地,圖4(下)中DS18820采用外接電源方式,其VDD端用3V~5.5V電源供電。
圖4 DSl8820與微處理器的典型連接
3.2 軟件設計
由于DSl8820是在一根I/0線上讀寫數據,因此,對讀寫的數據位有著嚴格的時序要求。DSl8820有嚴格的通信協議來保證各位數據傳輸的正確性和完整性。該協議定義了幾種信號的時序:初始化時序、讀時序、寫時序。所有時序都是將主機作為主設備,單總線器件作為從設備。而每一次命令和數據的傳輸都是從主機主動啟動寫時序開始,如果要求單總線器件回送數據,在進行寫命令后,主機需啟動讀時序完成數據接收。數據和命令的傳輸都是低位在先。
4 DSl8820使用中的注意事項
DSl820雖然具有測溫系統簡單、測溫精度高、連接方便、占用口線少等優點,但在實際應用中也應注意以下幾方面的問題:
(1)較小的硬件開銷需要相對復雜的軟件進行補償,由于DSl820與微處理器問采用串行數據傳送,因此,在對DSl820進行讀寫編程時,必須嚴格的保證讀寫時序,否則將無法讀取測溫結果。在使用PL/M、C等高級語言進行系統程序設計時,對DSl820操作部分最好采用匯編語言實現。
(2)在DSl820的有關資料中均未提及單總線上所掛DSl820數量問題,容易使人誤認為可以掛任意多個DSl820,在實際應用中并非如此。當單總線上所掛DSl820超過8個時,就需要解決微處理器的總線驅動問題。
(3)連接DSl820的總線電纜是有長度限制的。試驗中,當采用普通信號電纜傳輸長度超過50m時,讀取的測溫數據將發生錯誤。當將總線電纜改為雙絞線帶屏蔽電纜時,通訊距離可達150m,當采用每米絞合次數更多的雙絞線帶屏蔽電纜時,通訊距離進一步加長。這種情況主要是由總線分布電容使信號波形產生畸變造成的。因此,在用DSl820進行長距離測溫系統設計時要充分考慮總線分布電容和阻抗匹配問題。
(4)在DSl820測溫程序設計中,向DSl820發出溫度轉換命令后,程序需要等待DSl820的返回信號。一旦某個DSl820接觸不好或斷線,讀該DSl820時將沒有返回信號,程序將進入死循環。
5 結論
采用數字溫度傳感器DS18820進行溫度的時實監測的系統具有轉換精度高、體積小、與微處理器接口簡單等優點;能夠給硬件設計工作帶來了極大的方便,能有效地降低成本,縮短開發周期。另外DSl8820芯片內部集成了9位~12位A/D轉換精度,測溫分辨率可達0.0625℃,被測溫度用符號擴展的16位數字信號的方式串行輸出,因此抗干擾能力也比同類芯片高。DSl8820在溫度監測、自動控制等領域均已得到廣泛的應用。