ds18b20數(shù)字溫度傳感器提供9-12位攝氏度溫度測量數(shù)據(jù),可編程非易失存儲器設(shè)置溫度監(jiān)測的上限和下限,提供溫度報(bào)警。ds18b20通過1-Wire?總線通信,只需要一條數(shù)據(jù)線 (和地線) 即可與處理器進(jìn)行數(shù)據(jù)傳輸。器件可以工作在-55°C至+125°C范圍,在-10°C至+85°C范圍內(nèi)測量精度為±0.5°C。此外,ds18b20還可以直接利用數(shù)據(jù)線供電 (寄生供電),無需外部電源。
每個(gè)ds18b20具有唯一的64位序列號,從而允許多個(gè)ds18b20掛接在同一條1-Wire總線。可以方便地采用一個(gè)微處理器控制多個(gè)分布在較大區(qū)域的ds18b20。該功能非常適合HVAC環(huán)境控制、樓宇/大型設(shè)備/機(jī)器/過程監(jiān)測與控制系統(tǒng)內(nèi)部的溫度測量等應(yīng)用。
ds18b20關(guān)鍵特性
獨(dú)特的1-Wire?接口僅占用一個(gè)通信端口
內(nèi)置溫度傳感器和EEPROM減少外部元件數(shù)量
測量溫度范圍:-55°C至+125°C (-67°F至+257°F)
-10°C至+85°C溫度范圍內(nèi)測量精度為±0.5°C
9位至12位可編程分辨率
無需外部元件
寄生供電模式下只需要2個(gè)操作引腳(DQ和GND)
多點(diǎn)通信簡化分布式溫度測量
每個(gè)器件具有唯一的64位序列號,存儲在器件ROM內(nèi)
用戶可靈活定義溫度報(bào)警門限,通過報(bào)警搜索指令找到溫度超出門限的器件
提供8引腳SO(150 mils)、8引腳μSOP、3引腳TO-92封裝
ds18b20時(shí)序圖
初始化時(shí)序圖
讀時(shí)隙時(shí)序圖
寫時(shí)隙時(shí)序圖
ds18b20操作流程
1, 復(fù)位:首先我們必須對ds18b20芯片進(jìn)行復(fù)位,復(fù)位就是由控制器(單片機(jī))給ds18b20單總線至少480uS的低電平信號。當(dāng)18B20接到此復(fù)位信號后則會在15~60uS后回發(fā)一個(gè)芯片的存在脈沖。
2, 存在脈沖:在復(fù)位電平結(jié)束之后,控制器應(yīng)該將數(shù)據(jù)單總線拉高,以便于在15~60uS后接收存在脈沖,存在脈沖為一個(gè)60~240uS的低電平信號。至此,通信雙方已經(jīng)達(dá)成了基本的協(xié)議,接下來將會是控制器與18B20間的數(shù)據(jù)通信。如果復(fù)位低電平的時(shí)間不足或是單總線的電路斷路都不會接到存在脈沖,在設(shè)計(jì)時(shí)要注意意外情況的處理。
3, 控制器發(fā)送ROM指令:雙方打完了招呼之后最要將進(jìn)行交流了,ROM指令共有5條,每一個(gè)工作周期只能發(fā)一條,ROM指令分別是讀ROM數(shù)據(jù)、指定匹配芯片、跳躍ROM、芯片搜索、報(bào)警芯片搜索。ROM指令為8位長度,功能是對片內(nèi)的64位光刻ROM進(jìn)行操作。其主要目的是為了分辨一條總線上掛接的多個(gè)器件并作處理。誠然,單總線上可以同時(shí)掛接多個(gè)器件,并通過每個(gè)器件上所獨(dú)有的ID號來區(qū)別,一般只掛接單個(gè)18B20芯片時(shí)可以跳過ROM指令(注意:此處指的跳過ROM指令并非不發(fā)送ROM指令,而是用特有的一條“跳過指令”)。ROM指令在下文有詳細(xì)的介紹。
4, 控制器發(fā)送存儲器操作指令:在ROM指令發(fā)送給18B20之后,緊接著(不間斷)就是發(fā)送存儲器操作指令了。操作指令同樣為8位,共6條,存儲器操作指令分別是寫RAM數(shù)據(jù)、讀RAM數(shù)據(jù)、將RAM數(shù)據(jù)復(fù)制到EEPROM、溫度轉(zhuǎn)換、將EEPROM中的報(bào)警值復(fù)制到RAM、工作方式切換。存儲器操作指令的功能是命令18B20作什么樣的工作,是芯片控制的關(guān)鍵。 5, 執(zhí)行或數(shù)據(jù)讀寫:一個(gè)存儲器操作指令結(jié)束后則將進(jìn)行指令執(zhí)行或數(shù)據(jù)的讀寫,這個(gè)操作要視存儲器操作指令而定。如執(zhí)行溫度轉(zhuǎn)換指令則控制器(單片機(jī))必須等待18B20執(zhí)行其指令,一般轉(zhuǎn)換時(shí)間為500uS。如執(zhí)行數(shù)據(jù)讀寫指令則需要嚴(yán)格遵循18B20的讀寫時(shí)序來操作。
若要讀出當(dāng)前的溫度數(shù)據(jù)我們需要執(zhí)行兩次工作周期,第一個(gè)周期為復(fù)位、跳過ROM指令、執(zhí)行溫度轉(zhuǎn)換存儲器操作指令、等待500uS溫度轉(zhuǎn)換時(shí)間。緊接著執(zhí)行第二個(gè)周期為復(fù)位、跳過ROM指令、執(zhí)行讀RAM的存儲器操作指令、讀數(shù)據(jù)(最多為9個(gè)字節(jié),中途可停止,只讀簡單溫度值則讀前2個(gè)字節(jié)即可)。其它的操作流程也大同小異,在此不多介紹。