DS18B20 溫度傳感器,單總線通信協(xié)議與多節(jié)點組網(wǎng)設(shè)計實戰(zhàn)解析
時間: 2021-10-10 23:19:15 瀏覽次數(shù):0
想象一下,你需要在一座大型溫控大棚、一整套工業(yè)設(shè)備或一個復(fù)雜的電子系統(tǒng)中,同時、精確地感知數(shù)十甚至上百個點的溫度。如何布線才能避免一團(tuán)亂麻?如何管理成本又不失精度?這正是 DS18B20 數(shù)字溫度傳感器,憑借其革命性的 單總線通信協(xié)議(1-Wire) 和出色的 多節(jié)點組網(wǎng)能力,大放異彩的核心場景。
單總線:化繁為簡的通信藝術(shù)
相較于傳統(tǒng)溫度傳感器常見的I2C或SPI接口,DS18B20的單總線(1-Wire)協(xié)議是其最鮮明的標(biāo)簽與核心競爭力。
- 物理連接極簡: 顧名思義,DS18B20與微控制器(MCU)之間的通信僅需一根數(shù)據(jù)線(DQ),同時這根數(shù)據(jù)線還用于為傳感器寄生供電(Parasite Power)。這是如何做到的?秘訣在于特定的時序控制,在通信間隙高效地從數(shù)據(jù)線上“汲取”能量并存儲在內(nèi)部電容中。當(dāng)然,如果環(huán)境惡劣或線纜過長,強(qiáng)烈建議增加一根獨立的VDD電源線以保障穩(wěn)定。地線(GND) 是必不可少的第三條線。
- 低功耗典范: DS18B20在待機(jī)狀態(tài)功耗超低(接近靜態(tài)電流),僅在溫度轉(zhuǎn)換和通信時消耗毫安級電流,特別適合電池供電或低功耗場景。
- 獨特通信機(jī)制:
- 主從結(jié)構(gòu): MCU作為整個1-Wire網(wǎng)絡(luò)的唯一主設(shè)備(Master),掌握通信主導(dǎo)權(quán)。所有DS18B20都是從設(shè)備(Slave),嚴(yán)格響應(yīng)主設(shè)備的指令。
- 嚴(yán)格時序驅(qū)動: 通信的核心在于主設(shè)備產(chǎn)生非常精準(zhǔn)的“復(fù)位脈沖”、“寫時隙”(寫0或?qū)?)和“讀時隙”。每種操作對應(yīng)特定的低電平和高電平持續(xù)時間組合。DS18B20的硬件電路通過采樣DQ線在這些特定窗口期的電平狀態(tài)來識別指令或返回數(shù)據(jù)。
- 數(shù)據(jù)序列化: 指令和數(shù)據(jù)以LSB(最低有效位)在前的方式,逐個比特地在單根線上傳輸,主設(shè)備通過控制時序生成或識別這些比特流。
- ROM ID 與全局搜索: 每個DS18B20出廠時都擁有一個全球唯一的64位ROM編碼(包含8位家族碼、48位唯一序列號、8位CRC校驗碼)。這是實現(xiàn)多節(jié)點共存和精準(zhǔn)尋址的基石。主設(shè)備通過特定的搜索算法(如“二叉樹搜索”),能夠在只使用一根數(shù)據(jù)線的總線上,逐個發(fā)現(xiàn)并記錄所有在線從設(shè)備的ROM ID。
多節(jié)點組網(wǎng):一線連接世界的智慧
單總線協(xié)議的精妙之處,正在于它天然地支持多個設(shè)備并聯(lián)在同一根數(shù)據(jù)線上,MCU能精確地與其中任何一個或多個進(jìn)行通信。這種能力極大地簡化了多點測溫系統(tǒng)的部署。
- 拓?fù)浣Y(jié)構(gòu): 所有DS18B20(節(jié)點)的DQ引腳并聯(lián)到主MCU的單一I/O口,所有GND連接在一起,VDD(如果使用外部電源)也連接在一起。結(jié)構(gòu)極為簡潔清晰。
- 通信流程關(guān)鍵步:
- 初始化與復(fù)位(Reset & Presence Detect): MCU發(fā)出復(fù)位脈沖(拉低DQ至少480us),隨后釋放總線(進(jìn)入接收模式)。所有在線的DS18B20會在特定時間窗口內(nèi)(60-240us內(nèi))拉低DQ(響應(yīng)存在脈沖),通知主設(shè)備有設(shè)備在線。
- ROM命令階段(目標(biāo)尋址/操作):
- 搜索ROM(Search ROM, F0h): 用于首次發(fā)現(xiàn)或重新掃描總線上所有在線的DS18B20的ROM ID。
- 匹配ROM(Match ROM, 55h): 最精確的“點名”。主設(shè)備發(fā)送55h命令后,緊接著發(fā)送一個已知的64位目標(biāo)ROM ID。只有與該ID完全匹配的DS18B20才會響應(yīng)后續(xù)的功能命令(如啟動轉(zhuǎn)換、讀取溫度),其它設(shè)備忽略后續(xù)操作。
- 跳過ROM(Skip ROM, CCh): 風(fēng)險與效率并存!MCU發(fā)送CCh命令,意味著后續(xù)的功能命令將廣播給總線上所有的DS18B20。這僅在確信總線上只有一個設(shè)備,或需要同時對所有設(shè)備執(zhí)行相同操作(如同時啟動所有轉(zhuǎn)換)時才高效安全。
- 警報搜索(Alarm Search, ECh): 用于快速定位那些溫度值超出預(yù)設(shè)報警閾值的設(shè)備(需提前設(shè)置TH/TL寄存器)。
- 功能命令階段(執(zhí)行任務(wù)):
- 啟動溫度轉(zhuǎn)換(Convert T, 44h): 非常重要的命令!觸發(fā)選定的DS18B20開始一次溫度測量。轉(zhuǎn)換時間取決于設(shè)定的分辨率(9-12位,9位最快約94ms,12位最慢約750ms)。在寄生供電模式下,此命令后主設(shè)備需在總線上提供強(qiáng)上拉(通常通過MOSFET控制)以保證轉(zhuǎn)換期間的電源需求。
- 讀取暫存器/溫度值(Read Scratchpad, BEh): 讀取DS18B20內(nèi)部暫存器的9個字節(jié)數(shù)據(jù),其中前兩個字節(jié)就是轉(zhuǎn)化完成的溫度值(二進(jìn)制補碼形式,需按手冊轉(zhuǎn)換)。務(wù)必在啟動轉(zhuǎn)換并等待足夠時間后再讀取。
- 其它命令: 寫入配置/報警值(Write Scratchpad, 4Eh)、復(fù)制暫存器到EEPROM(Copy Scratchpad, 48h)、召回EEPROM值(Recall E2, B8h)等。
實踐中的組網(wǎng)設(shè)計與優(yōu)化策略
要使多節(jié)點DS18B20網(wǎng)絡(luò)穩(wěn)定可靠,需關(guān)注幾個關(guān)鍵點:
- 電源策略選擇:
- 寄生供電: 最大優(yōu)勢是僅需兩根線(DQ+GND)!極其簡化布線。但轉(zhuǎn)換期間需主MCU在總線上提供強(qiáng)上拉(如1kΩ以下電阻連接到5V),確保能量供應(yīng)??偩€電容過大或線纜過長時容易不穩(wěn)定。適用節(jié)點數(shù)較少、環(huán)境溫和、轉(zhuǎn)換頻率不高的場景。
- 外部電源供電(三線制): 最穩(wěn)定可靠的方案。每個DS18B20的VDD引腳獨立連接到系統(tǒng)電源。此時DQ線只負(fù)責(zé)通信,無需強(qiáng)上拉轉(zhuǎn)換(但通常仍需一個弱上拉電阻如4.7kΩ)。強(qiáng)烈推薦在節(jié)點較多、長距離傳輸或需要高頻率轉(zhuǎn)換的場景中使用。
- 總線負(fù)載管理:
- 理論極限與實際限制: DS18B20的低功耗特性理論上支持并聯(lián)大量設(shè)備(如數(shù)百個)。但實際節(jié)點數(shù)量受制于:
- 總線電容: 線纜長度、連接點數(shù)量決定總線電容值。電容過大會使信號上升沿變緩,可能導(dǎo)致通信時序錯誤。一般建議電容控制在800pF以內(nèi),通常對應(yīng)**幾十米線纜