<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > DS18B20工作原理及時(shí)序

DS18B20工作原理及時(shí)序

作者: 時(shí)間:2016-11-27 來(lái)源:網(wǎng)絡(luò ) 收藏
DS18B20工作原理時(shí)序

本文引用地址:http://dyxdggzs.com/article/201611/322143.htm

  • DS18B20原理與分析

DS18B20是美國DALLAS半導體公司繼DS1820之后最新推出的一種改進(jìn)型智能溫度傳感器。與傳統的熱敏電阻相比,他能夠直接讀出被測溫度并且可根據實(shí)際要求通過(guò)簡(jiǎn)單的編程實(shí)現9~12位的數字值讀數方式??梢苑謩e在93.75 ms和750 ms內完成9位和12位的數字量,并且從DS18B20讀出的信息或寫(xiě)入DS18B20的信息僅需要一根口線(xiàn)(單線(xiàn)接口)讀寫(xiě),溫度變換功率來(lái)源于數據總線(xiàn),總線(xiàn)本身也可以向所掛接的DS18B20供電,而無(wú)需額外電源。因而使用DS18B20可使系統結構更趨簡(jiǎn)單,可靠性更高。他在測溫精度、轉換時(shí)間、傳輸距離、分辨率等方面較DS1820有了很大的改進(jìn),給用戶(hù)帶來(lái)了更方便的使用和更令人滿(mǎn)意的效果。

1.DS18B20簡(jiǎn)介

(1)獨特的單線(xiàn)接口方式:DS18B20與微處理器連接時(shí)僅需要一條口線(xiàn)即可實(shí)現微處理器與DS18B20的雙向通訊。

(2)在使用中不需要任何外圍元件。

(3)可用數據線(xiàn)供電,電壓范圍:+3.0~ +5.5 V。

(4)測溫范圍:-55 ~+125 ℃。固有測溫分辨率為0.5 ℃。

(5)通過(guò)編程可實(shí)現9~12位的數字讀數方式。

(6)用戶(hù)可自設定非易失性的報警上下限值。

(7)支持多點(diǎn)組網(wǎng)功能,多個(gè)DS18B20可以并聯(lián)在惟一的三線(xiàn)上,實(shí)現多點(diǎn)測溫。

(8)負壓特性,電源極性接反時(shí),溫度計不會(huì )因發(fā)熱而燒毀,但不能正常工作。

DS18B20的測溫原理

DS18B20的測溫原理如圖2所示,圖中低溫度系數晶振的振蕩頻率受溫度的影響很小〔1〕,用于產(chǎn)生固定頻率的脈沖信號送給減法計數器1,高溫度系數晶振隨溫度變化其震蕩頻率明顯改變,所產(chǎn)生的信號作為減法計數器2的脈沖輸入,圖中還隱含著(zhù)計數門(mén),當計數門(mén)打開(kāi)時(shí),DS18B20就對低溫度系數振蕩器產(chǎn)生的時(shí)鐘脈沖后進(jìn)行計數,進(jìn)而完成溫度測量。計數門(mén)的開(kāi)啟時(shí)間由高溫度系數振蕩器來(lái)決定,每次測量前,首先將-55 ℃所對應的基數分別置入減法計數器1和溫度寄存器中,減法計數器1和溫度寄存器被預置在 -55 ℃ 所對應的一個(gè)基數值。減法計數器1對低溫度系數晶振產(chǎn)生的脈沖信號進(jìn)行減法計數,當減法計數器1的預置值減到0時(shí)溫度寄存器的值將加1,減法計數器1的預置將重新被裝入,減法計數器1重新開(kāi)始對低溫度系數晶振產(chǎn)生的脈沖信號進(jìn)行計數,如此循環(huán)直到減法計數器2計數到0時(shí),停止溫度寄存器值的累加,此時(shí)溫度寄存器中的數值即為所測溫度。圖2中的斜率累加器用于補償和修正測溫過(guò)程中的非線(xiàn)性,其輸出用于修正減法計數器的預置值,只要計數門(mén)仍未關(guān)閉就重復上述過(guò)程,直至溫度寄存器值達到被測溫度值,這就是DS18B20的測溫原理。

另外,由于DS18B20單線(xiàn)通信功能是分時(shí)完成的,他有嚴格的時(shí)隙概念,因此讀寫(xiě)時(shí)序很重要。系統對DS18B20的各種操作必須按協(xié)議進(jìn)行。操作協(xié)議為:初始化DS18B20(發(fā)復位脈沖)→發(fā)ROM功能命令→發(fā)存儲器操作命令→處理數據。各種操作的時(shí)序圖與DS1820相同,可參看文獻〔2〕。

DS18B20工作過(guò)程及時(shí)序

DS18B20內部的低溫度系數振蕩器是一個(gè)振蕩頻率隨溫度變化很小的振蕩器,為計數器1提供一頻率穩定的計數脈沖。

高溫度系數振蕩器是一個(gè)振蕩頻率對溫度很敏感的振蕩器,為計數器2提供一個(gè)頻率隨溫度變化的計數脈沖。

初始時(shí),溫度寄存器被預置成-55℃,每當計數器1從預置數開(kāi)始減計數到0時(shí),溫度寄存器中寄存的溫度值就增加1℃,這個(gè)過(guò)程重復進(jìn)行,直到計數器2計數到0時(shí)便停止。

初始時(shí),計數器1預置的是與-55℃相對應的一個(gè)預置值。以后計數器1每一個(gè)循環(huán)的預置數都由斜率累加器提供。為了補償振蕩器溫度特性的非線(xiàn)性性,斜率累加器提供的預置數也隨溫度相應變化。計數器1的預置數也就是在給定溫度處使溫度寄存器寄存值增加1℃計數器所需要的計數個(gè)數。

DS18B20內部的比較器以四舍五入的量化方式確定溫度寄存器的最低有效位。在計數器2停止計數后,比較器將計數器1中的計數剩余值轉換為溫度值后與0.25℃進(jìn)行比較,若低于0.25℃,溫度寄存器的最低位就置0;若高于0.25℃,最低位就置1;若高于0.75℃時(shí),溫度寄存器的最低位就進(jìn)位然后置0。這樣,經(jīng)過(guò)比較后所得的溫度寄存器的值就是最終讀取的溫度值了,其最后位代表0.5℃,四舍五入最大量化誤差為±1/2LSB,即0.25℃。

溫度寄存器中的溫度值以9位數據格式表示,最高位為符號位,其余8位以二進(jìn)制補碼形式表示溫度值。測溫結束時(shí),這9位數據轉存到暫存存儲器的前兩個(gè)字節中,符號位占用第一字節,8位溫度數據占據第二字節。

DS18B20測量溫度時(shí)使用特有的溫度測量技術(shù)。DS18B20內部的低溫度系數振蕩器能產(chǎn)生穩定的頻率信號;同樣的,高溫度系數振蕩器則將被測溫度轉換成頻率信號。當計數門(mén)打開(kāi)時(shí),DS18B20進(jìn)行計數,計數門(mén)開(kāi)通時(shí)間由高溫度系數振蕩器決定。芯片內部還有斜率累加器,可對頻率的非線(xiàn)性度加以補償。測量結果存入溫度寄存器中。一般情況下的溫度值應該為9位,但因符號位擴展成高8位,所以最后以16位補碼形式讀出。

DS18B20工作過(guò)程一般遵循以下協(xié)議:初始化——ROM操作命令——存儲器操作命令——處理數據

① 初始化

單總線(xiàn)上的所有處理均從初始化序列開(kāi)始。初始化序列包括總線(xiàn)主機發(fā)出一復位脈沖,接著(zhù)由從屬器件送出存在脈沖。存在脈沖讓總線(xiàn)控制器知道DS1820 在總線(xiàn)上且已準備好操作。

② ROM操作命令

一旦總線(xiàn)主機檢測到從屬器件的存在,它便可以發(fā)出器件ROM操作命令之一。所有ROM操作命令均為8位長(cháng)。這些命令列表如下:

Read ROM(讀ROM)[33h]

此命令允許總線(xiàn)主機讀DS18B20的8位產(chǎn)品系列編碼,唯一的48位序列號,以及8位的CRC。此命令只能在總線(xiàn)上僅有一個(gè)DS18B20的情況下可以使用。如果總線(xiàn)上存在多于一個(gè)的從屬器件,那么當所有從片企圖同時(shí)發(fā)送時(shí)將發(fā)生數據沖突的現象(漏極開(kāi)路會(huì )產(chǎn)生線(xiàn)與的結果)。

Match ROM( 符合ROM)[55h]

此命令后繼以64位的ROM數據序列,允許總線(xiàn)主機對多點(diǎn)總線(xiàn)上特定的DS18B20尋址。只有與64位ROM序列嚴格相符的DS18B20才能對后繼的存貯器操作命令作出響應。所有與64位ROM序列不符的從片將等待復位脈沖。此命令在總線(xiàn)上有單個(gè)或多個(gè)器件的情況下均可使用。

Skip ROM( 跳過(guò)ROM )[CCh]

在單點(diǎn)總線(xiàn)系統中,此命令通過(guò)允許總線(xiàn)主機不提供64位ROM編碼而訪(fǎng)問(wèn)存儲器操作來(lái)節省時(shí)間。如果在總線(xiàn)上存在多于一個(gè)的從屬器件而且在Skip ROM命令之后發(fā)出讀命令,那么由于多個(gè)從片同時(shí)發(fā)送數據,會(huì )在總線(xiàn)上發(fā)生數據沖突(漏極開(kāi)路下拉會(huì )產(chǎn)生線(xiàn)與的效果)。

Search ROM( 搜索ROM)[F0h]

當系統開(kāi)始工作時(shí),總線(xiàn)主機可能不知道單線(xiàn)總線(xiàn)上的器件個(gè)數或者不知道其64位ROM編碼。搜索ROM命令允許總線(xiàn)控制器用排除法識別總線(xiàn)上的所有從機的64位編碼。

Alarm Search(告警搜索)[ECh]

此命令的流程與搜索ROM命令相同。但是,僅在最近一次溫度測量出現告警的情況下,DS18B20才對此命令作出響應。告警的條件定義為溫度高于TH 或低于TL。只要DS18B20一上電,告警條件就保持在設置狀態(tài),直到另一次溫度測量顯示出非告警值或者改變TH或TL的設置,使得測量值再一次位于允許的范圍之內。貯存在EEPROM內的觸發(fā)器值用于告警。

③ 存儲器操作命令

Write Scratchpad(寫(xiě)暫存存儲器)[4Eh]

這個(gè)命令向DS18B20的暫存器中寫(xiě)入數據,開(kāi)始位置在地址2。接下來(lái)寫(xiě)入的兩個(gè)字節將被存到暫存器中的地址位置2和3??梢栽谌魏螘r(shí)刻發(fā)出復位命令來(lái)中止寫(xiě)入。

Read Scratchpad(讀暫存存儲器)[BEh]

這個(gè)命令讀取暫存器的內容。讀取將從字節0開(kāi)始,一直進(jìn)行下去,直到第9(字節8,CRC)字節讀完。如果不想讀完所有字節,控制器可以在任何時(shí)間發(fā)出復位命令來(lái)中止讀取。

Copy Scratchpad(復制暫存存儲器)[48h]

這條命令把暫存器的內容拷貝到DS18B20的E2存儲器里,即把溫度報警觸發(fā)字節存入非易失性存儲器里。如果總線(xiàn)控制器在這條命令之后跟著(zhù)發(fā)出讀時(shí)間隙,而DS18B20又正在忙于把暫存器拷貝到E2存儲器,DS18B20就會(huì )輸出一個(gè)“0”,如果拷貝結束的話(huà),DS18B20 則輸出“1”。如果使用寄生電源,總線(xiàn)控制器必須在這條命令發(fā)出后立即起動(dòng)強上拉并最少保持10ms。

Convert T(溫度變換)[44h]

這條命令啟動(dòng)一次溫度轉換而無(wú)需其他數據。溫度轉換命令被執行,而后DS18B20保持等待狀態(tài)。如果總線(xiàn)控制器在這條命令之后跟著(zhù)發(fā)出讀時(shí)間隙,而DS18B20又忙于做時(shí)間轉換的話(huà),DS18B20將在總線(xiàn)上輸出“0”,若溫度轉換完成,則輸出“1”。如果使用寄生電源,總線(xiàn)控制器必須在發(fā)出這條命令后立即起動(dòng)強上拉,并保持500ms。

Recall E2(重新調整E2)[B8h]

這條命令把貯存在E2中溫度觸發(fā)器的值重新調至暫存存儲器。這種重新調出的操作在對DS18B20上電時(shí)也自動(dòng)發(fā)生,因此只要器件一上電,暫存存儲器內就有了有效的數據。在這條命令發(fā)出之后,對于所發(fā)出的第一個(gè)讀數據時(shí)間片,器件會(huì )輸出溫度轉換忙的標識:“0”=忙,“1”=準備就緒。

Read Power Supply(讀電源)[B4h]

對于在此命令發(fā)送至DS18B20之后所發(fā)出的第一讀數據的時(shí)間片,器件都會(huì )給出其電源方式的信號:“0”=寄生電源供電,“1”=外部電源供電。

④ 處理數據

DS18B20的高速暫存存儲器由9個(gè)字節組成,其分配如圖3所示。當溫度轉換命令發(fā)布后,經(jīng)轉換所得的溫度值以二字節補碼形式存放在高速暫存存儲器的第0和第1個(gè)字節。單片機可通過(guò)單線(xiàn)接口讀到該數據,讀取時(shí)低位在前,高位在后。

圖3 高速暫存存儲器分配圖

 

溫度/0C

二進(jìn)制表示

十六進(jìn)制表示

符號位(5位)

數據位(11位)

+125

0 0 0 0 0

1

1

1

1

1

0

1

0

0

0

0

07D0H

+25.0625

0 0 0 0 0

0

0

1

1

0

0

1

0

0

0

1

0191H

+10.125

0 0 0 0 0

0

0

0

1

0

1

0

0

0

1

0

00A2H

+0.5

0 0 0 0 0

0

0

0

0

0

0

0

1

0

0

0

0008H

0

0 0 0 0 0

0

0

0

0

0

0

0

0

0

0

0

0000H

-0.5

1 1 1 1 1

1

1

1

1

1

1

1

1

0

0

0

FFF8H

-10.125

1 1 1 1 1

1

1

1

0

1

0

1

1

1

1

0

FF5EH

-25.625

1 1 1 1 1

1

1

0

0

1

1

0

1

1

1

1

FE6FH

 

 

 

-55

1 1 1 1 1

1

0

0

1

0

0

1

0

0

0

0

FC90H

DS18B20溫度數據表

上表是DS18B20溫度采集轉化后得到的12位數據,存儲在DS18B20的兩個(gè)8比特的RAM中,二進(jìn)制中的前面5位是符號位,如果測得的溫度大于或等于0,這5位為0,只要將測到的數值乘于0.0625即可得到實(shí)際溫度;如果溫度小于0,這5位為1,測到的數值需要取反加1再乘于0.0625即可得到實(shí)際溫度。

溫度轉換計算方法舉例:

例如當DS18B20采集到+125℃的實(shí)際溫度后,輸出為07D0H,則:

實(shí)際溫度=07D0H╳0.0625=2000╳0.0625=1250C。

例如當DS18B20采集到-55℃的實(shí)際溫度后,輸出為FC90H,則應先將11位數據位取反加1得370H(符號位不變,也不作為計算),則:

實(shí)際溫度=370H╳0.0625=880╳0.0625=550C。




關(guān)鍵詞: DS18B20工作原理時(shí)

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>