DS18B20
數字溫度感測器
DS18B20是常用的數字溫度感測器,其輸出的是數字信號,具有體積小,硬體開銷低,抗干擾能力強,精度高的特點。 DS18B20數字溫度感測器接線方便,封裝成后可應用於多種場合,如管道式,螺紋式,磁鐵吸附式,不鏽鋼封裝式,型號多種多樣,有LTM8877,LTM8874等等。
DS18B20數字溫度感測器接線方便,封裝成后可應用於多種場合,如管道式,螺紋式,磁鐵吸附式,不鏽鋼
封裝式,型號多種多樣,有LTM8877,LTM8874等等。主要根據應用場合的不同而改變其外觀。封裝后的DS18B20可用於電纜溝測溫,高爐水循環測溫,鍋爐測溫,機房測溫,農業大棚測溫,潔凈室測溫,彈藥庫測溫等各種非極限溫度場合。耐磨耐碰,體積小,使用方便,封裝形式多樣,適用於各種狹小空間設備數字測溫和控制領域。
1: 技術性能描述
①、獨特的單線介面方式,DS18B20在與微處理器連接時僅需要一條口線即可實現微處理器與DS18B20的雙向通訊。
② 、測溫範圍 -55℃~+125℃,固有測溫誤差(注意,不是解析度,這裡之前是錯誤的)1℃。
③、支持多點組網功能,多個DS18B20可以並聯在唯一的三線上,最多只能並聯8個,實現多點測溫,如果數量過多,會使供電電源電壓過低,從而造成信號傳輸的不穩定。
④、工作電源: 3.0~5.5V/DC (可以數據線寄生電源)
⑤ 、在使用中不需要任何外圍元件
⑥、測量結果以9~12位數字量方式串列傳送
⑦ 、不鏽鋼保護管直徑 Φ6
⑨、標準安裝螺紋 M10X1, M12X1.5, G1/2”任選
⑩ 、PVC電纜直接出線或德式球型接線盒出線,便於與其它電器設備連接。
DS18B20+ 和 Maxim Integrated 信息
Manufactured by Maxim Integrated, DS18B20+ is a 溫度感測器。
2.2 軸瓦,缸體,紡機,空調,等狹小空間工業設備測溫和控制。
2.3 汽車空調、冰箱、冷櫃、以及中低溫乾燥箱等。
2.4 供熱/製冷管道熱量計量,中央空調分戶熱能計量和工業領域測溫和控制
型 號 測溫範圍 安裝螺紋 電纜長度 適用管道
TS-18B20 -55~125 無 1.5 m
TS-18B20A -55~125 M10X1 1.5m DN15~25
TS-18B20B -55~125 1/2”G 接線盒 DN40~ 60
面對著扁平的那一面,左負右正,一旦接反就會立刻發熱,有可能燒毀!同時,接反也是導致該感測器總是顯示85℃的原因。
獨特的一線介面,只需要一條口線通信 多點能力,簡化了分散式溫度感測應用 無需外部元件 可用數據匯流排供電,電壓範圍為3.0 V至5.5 V 無需備用電源 測量溫度範圍為-55 ° C至+125 ℃ 。華氏相當於是-67 ° F到257華氏度 -10 ° C至+85 ° C範圍內精度為±0.5 ° C
描述該DS18B20的數字溫度計提供9至12位(可編程設備溫度讀數)。由於DS18B20是一條口線通信,所以中央微處理器與DS18B20隻有一個一條口線連接。為讀寫以及溫度轉換可以從數據線本身獲得能量,不需要外接電源。因為每一個DS18B20的包含一個獨特的序號,多個ds18b20s可以同時存在於一條匯流排。這使得溫度感測器放置在許多不同的地方。它的用途很多,包括空調環境控制,感測建築物內溫設備或機器,並進行過程監測和控制。
DS18B20採用一線通信介面。因為一線通信介面,必須在先完成ROM設定,否則記憶和控制功能將無法使用。主要首先提供以下功能命令之一: 1 )讀ROM, 2 )ROM匹配, 3 )搜索ROM, 4 )跳過ROM, 5 )報警檢查。這些指令操作作用在沒有一個器件的64位光刻ROM序列號,可以在掛在一線上多個器件選定某一個器件,同時,匯流排也可以知道匯流排上掛有有多少,什麼樣的設備。
若指令成功地使DS18B20完成溫度測量,數據存儲在DS18B20的存儲器。一個控制功能指揮指示DS18B20的演出測溫。測量結果將被放置在DS18B20內存中,並可以讓閱讀發出記憶功能的指揮,閱讀內容的片上存儲器。溫度報警觸發器TH和TL都有一位元組EEPROM 的數據。如果DS18B20不使用報警檢查指令,這些寄存器可作為一般的用戶記憶用途。在片上還載有配置位元組以理想的解決溫度數字轉換。寫TH,TL指令以及配置位元組利用一個記憶功能的指令完成。通過緩存器讀寄存器。所有數據的讀,寫都是從最低位開始。
DS18B20的存儲器包括高速暫存器RAM和可電擦除RAM,可電擦除RAM又包括溫度觸發器TH和TL,以及一個配置寄存器。存儲器能完整地確定一線埠的通訊,數字開始用寫寄存器的命令寫進寄存器,接著也可以用讀寄存器的命令來確認這些數字。當確認以後就可以用複製寄存器的命令來將這些數字轉移到可電擦除RAM中。當修改過寄存器中的數時,這個過程能確保數字的完整性。
高速暫存器RAM是由8個位元組的存儲器組成;。用讀寄存器的命令能讀出第九個位元組,這個位元組是對前面的八個位元組進行校驗。存儲器的結構圖如圖4.6所示。
圖4.6 存儲器的結構圖
64位光刻ROM的前8位是DS18B20的自身代碼,接下來的48位為連續的數字代碼,最後的8位是對前56位的CRC校驗。64-位的光刻ROM又包括5個ROM的功能命令:讀ROM,匹配ROM,跳躍ROM,查找ROM和報警查找。64-位光刻ROM的結構圖如圖4.7所示。
圖4.7為64-位光刻ROM的結構圖
DS18B20可以使用外部電源VDD,也可以使用內部的寄生電源。當VDD埠接3.0V—5.5V的電壓時是使用外部電源;當VDD埠接地時使用了內部的寄生電源。無論是內部寄生電源還是外部供電,I/O口線要接5KΩ左右的上拉電阻。連接圖如圖4.8、圖4.9所示。
圖4.8 使用寄生電源的連接圖
圖4.9外接電源的連接圖
4.3.4 DS18B20溫度處理過程
配置寄存器是配置不同的位數來確定溫度和數字的轉化。配置寄存器的結構圖如圖4.10所示。
圖4.10 配置寄存器的結構圖
由圖4.9可以知道R1,R0是溫度的決定位,由R1,R0的不同組合可以配置為9位,10位,11位,12位的溫度顯示。這樣就可以知道不同的溫度轉化位所對應的轉化時間,四種配置的解析度分別為0.5℃,0.25℃,0.125℃和0.0625℃,出廠時以配置為12位。溫度的決定配置圖如圖8所示。
圖4.11 溫度的決定配置圖
DS18B20在出廠時以配置為12位,讀取溫度時共讀取16位,前5個位為符號位,當前5位為1時,讀取的溫度為負數;當前5位為0時,讀取的溫度為正數。溫度為正時讀取方法為:將16進位數轉換成10進位即可。溫度為負時讀取方法為:將16進位取反后加1,再轉換成10進位即可。例:0550H = +85 度,FC90H = -55 度。
DS18B20有六條控制命令
指 令 約定代碼 操 作 說 明
溫度轉換 44H 啟動DS18B20進行溫度轉換
讀暫存器 BEH 讀暫存器9位元組二進位數字
寫暫存器 4EH 將數據寫入暫存器的TH、TL位元組
複製暫存器 48H 把暫存器的TH、TL位元組寫到E2PROM中
重新調E2PROM B8H 把E2PROM中的TH、TL位元組寫到暫存器TH、TL位元組
讀電源供電方式 B4H 啟動DS18B20發送電源供電方式的信號給主CPU
(1)先將數據線置高電平“1”。
(2)延時(該時間要求的不是很嚴格,但是儘可能地短一點)
(3)數據線拉到低電平“0”。
(4)延時750微秒(該時間的時間範圍可以從480到960微秒)。
(5)數據線拉到高電平“1”。
(6)延時等待(如果初始化成功則在15到60微秒時間之內產生一個由DS18B20所返回的低電平“0”。據該狀態可以來確定它的存在,但是應注意不能無限地進行等待,不然會使程序進入死循環,所以要進行超時控制)。
(7)若CPU讀到了數據線上的低電平“0”后,還要做延時,其延時的時間從發出的高電平算起(第(5)步的時間算起)最少要480微秒。
(8)將數據線再次拉高到高電平“1”后結束。
其時序如圖4.13所示:
圖4.13 初始化時序圖
(1)數據線先置低電平“0”。
(2)延時確定的時間為15微秒。
(3)按從低位到高位的順序發送位元組(一次只發送一位)。
(4)延時時間為45微秒。
(5)將數據線拉到高電平。
(6)重複上(1)到(6)的操作直到所有的位元組全部發送完為止。
(7)最後將數據線拉高。
DS18B20的寫操作時序圖如圖4.14所示。
圖4.14 DS18B20的寫操作時序圖
(1)將數據線拉高“1”。
(2)延時2微秒。
(3)將數據線拉低“0”。
(4)延時3微秒。
(5)將數據線拉高“1”。
(6)延時5微秒。
(7)讀數據線的狀態得到1個狀態位,並進行數據處理。
(8)延時60微秒。
DS18B20的讀操作時序圖如圖4.15所示。
圖1.15 DS18B20的讀操作圖
DS18B20
1.1、適應電壓範圍更寬,電壓範圍:3.0~5.5V,在寄生電源方式下可由數 據線供電
1.2、獨特的單線介面方式,DS18B20在與微處理器連接時僅需要一條口線即可實現微處理器與DS18B20的雙向通訊
1.3、 DS18B20支持多點組網功能,多個DS18B20可以並聯在唯一的三線上,實現組網多點測溫
1.5、溫範圍-55℃~+125℃,在-10~+85℃時精度為±0.5℃
1.6、可編程 的解析度為9~12位,對應的可分辨溫度分別為0.5℃、0.25℃、0.125℃和0.0625℃,可實現高精度測溫
1.7、在9位解析度時最多在 93.75ms內把溫度轉換為數字,12位解析度時最多在750ms內把溫度值轉換為數字,速度更快
1.8、測量結果直接輸出數字溫度信號,以"一 線匯流排"串列傳送給CPU,同時可傳送CRC校驗碼,具有極強的抗干擾糾錯能力
1.9、負壓特性:電源極性接反時,晶元不會因發熱而燒毀,但不能正常工作。
2、DS18B20的外形和內部結構
DS18B20內部結構主要由四部分組成:64位光刻ROM 、溫度感測器、非揮發的溫度報警觸發器TH和TL、配置寄存器。
DS18B20的外形及管腳排列如下圖1:
DS18B20引腳定義:
(1)DQ為數字信號輸入/輸出端;
(2)GND為電源地;
(3)VDD為外接供電電源輸入端(在寄生電源接線方式時接地)。
3、DS18B20工作原理
DS18B20的讀寫時序和測溫原理與DS1820相同,只是得到的溫度值地位數因解析度不同而不同,且溫度轉換時的延時時間由2s 減為750ms。高溫度係數晶振 隨溫度變化其振蕩率明顯改變,所產生的信號作為計數器2的脈衝輸入。計數器1和溫度寄存器被預置在-55℃所對應的一個基數值。計數器1對 低溫度係數晶振產生的脈衝信號進行減法計數,當計數器1的預置值減到0時,溫度寄存器的值將加1,計數器1的預置將重新被裝入,計數器1重 新開始對低溫度係數晶振產生的脈衝信號進行計數,如此循環直到計數器2計數到0時,停止溫度寄存器值得累加,此時溫度寄存器中的數值即 為所測溫度。圖3中的斜率累加器用於補償和修正測溫過程中的非線性,其輸出用於修正計數器1的預置值。
DS18B20有4個主要的數據部件:
(1)光刻ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位(28H)是產品類型標號,接著的48位是該DS18B20自身的序列號,最後8位是前面56位的循環冗餘校驗碼(CRC=X8+X5+X4+1)。光刻ROM的作用 是使每一個DS18B20都各不相同,這樣就可以實現一根匯流排上掛接多個DS18B20的目的。
(2)DS18B20中的溫度感測器可完成對溫度的測量,以12位轉化為例:用16位符號擴展的二進位補碼讀數形式提供,以 0.0625℃/LSB形式表達,其中S為符號位。
這是12位轉化后得到的12位數據,存儲在18B20的兩個8比特的RAM中,二進位中的前面5位是符號位,如果測得的溫度大於0,這5位為0,只要將測到的數值乘於0.0625即可得到實際溫度;如果溫度小於0,這5位為1,測到的數值需要取反加1再乘於0.0625即可得到實際 溫度。例如+125℃的數字輸出為07D0H,+25.0625℃的數字輸出為0191H,-25.0625℃的數字輸出為FE6FH,-55℃的數字輸出為FC90H 。
DS18B20
(4)配置寄存器 該位元組各位的意義如下:
TM | R1 | R0 | 1 | 1 | 1 | 1 | 1 |
低五位一直都是"1",TM是測試模式位,用於設置DS18B20在工作模式還是在測試模式。在DS18B20出廠時該位被設置為0,用 戶不要去改動。R1和R0用來設置解析度,如下表所示:(DS18B20出廠時被設置為12位)
表4:溫度解析度設置表
R1 | R0 | 解析度 | 溫度最大轉換時間 |
9位 | 93.75ms | ||
1 | 10位 | 187.5ms | |
1 | 11位 | 375ms | |
1 | 1 | 12位 | 750ms |
4、高速暫存存儲器高速暫存存儲器由9個位元組組成,其分配如表5所示。當溫度轉換命令發布后,經轉換所得的溫度值以二位元組補碼形式存放在 高速暫存存儲器的第0和第1個位元組。單片機可通過單線介面讀到該數據,讀取時低位在前,高位在後,數據格式如表1所示。對應的溫度計算:當符號位S=0時,直接將二進位位轉換為十進位;當S=1時,先將補碼變為原碼,再計算十進位值。表 2是對應的一部分溫度值。第九個位元組是 冗餘檢驗位元組。
表5:DS18B20暫存寄存器分佈
寄存器內容 | 位元組地址 |
溫度值低位(LS Byte) | |
溫度值高位(MS Byte) | 1 |
高溫限值(TH) | 2 |
低溫限值(TL) | 3 |
配置寄存器 | 4 |
保留 | 5 |
保留 | 6 |
保留 | 7 |
CRC校驗值 | 8 |
根據DS18B20的通訊協議,主機(單片機)控制DS18B20完成溫度轉換必須經過三個步驟:每一次讀寫之前都要對DS18B20進行 複位操作,複位成功后發送一條ROM指令,最後發送RAM指令,這樣才能對DS18B20進行預定的操作。複位要求主CPU將數據線下拉500微秒,然後 釋放,當DS18B20收到信號后等待16~60微秒左右,后發出60~240微秒的存在低脈衝,主CPU收到此信號表示複位成功。
表6:ROM指令表
指 令 | 約定代碼 | 功 能 |
讀ROM | 33H | 讀DS1820溫度感測器ROM中的編碼(即64位地址) |
符合 ROM | 55H | 發出此命令之後,接著發出 64 位 ROM 編碼,訪問單匯流排上與該編碼相對應的 DS1820 使之作出響應,為下一步對該 DS1820 的讀寫作準備。 |
搜索 ROM | 0FOH | 用於確定掛接在同一匯流排上 DS1820 的個數和識別 64 位 ROM 地址。為操作各器件作好準備。 |
跳過 ROM | 0CCH | 忽略 64 位 ROM 地址,直接向 DS1820 發溫度變換命令。適用於單片工作。 |
告警搜索命令 | 0ECH | 執行后只有溫度超過設定值上限或下限的片子才做出響應。 |
表6:RAM指令表
指 令 | 約定代碼 | 功 能 |
溫度變換 | 44H | 啟動DS1820進行溫度轉換,12位轉換時最長為750ms(9位為93.75ms)。結果存入內部9位元組RAM中。 |
讀暫存器 | 0BEH | 讀內部RAM中9位元組的內容 |
寫暫存器 | 4EH | 發出向內部RAM的3、4位元組寫上、下限溫度數據命令,緊跟該命令之後,是傳送兩位元組的數據。 |
複製暫存器 | 48H | 將RAM中第3 、4位元組的內容複製到EEPROM中。 |
重調 EEPROM | 0B8H | 將EEPROM中內容恢復到RAM中的第2、3位元組。 |
讀供電方式 | 0B4H | 讀DS1820的供電模式。寄生供電時DS1820發送“ 0 ”,外接電源供電 DS1820發送“ 1 ”。 |
5、DS18B20的應用電路DS18B20測溫系統具有測溫系統簡單、測溫精度高、連接方便、佔用口線少等優點。下面就是DS18B20幾個不同應用方式下的 測溫電路圖:
5.1、DS18B20寄生電源供電方式電路圖如下面圖4所示,在寄生電源供電方式下,DS18B20從單線信號線上汲取能量:在信號線DQ處於高電平期間把能量儲存在內部 電容里,在信號線處於低電平期間消耗電容上的電能工作,直到高電平到來再給寄生電源(電容)充電。
獨特的寄生電源方式有三個好處:
1)進行遠距離測溫時,無需本地電源
2)可以在沒有常規電源的條件下讀取ROM
3)電路更加簡潔,僅用一根I/O口實現測溫
要想使DS18B20進行精確的溫度轉換,I/O線必須保證在溫度轉換期間提供足夠的能量,由 於每個DS18B20在溫度轉換期間工作電流達到1mA,當幾個溫度感測器掛在同一根I/O線上進行多點測溫時,只靠4.7K上拉電阻就無法提供足夠的 能量,會造成無法轉換溫度或溫度誤差極大。
圖4
圖5
注意:在圖4和圖5寄生電源供電方式中,DS18B20的VDD引腳必須接地
5.3、DS18B20的外部電源供電方式
在外部電源供電方式下,DS18B20工作電源由VDD引腳接入,此時I/O線不需要強上拉,不存在電源電流不足的問題,可以保證 轉換精度,同時在匯流排上理論可以掛接任意多個DS18B20感測器,組成多點測溫系統。注意:在外部供電的方式下,DS18B20的GND引腳不能懸空,否則不能轉換溫度,讀取的溫度總是85℃。
圖6
圖7
外部電源供電方式是DS18B20最佳的工作方式,工作穩定可靠,抗干擾能力強,而且電路也比較簡單,可以開發出穩定可靠的多點溫度 監控系統。站長推薦大家在開發中使用外部電源供電方式,畢竟比寄生電源方式只多接一根VCC引線。在外接電源方式下,可以充分發揮DS18B20寬電源電壓範圍的優點,即使電源電壓VCC降到3V時,依然能夠保證溫度量精度。
6、DS1820使用中注意事項
DS1820雖然具有測溫系統簡單、測溫精度高、連接方便、佔用口線少等優點,但在實際應用中也應注意以下幾方面的問題:
6.1、較小的硬體開銷需要相對複雜的軟體進行補償,由於DS1820與微處理器間採用串列數據傳送,因此,在對DS1820進行讀寫編程時,必須嚴格地保證讀寫時序,否則將無法讀取測溫結果。在使用PL/M、C等高級語言進行系統程序設計時,對 DS1820操作部分最好採用彙編語言實現。
6.2、在DS1820的有關資料中均未提及單匯流排上所掛DS1820數量問題,容易使人誤認為可以掛任意多個 DS1820,在實際應用中並非如此。當單匯流排上所掛DS1820超過8個時,就需要解決微處理器的匯流排驅動問題,這一點在進行多點測溫系統設計時 要加以注意。
6.3、連接DS1820的匯流排電纜是有長度限制的。試驗中,當採用普通信號電纜傳輸長度超過50m時,讀取的 測溫數據將發生錯誤。當將匯流排電纜改為雙絞線帶屏蔽電纜時,正常通訊距離可達150m,當採用每米絞合次數更多的雙絞線帶屏蔽電纜時,正 常通訊距離進一步加長。這種情況主要是由匯流排分佈電容使信號波形產生畸變造成的。因此,在用DS1820進行長距離測溫系統設計時要充分考 慮匯流排分佈電容和阻抗匹配問題。
6.4、在DS1820測溫程序設計中,向DS1820發出溫度轉換命令后,程序總要等待DS1820的返回信號,一旦 某個DS1820接觸不好或斷線,當程序讀該DS1820時,將沒有返回信號,程序進入死循環。這一點在進行DS1820硬體連接和軟體設計時也要給予 一定的重視。測溫電纜線建議採用屏蔽4芯雙絞線,其中一對線接地線與信號線,另一組接VCC和地線,屏蔽層在源端單點接地。
利用DS18B20構成的數字溫度計
DS18B20
讀取溫度程序代碼段
#include"reg51.h"
#include"d1820.h"
int t;
uint num;
uchar dat; //讀寫數據變數
uchar a=0;
uchar b=0;
float tep=0; //讀一個溫度時的溫度轉換中間間
uchar data tempbuf=0;//溫度字型顯示中間變數
寫0 60us讀完,寫1 30us 內讀完
void WriteOneChar(uchar dat)
{
uchar i=0;
for(i=0;i<8;i++)
{
DQ=0;
DQ=dat&0x01;//寫所給數據最低位
delay(10); ///////////
DQ=1;//給脈衝
dat>>=1;
}
delay(8);
}
函數名稱:int ReadOneTemperature(void)
返回值:int t
參數:無
作用:讀溫度值
int ReadOneTemperature(void) 每次讀寫均要先複位
{
Init_DS18B20();
WriteOneChar(0xcc);//發跳過ROM命令
WriteOneChar(0x44);//發讀開始轉換命令
Init_DS18B20();
WriteOneChar(0xcc);//發跳過ROM命令
WriteOneChar(0xbe);//讀寄存器,共九位元組,前兩位元組為轉換值
a=ReadOneChar(); //a存低位元組
b=ReadOneChar(); //b存高位元組
t=b;
t<<=8;//高位元組轉換為10進位
t=t|a;
tep=t*0.0625;//轉換精度為0.0625/LSB
t=tep*10+0.5;//保留1位小數並四捨五入****後面除10還原正確溫度值)
return(t);
}
函數名稱:uint Temperaturepro(void)
返回值:void
參數: void
作用:溫度處理
void Temperaturepro(void)
{
int temp;
temp=ReadOneTemperature();
tempbuf=temp/1000; //百位
tempbuf=temp/100%10;//十位
tempbuf=temp%100/10; //個位
tempbuf=temp%10; //小數
}