摘 要:DS18B20是DALLAS公司生產的單線數字溫度傳感器,他具有獨特的單線總線接口方式。文章詳細的介紹了單線數字溫度傳感器DS18B20的測量原理、特性以及在溫度測量中的硬件和軟件設計,具有接口簡單、精度高、抗干擾能力強、工作穩定可靠等特點。
關鍵詞:DS18B20;單線制;溫度傳感器;單片機
DS18B20是美國DALLAS半導體公司繼DS1820之后最新推出的一種改進型智能溫度傳感器。與傳統的熱敏電阻相比,他能夠直接讀出被測溫度并且可根據實際要求通過簡單的編程實現9~12位的數字值讀數方式。可以分別在93.75 ms和750 ms內完成9位和12位的數字量,并且從DS18B20讀出的信息或寫入DS18B20的信息僅需要一根口線(單線接口)讀寫,溫度變換功率來源于數據總線,總線本身也可以向所掛接的DS18B20供電,而無需額外電源。因而使用DS18B20可使系統結構更趨簡單,可靠性更高。他在測溫精度、轉換時間、傳輸距離、分辨率等方面較DS1820有了很大的改進,給用戶帶來了更方便的使用和更令人滿意的效果。?
1.DS18B20簡介
(1)獨特的單線接口方式:DS18B20與微處理器連接時僅需要一條口線即可實現微處理器與DS18B20的雙向通訊。
(2)在使用中不需要任何外圍元件。
(3)可用數據線供電,電壓范圍:+3.0~?+5.5 V。
(4)測溫范圍:-55 ~+125 ℃。固有測溫分辨率為0.5 ℃。
(5)通過編程可實現9~12位的數字讀數方式。
(6)用戶可自設定非易失性的報警上下限值。
(7)支持多點組網功能,多個DS18B20可以并聯在惟一的三線上,實現多點測溫。
(8)負壓特性,電源極性接反時,溫度計不會因發熱而燒毀,但不能正常工作。?
2.DS18B20的內部結構
DS18B20采用3腳PR35封裝或8腳SOIC封裝,其內部結構框圖如圖1所示。
?
(1) 64 b閃速ROM的結構如下:
?
開始8位是產品類型的編號,接著是每個器件的惟一的序號,共有48位,最后8位是前56位的CRC校驗碼,這也是多個DS18B20可以采用一線進行通信的原因。
(2) 非易市失性溫度報警觸發器TH和TL,可通過軟件寫入用戶報警上下限。
(3) 高速暫存存儲器
DS18B20溫度傳感器的內部存儲器包括一個高速暫存RAM和一個非易失性的可電擦除的E?2RAM。后者用于存儲TH,TL值。數據先寫入RAM,經校驗后再傳給E?2RAM。而配置寄存器為高速暫存器中的第5個字節,他的內容用于確定溫度值的數字轉換分辨率,DS18B20工作時按此寄存器中的分辨率將溫度轉換為相應精度的數值。該字節各位的定義如下:

低5位一直都是1,TM是測試模式位,用于設置DS18B20在工作模式還是在測試模式。在DS18B20出廠時該位被設置為0,用戶不要去改動,R1和R0決定溫度轉換的精度位數,即是來設置分辨率,如表1所示(DS18B20出廠時被設置為12位)。?

由表1可見,設定的分辨率越高,所需要的溫度數據轉換時間就越長。因此,在實際應用中要在分辨率和轉換時間權衡考慮。
高速暫存存儲器除了配置寄存器外,還有其他8個字節組成,其分配如下所示。其中溫度信息(第1,2字節)、TH和TL值第3,4字節、第6~8字節未用,表現為全邏輯1;第9字節讀出的是前面所有8個字節的CRC碼,可用來保證通信正確。
?
當DS18B20接收到溫度轉換命令后,開始啟動轉換。轉換完成后的溫度值就以16位帶符號擴展的二進制補碼形式存儲在高速暫存存儲器的第1,2字節。單片機可通過單線接口讀到該數據,讀取時低位在前,高位在后,數據格式以0?062 5 ℃/LSB形式表示。溫度值格式如下:
?
對應的溫度計算:當符號位S=0時,直接將二進制位轉換為十進制;當S=1時,先將補碼變換為原碼,再計算十進制值。表2是對應的一部分溫度值。
?
DS18B20完成溫度轉換后,就把測得的溫度值與TH,TL作比較,若T>TH或T<TL,則將該器件內的告警標志置位,并對主機發出的告警搜索命令作出響應。因此,可用多只DS18B20同時測量溫度并進行告警搜索。
(4) CRC的產生
在64 b ROM的最高有效字節中存儲有循環冗余校驗碼(CRC)。主機根據ROM的前56位來計算CRC值,并和存入DS18B20中的CRC值做比較,以判斷主機收到的ROM數據是否正確。?

3.DS18B20的測溫原理
DS18B20的測溫原理如圖2所示,圖中低溫度系數晶振的振蕩頻率受溫度的影響很小[1],用于產生固定頻率的脈沖信號送給減法計數器1,高溫度系數晶振隨溫度變化其震蕩頻率明顯改變,所產生的信號作為減法計數器2的脈沖輸入,圖中還隱含著計數門,當計數門打開時,DS18B20就對低溫度系數振蕩器產生的時鐘脈沖后進行計數,進而完成溫度測量。計數門的開啟時間由高溫度系數振蕩器來決定,每次測量前,首先將-55 ℃所對應的基數分別置入減法計數器1和溫度寄存器中,減法計數器1和溫度寄存器被預置在?-55 ℃?所對應的一個基數值。減法計數器1對低溫度系數晶振產生的脈沖信號進行減法計數,當減法計數器1的預置值減到0時溫度寄存器的值將加1,減法計數器1的預置將重新被裝入,減法計數器1重新開始對低溫度系數晶振產生的脈沖信號進行計數,如此循環直到減法計數器2計數到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數值即為所測溫度。圖2中的斜率累加器用于補償和修正測溫過程中的非線性,其輸出用于修正減法計數器的預置值,只要計數門仍未關閉就重復上述過程,直至溫度寄存器值達到被測溫度值,這就是DS18B20的測溫原理。
另外,由于DS18B20單線通信功能是分時完成的,他有嚴格的時隙概念,因此讀寫時序很重要。系統對DS18B20的各種操作必須按協議進行。操作協議為:初始化DS18B20(發復位脈沖)→發ROM功能命令→發存儲器操作命令→處理數據。各種操作的時序圖與DS1820相同,可參看文獻[2]。?

4.DS18B20與單片機的典型接口設計
以MCS51單片機為例,圖3中采用寄生電源供電方式, P1? 1口接單線總線為保證在有效的DS18B20時鐘周期內提供足夠的電流,可用一個MOSFET管和89C51的P1?0來完成對總線的上拉[2]。當DS18B20處于寫存儲器操作和溫度A/D變換操作時,總線上必須有強的上拉,上拉開啟時間最大為10 μs。采用寄生電源供電方式是VDD和GND端均接地。由于單線制只有一根線,因此發送接收口必須是三態的。主機控制DS18B20完成溫度轉換必須經過3個步驟:初始化、ROM操作指令、存儲器操作指令。假設單片機系統所用的晶振頻率為12 MHz,根據DS18B20的初始化時序、寫時序和讀時序,分別編寫3個子程序:INIT為初始化子程序,WRITE為寫(命令或數據)子程序,READ為讀數據子程序,所有的數據讀寫均由最低位開始,實際在實驗中不用這種方式,只要在數據線上加一個上拉電阻4.7 kΩ,另外2個腳分別接電源和地。?
5.DS18B20的精確延時問題
雖然DS18B20有諸多優點,但使用起來并非易事,由于采用單總線數據傳輸方式,DS18B20的數據I/O均由同一條線完成。因此,對讀寫的操作時序要求嚴格。為保證DS18B20的嚴格I/O時序,需要做較精確的延時。在DS18B20操作中,用到的延時有15 μs,90 μs,270 μs,540 μs等。因這些延時均為15 μs的整數倍,因此可編寫一個DELAY15(n)函數,源碼如下:

只要用該函數進行大約15 μs×N的延時即可。有了比較精確的延時保證,就可以對DS18B20進行讀寫操作、溫度轉換及顯示等操作。?
6.結語
我們已成功地將DS18B20應用于所開發的“LCD顯示氣溫”的控制系統中,其測溫系統簡單,測溫精度高,連接方便,占用口線少,轉換速度快,與微處理器的接口簡單,給硬件設計工作帶來了極大的方便,能有效地降低成本,縮短開發周期。
作者簡介:
趙海蘭? 江蘇張家港 沙洲職業工學院
趙祥偉 ?江蘇張家港高新張銅公司
參考文獻:
[1]胡振宇,劉魯源,杜振輝?DS18B20接口的C語言程序 設計[J]單片機與嵌入式系統應用,2002,(7)
[2]金偉正?單線數字溫度傳感器的原理與應用?[J].電子技術應用,2000,(6):6668?








