1、DS18B20基本知識(shí)及管腳
DS18B20數(shù)字溫度計(jì)是DALLAS公司生產(chǎn)的1-Wire,即單總線器件,具有線路簡(jiǎn)單、體積小的特點(diǎn)。因此用它來組成一個(gè)測(cè)溫系統(tǒng),線路簡(jiǎn)單,在一根通信線上,可以掛很多這樣的數(shù)字溫度計(jì),十分方便。DS18B20是美國DALLAS公司新推出的一種可組網(wǎng)數(shù)字式溫度傳感器,與DS1820相似,DS18B20也能夠直接讀取被測(cè)物體的溫度值。但是與DS1820相比,DS18B20的功能更強(qiáng)大些。它體積小,電壓適用范圍寬(3~5V),用戶還可以通過編程實(shí)現(xiàn)9~12位的溫度讀數(shù),即具有可調(diào)的溫度分辨率,因此它的實(shí)用性和可靠性比同類產(chǎn)品更高。另外,DS18B20有多種封裝可選,如TO-92, SOIC及CSP封裝。圖5-5即為DS18B20的引腳排列圖。其引腳功能見表5-1。
2、DS18B20內(nèi)部結(jié)構(gòu)
DS18B20內(nèi)部結(jié)構(gòu)如圖5-6所示,主要由4部分組成:溫度傳感器、64位ROM、非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TI、配置寄存器。由圖5-6可見,DS18B20只有一個(gè)數(shù)據(jù)輸入輸出口,屬于單總線專用芯片之一。DS18B20工作時(shí)被測(cè)溫度值直接以“單總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾能力。其內(nèi)部采用在線溫度測(cè)量技術(shù),測(cè)量范圍為55~125°C,在-10~85℃時(shí),精度為±0.5°C。每個(gè)DS18B20在出廠時(shí)都已具有唯一的64位序列號(hào),因此一條總線上可以同時(shí)掛接多個(gè)DS18B20,而不會(huì)出現(xiàn)混亂現(xiàn)象。另外用戶還可自設(shè)定非易失性溫度報(bào)警上下限值TH和TL(掉電后依然保存)。DS18B20在完成溫度變換后,所測(cè)溫度值將自動(dòng)與存儲(chǔ)在TH和TL內(nèi)的觸發(fā)值相比較,如果測(cè)溫結(jié)果高于TH或低于TL, DS18B20內(nèi)部的告警標(biāo)志就會(huì)被置位,表示溫值超出了測(cè)量范圍,同時(shí)還有報(bào)警搜索命令識(shí)別出溫度超限的DS18B20。
① 64位閃存ROM的結(jié)構(gòu)如圖5-7所示。
首先是8位的產(chǎn)品單線系列編碼,接著是每個(gè)器件的唯一的序號(hào),共有48位,最重要的8位是前面56位的CRC校驗(yàn)碼(循環(huán)冗余校驗(yàn)碼),這也是多個(gè)DS18B20可以采用一線進(jìn)行通信的原因。
②非易失性溫度報(bào)警觸發(fā)器TH和TL,可通過軟件寫人用戶報(bào)警上下限。
③高速暫存存儲(chǔ)器。DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的(E2) RAM。后者用于存儲(chǔ)TH和TL值。數(shù)據(jù)先寫人RAM,經(jīng)校驗(yàn)后再傳給(E2)RAM。而配置寄存器為高速暫存器中的第5個(gè)字節(jié),它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率,DS18B20工作時(shí)按此寄存器中的分辨率將溫度轉(zhuǎn)換為相應(yīng)精度的數(shù)值。該字節(jié)各位的定義如圖5-8所示。低5位一直都是1, TM是測(cè)試模式位,用于設(shè)置DS18B20在工作模式還是在測(cè)試模式。在DS18B20出廠時(shí)該位被設(shè)置為0,用戶不要去改動(dòng),R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),即用于設(shè)置分辨率,如表5-2所示(DS18B20出廠時(shí)被設(shè)置為12位)。
如表5-2可見,設(shè)定的分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時(shí)間就越長(zhǎng)。因此,在實(shí)際應(yīng)用中要在分辨率和轉(zhuǎn)換時(shí)間之間權(quán)衡考慮。高速暫存存儲(chǔ)器除了配置寄存器外,還有其他8個(gè)字節(jié),其分配如圖5-9所示。其中溫度信息(第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ù)格式以0.0625°C/LSB形式表示。溫度值格式如圖5-10所示。符號(hào)位S=0時(shí),直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)S=1時(shí),先將補(bǔ)碼變換為原碼,再計(jì)算十進(jìn)制值。表5-3是對(duì)應(yīng)的一部分溫度值。
DS18B20完成溫度轉(zhuǎn)換后,就把測(cè)得的溫度值與TH、TL進(jìn)行比較,若T>TH或T< TL,則將該器件內(nèi)的告警標(biāo)志置位,并對(duì)主機(jī)發(fā)出的警告搜索命令作出響應(yīng)。因此,可用多只DS18B20同時(shí)測(cè)量溫度并進(jìn)行告警搜索。
④CRC的產(chǎn)生。在64位ROM的最高有效字節(jié)中存儲(chǔ)有循環(huán)冗余校驗(yàn)碼(CRC)。主機(jī)根據(jù)ROM的前56位來計(jì)算CRC值,并和存入DS18B20中的CRC值進(jìn)行比較,以判斷主機(jī)收到的ROM數(shù)據(jù)是否正確。
3、DS18B20的測(cè)溫原理
DS18B20的內(nèi)部測(cè)溫電路框圖如圖5-11所示,圖中低溫度系數(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ù)置值減到。時(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è)溫度。圖5-11中的斜率累加器用于補(bǔ)償和修正測(cè)溫過程中的非線性,其輸出用于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)門仍未關(guān)閉就重復(fù)上述過程,直至溫度寄存器值達(dá)到被測(cè)溫度值,這就是DS18B20的測(cè)溫原理。
由于DS18B20是在一根I/O線上讀寫數(shù)據(jù),因此,對(duì)讀寫的數(shù)據(jù)位有著嚴(yán)格的時(shí)序要求。DS18B20有嚴(yán)格的通信協(xié)議來保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號(hào)的時(shí)序:初始化時(shí)序、讀時(shí)序、寫時(shí)序。所有時(shí)序都是將主機(jī)作為主設(shè)備,單總線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)主動(dòng)啟動(dòng)寫時(shí)序開始,如果要求單總線器件回送數(shù)據(jù),在進(jìn)行寫命令后,主機(jī)需啟動(dòng)讀時(shí)序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。
1. DS18B20的初始時(shí)序
DS18B20的初始時(shí)間如圖5-12所示。
2. DS18B20的讀時(shí)序
對(duì)于DS18B20的讀時(shí)序分為讀0時(shí)序和讀1時(shí)序兩個(gè)過程,見圖5-13。
對(duì)于DS18B20的讀時(shí)序是從主機(jī)把單總線拉低之后,在15us之內(nèi)須釋放單總線,以便DSl8B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在完成一個(gè)讀時(shí)序過程,至少需要60us。
3. DS18B20的寫時(shí)序
對(duì)于DS18B20的寫時(shí)序仍然分為寫0時(shí)序和寫1時(shí)序兩個(gè)過程,見圖5-14。
對(duì)于DS18B20寫。時(shí)序和寫1時(shí)序的要求不同,當(dāng)要寫0時(shí)序時(shí),單總線要被拉低至少60us,保證DS18B20能夠在15~45us之間正確地采集I/O總線上的“0”電平,當(dāng)要寫1時(shí)序時(shí),單總線被拉低之后,在15us之內(nèi)須釋放單總線。
二、基于DS18B20構(gòu)成的單片機(jī)溫控系統(tǒng)
DS18B20的硬件連接(以51單片機(jī)為例),DS18B20與單片機(jī)的接口極其簡(jiǎn)單,只需將DS18B20的信號(hào)線與單片機(jī)的一位雙向端口相連即可。如圖5-15(a)所示。此時(shí)應(yīng)注意將VDD、DQ、 GND三線焊接牢固。另外也可用兩個(gè)端口,即接收口與發(fā)送口分開,這樣讀寫操作就分開了,不會(huì)出現(xiàn)信號(hào)競(jìng)爭(zhēng)的問題。如圖5-15(b)所示,此圖是采用寄生電源方式,將DS18B20的 VDD與GND接在一起。如若VDD脫開未接好,傳感器將只送85. 0℃的溫度值。一般測(cè)溫電纜線采用屏蔽4芯雙絞線,其中一對(duì)接地線與信號(hào)線,另一對(duì)接VDD和地線,屏蔽層在源端單點(diǎn)接地。