DS18B20 温度传感器:原理、特性与应用解析(三)
扫描二维码
随时随地手机看文章
单总线通信协议:极简布线的底层逻辑
单总线(1-Wire)是 DS18B20 的核心技术,它通过一根数据线实现双向通信,通信过程严格遵循初始化、ROM 命令、功能命令的三段式时序,确保数据传输的可靠性。
初始化阶段
初始化是通信的前提,由 MCU 发送复位脉冲,DS18B20 返回应答脉冲,确认器件在线:
MCU 发送复位脉冲:将 DQ 线拉低至少 480μs,然后释放总线(上拉电阻使 DQ 线恢复高电平)。
等待应答脉冲:DS18B20 检测到复位脉冲后,延迟 15~60μs,然后将 DQ 线拉低 60~240μs 作为应答。MCU 需在释放总线后的 15~60μs 内检测 DQ 线电平,若为低则表示器件响应。
初始化失败通常源于总线短路、上拉电阻缺失或传感器损坏,实际应用中需通过多次重试机制提高可靠性。
ROM 命令阶段
当总线上连接多个 DS18B20 时,需通过 ROM 命令识别目标器件,常用命令包括:
读 ROM(0x33):读取当前总线上唯一器件的 64 位 ROM 地址(仅适用于单器件场景)。
匹配 ROM(0x55):后跟 64 位 ROM 地址,仅与该地址匹配的传感器响应后续命令(多器件通信核心命令)。
搜索 ROM(0xF0):通过位碰撞检测算法,逐步确定总线上所有器件的 ROM 地址(用于未知地址的多器件枚举)。
跳过 ROM(0xCC):忽略 ROM 地址,直接向总线上所有器件发送功能命令(适用于单器件或广播场景)。
例如,在多传感器组网中,MCU 先通过搜索 ROM 获取所有器件地址,再通过匹配 ROM 命令单独控制每个传感器,避免数据冲突。
功能命令阶段
ROM 命令后,MCU 发送功能命令控制传感器工作,关键命令包括:
温度转换(0x44):启动温度测量,转换时间取决于分辨率(9~12 位对应 93.75~750ms),转换期间 DQ 线可保持高电平或由 MCU 控制。
读暂存器(0xBE):读取 RAM 中 9 字节数据,包括温度寄存器(第 2、3 字节)、配置寄存器(第 4 字节)等,读取时需按字节顺序,每个字节后传感器会发送一个应答位。
写暂存器(0x4E):向 RAM 写入 3 字节数据(高温报警阈值、低温报警阈值、配置寄存器),用于设置温度报警上下限。
复制暂存器(0x48):将 RAM 中的配置信息写入 EEPROM(非易失性存储),确保断电后配置不丢失。
召回 EEPROM(0xB8):将 EEPROM 中保存的配置信息恢复到 RAM,用于上电初始化。
功能命令的执行需严格遵循时序,例如写命令时,MCU 需在每个位周期(60~120μs)内将 DQ 线拉低(写 0)或保持高电平(写 1),传感器在每个位周期的中间(约 30μs)采样 DQ 线电平。