DS18B20数字温度计 (一) 电气特性, 寄生供电模式和远距离接线
时间:2022-08-19 06:00:01
目录
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
参数说明
- 常温下误差不超过±0.5°C
国产便宜DS18B20实际测过, 基本上在这个范围内, 室温二三十摄氏度, 实际测试中获得的个体误差±0.35°C以内. - 功耗很低
单个DS18B20用一个0.1uF电容蓄电可以驱动 - 温度监测可通过三线或双线连接进行
去掉Vcc和GND, 其实只需要一个IO线, 非常节省MCU的IO资源 - 支持在单线总线上连接多个芯片
通信总线只需要一个IO, 这条线也可以同时与多条线同时使用DS18B20通信, 而且这个距离很长, 可达数百米.
关于最大通信长度和DS18B20节点数量
1-Wire Bus 总线上 DS18B20 与布线形式有关的数量和距离, 在十几厘米的短距离上连接五六十个 DS18B20 没有问题, 如果是上百米的长距离连接, 建议10个以内, 最多不超过20个. 以上前提是供电充足. DS18B这些特点在工业环境中特别有利, 例如一个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进行设置.
需要注意的是, 并非网上购买的一切DS18B寄生供电模式下可工作20, 有一些批号DS18B寄生供电模式下的电路完全不能工作, 读取只会输出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端)供电.
如果使用三线则无需注意, 若采用双线连接, 需要注意
- 因为通信IO同时负责供电, 因此,需要配置上拉电阻, 短距离场景5上拉电阻KR足够, 但需要减少长距离场景, 可尝试使用2KR的电阻.
- 若采用正常供电模式模拟的寄生供电模式, 电压使用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-paasitic-power-supply/