当前位置 : 主页 > 编程语言 > 其它开发 >

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

来源:互联网 收集:自由互联 发布时间:2022-06-13
DS18B20 是一个常见的数字温度计芯片, 因为测温准确, 廉价且接线简单, 实际应用广泛, 在各种教学实验套装中出镜率也很高. 在写STC8H GPIO示例的时候写了一下 DS18B20, 这个型号虽然简单古
DS18B20数字温度计 (一) 电气特性, 寄生供电模式和远距离接线 DS18B20 是一个常见的数字温度计芯片, 因为测温准确, 廉价且接线简单, 实际应用广泛, 在各种教学实验套装中出镜率也很高. 在写STC8H GPIO示例的时候写了一下 DS18B20, 这个型号虽然简单古老, 但是内容比较有意思, 一个篇幅写不下, 所以把内容抽出来单独介绍. 目录
  • 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 接线

在实际的场景中, 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/
【本文转自:香港服务器 http://www.1234xp.com 复制请保留原URL】
上一篇:DS18B20数字温度计 (三) 1
下一篇:没有了
网友评论