ds18b20簡介
DS18B20是常用的數字溫度傳感器,具有體積小,硬件開銷低,抗干擾能力強,精度高的特點。DS18B20數字溫度傳感器接線方便,封裝成后可應用于多種場合,如管道式,螺紋式,磁鐵吸附式,不銹鋼封裝式,型號多種多樣,有LTM8877,LTM8874等等。
主要根據應用場合的不同而改變其外觀。封裝后的DS18B20可用于電纜溝測溫,高爐水循環測溫,鍋爐測溫,機房測溫,農業大棚測溫,潔凈室測溫,彈藥庫測溫等各種非極限溫度場合。耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設備數字測溫和控制領域。
DS18B20引腳及管腳功能介紹
DS18B20的常用封裝有3腳、8腳等幾種形式,如圖1所示。各腳含義如下:
DQ:數字信號輸入/輸出端。
GND:電源地端。
VDD:外接供電電源輸入端(在寄生電源接線時此腳應接地)。
DS18B20的特點
DS18B20 單線數字溫度傳感器,即“一線器件”,其具有獨特的優點:
( 1 )采用單總線的接口方式 與微處理器連接時僅需要一條口線即可實現微處理器與 DS18B20 的雙向通訊。單總線具有經濟性好,抗干擾能力強,適合于惡劣環境的現場溫度測量,使用方便等優點,使用戶可輕松地組建傳感器網絡,為測量系統的構建引入全新概念。
( 2 )測量溫度范圍寬,測量精度高 DS18B20 的測量范圍為 -55 ℃ ~+ 125 ℃ ; 在 -10~+ 85°C范圍內,精度為 ± 0.5°C 。
( 3 )在使用中不需要任何外圍元件。
( 4 )持多點組網功能 多個 DS18B20 可以并聯在惟一的單線上,實現多點測溫。
( 5 )供電方式靈活 DS18B20 可以通過內部寄生電路從數據線上獲取電源。因此,當數據線上的時序滿足一定的要求時,可以不接外部電源,從而使系統結構更趨簡單,可靠性更高。
( 6 )測量參數可配置 DS18B20 的測量分辨率可通過程序設定 9~12 位。
( 7 ) 負壓特性電源極性接反時,溫度計不會因發熱而燒毀,但不能正常工作。
( 8 )掉電保護功能 DS18B20 內部含有 EEPROM ,在系統掉電以后,它仍可保存分辨率及報警溫度的設定值。
DS18B20 具有體積更小、適用電壓更寬、更經濟、可選更小的封裝方式,更寬的電壓適用范圍,適合于構建自己的經濟的測溫系統,因此也就被設計者們所青睞。
DS18B20內部結構
主要由4部分組成:64 位ROM、溫度傳感器、非揮發的溫度報警觸發器TH和TL、配置寄存器。ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼,每個DS18B20的64位序列號均不相同。64位ROM的排的循環冗余校驗碼(CRC=X^8+X^5+X^4+1)。 ROM的作用是使每一個DS18B20都各不相同,這樣就可以實現一根總線上掛接多個DS18B20的目的。
DS18B20內部構成
高速暫存存儲器由9個字節組成,當溫度轉換命令發布后,經轉換所得的溫度值以二字節補碼形式存放在高速暫存存儲器的第0和第1個字節。單片機可通過單線接口讀到該數據,讀取時低位在前,高位在后,對應的溫度計算:當符號位S=0時,直接將二進制位轉換為十進制;當S=1時,先將補碼變為原碼,再計算十進制值。
DS18B20中的溫度傳感器完成對溫度的測量,用16位二進制形式提供,形式表達,其中S為符號位。
例如:
+125℃的數字輸出07D0H
(正溫度直接把16進制數轉成10進制即得到溫度值 )
-55℃的數字輸出為 FC90H。
(負溫度把得到的16進制數取反后加1 再轉成10進制數)
ds18b20的工作時序
初始化時序
主機首先發出一個480-960微秒的低電平脈沖,然后釋放總線變為高電平,并在隨后的480微秒時間內對總線進行檢測,如果有低電平出現說明總線上有器件已做出應答。若無低電平出現一直都是高電平說明總線上無器件應答。
做為從器件的DS18B20在一上電后就一直在檢測總線上是否有480-960微秒的低電平出現,如果有,在總線轉為高電平后等待15-60微秒后將總線電平拉低60-240微秒做出響應存在脈沖,告訴主機本器件已做好準備。若沒有檢測到就一直在檢測等待。
寫操作
寫周期最少為60微秒,最長不超過120微秒。寫周期一開始做為主機先把總線拉低1微秒表示寫周期開始。隨后若主機想寫0,則繼續拉低電平最少60微秒直至寫周期結束,然后釋放總線為高電平。若主機想寫1,在一開始拉低總線電平1微秒后就釋放總線為高電平,一直到寫周期結束。而做為從機的DS18B20則在檢測到總線被拉底后等待15微秒然后從15us到45us開始對總線采樣,在采樣期內總線為高電平則為1,若采樣期內總線為低電平則為0。
讀操作
對于讀數據操作時序也分為讀0時序和讀1時序兩個過程。讀時隙是從主機把單總線拉低之后,在1微秒之后就得釋放單總線為高電平,以讓DS18B20把數據傳輸到單總線上。DS18B20在檢測到總線被拉低1微秒后,便開始送出數據,若是要送出0就把總線拉為低電平直到讀周期結束。若要送出1則釋放總線為高電平。主機在一開始拉低總線1微秒后釋放總線,然后在包括前面的拉低總線電平1微秒在內的15微秒時間內完成對總線進行采樣檢測,采樣期內總線為低電平則確認為0。采樣期內總線為高電平則確認為1。完成一個讀時序過程,至少需要60us才能完成
ds18b20應用電路
DS18B20應用電路 Ds1820_Bus = 0; //產生下降沿,進入寫時序(15us內送上數據)
Ds1820_Bus = data_1820&0x01; //從低位開始送數
Delay_X15us(3);//延時45us,保證18b20采樣到數據
Ds1820_Bus = 1; //拉高電平完成送數
Delay_X15us(1);//連續送數要間隔至少1us(這里15us)
data_1820》》=1;//移位
?