(1)獨(dú)特的單線接口方式:DS18B20與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與DS18B20的雙向通訊。 ?。?)在使用中不需要任何外圍元件。 (3)可用數(shù)據(jù)線供電,電壓范圍:+3.0~+5.5V。 ?。?)測(cè)溫范圍:-55~+125℃。固有測(cè)溫分辨率為0.5℃。 ?。?)通過編程可實(shí)現(xiàn)9~12位的數(shù)字讀數(shù)方式。 ?。?)用戶可自設(shè)定非易失性的報(bào)警上下限值。 ?。?)支持多點(diǎn)組網(wǎng)功能,多個(gè)DS18B20可以并聯(lián)在惟一的三線上,實(shí)現(xiàn)多點(diǎn)測(cè)溫。 ?。?)負(fù)壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作。 2.DS18B20的內(nèi)部結(jié)構(gòu) DS18B20采用3腳PR35封裝或8腳SOIC封裝,其內(nèi)部結(jié)構(gòu)框圖如圖1所示。 (1)64b閃速ROM的結(jié)構(gòu)如下: 開始8位是產(chǎn)品類型的編號(hào),接著是每個(gè)器件的惟一的序號(hào),共有48位,最后8位是前56位的CRC校驗(yàn)碼,這也是多個(gè)DS18B20可以采用一線進(jìn)行通信的原因。 (2)非易市失性溫度報(bào)警觸發(fā)器TH和TL,可通過軟件寫入用戶報(bào)警上下限。 (3)高速暫存存儲(chǔ)器 DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的E2RAM。后者用于存儲(chǔ)TH,TL值。數(shù)據(jù)先寫入RAM,經(jīng)校驗(yàn)后再傳給E2RAM。而配置寄存器為高速暫存器中的第5個(gè)字節(jié),他的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率,DS18B20工作時(shí)按此寄存器中的分辨率將溫度轉(zhuǎn)換為相應(yīng)精度的數(shù)值。該字節(jié)各位的定義如下: 低5位一直都是1,TM是測(cè)試模式位,用于設(shè)置DS18B20在工作模式還是在測(cè)試模式。在DS18B20出廠時(shí)該位被設(shè)置為0,用戶不要去改動(dòng),R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),即是來設(shè)置分辨率,如表1所示(DS18B20出廠時(shí)被設(shè)置為12位)。 由表1可見,設(shè)定的分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時(shí)間就越長(zhǎng)。因此,在實(shí)際應(yīng)用中要在分辨率和轉(zhuǎn)換時(shí)間權(quán)衡考慮。 高速暫存存儲(chǔ)器除了配置寄存器外,還有其他8個(gè)字節(jié)組成,其分配如下所示。其中溫度信息(第1,2字節(jié))、TH和TL值第3,4字節(jié)、第6~8字節(jié)未用,表現(xiàn)為全邏輯1;第9字節(jié)讀出的是前面所有8個(gè)字節(jié)的CRC碼,可用來保證通信正確。 當(dāng)DS18B20接收到溫度轉(zhuǎn)換命令后,開始啟動(dòng)轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼形式存儲(chǔ)在高速暫存存儲(chǔ)器的第1,2字節(jié)。單片機(jī)可通過單線接口讀到該數(shù)據(jù),讀取時(shí)低位在前,高位在后,數(shù)據(jù)格式以0062 5℃/LSB形式表示。溫度值格式如下: 對(duì)應(yīng)的溫度計(jì)算:當(dāng)符號(hào)位S=0時(shí),直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)S=1時(shí),先將補(bǔ)碼變換為原碼,再計(jì)算十進(jìn)制值。表2是對(duì)應(yīng)的一部分溫度值。 DS18B20完成溫度轉(zhuǎn)換后,就把測(cè)得的溫度值與TH,TL作比較,若T TH或T TL,則將該器件內(nèi)的告警標(biāo)志置位,并對(duì)主機(jī)發(fā)出的告警搜索命令作出響應(yīng)。因此,可用多只DS18B20同時(shí)測(cè)量溫度并進(jìn)行告警搜索。 (4)CRC的產(chǎn)生 在64b ROM的最高有效字節(jié)中存儲(chǔ)有循環(huán)冗余校驗(yàn)碼(CRC)。主機(jī)根據(jù)ROM的前56位來計(jì)算CRC值,并和存入DS18B20中的CRC值做比較,以判斷主機(jī)收到的ROM數(shù)據(jù)是否正確。 3.DS18B20的測(cè)溫原理 DS18B20的測(cè)溫原理如圖2所示,圖中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很?。?],用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器1,高溫度系數(shù)晶振隨溫度變化其震蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器2的脈沖輸入,圖中還隱含著計(jì)數(shù)門,當(dāng)計(jì)數(shù)門打開時(shí),DS18B20就對(duì)低溫度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖后進(jìn)行計(jì)數(shù),進(jìn)而完成溫度測(cè)量。計(jì)數(shù)門的開啟時(shí)間由高溫度系數(shù)振蕩器來決定,每次測(cè)量前,首先將-55 ℃所對(duì)應(yīng)的基數(shù)分別置入減法計(jì)數(shù)器1和溫度寄存器中,減法計(jì)數(shù)器1和溫度寄存器被預(yù)置在-55 ℃所對(duì)應(yīng)的一個(gè)基數(shù)值。減法計(jì)數(shù)器1對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)減法計(jì)數(shù)器1的預(yù)置值減到0時(shí)溫度寄存器的值將加1,減法計(jì)數(shù)器1的預(yù)置將重新被裝入,減法計(jì)數(shù)器1重新開始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到減法計(jì)數(shù)器2計(jì)數(shù)到0時(shí),停止溫度寄存器值的累加,此時(shí)溫度寄存器中的數(shù)值即為所測(cè)溫度。圖2中的斜率累加器用于補(bǔ)償和修正測(cè)溫過程中的非線性,其輸出用于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)門仍未關(guān)閉就重復(fù)上述過程,直至溫度寄存器值達(dá)到被測(cè)溫度值,這就是DS18B20的測(cè)溫原理。 另外,由于DS18B20單線通信功能是分時(shí)完成的,他有嚴(yán)格的時(shí)隙概念,因此讀寫時(shí)序很重要。系統(tǒng)對(duì)DS18B20的各種操作必須按協(xié)議進(jìn)行。操作協(xié)議為:初始化DS18B20(發(fā)復(fù)位脈沖) 發(fā)ROM功能命令 發(fā)存儲(chǔ)器操作命令 處理數(shù)據(jù)。各種操作的時(shí)序圖與DS1820相同,可參看文獻(xiàn)[2]。 4.DS18B20與單片機(jī)的典型接口設(shè)計(jì) 以MCS51單片機(jī)為例,圖3中采用寄生電源供電方式, P11口接單線總線為保證在有效的DS18B20時(shí)鐘周期內(nèi)提供足夠的電流,可用一個(gè)MOSFET管和89C51的P10來完成對(duì)總線的上拉[2]。當(dāng)DS18B20處于寫存儲(chǔ)器操作和溫度A/D變換操作時(shí),總線上必須有強(qiáng)的上拉,上拉開啟時(shí)間最大為10 s。采用寄生電源供電方式是VDD和GND端均接地。由于單線制只有一根線,因此發(fā)送接收口必須是三態(tài)的。主機(jī)控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過3個(gè)步驟:初始化、ROM操作指令、存儲(chǔ)器操作指令。假設(shè)單片機(jī)系統(tǒng)所用的晶振頻率為12 MHz,根據(jù)DS18B20的初始化時(shí)序、寫時(shí)序和讀時(shí)序,分別編寫3個(gè)子程序:INIT為初始化子程序,WRITE為寫(命令或數(shù)據(jù))子程序,READ為讀數(shù)據(jù)子程序,所有的數(shù)據(jù)讀寫均由最低位開始,實(shí)際在實(shí)驗(yàn)中不用這種方式,只要在數(shù)據(jù)線上加一個(gè)上拉電阻4.7 k ,另外2個(gè)腳分別接電源和地。 5.DS18B20的精確延時(shí)問題 雖然DS18B20有諸多優(yōu)點(diǎn),但使用起來并非易事,由于采用單總線數(shù)據(jù)傳輸方式,DS18B20的數(shù)據(jù)I/O均由同一條線完成。因此,對(duì)讀寫的操作時(shí)序要求嚴(yán)格。為保證DS18B20的嚴(yán)格I/O時(shí)序,需要做較精確的延時(shí)。在DS18B20操作中,用到的延時(shí)有15 s,90 s,270 s,540 s等。因這些延時(shí)均為15 s的整數(shù)倍,因此可編寫一個(gè)DELAY15(n)函數(shù),源碼如下: 只要用該函數(shù)進(jìn)行大約15 s N的延時(shí)即可。有了比較精確的延時(shí)保證,就可以對(duì)DS18B20進(jìn)行讀寫操作、溫度轉(zhuǎn)換及顯示等操作。