DS18B20 是一款广泛使用的数字温度传感器,采用 1-Wire 总线协议进行通信。其温度采集原理基于内部半导体温度敏感元件和模数转换(ADC)技术,以下是其核心工作原理的详细说明:
1. 内部结构与温度敏感元件
DS18B20 的核心是一个 温度敏感的振荡器 和 数字转换电路:
- 温度敏感元件:利用半导体材料的温度特性(如 PN 结电压随温度变化),将温度转换为模拟电信号。
- 高精度 ADC:将模拟信号转换为数字信号,分辨率可配置为 9~12 位(默认 12 位,对应分辨率 0.0625°C)。
2. 温度采集过程
步骤 1:启动温度转换
- 主控制器(如单片机)通过 1-Wire 总线发送 Convert T(0x44) 命令,启动温度转换。
- DS18B20 开始执行内部 ADC 转换,将温度值转换为数字信号。
- 转换时间:取决于分辨率(例如 12 位需 750ms,9 位仅需 93.75ms)。
步骤 2:读取温度数据
- 转换完成后,主控制器发送 Read Scratchpad(0xBE) 命令,从传感器的暂存器中读取温度数据。
- 温度数据以 16 位二进制补码格式 存储,包含符号位、整数部分和小数部分。
3. 温度数据格式
DS18B20 的温度值存储格式如下:
- 高字节(MSB):
- 前 5 位为符号位(`S`),`S=1` 表示负温度,`S=0` 表示正温度。
- 后 3 位为整数部分的最高有效位(MSB)。
- 低字节(LSB):
- 后 4 位为小数部分,每个单位对应 0.0625°C(12 位分辨率时)。
示例:
- 原始数据 `0x0550`(二进制 `00000101 01010000`):
- 符号位 `S=0` → 正温度。
- 整数部分:`0000101` → 5°C。
- 小数部分:`01000000` → 0.25°C(`0100` × 0.0625 = 0.25)。
- 实际温度:5.25°C。
4. 1-Wire 通信协议
DS18B20 通过单根数据线实现通信,协议关键点如下:
1. 初始化(复位脉冲):
- 主机发送复位脉冲(>480μs 低电平),传感器回应存在脉冲(60~240μs 低电平)。
2. ROM 命令:
- 用于寻址总线上的多个传感器(如 `Read ROM`、`Match ROM`)。
3. 功能命令:
- 控制传感器操作(如 `Convert T`、`Read Scratchpad`)。
5. 寄生供电模式
DS18B20 支持 寄生供电(Parasite Power):
- 仅需 DQ 数据线 和 GND,无需额外电源线。
- 在温度转换期间,主机需通过强上拉(MOSFET)提供足够电流(约 1mA)。
6. 关键特性
- 测温范围:-55°C 至 +125°C(±0.5°C 精度,-10°C 至 +85°C)。
- 多设备支持:单总线可挂载多个 DS18B20,通过唯一 64 位 ROM ID 寻址。
- 低功耗:待机电流仅 1μA。
DS18B20 通过内部温度敏感元件和 ADC 将温度数字化,利用 1-Wire 协议传输数据。其单总线设计、高精度和灵活供电方式,使其在嵌入式系统和物联网应用中广泛使用。实际使用时需注意总线时序、电源稳定性及数据格式解析。