目录

DS18B20

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

在写STC8H 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. 支持在单线总线上连接多个芯片

    这个最赞了, 只用一根线通信, 这根线还能同时与多个DS18B20通信, 而且这个距离还可以很长

对最后一点的说明: 单根线上 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都能工作在寄生供电模式下, 有一些在寄生供电模式的电路下只会输出0, 这时候你需要通过一些额外的电路让其在双线模式下工作.

  • 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数字温度计 (一) 电气特性, 供电和接线方式的更多相关文章

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

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

  2. STC8H开发(十一): GPIO单线驱动多个DS18B20数字温度计

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  3. [转]SRTM、ASTER GDEM等全球数字高程数据(DEM)下载方式简介

    之前写过一篇短文对比过几种数字高程数据的区别:5种全球高程数据对比,这篇文章简要介绍下如何下载这些数据.       1.DLR的数字高程数据.该数据也是SRTM(shuttle radar topo ...

  4. excel打开csv格式的文件,数字末尾都变成零,解决方式

    excel打开csv格式的文件,数字末尾都变成零,解决方式

  5. PTP 接线方式及通讯距离

    PTP 接线方式 CB 1241 RS485 接线 (6ES7 241 1CH30-1XB0) CB1241 RS485 信号板(安装在CPU机本体上) ,订货号为: 6ES7 241 1CH30-1 ...

  6. JTAG各类接口针脚定义、含义以及SWD接线方式

    JTAG有10pin的.14pin的和20pin的,尽管引脚数和引脚的排列顺序不同,但是其中有一些引脚是一样的,各个引脚的定义如下. 一.引脚定义 Test Clock Input (TCK) --- ...

  7. 使用以下映射将包含A-ZIS的字母的消息编码为数字:'A' - > 1,'B' - > 2 ...'Z' - > 26 给定包含数字的编码消息,确定解码方式的总数(python)(原创)

    题目:有一种将字母编码成数字的方式:'a'->1, 'b->2', ... , 'z->26'.现在给一串数字,给出有多少种可能的译码结果. 实现逻辑: 1,使用队列的数据类型,每一 ...

  8. [异常解决] JLINK 与STM32的SWD连接接线方式

    如果我们的板子上只留了4个接口:V3.3,SWDIO,SWDCLK,GND.那么和JTAG的连接关系参见下图: 注意缺口方向.然后GND可以接左边任何一个pin(除了最底下这个PIN). FROM: ...

  9. [异常解决] JTAG 与STM32的SWD连接接线方式

    如果我们的板子上只留了4个接口:V3.3,SWDIO,SWDCLK,GND.那么和JTAG的连接关系参见下图: dd400cf22b5c01e57a6c9e198d5383a0_189.jpg (0 ...

随机推荐

  1. caioj 1031: [视频]递归1(全排列)【DFS】【全排列】

    题目大意:先给一个正整数 n( 1 < = n < = 10 ),输出1到n的所有全排列. 题解:这道题目我们可以用递归来实现,递归在图论中又称为"深度优先搜索"(De ...

  2. python---导入模块和包

    导入模块和包 导入模块 import的过程中发生了哪些事情? 寻找模块 如果找到,开辟一块空间,执行这个模块 把这个模块中用到的名字都收录到开辟的空间中 创建一个变量来引用这个模块的空间 注意: 模块 ...

  3. rancher 添加集群

    用rancher的管理账户登录rancher控制台首先创建用户 jinzs,后面用户绑定到要添加的集群上的 其次点全局,出现集群列表 >点添加集群 这里集群名称任意,只要你知道,该名称要对应实际 ...

  4. Kafka 使用-安装

    Kafka 使用-安装 官方网站 http://kafka.apache.org/ 官方文档 Kafka 是什么? Apache Kafka is an open-source distributed ...

  5. uniapp报错:Browserslist: caniuse-lite is outdated. Please run next command `npm update`

    uni-app的编译器是基于npm的,依赖了众多包括mpvue.webpack在内的npm库,这些库又引用了一个三方库caniuser-lite.caniuser-lite这个库的代码里有个浏览器兼容 ...

  6. php个人博客搭建第二阶段②

    网站正文部分:热门博客的推荐: html代码: <!-- 网站正文部分 -->     <div class="content">         < ...

  7. 2021.12.07 P4291 [HAOI2008]排名系统(Treap)

    2021.12.07 P4291 [HAOI2008]排名系统(Treap) https://www.luogu.com.cn/problem/P4291 双倍经验: https://www.luog ...

  8. mmdetection训练出现nan

    训练出现nan 在使用MMDetection训练模型时,发现打印信息中出现了很多nan.现象是,loss在正常训练下降的过程中,突然变为nan. 梯度裁减 在模型配置中加上grad_clip: opt ...

  9. Asp.Net在线预览Word文档的解决方案与思路

    前几天有个老项目找到我,有多老呢?比我工作年限都长,见到这个项目我还得叫一声前辈. 这个项目目前使用非常稳定,十多年了没怎么更新过,现在客户想加一个小功能:在线预览Word文档. 首先想到的是用第三方 ...

  10. 你不知道的Python容器

    你不知道的Python容器 你不知道的Python容器 散列表 ChainMap MappingProxyType 线性表 堆 参考资料 昨天阅读了<Python Tricks: The Boo ...