Ds18b20数字温度传感器
2026/5/15 8:07:08 网站建设 项目流程

模拟温度传感器: 热敏电阻,,
输出的电压随着温度变化
将变化的电压值,,转化成数字信号,,, 这就是模拟传感器,,比较复杂,,这个数据只是正比于温度,,还要计算温度实际是多少

数字温度传感器 : 将模拟温度传感器变成了一个芯片,,将温度自动的转换成了芯片内部的温度,,只需要把转换之后的温度传递出来

单片机一个IO口,,可以读很多个温度传感器


常用的温度传感器
家居自动化

DQ : 测温度,,

一个引脚怎么传输数据,,,,采用了1-wire总线进行通讯,,,异步的,,串行的通讯协议

1-wirte通讯协议

scratch:抓
sensor : 传感器


输入输出引 DQ ,,,, 上拉电阻,,开漏模式,,,能够主动拉低电平,,不能拉高,,只能高阻态

scratchpad : 暂存器

  • 高温预警
  • 低温预警
  • 其他配置信息
  • 温度

报警:通过引脚输出一个特定的信号

18B20是一个低功耗芯片,,如果不发送测温命令,,,他不会主动测
,,收到命令之后,会测温,,将温度放入暂存器,,,单片机拿到这个温度

单片机主导,,,测温命令,,,获取温度命令


1-wire: wire:金属丝

半双工,串行通信协议,,主要用于各种低成本传感器,和存储设备进行数据交换,,,
和I2C协议类似,,也采用主从架构,,

主设备

每个从设备都有一个唯一的64位的地址,,用于设备设别和通讯,,,这个64位的地址,,自己不能设置,,都是固定的,,
都是制造商在生产的时候烧录进去的,,是不可更改的


每次通信时,,主设备都要先发送一个复位脉冲,,,

复位: 从低功耗状态 恢复到 正常通信状态

然后回复一个存在脉冲

主设备可以根据这个存在脉冲获知设备的健康状态

DQ引脚线的电平

释放DQ总线


释放DQ,,确认数据发送完毕


温度00011001,,总线上不可能一次出现8位,,,所以协议必须规定,,,某一小段时间内的电平,,代表一位数据
这就是时隙slot

read 0 slot: 表示 如果芯片内部这一位是0,,他会怎么操作总线
read 1 slot: 表示如果这一位是 1,他会怎么操作总线

这一位数据恰好是0,,,总线长这样

采样: 在规定的时间查看总线当前是高电平还是低电平


最开始 1-2us,,,主机拉低总线,,,开始读时隙,,,然后主机释放总线,,,后面的电平就全部由 ds18b20决定,,如果ds18b20 要发0,,,他会立刻继续拉低,,,
所以2us后的那个低电平就是已经是 ds18b20的 时隙slot,,而不是等到15us之后,,才是,,15us只是建议你读取的时间

10~15us附近
最稳定
前半段 基本可靠


ds18b20 samples : 这个时间段查看总线,,来判断你写的是0,,还是1


ds18b20通讯流程:

  1. 初始化
    主设备发送复位脉冲,,从设备回复存在脉冲

  2. 发送ROM命令
    64位的ROM,从机地址,,唯一标识,,为了确定是哪个从机

    • 搜索ROM命令 : 识别和列出所有连接在总线上的18b20设备,,,
    • 读取ROM命令: 只有在单设备连接的时候,,主机才可以直接用这个命令读取该设备的ROM代码
    • 匹配ROM命令: 该命令后会跟随一个特定的64为ROM代码,,选择总线上特定的设备进行通讯,,,发哪个地址就是和谁进行通讯
    • 跳过ROM命令 : 在单设备环境中,,可以跳过ROM步骤,,直接通讯
  3. 发送功能命令
    测温命令,读取温度命令 ,,等均属于功能命令

    • 温度转换 : 温度的模拟信号转成数字信号
    • 读取暂存寄存器 : 读取暂存器中存储的值 。。。。这个命令会返回暂存器中的全部数据,,共九个字节

每次执行完了一个功能命令的时候会自动恢复到低功耗状态

每次发命令,,都要初始化。。发复位脉冲,重新激活,,指定ROM,,然后再发送命令

暂存器中的全部数据,,共九个字节,,,温度值保存在前两个字节,,只需要接收前两个字节即可

ls byte : 低字节
ms byte : 高字节

它不仅要存整数部分,,还要存小数部分,,还要存正负号,,一个字节不够

精度 0.0625,,最终的温度是 0.0625整数倍


18b20的精度可选,,,


temperature sensor : 温度传感器

alarm high trigger : 报警高触发 ===》 存储介质是 EEPROM

alarm low trigger : 报警低触发

configuration register : 配置计算器,,设置精度,设置分辨率,,,默认0.0625

8bit crc generator : 校验码,,把ram之前的数据进行校验,,判断通讯是否正确
CRC : cyclic redundancy check : 循环冗余校验 ,,, 广泛用于数据传输领域的错误检测技术


reserved : 保留位


单总线 (1-wire bus) : 通用数据总线,,一根通讯线 DQ ===》 Data Input/Output
异步,半双工

ds18b20 很广泛,,单总线不广泛,,,



copy scratchpad : 将Ram暂存器 写入到 EEPROM中,,如果想掉电不丢失,,,写入之后,,copy

recall E2 : 将EEPROM中数据读入到RAM中

read power supply : 获取供电模式,,,后面会跟着读取一位的时序,,,

power supply sense


需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询