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