当前位置: 首页 > news >正文

Ds18b20数字温度传感器

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

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

单片机一个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


http://www.jsqmd.com/news/820548/

相关文章:

  • AI编程助手安全指南:用cursor-rules为代码编辑器设置智能护栏
  • 开源爬虫框架OpenClaw深度集成Bitrix24:企业级数据自动化采集实战
  • 工业意识:11老手血泪Tips + 新手避坑清单
  • 数据库系统原理 · 关系数据理论与模式求精 · 自学总结
  • 2026年|亲测10款降AI工具,这7个最好用:AIGC率从88%降到1.6% - 降AI实验室
  • 尖峰电价破 1 元 / 度!广东制造工厂降用电成本的实用解法
  • 【企业级Linux系统管理模块】测试题-20260514-002篇
  • 基于Adafruit Feather与TMP36的温度报警器:从模拟信号到嵌入式系统实践
  • 终极指南:如何用Python快速构建你的智能金融数据采集系统
  • 混排稿交上去,最怕字数对不上
  • 宝宝除菌洗碗机推荐:慧曼领衔母婴健康之选 - 服务品牌热点
  • 基于MCP协议的TikTok趋势数据获取与AI助手集成实战
  • 2026年深度测评:9家AI模型接口中转站真实表现大揭秘,谁能脱颖而出?
  • VSCode内克隆Git仓库:提升开发效率的图形化工作流
  • Java大模型开发:核心疑问与落地指南
  • 【企业级Linux系统管理模块】测试题-20260514-003篇
  • Godot 3.x 实战入门:通过GDQuest演示项目高效学习游戏开发核心技术
  • android C++版本opencv数值拼接图片+水平拼接图片效果
  • 工业意识:10 未来的 SCADA 会自己决策?AI 版“工厂大脑”要来了
  • 递归式智能体框架:基于MCP协议构建自主知识市场系统
  • 3步终极指南:用TCC-G15彻底解决Dell G15散热难题的完整教程
  • GitHub汉化插件终极指南:3分钟告别英文界面,让GitHub真正属于中文开发者
  • DownGit:3步轻松下载GitHub任意文件或文件夹的实用工具
  • ESP32物联网开发入门:CircuitPython环境搭建与网络连接实战
  • PyCharm Pydantic插件:提升Python开发效率的智能助手
  • 零样本克隆任意音色,Index-TTS体验:效果惊艳,但有两个前提!
  • 树莓派OLED屏幕驱动与系统监控界面开发实战
  • AI智能体评估框架Agent Vibes:构建标准化基准测试的实践指南
  • 抖音下载器:如何轻松批量下载无水印视频与背景音乐?
  • 3个步骤掌握LizzieYzy:围棋AI分析工具如何帮你快速提升棋力