傳統(tǒng)的溫度檢測大多以熱敏電阻為傳感器,采用熱敏電阻,可滿足 40 攝氏度 至 90 攝氏度 測量范圍,但熱敏電阻可靠性差,測量溫度準(zhǔn)確率低,對于 1 攝氏度 的信號是不適用的,還得經(jīng)過專門的接口電路轉(zhuǎn)換成數(shù)字信號才能由微處理器進(jìn)行處理。
目前常用的微機(jī)與外設(shè)之間進(jìn)行的數(shù)據(jù)通信的串行總線主要有 I 2C 總線, SPI 總線等。其中 I 2C 總線以同步串行 2 線方式進(jìn)行通信(一條時鐘線,一條數(shù)據(jù)線), SPI 總線則以同步串行 3 線方式進(jìn)行通信(一條時鐘線,一條數(shù)據(jù)輸入線,一條數(shù)據(jù)輸出線)。這些總線至少需要兩條或兩條以上的信號線。而單總線( 1-wire bus ),采用單根信號線,既可傳輸數(shù)據(jù),而且數(shù)據(jù)傳輸是雙向的, CPU 只需一根端口線就能與諸多單總線器件通信,占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路。 因而,這種單總線技術(shù)具有線路簡單,硬件開銷少,成本低廉,軟件設(shè)計簡單,便于總線擴(kuò)展和維護(hù)。同時,基于單總線技術(shù)能較好地解決傳統(tǒng)識別器普遍存在的攜帶不便,易損壞,易受腐饋,易受電磁干擾等不足,因此,單總線具有廣闊的應(yīng)用前景,是值得關(guān)注的一個發(fā)展領(lǐng)域。
單總線即只有一根數(shù)據(jù)線,系統(tǒng)中的數(shù)據(jù)交換,控制都由這根線完成。主機(jī)或從機(jī)通過一個漏極開路或三態(tài)端口連至數(shù)據(jù)線,以允許設(shè)備在不發(fā)送數(shù)據(jù)時能夠釋放總線,而讓其它設(shè)備使用總線。單總線通常要求外接一個約為 4.7K 的上拉電阻,這樣,當(dāng)總線閑置時其狀態(tài)為高電平。
DS18B20 數(shù)字式溫度傳感器,與傳統(tǒng)的熱敏電阻有所不同的是,使用集成芯片,采用單總線技術(shù),其 能夠有效的減小外界的干擾,提高測量的精度,同時,它 可以直接將被測溫度轉(zhuǎn)化成串行數(shù)字信號供微機(jī)處理,接口簡單, 使數(shù)據(jù)傳輸和處理簡單化。 部分功能電路的集成,使總體硬件設(shè)計更簡潔,能 有效地降低成本, 搭建電路和焊接電路時更快,調(diào)試也更方便簡單化,這也就 縮短了開發(fā)的周期 。
DS18B20 單線數(shù)字溫度傳感器,即“一線器件”,其具有*的優(yōu)點(diǎn):
( 1 )采用單總線的接口方式 與微處理器連接時 僅需要一條口線即可實(shí)現(xiàn)微處理器與 DS18B20 的雙向通訊。 單總線具有經(jīng)濟(jì)性好,抗*力強(qiáng),適合于惡劣環(huán)境的現(xiàn)場溫度測量,使用方便等優(yōu)點(diǎn),使用戶可輕松地組建傳感器網(wǎng)絡(luò),為測量系統(tǒng)的構(gòu)建引入全新概念。
( 2 )測量溫度范圍寬,測量精度高 DS18B20 的測量范圍為 -55 ℃ ~+ 125 ℃ ; 在 -10~+ 85°C 范圍內(nèi),精度為 ± 0.5°C 。
( 3 )在使用中不需要任何外圍元件。
( 4 )持多點(diǎn)組網(wǎng)功能 多個 DS18B20 可以并聯(lián)在惟一的三線上,實(shí)現(xiàn)多點(diǎn)測溫。
( 5 )供電方式靈活 DS18B20 可以通過內(nèi)部寄生電路從數(shù)據(jù)線上獲取電源。因此,當(dāng)數(shù)據(jù)線上的時序滿足一定的要求時,可以不接外部電源,從而 使系統(tǒng)結(jié)構(gòu)更趨簡單,可靠性更高。
( 6 )測量參數(shù)可配置 DS18B20 的測量分辨率可通過程序設(shè)定 9~12 位。
( 7 ) 負(fù)壓特性 電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作。
( 8 )掉電保護(hù)功能 DS18B20 內(nèi)部含有 EEPROM ,在系統(tǒng)掉電以后,它仍可保存分辨率及報警溫度的設(shè)定值。
DS18B20 具有體積更小、適用電壓更寬、更經(jīng)濟(jì)、可選更小的封裝方式,更寬的電壓適用范圍,適合于構(gòu)建自己的經(jīng)濟(jì)的測溫系統(tǒng),因此也就被設(shè)計者們所青睞。
DS18B20的內(nèi)部結(jié)構(gòu)
DS18B20測溫原理
DS18B20 的內(nèi)部測溫電路框圖
低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號送給減法計數(shù)器 1 ,為計數(shù)器提供一頻率穩(wěn)定的計數(shù)脈沖。高溫度系數(shù)晶振隨溫度變化其震蕩頻率明顯改變,很敏感的振蕩器,所產(chǎn)生的信號作為減法計數(shù)器 2 的脈沖輸入,為計數(shù)器 2 提供一個頻率隨溫度變化的計數(shù)脈沖。圖中還隱含著計數(shù)門,當(dāng)計數(shù)門打開時, DS18B20 就對低溫度系數(shù)振蕩器產(chǎn)生的時鐘脈沖后進(jìn)行計數(shù),進(jìn)而完成溫度測量。計數(shù)門的開啟時間由高溫度系數(shù)振蕩器來決定,每次測量前,首先將 -55 ℃ 所對應(yīng)的基數(shù)分別置入減法計數(shù)器 1 和溫度寄存器中,減法計數(shù)器 1 和溫度寄存器被預(yù)置在 -55 ℃ 所對應(yīng)的一個基數(shù)值。減法計數(shù)器 1 對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進(jìn)行減法計數(shù),當(dāng)減法計數(shù)器 1 的預(yù)置值減到 0 時溫度寄存器的值將加 1 ,減法計數(shù)器 1 的預(yù)置將重新被裝入,減法計數(shù)器 1 重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進(jìn)行計數(shù),如此循環(huán)直到減法計數(shù)器 2 計數(shù)到 0 時,停止溫度寄存器值的累加,此時溫度寄存器中的數(shù)值即為所測溫度。斜率累加器用于補(bǔ)償和修正測溫過程中的非線性,其輸出用于修正減法計數(shù)器的預(yù)置值,只要計數(shù)門仍未關(guān)閉就重復(fù)上述過程,直至溫度寄存器值達(dá)到被測溫度值。
DS18B20 的管腳排列及封裝圖
DQ 為數(shù)字信號輸入 / 輸出端; GND 為電源地; VDD 為外接供電電源輸入端,電源供電 3.0~5.5V (在寄生電源接線方式時接地)。
寄生電源工作方式
外接電源工作方式
注意:當(dāng)溫度高于 100℃ 時,不能使用寄生電源,因?yàn)榇藭r器件中較大的漏電流會使總線不能可靠檢測高低電平,從而導(dǎo)致數(shù)據(jù)傳輸誤碼率的增大。
DS18B20 內(nèi)部結(jié)構(gòu)主要由四部分組成: 64 位光刻 ROM 、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器 TH 和 TL 、配置寄存器。
光刻 ROM 中的 64 位序列號是出廠前被光刻好的,它可以看作是該 DS18B20 的地址序列碼。 64 位光刻 ROM 的排列是:開始 8 位(地址: 28H )是產(chǎn)品類型標(biāo)號,接著的 48 位是該 DS18B20 自身的序列號,并且每個 DS18B20 的序列號都不相同,因此它可以看作是該 DS18B20 的地址序列碼;zui后 8 位則是前面 56 位的循環(huán)冗余校驗(yàn)碼( CRC=X8+X5+X4+1 )。由于每一個 DS18B20 的 ROM 數(shù)據(jù)都各不相同,因此微控制器就可以通過單總線對多個 DS18B20 進(jìn)行尋址,從而實(shí)現(xiàn)一根總線上掛接多個 DS18B20 的目的。
64 b 閃速 ROM
DS18B20 中的溫度傳感器用于完成對溫度的測量,它的測量精度可以配置成 9 位, 10 位, 11 位或 12 位 4 種狀態(tài)。溫度傳感器在測量完成后將測量的結(jié)果存儲在 DS18B20 的兩個 8BIT 的 RAM 中,單片機(jī)可通過單線接口讀到該數(shù)據(jù),讀取時低位在前,高位在后數(shù)據(jù)的存儲格式如下表(以 12 位轉(zhuǎn)化為例):
溫度信號寄存器格式
這是 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 。
DS18B20 完成溫度轉(zhuǎn)換后,就把測得的溫度值與 TH , TL 作比較,若 T>TH 或 T<TL, 則將該器件內(nèi)的告警標(biāo)志置位,并對主機(jī)發(fā)出的告警搜索命令作出響應(yīng)。因此,可用多只 DS18B20 同時測量溫度并進(jìn)行告警搜索。
DS18B20 溫度傳感器的存儲器
DS18B20 溫度傳感器的內(nèi)部存儲器包括一個高速暫存 RAM 和一個非易失性的可電擦除的 E2RAM, 后者存放高溫度和低溫度觸發(fā)器 TH 、 TL 和結(jié)構(gòu)寄存器。數(shù)據(jù)先寫入 RAM ,經(jīng)校驗(yàn)后再傳給 E2RAM 。
暫存存儲器包含了 8 個連續(xù)字節(jié),前兩個字節(jié)是測得的溫度信息,*個字節(jié)的內(nèi)容是溫度的低八位 TL ,第二個字節(jié)是溫度的高八位 TH 。第三個和第四個字節(jié)是 TH 、 TL 的易失性拷貝,第五個字節(jié)是結(jié)構(gòu)寄存器的易失性拷貝,這三個字節(jié)的內(nèi)容在每一次上電復(fù)位時被刷新。第六、七、八個字節(jié)用于內(nèi)部計算。第九個字節(jié)是冗余檢驗(yàn)字節(jié),可用來保證通信正確。 DS18B20 的分布如下:
寄存器內(nèi)容 | 地址 |
溫度的低八位數(shù)據(jù) | 0 |
溫度的高八位數(shù)據(jù) | 1 |
高溫閥值 | 2 |
低溫閥值 | 3 |
保留 | 4 |
保留 | 5 |
計數(shù)剩余值 | 6 |
每度計數(shù)值 | 7 |
CRC 校驗(yàn) | 8 |
DS18B20 的暫存寄存器分布
在 64 b ROM 的zui高有效字節(jié)中存儲有循環(huán)冗余校驗(yàn)碼( CRC )。主機(jī)根據(jù) ROM 的前 56 位來計算 CRC 值,并和存入 DS18B20 中的 CRC 值做比較,以判斷主機(jī)收到的 ROM 數(shù)據(jù)是否正確。
設(shè)置寄存器
設(shè)置寄存器位于高速閃存的低5個字節(jié),這個寄存器中的內(nèi)容被用來確定溫度的轉(zhuǎn)換精度。寄存器各位的內(nèi)容如下:
BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0 |
TM | R1 | R0 | 1 | 1 | 1 | 1 | 1 |
DS18B20 的設(shè)置寄存器各位內(nèi)容
該寄存器的低五位一直都是 1 , TM 是測試模式位,用于設(shè)置 DS18B20 在工作模式還是在測試模式。在 DS18B20 出廠時該位被設(shè)置為 0 ,用戶不要去改動。 R1 和 R0 用來設(shè)置分辨率,如下表所示:( DS18B20 出廠時被設(shè)置為 12 位)
R1 | R0 | 分辨率 | 溫度zui大轉(zhuǎn)換時間 |
0 | 0 | 9 位 | 93.75 ms |
0 | 1 | 10 位 | 187.5 ms |
1 | 0 | 11 位 | 375 ms |
0 | 0 | 12 位 | 750 ms |
分辨率設(shè)置
由表可知,設(shè)定的分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時間就越長。因此,在實(shí)際應(yīng)用中要在分辨率和轉(zhuǎn)換時間權(quán)衡考慮。
DS18B20 的溫度測量
1-WIRE 網(wǎng)絡(luò)具有嚴(yán)謹(jǐn)?shù)目刂平Y(jié)構(gòu),其結(jié)構(gòu)如下圖所示,一般通過雙絞線與 1-WIRE 元件進(jìn)行數(shù)據(jù)通信,它們通常被定義為漏極開路端點(diǎn),主 / 從式多點(diǎn)結(jié)構(gòu),而且一般都在主機(jī)端接上一個上拉電阻 +5V 電源。通常為了給 1-WIRE 設(shè)備提供足夠的電源,需要一個 MOSFET 管將 1-WIRE 總線上拉至 +5V 電源。
DS18B20 組成的 1-WIRE 網(wǎng)絡(luò)
1-WIRE 網(wǎng)絡(luò)通信協(xié)議是分時定義的,有嚴(yán)格的時隙概念,下圖是復(fù)位脈沖的時隙。
1-WIRE 協(xié)議的復(fù)位脈沖時隙
1-WIRE 讀寫“ 0/ 1 ” 時隙
DS18B20 單線通信功能是分時完成的,他有嚴(yán)格的時隙概念,如果出現(xiàn)序列混亂, 1-WIRE 器件將不響應(yīng)主機(jī),因此讀寫時序很重要。系統(tǒng)對 DS18B20 的各種操作必須按協(xié)議進(jìn)行。根據(jù) DS18B20 的協(xié)議規(guī)定,微控制器控制 DS18B20 完成溫度的轉(zhuǎn)換必須經(jīng)過以下 4 個步驟 :
(1)每次讀寫前對 DS18B20 進(jìn)行復(fù)位初始化。復(fù)位要求主 CPU 將數(shù)據(jù)線下拉 500ms ,然后釋放, DS18B20 收到信號后等待 16ms~60ms 左右,然后發(fā)出 60ms~240ms 的存在低脈沖,主 CPU 收到此信號后表示復(fù)位成功。
(2)發(fā)送一條 ROM 指令,如下表所示:
指令名稱 | 指令代碼 | 指令功能 |
讀 ROM | 33H | 讀 DS18B20ROM 中的編碼(即讀 64 位地址) |
ROM 匹配(符合 ROM ) | 55H | 發(fā)出此命令之后,接著發(fā)出 64 位 ROM 編碼,訪問單總線上與編碼相對應(yīng) DS18B20 使之作出響應(yīng),為下一步對該 DS18B20 的讀寫作準(zhǔn)備 |
搜索 ROM | 0F0H | 用于確定掛接在同一總線上 DS18B20 的個數(shù)和識別 64 位 ROM 地址,為操作各器件作好準(zhǔn)備 |
跳過 ROM | 0CCH | 忽略 64 位 ROM 地址,直接向 DS18B20 發(fā)溫度變換命令,適用于單片機(jī)工作 |
警報搜索 | 0ECH | 該指令執(zhí)行后,只有溫度超過設(shè)定值上限或下限的片子才做出響應(yīng) |
DS18B20 的 ROM 指令集
(3)發(fā)送存儲器指令,如下表所示:
指令名稱 指令代碼 指令功能 溫度變換 44H 啟動 DS18B20 進(jìn)行溫度轉(zhuǎn)換,轉(zhuǎn)換時間zui長為 500ms (典型為 200ms ),結(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 讀 DS18B20 的供電模式,寄生供電時 DS18B20 發(fā)送“ 0 ”,外接電源供電 DS18B20 發(fā)送“ 1 ”DS18B20 的存儲器指令集
(4)進(jìn)行數(shù)據(jù)通信。
DS18B20 使用中注意事項(xiàng)
DS1820 雖然具有測溫系統(tǒng)簡單、測溫精度高、連接方便、占用口線少等優(yōu)點(diǎn),但在實(shí)際應(yīng)用中也應(yīng)注意以下幾方面的問題:
( 1 )每一次讀寫之前都要對 DS18B20 進(jìn)行復(fù)位,復(fù)位成功后發(fā)送一條 ROM 指令,zui后發(fā)送 RAM 指令,這樣才能對 DS18B20 進(jìn)行預(yù)定的操作。復(fù)位要求主 CPU 將數(shù)據(jù)線下拉 500 微秒,然后釋放, DS18B20 收到信號后等待 16 ~ 60 微秒左右,后發(fā)出 60 ~ 240 微秒的存在低脈沖,主 CPU 收到此信號表示復(fù)位成功。(所有的讀寫時序至少需要 60us ,且每個獨(dú)立的時序之間至少需要 1us 的恢復(fù)時間。在寫時序時,主機(jī)將在下拉低總線 15us 之內(nèi)釋放總線,并向單總線器件寫 1 ;若主機(jī)拉低總線后能保持至少 60us 的低電平,則向單總線器件寫 0 。單總線僅在主機(jī)發(fā)出讀寫時序時才向主機(jī)傳送數(shù)據(jù),所以,當(dāng)主機(jī)向單總線器件發(fā)出讀數(shù)據(jù)指令后,必須馬上產(chǎn)生讀時序,以便單總線器件能傳輸數(shù)據(jù)。)
( 2 )在寫數(shù)據(jù)時,寫 0 時單總線至少被拉低 60US, 寫 1 時 ,15US 內(nèi)就得釋放總線。
( 3 )轉(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í)際溫度。
( 4 )較小的硬件開銷需要相對復(fù)雜的軟件進(jìn)行補(bǔ)償,由于 DS1820 與微處理器間采用串行數(shù)據(jù)傳送,因此,在對 DS1820 進(jìn)行讀寫編程時,必須嚴(yán)格的保證讀寫時序,否則將無法讀取測溫結(jié)果。在使用 PL/M 、 C 等語言進(jìn)行系統(tǒng)程序設(shè)計時,對 DS1820 操作部分采用匯編語言實(shí)現(xiàn)。
(5) 在 DS1820 的有關(guān)資料中均未提及單總線上所掛 DS1820 數(shù)量問題,容易使人誤認(rèn)為可以掛任意多個 DS1820 ,在實(shí)際應(yīng)用中并非如此。當(dāng)單總線上所掛 DS1820 超過 8 個時,就需要解決微處理器的總線驅(qū)動問題,這一點(diǎn)在進(jìn)行多點(diǎn)測溫系統(tǒng)設(shè)計時要加以注意。
(6) 連接 DS1820 的總線電纜是有長度限制的。試驗(yàn)中,當(dāng)采用普通信號電纜傳輸長度超過 50m 時,讀取的測溫數(shù)據(jù)將發(fā)生錯誤。當(dāng)將總線電纜改為雙絞線帶屏蔽電纜時,正常通訊距離可達(dá) 150m ,當(dāng)采用每米絞合次數(shù)更多的雙絞線帶屏蔽電纜時,正常通訊距離進(jìn)一步加長。這種情況主要是由總線分布電容使信號波形產(chǎn)生畸變造成的。因此,在用 DS1820 進(jìn)行長距離測溫系統(tǒng)設(shè)計時要充分考慮總線分布電容和阻抗匹配問題。測溫電纜線建議采用屏蔽 4 芯雙絞線,其中一對線接地線與信號線,另一組接 VCC 和地線,屏蔽層在源端單點(diǎn)接地。
( 7 )在 DS1820 測溫程序設(shè)計中,向 DS1820 發(fā)出溫度轉(zhuǎn)換命令后,程序總要等待 DS1820 的返回信號,一旦某個 DS1820 接觸不好或斷線,當(dāng)程序讀該 DS1820 時,將沒有返回信號,程序進(jìn)入死循環(huán)。這一點(diǎn)在進(jìn)行 DS1820 硬件連接和軟件設(shè)計時也要給予一定的重視。
免責(zé)聲明
- 凡本網(wǎng)注明“來源:化工儀器網(wǎng)”的所有作品,均為浙江興旺寶明通網(wǎng)絡(luò)有限公司-化工儀器網(wǎng)合法擁有版權(quán)或有權(quán)使用的作品,未經(jīng)本網(wǎng)授權(quán)不得轉(zhuǎn)載、摘編或利用其它方式使用上述作品。已經(jīng)本網(wǎng)授權(quán)使用作品的,應(yīng)在授權(quán)范圍內(nèi)使用,并注明“來源:化工儀器網(wǎng)”。違反上述聲明者,本網(wǎng)將追究其相關(guān)法律責(zé)任。
- 本網(wǎng)轉(zhuǎn)載并注明自其他來源(非化工儀器網(wǎng))的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對其真實(shí)性負(fù)責(zé),不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品第一來源,并自負(fù)版權(quán)等法律責(zé)任。
- 如涉及作品內(nèi)容、版權(quán)等問題,請?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。