數(shù)字溫度傳感器DS18B20的讀寫時(shí)序和測溫原理與DS18B20相同,只是得到的溫度值的位數(shù)因分辨率不同而不同,且溫度轉(zhuǎn)換時(shí)的延時(shí)時(shí)間由2s減為750ms。 DS18B20測溫原理如圖1所示。圖中低溫度系數(shù)晶振的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號送給計(jì)數(shù)器1。高溫度系數(shù)晶振隨溫度變化其振蕩率明顯改變,所產(chǎn)生的信號作為計(jì)數(shù)器2的脈沖輸入。計(jì)數(shù)器1和溫度寄存器被預(yù)置在-55℃所對應(yīng)的一個基數(shù)值。計(jì)數(shù)器1對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進(jìn)行減法計(jì)數(shù),當(dāng)計(jì)數(shù)器1的預(yù)置值減到0時(shí),溫度寄存器的值將加1,計(jì)數(shù)器1的預(yù)置將重新被裝入,計(jì)數(shù)器1重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進(jìn)行計(jì)數(shù),如此循環(huán)直到計(jì)數(shù)器2計(jì)數(shù)到0時(shí),停止溫度寄存器值的累加,此時(shí)溫度寄存器中的數(shù)值即為所測溫度。圖3中的斜率累加器用于補(bǔ)償和修正測溫過程中的非線性,其輸出用于修正計(jì)數(shù)器1的預(yù)置值。
圖1: DS18B20測溫原理框圖
DS18B20有4個主要的數(shù)據(jù)部件:
1、光刻ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位(28H)是產(chǎn)品類型標(biāo)號,接著的48位是該DS18B20自身的序列號,最后8位是前面56位的循環(huán)冗余校驗(yàn)碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個DS18B20都各不相同,這樣就可以實(shí)現(xiàn)一根總線上掛接多個DS18B20的目的。
2、DS18B20中的溫度傳感器可完成對溫度的測量,以12位轉(zhuǎn)化為例:用16位符號擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,以0.0625℃/LSB形式表達(dá),其中S為符號位。
表1: DS18B20溫度值格式表
這是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲在18B20的兩個8比特的RAM中,二進(jìn)制中的前面5位是符號位,如果測得的溫度大于0,這5位為0,只要將測到的數(shù)值乘于0.0625即可得到實(shí)際溫度;如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于0.0625即可得到實(shí)際溫度。
例如:+125℃的數(shù)字輸出為07D0H,+25.0625℃的數(shù)字輸出為0191H,-25.0625℃的數(shù)字輸出為FF6FH,-55℃的數(shù)字輸出為FC90H。
表2: DS18B20溫度數(shù)據(jù)表
DS18B20溫度傳感器的內(nèi)部存儲器包括一個高速暫存RAM和一個非易失性的可電擦除的EEPRAM,后者存放高溫度和低溫度觸發(fā)器TH、TL和結(jié)構(gòu)寄存器。
4、配置寄存器
該字節(jié)各位的意義如下:
低五位一直都是"1",TM是測試模式位,用于設(shè)置DS18B20在工作模式還是在測試模式。在DS18B20出廠時(shí)該位被設(shè)置為0,用戶不要去改動。R1和R0用來設(shè)置分辨率,如下表所示:(DS18B20出廠時(shí)被設(shè)置為12位)
表4:溫度分辨率設(shè)置表
|
R1
|
R0
|
分辨率
|
溫度最大轉(zhuǎn)換時(shí)間
|
0
|
0
|
9位
|
93.75ms
|
0
|
1
|
10位
|
187.5ms
|
1
|
0
|
11位
|
375ms
|
1
|
1
|
12位
|
750ms
|
|
高速暫存存儲器由9個字節(jié)組成,其分配如表5所示。當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補(bǔ)碼形式存放在高速暫存存儲器的第0和第1個字節(jié)。單片機(jī)可通過單線接口讀到該數(shù)據(jù),讀取時(shí)低位在前,高位在后,數(shù)據(jù)格式如表1所示。對應(yīng)的溫度計(jì)算:當(dāng)符號位S=0時(shí),直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)S=1時(shí),先將補(bǔ)碼變?yōu)樵a,再計(jì)算十進(jìn)制值。表?2是對應(yīng)的一部分溫度值。第九個字節(jié)是冗余檢驗(yàn)字節(jié)。
表5: DS18B20暫存寄存器分布
|
寄存器內(nèi)容
|
字節(jié)地址
|
溫度值低位(LS Byte)
|
0
|
溫度值高位(MS Byte)
|
1
|
高溫限值(TH)
|
2
|
低溫限值(TL)
|
3
|
配置寄存器
|
4
|
保留
|
5
|
保留
|
6
|
保留
|
7
|
CRC校驗(yàn)值
|
8
|
|
根據(jù)DS18B20的通訊協(xié)議,主機(jī)(單片機(jī))控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過三個步驟:每一次讀寫之前都要對DS18B20進(jìn)行復(fù)位操作,復(fù)位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對DS18B20進(jìn)行預(yù)定的操作。復(fù)位要求主CPU將數(shù)據(jù)線下拉500微秒,然后釋放,當(dāng)DS18B20收到信號后等待16~60微秒左右,后發(fā)出60~240微秒的存在低脈沖,主CPU收到此信號表示復(fù)位成功。
表6: ROM指令表
|
指 令
|
約定代碼
|
功能
|
讀ROM
|
33H
|
讀DS1820溫度傳感器ROM中的編碼(即64位地址)
|
符合 ROM
|
55H
|
發(fā)出此命令之后,接著發(fā)出 64 位 ROM 編碼,訪問單總線上與該編碼相對應(yīng)的 DS1820 使之作出響應(yīng),為下一步對該 DS1820 的讀寫作準(zhǔn)備。
|
搜索 ROM
|
0FOH
|
用于確定掛接在同一總線上 DS1820 的個數(shù)和識別 64 位 ROM 地址。為操作各器件作好準(zhǔn)備。
|
跳過 ROM
|
0CCH
|
忽略 64 位 ROM 地址,直接向 DS1820 發(fā)溫度變換命令。適用于單片工作。
|
告警搜索命令
|
0ECH
|
執(zhí)行后只有溫度超過設(shè)定值上限或下限的片子才做出響應(yīng)。
|
|
表6: RAM指令表
|
指 令
|
約定代碼
|
功能
|
溫度變換
|
44H
|
啟動DS1820進(jìn)行溫度轉(zhuǎn)換,12位轉(zhuǎn)換時(shí)最長為750ms(9位為93.75ms)。結(jié)果存入內(nèi)部9字節(jié)RAM中。
|
讀暫存器
|
0BEH
|
讀內(nèi)部RAM中9字節(jié)的內(nèi)容
|
寫暫存器
|
4EH
|
發(fā)出向內(nèi)部RAM的3、4字節(jié)寫上、下限溫度數(shù)據(jù)命令,緊跟該命令之后,是傳送兩字節(jié)的數(shù)據(jù)。
|
復(fù)制暫存器
|
48H
|
將RAM中第3 、4字節(jié)的內(nèi)容復(fù)制到EEPROM中。
|
重調(diào) EEPROM
|
0B8H
|
將EEPROM中內(nèi)容恢復(fù)到RAM中的第3 、4字節(jié)。
|
讀供電方式
|
0B4H
|
讀DS1820的供電模式。寄生供電時(shí)DS1820發(fā)送“ 0 ”,外接電源供電 DS1820發(fā)送“ 1 ”。
|
|
更多優(yōu)質(zhì)傳感器來自永陽新能源 http://m.opd2d.com/
關(guān)鍵詞:熱電阻,熱電偶,熱敏電阻,鉑電阻,PT100,PT1000,壓力傳感器,數(shù)字溫度傳感器