基於DS18B20的多點測溫方案詳解

2021-10-09 21:00:24 字數 3158 閱讀 2914

ds18b20 單線數字溫度感測器,多個 ds18b20 可以併聯在惟一的單線上,實現多點測溫。具體方案主要是以下步驟:

寫乙個獲取ds18b20的64位序列號的keil工程,獲取需要連線的ds18b20器件的序列號。

uint8_t rom[8]

;void

read_rom

(void

)}

將獲取到的ds18b20器件的序列號通過陣列儲存起來,再新建乙個獲取多點溫度的keil工程,傳送匹配64位序列號,獲取溫度即可。

uint8_t rom1[8]

=;uint8_t rom2[8]

=;uint8_t rom3[8]

=;uint8_t rom4[8]

=;uint8_t rom5[8]

=;uint8_t rom6[8]

=;uint8_t rom7[8]

=;uint8_t rom8[8]

=;uint8_t rom9[8]

=;void

ds18b20_matrom

(unsigned

char a)}if

(a==2)

}if(a==3)

}if(a==4)

}if(a==5)

}if(a==6)

}if(a==7)

}if(a==8)

}if(a==9)

}}int16_t read_temp

(uint8_t rom)

//啟動溫度轉換,讀取溫度

採用單匯流排的介面方式

測量溫度範圍寬,測量精度高 ds18b20 的測量範圍為 -55 ℃ ~+ 125 ℃ ; 在 -10~+85°c範圍內,精度為 ± 0.5°c 。

供電方式靈活 ds18b20可以通過內部寄生電路從資料線上獲取電源。因此,當資料線上的時序滿足一定的要求時,可以不接外部電源,從而使系統結構更趨簡單,可靠性更高。

測量引數可配置 ds18b20 的測量解析度可通過程式設定 9~12 位。

負壓特性電源極性接反時,溫度計不會因發熱而燒毀,但不能正常工作。

掉電保護功能 ds18b20 內部含有 eeprom,在系統掉電以後,它仍可儲存解析度及報警溫度的設定值。

ds18b20具有體積更小、適用電壓更寬、更經濟、可選更小的封裝方式,更寬的電壓適用範圍,適合於構建自己的經濟的測溫系統,因此也就被設計者們所青睞。

ds18b20主要由4部分組成:

64 位rom

溫度感測器

非揮發的溫度報警觸發器th和tl

配置暫存器

rom中的64位序列號是出廠前被光刻好的,它可以看作是該ds18b20的位址序列碼,每個ds18b20的64位序列號均不相同。64位rom的排的迴圈冗餘校驗碼(crc=x8+x5+x^4+1)。

rom的作用是使每乙個ds18b20都各不相同,這樣就可以實現一根匯流排上掛接多個ds18b20的目的。

在ds18b20溫度轉換期間通過寄生電源供電

用外部電源對ds18b20供電

主要以下四個方面:

初始化時序

寫時序讀時序

獲取溫度

詳細解析如下。

主機首先發出乙個480-960微秒的低電平脈衝,然後釋放匯流排變為高電平,並在隨後的480微秒時間內對匯流排進行檢測,如果有低電平出現說明匯流排上有器件已做出應答。若無低電平出現一直都是高電平說明匯流排上無器件應答。

uint8_t ds18b20_init

(void

)

做為從器件的ds18b20在一上電後就一直在檢測匯流排上是否有480-960微秒的低電平出現,如果有,在匯流排轉為高電平後等待15-60微秒後將匯流排電平拉低60-240微秒做出響應存在脈衝,告訴主機本器件已做好準備。若沒有檢測到就一直在檢測等待。

寫週期最少為60微秒,最長不超過120微秒。寫週期一開始做為主機先把匯流排拉低1微秒表示寫週期開始。隨後若主機想寫0,則繼續拉低電平最少60微秒直至寫週期結束,然後釋放匯流排為高電平。若主機想寫1,在一開始拉低匯流排電平1微秒後就釋放匯流排為高電平,一直到寫週期結束。而做為從機的ds18b20則在檢測到匯流排被拉底後等待15微秒然後從15us到45us開始對匯流排取樣,在取樣期內匯流排為高電平則為1,若取樣期內匯流排為低電平則為0。

static

void

ds18b20_write_byte

(uint8_t byte)

else

byte=byte>>1;

}}

對於讀資料操作時序也分為讀0時序和讀1時序兩個過程。讀時隙是從主機把單匯流排拉低之後,在1微秒之後就得釋放單匯流排為高電平,以讓ds18b20把資料傳輸到單匯流排上。ds18b20在檢測到匯流排被拉低1微秒後,便開始送出資料,若是要送出0就把匯流排拉為低電平直到讀週期結束。若要送出1則釋放匯流排為高電平。主機在一開始拉低匯流排1微秒後釋放匯流排,然後在包括前面的拉低匯流排電平1微秒在內的15微秒時間內完成對匯流排進行取樣檢測,取樣期內匯流排為低電平則確認為0。取樣期內匯流排為高電平則確認為1。完成乙個讀時序過程,至少需要60us才能完成

DS18B20測溫基於stc89c52微控制器

在開頭說明一下 本程式只用了溫度測量這乙個功能,其他功能並未在此涉及。鄙人不才,如有錯誤還望各位大佬指點。趁這段時間充裕把ds18b20溫度感測器的一些東西寫一寫 主要是程式 dallas半導體公司的數位化溫度感測器ds18b20是世界上第一片支援 一線匯流排 介面的溫度感測器,即只有一根資料線。它...

DS18B20溫度測量

1.ds18b20 復位。2.寫入跳過 rom 的位元組命令,0xcc。3.寫入開始轉換的功能命令,0x44。4.延遲大約 750 900 毫秒 1.ds18b20 復位。2.寫入跳過 rom 的位元組命令,0xcc。3.寫入讀暫存的功能命令,0xbe。4.讀入第 0 個位元組 ls byte,轉換...

DS18B20溫度換算

dsi8b20接收到溫度轉換命令後,開始啟動轉換。轉換完成後的溫度值就以16位帶符號擴充套件的二進位制補碼形式儲存在高速暫存儲存器的0,1位元組。微控制器可通過單線介面讀到該資料,讀取時低位在前,高位在後,資料格式以0 062 5 lsb形式表示。溫度值格式如表2.2.1所示,其中 s 為標誌位,對...