DS18B20 是一个常见的数字温度计芯片, 因为测温准确, 廉价且接线简单, 实际应用广泛, 在各种教学实验套装中出镜率也很高.
在写STC8H GPIO示例的时候写了一下 DS18B20, 这个型号虽然简单古老, 但是内容比较有意思, 一个篇幅写不下, 所以把内容抽出来单独介绍.
常温下误差不超过±0.5°C
对国产的廉价DS18B20实际测过, 基本上在这个范围至内, 二三十摄氏度室温下, 实际测试得到的个体误差在±0.35°C以内.
功耗很低
单个DS18B20用一个0.1uF的电容蓄电就可以驱动
可以通过三线或双线连接进行温度监控
去掉Vcc和GND, 实际上只需要一根IO线, 非常节省MCU的IO资源
支持在单线总线上连接多个芯片
这个最赞了, 只用一根线通信, 这根线还能同时与多个DS18B20通信, 而且这个距离还可以很长
对最后一点的说明: 单根线上 DS18B20 的数量和距离和布线形式有关, 十几厘米的短距离上连接五六十个 DS18B20 没有任何问题, 如果是上百米的长距离连接, 建议10个以内, 最多不要超过20个. 以上的前提都是供电充足. DS18B20的这些特性在工业环境中特别有利, 例如一个IDC机房, 几十个测温点只需要一个8位MCU就能完成采集, 功耗低并且可靠.
一般见到的都是3pin的To-92封装, 和普通三极管一样, 使平面朝向自己, Pin脚朝下, 从左往右依次为: GND, DQ, VDD
单个DS18B20是最基础的连线方式
普通供电模式使用的是三线连接, 电压可以选择3.3V或5V
寄生供电模式使用的是双线连接. 这时候DS18B20的GND和Vdd都要接地. DQ脚既是数据通信脚, 也是供电脚, 上位机需要在这个脚上使用上拉电阻连接到VCC上, 对于STC8, 可以通过寄存器PxPU进行设置.
需要注意的是, 并非所有线上购买的DS18B20都能工作在寄生供电模式下, 有一些在寄生供电模式的电路下只会输出0
, 这时候你需要通过一些额外的电路让其在双线模式下工作.
如果DS18B20不能在寄生供电模式下工作, 可以使用一个 0.1uF 的电容和一个1N4148二极管实现双线连接. 这时候 DS18B20 实际上工作在普通供电模式下.
+-----1N4148-|>|-----+
| |
| |DS18B20|-VCC--+
| | | |
MCU IO--+-DQ--|DS18B20| 0.1uF
| | |
GND ----GND-|DS18B20|-GND--+
在实际的场景中, 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端)供电.
如果使用三线则无需注意, 如果使用双线连接, 需要注意
在有条件的场景, 每个 DS18B20 可以单独供电, 此时控制端与 DS18B20 共地, 连接通信IO即可. 为稳定起见在 DS18B20 端可以加配 0.1uF 电容.
手机扫一扫
移动阅读更方便
你可能感兴趣的文章