目录

  • DS18B20数字温度计 (一) 电气特性, 寄生供电模式和远距离接线
  • DS18B20数字温度计 (二) 测温, ROM和CRC算法
  • DS18B20数字温度计 (三) 1-WIRE总线ROM搜索算法

DS18B20

DS18B20 是一个常见的数字温度计芯片, 因为测温准确, 廉价且接线简单, 实际应用广泛, 在各种教学实验套装中出镜率也很高.

在做FwLib_STC8 GPIO示例的时候写了一下 DS18B20, 这个型号看似简单, 但是使用机制比较有意思, 一个篇幅写不下, 所以把内容抽出来单独介绍.

参数

  • 1-Wire Bus 总线结构, 允许一根总线上挂接多个 DS18B20 并分别通信
  • 在普通温度下, 可以直接从数据口取电, 这时候只需要两根连线.
  • 供电电压 [3.0V, 5.5V]
  • 温度检测范围 [-55°C, +125°C]摄氏度, [-67°F, +257°F]华氏度
  • 精确率: 在 [-10°C, +85°C] 为 ±0.5°C

参数说明

  1. 常温下误差不超过±0.5°C
    对国产的廉价DS18B20实际测过, 基本上在这个范围至内, 二三十摄氏度室温下, 实际测试得到的个体误差在±0.35°C以内.
  2. 功耗很低
    单个DS18B20用一个0.1uF的电容蓄电就可以驱动
  3. 可以通过三线或双线连接进行温度监控
    去掉Vcc和GND, 实际上只需要一根IO线, 非常节省MCU的IO资源
  4. 支持在单线总线上连接多个芯片
    通信总线只需要使用一个IO, 这根线还能同时与多个DS18B20通信, 而且这个距离很长, 可以到上百米.

关于最大通信长度和DS18B20节点数量
1-Wire Bus 总线上 DS18B20 的数量和距离和布线形式有关, 十几厘米的短距离上连接五六十个 DS18B20 没有任何问题, 如果是上百米的长距离连接, 建议10个以内, 最多不要超过20个. 以上的前提都是供电充足. DS18B20的这些特性在工业环境中特别有利, 例如一个IDC机房, 几十个测温点只需要一个8位MCU就能完成采集, 功耗低并且可靠.

Pin脚

一般见到的都是3pin的To-92封装, 和普通三极管一样, 使平面朝向自己, Pin脚朝下, 从左往右依次为: GND, DQ, VDD

单个DS18B20的接线

单个DS18B20是最基础的连线方式

普通供电模式

普通供电模式使用的是三线连接, 电压可以选择3.3V或5V

  • MCU IO -> DQ
  • GND -> GND
  • 5V/3.3V -> VDD

寄生供电模式

寄生供电模式使用的是双线连接. 这时候DS18B20的GND和Vdd都要接地. DQ脚既是数据通信脚, 也是供电脚, 上位机需要在这个脚上使用上拉电阻连接到VCC上, 对于STC8, 可以通过寄存器PxPU进行设置.

需要注意的是, 并非所有线上购买的DS18B20都能工作在寄生供电模式下, 有一些批次编号的DS18B20在寄生供电模式的电路下完全无法工作, 读取只会输出0. 我怀疑是偷工减料了, 里面省掉了寄生供电需要的电容和二极管. 对于这类DS18B20, 需要通过一些额外的电路让其在双线模式下工作.

  • MCU IO -> DQ
  • GND -> GND & VDD

模拟寄生供电模式

如果DS18B20不能在寄生供电模式下工作, 可以使用一个 0.1uF 的电容和一个1N4148二极管实现双线连接. 这时候 DS18B20 实际上工作在普通供电模式下.

        +-----1N4148-|>|-----+|                    ||     |DS18B20|-VCC--+|     |       |      |
MCU IO--+-DQ--|DS18B20|     0.1uF|       |      |
GND   ----GND-|DS18B20|-GND--+

用面包板实测模拟寄生供电模式, 背后只有两根连线

多个 DS18B20 接线

在实际的场景中, DS18B20 经常成组使用, 用于收集一个区域范围的温度信息, 区域的跨度从几十厘米(机箱, 机柜, 车床), 到上百米(住宅, 机房, 车间)都有可能. 对不同的距离和环境有不同的选择, 总结一下有以下几种情况

可以参考这篇 1-wire 总线的接线 https://www.loxone.com/enen/kb/wiring-1-wire-devices/

总线连接方式

下面的结构中S代表 Sensor, DS18B20. MCU是单片机.

总线方式是推荐的接线方式, 所有的 DS18B20 都接在同一根线上. 使用总线连接方式可以达到最远距离通信


MCU-------8m---S---3m----S----3m----S-----10m-----S

或者有个别分叉, 分叉离总线很近


MCU-------8m----------+--S---3m----S--+--10m-----S|               |1m              1m|               |S               S

星形连接方式

如果总线上产生了较多较长的分叉, 就变成了星形连接, 类似于下面的接线方式, 星形连接仅建议在小区域场景使用, 与总线连接方式相比, 长度要短得多.

   S---------8m----MCU|4m|S------6m-----+----3m------S|8m|S--+------4m-----+----6m------------S|2m|S

供电方式

集中供电

绝大多数场景使用的都是集中供电. 在这个场景下, 由控制端(MCU端)供电.

如果使用三线则无需注意, 如果使用双线连接, 需要注意

  1. 因为通信IO同时负责供电, 所以需要配置上拉电阻, 上拉电阻在短距离场景5KR足够, 但是在长距离场景需要降低, 可以尝试使用2KR的电阻.
  2. 如果是使用正常供电模式模拟的寄生供电模式, 电压使用5V, 电容需要靠近 DS18B20 部署, 每个 DS18B20 配一个 0.1uF 的电容.

终端供电

在有条件的场景, 每个 DS18B20 可以单独供电, 此时控制端与 DS18B20 共地, 连接通信IO即可. 为稳定起见在 DS18B20 端可以加配 0.1uF 电容.

参考

  • DS18B20 最大距离 https://forums.raspberrypi.com/viewtopic.php?t=36163#p1337521
  • 40米 CAT5 网线连接7个 DS18B20 https://raspberrypi.stackexchange.com/questions/41234/max-length-of-wire-w-3-3v-or-other-issue
  • 寄生供电模式 https://learn.openenergymonitor.org/electricity-monitoring/temperature/DS18B20-temperature-sensing
  • 寄生供电模式 https://e-radionica.com/en/blog/hum-how-to-use-the-ds18b20-with-parasitic-power-supply/

DS18B20数字温度计 (一) 电气特性, 寄生供电模式和远距离接线相关推荐

  1. DS18B20数字温度计 (三) 1-WIRE总线 ROM搜索算法和实际测试

    目录 DS18B20数字温度计 (一) 电气特性, 寄生供电模式和远距离接线 DS18B20数字温度计 (二) 测温, ROM和CRC算法 DS18B20数字温度计 (三) 1-WIRE总线 ROM搜 ...

  2. 数字温度计的c语言编程,基于DS18B20数字温度计的设计(全文完整版)

    <基于DS18B20数字温度计的设计.doc>由会员分享,可免费在线阅读全文,更多与<基于DS18B20数字温度计的设计>相关文档资源请在帮帮文库(www.woc88.com) ...

  3. DS18B20数字温度计使用(转)

    DS18B20数字温度计使用 发布人:来自网络   发布时间:2010-6-16 1.DS18B20基本知识 DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单, ...

  4. 单片机实例35——DS18B20数字温度计使用(硬件电路图+C语言程序)

    35. DS18B20数字温度计使用 1.DS18B20基本知识 DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点.因此用它来组成一个测温系统,具 ...

  5. DS18B20数字温度计使用

    1.DS18B20基本知识 DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点.因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这 ...

  6. 单片机小白学习之路(三十二)---DS18B20数字温度计(三)

    目标:目标: DS18B20数字温度计(三) 18b20开始转换温度 DS18B20 的典型温度读取过程为:复位→发 SKIP ROM 命令(0XCC)→发开始转换命令( 0X44)→延时→复位→发送 ...

  7. 数字温度计的c语言编程,DS18B20数字温度计C程序(能显示负温)

    DS18B20数字温度计C程序(能显示负温) //***********DS18B20数字温度计C程序****************// //*MCU: AT892051 // //*MCU-cry ...

  8. DS18B20数字温度计系统设计

    STC89C52单片机 STC89C52单片机接口介绍 这个单片机一共有40个引脚. ①P0口(P0.0~P0.7) 8位漏极开关型双向I/O端口.可以作为通用I/O口使用,但必须加上拉电阻. ②P1 ...

  9. DS18B20数字温度计设计

    一.单片机简介. 1 二.设计任务和要求. 1 三.设计方案的总体设计框图. 1 3.1硬件电路框图. 1 3.2硬件电路概述. 2 3.3主控电路. 2 3.4显示电路. 2 3.5报警温度调节电路 ...

最新文章

  1. 在java中建个jsp文件_第一个jsp页面
  2. 上海交通大学c语言章节作业,上海交通大学级C语言测试题.doc
  3. Leetcode-184. 部门工资最高的员工
  4. POJ1753 棋盘翻转(位压缩+广度优先搜索)
  5. std::reserves使用
  6. 云计算是互联网和计算机技术发展的产物,云计算是网络技术和电脑融合在一起产物...
  7. Intel异常的分类:错误,陷阱,终止
  8. mysql单表约束为_MySQL 表约束
  9. matlab求任意点最短路径,【最短路】求两点间最短路径的改进的Dijkstra算法及其matlab实现...
  10. [禅悟人生]不自律的品性如堕落的瓷瓶
  11. Word2010与MathType6.7兼容性问题解决方案
  12. 【图像隐写】基于matlab GUI LSB+DWT数字水印嵌入+提取+检测+攻击【含Matlab源码 833期】
  13. 2022-2028年中国差旅管理行业市场全景调查及投资潜力研究报告
  14. Java正则表达式全解
  15. 易语言版{大智慧/分析家/飞狐交易师}DLL插件接口开发模块(beta5),自定义股票软件公式扩展函数...
  16. 聚类分析matlab原理,matlab笔记模糊聚类分析原理及实现023.docx
  17. (c语言)自写求字符串长度函数
  18. PCL 实现 ICP 算法原理源码解析
  19. WPF中资源字典引用出错
  20. Spring漫画学习笔记(二) 什么是BeanFactory

热门文章

  1. VMware虚拟机硬盘大小修改
  2. 高维统计理论 Gauss与Rademacher复杂度
  3. Https证书浏览器红色警告解决
  4. 沟通的艺术02 同理心对话 亲子沟通实例
  5. 开发环境 - pip install cv2下载失败的解决办法
  6. A类博士后年薪30万起!北邮人工智能学院郭军教授实验室招聘博士后研究人员...
  7. Java程序员最喜欢的11款免费IDE编辑器
  8. 诸葛亮司马懿大战房市
  9. F5 GTM DNS 知识点和实验 3 -加速dns解析
  10. 基于并行思想的简单算法优化(最值,排序)