51单片机(4)

一、DS18B20 传感器核心参数指标

想要用好一款传感器,首先要吃透其核心参数,DS18B20 的参数设计兼顾了宽量程、高精度和灵活的分辨率配置,能适配绝大多数工业、民用温度采集场景,核心参数如下:

  1. 测量量程:-55℃ ~ 125℃,覆盖了低温环境到高温环境的大部分使用需求,低温可适应工业冷库、户外低温场景,高温可应对设备内部测温、工业炉体周边测温等场景。
  2. 测量精度:±0.5℃,在常规的室温、环境温测场景中,该精度完全满足使用要求,无需额外校准即可保证数据准确性。
  3. 分辨率 :分辨率代表传感器对温度变化的敏感程度,是 DS18B20 的核心可配置特性,默认采用 12 位分辨率,不同位数对应不同的温度分辨精度,具体对应关系为:
    • 9 位:0.5℃,即温度变化 0.5℃时传感器才会识别并输出变化
    • 10 位:0.25℃,分辨率提升,对温度变化的感知更细腻
    • 11 位:0.125℃,适用于对温度精度要求较高的场景
    • 12 位(默认):0.0625℃,最高分辨率,能捕捉极细微的温度变化
  4. 工作电压:3V ~ 5V,兼容嵌入式开发中最常见的 3.3V 和 5V 供电系统,无论是 51 单片机、STM32 还是嵌入式 Linux 开发板,都能直接供电,无需额外的电源转换电路。

DS18B20 为三引脚封装(也有贴片式封装),核心引脚包含电源脚(VDD)、接地脚(GND)和数据脚(DQ),其中DQ 脚为单总线通讯引脚,是实现数据交互的核心。

二、DS18B20 通讯接口:GPIO 单总线

DS18B20 最显著的特点就是采用1-Wire(单总线) 通讯协议,该协议仅通过一根 GPIO 数据线(DQ 脚)即可实现主机(单片机 / 开发板)与传感器之间的双向数据传输,无需额外的时钟线,极大简化了硬件接线。

单总线接口的核心特点

  1. 单线双向通信:同一根 GPIO 线既负责主机向传感器发送指令,也负责传感器向主机回传温度数据,总线的控制权在主机和传感器之间按需切换。
  2. 硬件接线极简:传感器仅需 VDD、GND、DQ 三根线,DQ 脚可直接连接到主机的任意通用 GPIO 口,无需外接电阻(部分场景为保证总线空闲时的高电平,会在 DQ 脚与 VDD 之间接 4.7KΩ 上拉电阻)。
  3. 多设备挂接:单根总线上可挂接多个 DS18B20 传感器,每个传感器都有唯一的 64 位 ROM 地址,主机可通过地址识别不同传感器,实现多点温度采集,这一特性让其在分布式测温场景中极具优势。

正是因为单总线的极简接口设计,DS18B20 成为了嵌入式入门阶段温度采集的首选传感器,大幅降低了硬件搭建的难度。

三、DS18B20 温度采集完整流程

DS18B20 的温度采集遵循固定的操作流程,所有操作均基于单总线完成,主机需严格按照 "初始化→指令操作→数据读取→数据解析" 的步骤执行,任何一步的时序偏差都会导致通信失败,完整采集流程如下:

  1. 总线复位:主机向 DS18B20 发送复位脉冲,传感器响应存在脉冲,完成主从设备的通信初始化,这是所有操作的前提,只有复位成功,后续的指令和数据传输才有效。
  2. 发送 ROM 指令 :复位成功后,主机发送 ROM 相关指令,主要包括读 ROM 指令、匹配 ROM 指令、跳过 ROM 指令等。若单总线上只有一个 DS18B20,可直接发送跳过 ROM 指令,简化操作;若挂接多个传感器,需发送匹配 ROM 指令,指定要通信的传感器地址。
  3. 发送功能指令 :发送完 ROM 指令后,主机发送功能指令,核心功能指令为温度转换指令(0x44)读暂存器指令(0xBE),前者用于让传感器启动温度采集与转换,后者用于读取传感器转换后的温度数据。
  4. 等待温度转换:发送温度转换指令后,传感器需要一定的时间完成温度采集(12 位分辨率下约需 750ms),主机需等待转换完成,或通过检测总线状态判断转换是否结束。
  5. 读取温度数据:转换完成后,主机再次执行总线复位,依次发送 ROM 指令和读暂存器指令,随后从单总线上读取传感器回传的温度数据(共 2 字节,包含温度的整数和小数部分)。
  6. 温度数据解析:将读取到的 2 字节原始数据按照 DS18B20 的数制规则进行解析,转换为实际的十进制温度值,根据配置的分辨率进行小数位换算,最终得到可用的温度数据。

整个采集流程中,复位是否成功、指令发送是否正确、等待转换时间是否足够是三个关键节点,直接决定温度采集的成败。

四、DS18B20 关键操作时序:复位、写、读

单总线协议的核心是时序控制,DS18B20 对主机的 GPIO 操作时序有严格的时间要求,无论是复位、写数据还是读数据,都必须满足微秒级的时间参数,否则传感器无法正确识别主机指令,也无法向主机回传有效数据。以下是三大核心操作的时序细节,也是开发中的重点和难点。

4.1 复位时序:主从通信的 "握手" 环节

复位时序的本质是主机主动发起通信请求,传感器通过存在脉冲回应 "已就绪",整个过程分为主机发复位脉冲传感器发存在脉冲两个阶段,具体时间要求如下:

  1. 主机将单总线(DQ 脚)拉低大于 480μs,产生复位脉冲,告知传感器准备通信;
  2. 主机释放总线,将总线拉高,并将 GPIO 口转换为输入模式,等待传感器的回应;
  3. DS18B20 在总线拉高后的15~60μs内检测总线上升沿,识别主机的复位请求;
  4. 传感器检测到复位请求后,在60~240μs内将总线拉低,产生存在脉冲,告知主机 "已连接并就绪";
  5. 传感器释放总线,总线恢复高电平,进入空闲状态,复位流程完成,主从设备完成 "握手",可开始后续的指令传输。

开发要点:主机拉低总线的时间必须≥480μs,若时间过短,传感器无法识别复位脉冲;同时主机需在拉高总线后及时切换为输入模式,避免因 GPIO 输出高电平导致传感器无法拉低总线。

4.2 写时序:主机向传感器发送指令 / 数据

DS18B20 的写操作是按位写入,主机每次向传感器发送 1 个 bit 的数据(0 或 1),写 0 和写 1 的时序差异较大,传感器通过采样总线的电平持续时间来识别 0 和 1,具体时序要求如下:

写 0 时序
  1. 主机将总线拉低至少 60μs
  2. DS18B20 在总线拉低后的 60μs 内对总线电平进行采样,若采到低电平,则判定为主机发送了 bit'0';
  3. 采样完成后,主机释放总线,将总线拉高,完成 1 个 bit'0' 的写入。
写 1 时序
  1. 主机将总线拉低大于 1μs(短拉低);
  2. 主机立即释放总线,将总线拉高;
  3. 主机保持总线高电平至少 45μs,确保 DS18B20 能在采样窗口内采到高电平,判定为主机发送了 bit'1';
  4. 采样完成后,总线恢复空闲,完成 1 个 bit'1' 的写入。

开发要点:写 0 的核心是 "长拉低",写 1 的核心是 "短拉低 + 长拉高",两者的拉低时间差异是传感器识别的关键;每次写操作完成后,需预留短暂的空闲时间,再进行下一个 bit 的写入。

4.3 读时序:主机从传感器读取温度数据

读操作同样是按位读取,主机每次从传感器读取 1 个 bit 的数据(0 或 1),读时序的核心是主机主动发起读请求,传感器控制总线输出电平,主机通过采样总线电平得到数据,具体时序要求如下:

  1. 主机将总线拉低大于 1μs,向传感器发起读 bit 请求;
  2. 主机立即释放总线,将总线拉高,并快速切换为输入模式,此时总线的控制权移交到 DS18B20 手中;
  3. 传感器根据要传输的 bit 数据,将总线拉低(传 0)或保持高电平(传 1);
  4. 主机在发起读请求后的大约 15μs时对总线电平进行采样,采到低电平则读到 bit'0',采到高电平则读到 bit'1';
  5. 采样完成后,总线恢复空闲,完成 1 个 bit 的读取。

开发要点:主机的采样时间必须精准控制在 15μs 左右,若采样过早,传感器尚未输出有效电平;若采样过晚,传感器可能已释放总线,导致采样到无效电平;同时,读操作需紧跟在主机发送的读暂存器指令之后,传感器才会输出温度数据。

五、逻辑分析仪抓取 DS18B20 通信波形

在 DS18B20 的开发调试中,最常见的问题是时序不满足要求,导致通信失败,此时通过逻辑分析仪抓取单总线的通信波形,能直观地查看复位、写、读的时序是否符合参数要求,快速定位问题。以下是抓取 DS18B20 通信波形的核心步骤:

  1. 硬件连接:将逻辑分析仪的探头连接到 DS18B20 的 DQ 单总线引脚,同时连接 GND 引脚保证共地,避免波形干扰;
  2. 协议选择 :在逻辑分析仪的配套软件中,选择1-Wire 单总线协议,软件会自动按照单总线的规则解析波形;
  3. 通道选择:选择探头连接的对应通道,设置合适的采样率(建议≥1MHz,保证微秒级时序的捕捉精度);
  4. 触发设置:以 "总线拉低" 为触发条件,对应复位脉冲的起始阶段,便于捕捉完整的通信波形;
  5. 抓取波形:运行主机的 DS18B20 采集程序,逻辑分析仪开始抓取波形,可直观看到复位脉冲、存在脉冲、指令写入、数据读取的完整波形,并查看各阶段的时间参数是否满足要求。

通过波形分析,能快速判断出 "复位脉冲拉低时间不足""写 1 时拉高时间不够""读采样时间偏差" 等问题,是 DS18B20 开发调试的高效工具。

六、总结

DS18B20 作为单总线温度传感器的经典款,其核心优势在于极简的硬件接口灵活的使用方式 ,而开发的核心难点则集中在微秒级的时序控制。想要熟练使用 DS18B20 实现温度采集,需牢牢掌握以下重点:

  1. 熟记传感器的核心参数,根据实际场景配置合适的分辨率;
  2. 理解单总线的通信原理,掌握硬件接线和多设备挂接的技巧;
  3. 遵循 "复位→ROM 指令→功能指令→转换→读数据→解析" 的固定采集流程;
  4. 严格把控复位、写、读三大操作的时序参数,这是通信成功的关键;
  5. 学会使用逻辑分析仪抓取波形,快速定位时序问题。
相关推荐
jh10_2 小时前
嵌入式硬件day1
嵌入式硬件
小痞同学3 小时前
【铁头山羊STM32】HAL库 1.GPIO部分
stm32·单片机·嵌入式硬件
风痕天际4 小时前
ESP32-S3开发教程三:蜂鸣器与FreeRTOS多任务协同
单片机·嵌入式·freertos·esp32s3
ShiMetaPi4 小时前
GM-3568JHF丨ARM+FPGA异构开发板应用开发教程:01 UART读写案例
arm开发·单片机·嵌入式硬件·fpga开发·fpga·rk3568
松涛和鸣4 小时前
55、ARM与IMX6ULL入门
c语言·arm开发·数据库·单片机·sqlite·html
代码游侠4 小时前
学习笔笔记——ARM 嵌入式系统与内核架构
arm开发·笔记·嵌入式硬件·学习·架构
国科安芯5 小时前
AS32X601的I2C模块操作EEPROM详解
stm32·单片机·嵌入式硬件·架构·安全威胁分析·安全性测试
xu_wenming5 小时前
沁恒MCU 和乐鑫ESP32MCU选型对比
单片机·嵌入式硬件
QK_005 小时前
STM32--IIC
stm32·单片机·嵌入式硬件