DS18B20 通過 單總線(1-Wire)協(xié)議 與微控制器通信更讓我明白了,其溫度讀取過程可分為 初始化健康發展、發(fā)送指令、溫度轉(zhuǎn)換飛躍、數(shù)據(jù)讀取 等步驟堅實基礎。以下是詳細(xì)的工作原理:
一. 硬件工作原理
- 溫度傳感核心
DS18B20 內(nèi)部包含一個(gè) 高精度溫敏振蕩器,通過測量與溫度相關(guān)的脈沖頻率來量化溫度值最為突出。
- 溫度變化 → 晶體振蕩頻率變化 → 計(jì)數(shù)器記錄脈沖數(shù) → 轉(zhuǎn)換為數(shù)字信號逐步改善。
- 內(nèi)部結(jié)構(gòu)
- 64位ROM:存儲全球唯一地址(用于多設(shè)備識別)。
- 溫度傳感器:核心測量單元。
- 配置寄存器:設(shè)置分辨率(9~12位)落實落細。
- 暫存器(Scratchpad):臨時(shí)存儲溫度數(shù)據(jù)和控制參數(shù)。
二. 溫度讀取流程
步驟1:總線初始化(復(fù)位脈沖)
- 微控制器發(fā)送 480~960μs的低電平脈沖組成部分,釋放總線后等待DS18B20的 存在脈沖(60~240μs低電平)深入闡釋,確認(rèn)設(shè)備在線。
步驟2:發(fā)送ROM指令
- 若總線上有多個(gè)DS18B20高效化,需通過ROM指令選擇目標(biāo)設(shè)備:
- `0x55`:匹配特定ROM地址(單設(shè)備操作可跳過)大大提高。
- `0xCC`:跳過ROM地址檢測(適用于單設(shè)備場景)。
步驟3:發(fā)送功能指令
- 啟動(dòng)溫度轉(zhuǎn)換:發(fā)送指令 `0x44`完成的事情,DS18B20開始測量溫度調整推進。
- 轉(zhuǎn)換時(shí)間取決于分辨率(9位約93ms,12位約750ms)研究成果。
- 在此期間發展契機,微控制器可輪詢總線狀態(tài)或延時(shí)等待。
步驟4:讀取溫度數(shù)據(jù)
1. 重新初始化總線機製性梗阻,發(fā)送 `0xBE` 指令讀取暫存器數(shù)據(jù)齊全。
2. 連續(xù)讀取9字節(jié)(包括溫度值、配置參數(shù)等改造層面,通常只需前2字節(jié))機製。
3. 溫度數(shù)據(jù)以 16位二進(jìn)制補(bǔ)碼 格式存儲,需轉(zhuǎn)換為實(shí)際溫度值性能穩定。
三. 數(shù)據(jù)格式與溫度計(jì)算
- 示例:若讀取的16位數(shù)據(jù)為 `0x0191`(二進(jìn)制 `0000 0001 1001 0001`):
- 高字節(jié) `0000 0001` → 正溫度(最高位為0)試驗。
- 低字節(jié) `1001 0001` → 小數(shù)部分。
- 計(jì)算:
- 整數(shù)部分:`0000 0001` → 1 × 16 = 16(高4位為整數(shù)高位)數字化。
- 小數(shù)部分:`0001` → 1 × 0.0625 = 0.0625(低4位為小數(shù)新格局,12位分辨率時(shí)每單位0.0625°C)緊密協作。
- 實(shí)際溫度:16 + 0.0625 = 16.0625°C。
- 負(fù)溫度處理:
若高字節(jié)最高位為1(如 `0xFF8F`)管理,需取補(bǔ)碼后計(jì)算:
```c
temp = (讀取值 & 0xFFF8) * (-1) + (16 - (讀取值 & 0x000F) * 0.0625);
```
四. 關(guān)鍵時(shí)序與信號
- 單總線協(xié)議時(shí)序:
- 寫“0”:保持低電平 >60μs。
- 寫“1”:拉低總線1μs后釋放越來越重要。
- 讀數(shù)據(jù):微控制器拉低總線1μs后采樣切實把製度。
- 寄生供電模式注意事項(xiàng):
- 溫度轉(zhuǎn)換期間需通過 強(qiáng)上拉電阻 保持總線高電平供電,否則可能導(dǎo)致轉(zhuǎn)換失敗改革創新。
五. 常見問題與解決
1. 讀取值為85°C
- 原因:未等待溫度轉(zhuǎn)換完成或初始化失敗最新。
- 解決:增加延時(shí)(如 `delay(750)`)或檢查總線連接。
2. 數(shù)據(jù)不穩(wěn)定
- 原因:總線干擾或電源不穩(wěn)自行開發。
- 解決:縮短導(dǎo)線長度模樣,增加濾波電容(0.1μF靠近DS18B20的VDD和GND)。
3. 多設(shè)備沖突
- 原因:未正確匹配ROM地址處理方法。
- 解決:遍歷總線設(shè)備并單獨(dú)操作(使用 `search()` 函數(shù)獲取ROM地址)數據顯示。
通過理解上述原理,可更高效地集成DS18B20到項(xiàng)目中服務,避免常見時(shí)序和硬件設(shè)計(jì)錯(cuò)誤實現。