DS18B20/DS18S20與1-Wire協(xié)議詳解
MAXIM / 2014-03-01
DS18B20是比較常見的溫度傳感器之一,如何用arduino連接DS18B20并讀取數(shù)據(jù)。當(dāng)然也有必要了解一下DS1820和1-Wire。
DS18x20和1-Wire
DS18x20系列數(shù)字溫度傳感器主要有DS18S20和DS18B20(DS18S20只有9位一種工作模式,分辨率只到0.5攝氏度,DS18B20有9、10、11、12位四種工作可編程控制的模式,分辨率最高為0.0625攝氏度。),都是由美國Dallas半導(dǎo)體公司(現(xiàn)在改名叫Maxim)生產(chǎn)的。這個(gè)系列最大的特點(diǎn)就是采用了Maxim的專利技術(shù)1-Wire。
顧名思義,1-Wire就是采用單一信號(hào)線,但可像I2C,SPI一樣,同時(shí)傳輸時(shí)鐘(clock)又傳輸數(shù)據(jù)(data),而且數(shù)據(jù)傳輸是雙向的。1-Wire 使用較低的數(shù)據(jù)傳輸速率,通常是用來溝通小型device,如數(shù)字溫度計(jì)。通過1-Wire技術(shù)可以在單一信號(hào)線的基礎(chǔ)上構(gòu)成傳感器網(wǎng)絡(luò),Maxim起名”MicroLan”。
DS18x20的供電主要有兩種模式:
Parasite power mode/寄生供電
所謂的寄生供電是指DS18x20只需要兩根接線,一根數(shù)據(jù)線,一根接地線,數(shù)據(jù)在線還要接一個(gè)4.7k上拉電阻連電源,數(shù)據(jù)線同時(shí)也提供了電能。DS18x20內(nèi)置了電容,高電平期時(shí)把電能儲(chǔ)存在內(nèi)部電容里,低電平期內(nèi)消耗內(nèi)部電容里的能量工作,直到下次高電平期內(nèi)再次電容充電。雖然這樣的模式簡(jiǎn)化了線路同時(shí)也帶來了一些缺陷:
1. 電路的電流一般很小,只有當(dāng)DS18x20進(jìn)行溫度轉(zhuǎn)化或者寫EEPROM時(shí)會(huì)高達(dá)1.5mA,當(dāng)DS18x20進(jìn)行上述操作時(shí),數(shù)據(jù)線必須保持電平拉高狀態(tài)直到操作結(jié)束,期間master端的Arduino不能做任何操作,DS18x20溫度轉(zhuǎn)化時(shí)這個(gè)時(shí)間間隔大概是750ms。
2.如果要求DS18x20有精確的轉(zhuǎn)化,數(shù)據(jù)線在溫度轉(zhuǎn)化期間必須保證足夠的能量,但當(dāng)你使用多個(gè)DS18x20構(gòu)成MicroLan進(jìn)行多點(diǎn)測(cè)溫時(shí),單靠4.7k的上拉電阻無法提供足夠的能量,會(huì)導(dǎo)致較大的測(cè)溫誤差。
Normal (external supply) mode/標(biāo)準(zhǔn)(外部供電)
標(biāo)準(zhǔn)外部供電模式,相比寄生供電模式,每個(gè)DS18x20需要多一條獨(dú)立的電源線接獨(dú)立電源。雖然多用些線,但由于外部供電,保證了每個(gè)設(shè)備的進(jìn)精確度和穩(wěn)定性。而且沒有了上述溫度轉(zhuǎn)換期間Arduino不能做任何事的問題。