跳转至

1-Wire协议与DS18B20温度传感器实战

难度:🟢 初级 | 领域:单总线通信 | 关键词:1-Wire, DS18B20, CRC | 阅读时间:约 16 分钟

日常类比

教室里老师只用一根麦克风线逐个点名、收回答——不必每人一根线,线还能带一点电。这就是 1-Wire:一根数据线加地线,完成供电、寻址与通信。物联网(Internet of Things, IoT)里 DS18B20 是最常见的 1-Wire 温度计,冷链、温室、机柜巡检常靠它“一根线串一串”[1][2]。

摘要

梳理 1-Wire 复位/时隙、ROM 与功能命令、DS18B20 分辨率与循环冗余校验(Cyclic Redundancy Check, CRC),以及多点与长线注意点。时序以数据手册微秒值为准;文中时间为典型量级[1]。

1. 总线与供电

开漏总线需上拉(常见约 4.7 kΩ)。外部供电:VDD 接 3.0–5.5 V。寄生供电:VDD 接地,靠 DQ 高电平给片内电容充电;温度转换电流较大时需强上拉(如 MOSFET),否则易失败[1][2]。

每器件 64 位 ROM:家族码(DS18B20 为 0x28)+ 48 位序列号 + CRC-8,支持多点寻址[1]。

2. 时序与命令

通信由主机发起:复位脉冲(拉低约 ≥480 µs)→ 从机存在脉冲 → 写/读时隙(写 0 拉低较长,写 1 短拉低后释放;读则短拉低后采样)[2]。

操作 时间量级(手册典型)
复位拉低 ≥480 µs
存在检测窗口 约 60–75 µs 量级
写 0 / 写 1 约 60 µs / 数 µs 拉低
读采样 时隙前约 15 µs 内
ROM 命令 用途
Search ROM 0xF0 枚举
Read ROM 0x33 单器件读 ID
Match ROM 0x55 指定器件
Skip ROM 0xCC 单器件或广播
Alarm Search 0xEC 报警器件
功能命令 用途
Convert T 0x44 启动转换
Read Scratchpad 0xBE 读 9 字节
Write Scratchpad 0x4E 写 TH/TL/配置
Copy Scratchpad 0x48 写入 EEPROM

多点推荐:Skip ROM + Convert T 广播转换,再逐个 Match ROM + Read Scratchpad,总等待约一次满分辨率转换时间而非 N 倍[1]。

3. DS18B20 数据与 CRC

参数 典型规格
范围 −55 ~ +125 °C
精度 −10 ~ +85 °C 约 ±0.5 °C
分辨率 9–12 bit 可选(默认 12)
转换时间 约 94 ms(9-bit)~ 750 ms(12-bit)

温度 16 位补码,12-bit 时约 0.0625 °C/LSB。暂存器 9 字节,末字节 CRC-8(多项式 \(x^8+x^5+x^4+1\));长线必须校验[1][3]。

4. 实现与排障

GPIO 位带需要微秒级延时(Cortex-M 可用 DWT);关键段关中断或提高优先级,避免实时操作系统(Real-Time Operating System, RTOS)切换打断时隙[5]。

现象 常见原因 处理
恒为 85.0 °C 上电默认,转换未完成 查存在脉冲、等待、强上拉
偶发错误 中断/电容/CRC 关中断、降上拉、校验
长线丢器件 电容与压降 降上拉阻值、双绞、避免乱星形、必要时中继[3]

线长数十米内常可工作;更长需屏蔽双绞、约 2.2 kΩ 量级上拉、拓扑与终端策略,以应用笔记为准[3]。

5. 局限、挑战与可改进方向

1. 软件时序脆弱

局限:无独立时钟,位带被中断打断即通信失败。 改进:硬件 1-Wire 主控(如 DS2482);或硬件定时器 + 关中断临界区[2][5]。

2. 寄生供电扩展性差

局限:多点同时转换电流叠加,强上拉设计复杂。 改进:外部供电;或分组转换限制并发电流[1]。

3. 总线电容限制点数与距离

局限:长线上升沿变慢,枚举与读数不稳。 改进:按 AN148 做线规/上拉/拓扑;超长用中继[3]。

4. 转换延迟影响控制环

局限:12-bit 约 0.75 s,不适合快环温控。 改进:降分辨率;或换更快数字温度计/本地模拟前端[1]。

总结

1-Wire + DS18B20 用最少线数做多点测温;时序、CRC 与 85 °C 默认值是调试三件套。多点用广播转换+逐个读;长线按应用笔记做电气,而不是只改代码延时。

参考文献

[1] Analog Devices / Maxim, DS18B20 Datasheet. [2] Maxim, Application Note 937, 1-Wire Communication Protocol. [3] Maxim, Application Note 148, Long Line 1-Wire Networks. [4] Dallas Semiconductor, Book of iButton Standards(历史背景). [5] STMicroelectronics, STM32 参考手册 / HAL 延时与 GPIO. [6] Maxim, DS2482 1-Wire 主控数据手册. [7] CRC-8 算法与查表实现(标准通信教材/应用笔记). [8] IEC/相关温度测量不确定度基础文献. [9] RTOS 环境下位带总线临界区设计实践. [10] CAT5 等线缆在 1-Wire 布线中的应用讨论. [11] DS18B20 分辨率与转换时间表(数据手册章节). [12] 多点传感器总线拓扑(线型 vs 星型)应用笔记.