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