本篇内容是观看B站江科大自化协UP主的教学视频所做的笔记,对其中内容有所引用,并结合自己的单片机板块进行了更改调整。
以下笔记内容以一个视频为一个片段(内容较多,可能不适合速食,望见谅)
一些内容涉及前面的知识点,可能需要提前了解(可以翻看本人之前的文章或者去B站看UP主的视频)
文章目录
13-1 DS18B20温度传感器
单片机上的DS18B20:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iljM8zPy-1669906184823)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125124055954.png)]](https://i-blog.csdnimg.cn/blog_migrate/3de45e7f5455170fddfb1488ea0c8216.png)
拆卸后的DS18B20:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xAV6hkvi-1669906184824)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125124215182.png)]](https://i-blog.csdnimg.cn/blog_migrate/0480ca0c2dcba4b35afa675150d8bca6.png)
DS18B20部分
Ⅰ、DS18B20介绍
DS18B20是一种常见的数字温度传感器,其控制命令和数据都是以数字信号的方式输入输出,相比较于模拟温度传感器,具有功能强大、硬件简单、易扩展、抗干扰性强等特点
测温范围:-55°C 到 +125°C
通信接口:1-Wire(单总线)
其它特征:可形成总线结构、内置温度报警功能、可寄生供电
(可寄生供电即无需接VCC,只需要接数据线与GND即可完成数据通信,节省线路)
模拟温度传感器原理:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n66pqM4V-1669906184824)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125125123583.png)]](https://i-blog.csdnimg.cn/blog_migrate/4c1d92c691238b7b4d2775e6f8b32414.png)
通过外接电路,当温度变化时,热敏电阻两端电压发生改变,产生连续的电压变化(模拟信号),通过AD芯片将模拟信号转换为数字信号,最终将数据反馈出来。
(最终读取的数据只是正比于温度,还需要进行系数配比才能显示出温度)
——因此应用方面不如数字温度传感器。
电路模块:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pUnNnjO1-1669906184824)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125130408810.png)]](https://i-blog.csdnimg.cn/blog_migrate/8c663b3a5a9da6ceeb3584717a03b819.png)
来自up主数据手册截图:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5R4FqIwF-1669906184825)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125130650857.png)]](https://i-blog.csdnimg.cn/blog_migrate/71ec08e5f3fb73789b8efefe67fb3c65.png)
数字温度传感器原理:
DS18B20(TO-92分装):
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s4PyG0d6-1669906184825)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125125626295.png)]](https://i-blog.csdnimg.cn/blog_migrate/cf7ff77fd79f10317d431dcead5a6cd6.png)
如DS18B20一样,它内部集成了上面模拟温度传感器的部分(集成模拟温度传感器,并在内部实现数据转化),并将数据存储在内部的RAM(随机存储器)中。
——因此无需设计电路,只需要通过引脚与单总线通信协议,将RAM里面的温度转化读取出来即可。
(也就是说,模拟温度传感器的部分都需要利用外界资源,但数字温度传感器自己内部已经集成有了)
Ⅱ、引脚及应用电路
up主处部分:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fJYWUtIZ-1669906184825)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125130746143.png)]](https://i-blog.csdnimg.cn/blog_migrate/9b11c1316adadf71c025777c6299c440.png)
本单片机DS18B20原理图:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-25kHCECX-1669906184825)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125131426035.png)]](https://i-blog.csdnimg.cn/blog_migrate/156640ba274a317f6cd6127aa8675438.png)
up主部分的R1为上拉电阻,与I2C部分的上拉电阻功能相同。(可以参考I2C总线部分笔记对照)
Ⅲ、内部结构框图
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kTpCV5Zf-1669906184825)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125131719607.png)]](https://i-blog.csdnimg.cn/blog_migrate/5ec770e2491179457de711845e39d203.png)
本单片机芯片资料内部结构框图(DS1820,不是DS18B20):
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x05l5fpN-1669906184826)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125163001914.png)]](https://i-blog.csdnimg.cn/blog_migrate/d20338ccab2a63cc49b5536cda5b27cc.png)
一、PARASITE POWER CIRCUIT(寄生供电)部分
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LqSSOBbF-1669906184826)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125155533211.png)]](https://i-blog.csdnimg.cn/blog_migrate/5eaf829f8d0ad59d60e9032d7849c8dd.png)
解释作用:这一部分电路能省去VDD,直接采用DQ供电。
①POWER-SUPPLY SENSE负责检测电路是否连接VDD。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o2ZP6jTr-1669906184827)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125154701459.png)]](https://i-blog.csdnimg.cn/blog_migrate/6d14d49b87da640835dfca92efed4bed.png)
②当VDD连接时,电流会正常过来,如下图。
![(https://gitee.com/best_future/future_fighting/raw/master/image-20221125154837622.png)]](https://i-blog.csdnimg.cn/blog_migrate/d865049ce68f1981ea212d3653fd29f6.png)
③当VDD没有连接时,上方的DQ会通过二极管流下来进行供电。
这里加入了一个上拉电阻,为了使得寄生供电能满足温度传感器的工作电流要求。

④当为低电平状态时,VDD与DQ都不流入电流,这时为了维持内部系统正常运转,于是需要Cpp(电容)来进行供电。
Cpp在高电平状态时会存储电能,当转为低电平时,将电能释放,以维持系统运转工作。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wioOxyOT-1669906184827)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125155302232.png)]](https://i-blog.csdnimg.cn/blog_migrate/60f742982a8d9add8e2ab905aa57e03f.png)
PS:本单片机并没有接入强上拉电路(上拉电阻部分),因此这里不使用该功能,而采用外部供电。
二、64-BIT ROM AND 1-Wire PORT(64位ROM与单总线PORT接口)部分
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v8qJYF03-1669906184828)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125155550328.png)]](https://i-blog.csdnimg.cn/blog_migrate/f02dbf9ea1d5ef2b5f84e46eabf1f853.png)
这里的ROM为只读存储器(真的只能只读),记录器件的地址(ID号),用于总线通信的寻址(不能更改)。
PS:当外部发送正确地址时,才能进入下一部分。(也可以设置指令跳过该部分)
三、控制逻辑与RAM部分
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ahp2Z0Ws-1669906184828)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125160226990.png)]](https://i-blog.csdnimg.cn/blog_migrate/965e7cd61f1e6d3ea154dbb121cde16c.png)
①上面的MEMORY CONTROL LOGIC为内存控制逻辑部分,负责与指令进行交互,进行指令的执行(如写入数据到下方的RAM,或将RAM数据放到单总线上)。
②下面的SCRATCHPAD(暂存器)为RAM,存储着温度等参数,为数据交互的一个寄存器。
四、存储数据部分
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HxHNsTnJ-1669906184828)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125160717493.png)]](https://i-blog.csdnimg.cn/blog_migrate/f8759dd18164a6ce038a5af1999792a4.png)
①TEMPERATURE SENSOR(温度传感器)相当于内部的模拟传感器集成部分。
当发出指令让其开始温度转换时,该部分就开始工作,并将数据放入RAM中。
②ALARM HIGH TRIGGER REGISTER(TH,报警高触发器)用于存储温度上限阈值,实现温度报警。
存储介质为EEPROM,掉电不丢失数据。
③ALARM LOW TRIGGER REGISTER(TL,报警低触发器)用于存储温度下限阈值,实现温度报警。
存储介质为EEPROM,掉电不丢失数据。
④CONFIGURATION REGISTER(配置寄存器)用于设置分辨率(精度)
——这里出厂默认最高精度为0.0625℃。
可以通过配置寄存器中两位(其他位无效)来降低精度,最低为0.5℃。
当精度降低时,温度转换速率会迅速提升。(相当于处理的数据少了,流程简化,速度就上去了)
存储介质为EEPROM,掉电不丢失数据。
⑤8-BIT CRC GENERATOR(8位CRC生成器)中CRC为校验码,该部分将RAM之前的数据进行校验,并生成一个校验码放于后端,通讯时检测即可判断数据是否正确。(CRC为校正率较高的一种校验码)
※存储器结构(RAM部分)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GOy1ccCx-1669906184828)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125162327307.png)]](https://i-blog.csdnimg.cn/blog_migrate/cb435b49444059e0f0fc9d9f3ff5e01c.png)
本单片机芯片资料图:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1Z6MyLzv-1669906184829)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125163301954.png)]](https://i-blog.csdnimg.cn/blog_migrate/e5922488df293da327fe988c70f69579.png)
右边(EEPROM)部分
这里的EEPROM对应上面存储数据部分的②~④。(因为其他为存在的硬件部分)
左边(RAM)部分
温度存储部分:
①Byte 0存储的是温度的最低有效字节,括号内为默认值。
②Byte1存储的是温度的最高有效字节,括号内为默认值。
③两个字节共同组成温度值,在未变动情况下,默认值为85℃。(不同单片机默认值不一样)
配置温度数据部分:
①Byte 2存储为温度上限阈值,Byte 3存储为温度下限阈值,Byte 4存储为精度(分辨率)。
②右边的EEPROM负责存储数据,需要读取与写入数据要先经过RAM部分,然后通过指令将数据存储进EEPROM中(当上电时,EEPROM的数据会自动放入RAM中)
保留部分:
Byte 5~Byte 7为保留部分,并没有使用到,当后续功能升级再添加。
CRC校验部分:
将前面八个字节进行运算,并生成CRC校验码。
可以读取CRC校验码,并对前面八个字节数据进行运算,如果运算结果与CRC相同,那么校验正确,反之数据出错。
单总线部分
Ⅰ、单总线介绍
单总线(1-Wire BUS)是由Dallas公司开发的一种通用数据总线一根通信线:DQ
异步、半双工
单总线只需要一根通信线即可实现数据的双向传输,当采用寄生供电时,还可以省去设备的VDD线路,此时,供电加通信只需要DQ和GND两根线
DS18B20:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JUc5d0Gn-1669906184829)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125171345841.png)]](https://i-blog.csdnimg.cn/blog_migrate/d621c5f8bad69e084a5ba23506fe178b.png)
DHT11:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hm4z2Sqt-1669906184829)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125171402650.png)]](https://i-blog.csdnimg.cn/blog_migrate/13c7af51a2d9af54c93d859e864025bc.png)
DHT11为温湿度传感器(顾名思义,既可以测温度,也可以测湿度)。
Ⅱ、单总线电路规范
- 设备的DQ均要配置成开漏输出模式
- DQ添加一个上拉电阻,阻值一般为4.7KΩ左右。
(与I2C总线部分类似,可以去I2C总线部分内容对比了解)
- 若此总线的从机采取寄生供电,则主机还应配一个强上拉输出电路
外部供电:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nu1mXoCn-1669906184829)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125172058012.png)]](https://i-blog.csdnimg.cn/blog_migrate/94a7b9ca5cc3d451ea75e757346ce4a4.png)
类似于I2C总线原理。
寄生供电:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JDDDShGh-1669906184829)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125172203872.png)]](https://i-blog.csdnimg.cn/blog_migrate/56fd7ccfeb15762a30b2481f63af6b0d.png)
解释:
这里VDD与GND合并为一条线(即没有VDD)。
Vpu部分有一个电子开关,当输出为高电平时,开关闭合,此时DQ被Vpu部分强上拉进行供电,充当VDD作用。
而当低电平状态时,电子开关断开,此时供电由下方小型的弱上拉Vpu部分进行提供,仅保证工作的电能。
(当进行EEPROM读写等耗电操作时,必须给强上拉才能工作)
Ⅲ、单总线时序结构
一、初始化部分
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rf8lJXmx-1669906184830)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125173401573.png)]](https://i-blog.csdnimg.cn/blog_migrate/90c6da97325c524091630d0f14d540b2.png)
这里使用了绝对时间,是因为只有一根线的原因,无法像I2C总线一样利用上升沿或下降沿。
过程:
①图中黑粗线Bus master pulling low(主机拉低)是将总线拉低;
②图中黑细线Resistor pullup为上拉电阻将总线上拉(因为是弱上拉,所以利用曲线来表示弱的状态,而不是强上拉一下拉上去)
③当从机存在时,从机会将总线拉低(即图中棕线DS18B20 pulling low)。
④最终上拉电阻拉高,总线恢复空闲状态。
⑤通过以上步骤,可以将过程分为复位与响应两个部分。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fKnbts51-1669906184830)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125221059518.png)]](https://i-blog.csdnimg.cn/blog_migrate/7a14463a942984ad4b3b62ba6815a47e.png)
操作:
①在从机(棕色部分)响应时,检测I/O口即可知道从机是否存在。
②因为中间的操作间隔时间为范围值,且没有参考数据,于是取中间值作为等待间隔时间。
二、发送一位部分
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ERZecH5y-1669906184830)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125222510669.png)]](https://i-blog.csdnimg.cn/blog_migrate/222013878470b31ee4cdbb0a51594ae4.png)
上面的时间片为时序结构。
过程:
可以将上面的部分分为发送0与发送1两部分的时序。
①发送0时拉低超过60us即可,但不能超过120us,否则可能会变为初始化操作(至少480us)
②中间存在总线恢复时间,因此连续发送两位不能低于这个恢复时间。(本单片机操作时间较长,因此这里了解即可)
③图中阴影部分,表示可以在1~15us时释放总线即可,这时电阻都会将总线拉高。
④从机在主线拉低30us后进行操作(如果发送0,就一直保持总线拉低;如果发送1,就在主线拉低后,将总线释放)
操作:
在主机拉低后30us后,从机读取I/O口即可。
三、接收一位部分
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wr6uaP9m-1669906184830)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125224052517.png)]](https://i-blog.csdnimg.cn/blog_migrate/48b4b5995d5ba3da618822a15b5299e6.png)
过程:
①当主机拉低总线后,从机如果需要发0,那么也拉低总线,当主机在1~15us后释放总线时,因为从机拉低着,因此总线状态为拉低状态(0)。
②当主机拉低总线后,从机如果需要发1,那么就不动总线。当主机经过1~15us后释放总线时,因为没有被拉低,因此总线状态为拉高状态(1)。
操作:
在总机拉低后15us内读取总线电平(I/O口),即可知道从机需要发送的数据。
(之所以主机读取的时间短,是为了给从机留下充足时间,因为从机无法找到其什么时候释放总线恢复为高电平——如图中主机接收0后面的大片阴影部分)
四、发送一个字节部分
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IyqpOsvO-1669906184830)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125230438721.png)]](https://i-blog.csdnimg.cn/blog_migrate/47d519bbe66bde398e26f462c914f2ee.png)
五、接收一个字节部分
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mjOvOqEB-1669906184830)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125230853065.png)]](https://i-blog.csdnimg.cn/blog_migrate/a426ce3dd8c236bc7fce04ecd07f55e2.png)
DS18B20操作部分
Ⅰ、DS18B20操作流程
初始化:从机复位,主机判断从机是否响应
ROM操作:ROM指令+本指令需要的读写操作
功能操作:功能指令+本指令需要的读写操作(RAM操作)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FBTISkXV-1669906184831)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125231210041.png)]](https://i-blog.csdnimg.cn/blog_migrate/3d63ba1d145fd594ef432cea25c87b50.png)
ROM指令:
①SEARCH ROM(搜寻ROM)
②READ ROM(读取ROM):先调用读取指令,再调用读取时序(接收部分),就可以将ROM读取出来。
③MATCH ROM(匹配ROM):先发送匹配指令,然后发送ROM地址,实现利用该指令匹配与哪个设备进行通信的效果。
④SKIP ROM(跳过ROM):调用跳过指令,直接将ROM部分跳过进入下一部分。
(当总线上只有一个设备时使用。多个设备挂载时,使用这个指令会产生混乱,无法确定是哪个设备)
⑤ALARM SEARCH(报警搜索):当挂载多个设备的情况下,某个设备温度超过设定温度阈值时,会产生报警,利用这个指令即可搜索出超过温度阈值的设备。
功能指令:
①CONVERT T(温度变换):调用该指令时,温度传感器部分会将温度数据的模拟信号转化为数字信号,并将数据放在RAM中(相当于数据更新)。
②WRITE SCRATCHPAD(写暂存器):调用该指令后,再接着写入时序(发送一个字节部分),那么该字节就会被写入RAM中的配置温度数据部分。
③READ SCRATCHPAD(读暂存器):调用该指令后,再接着接收时序(接收一个字节部分部分),那么DS18B20就会依次将RAM里面内容读取出来

本文详细介绍了DS18B20数字温度传感器的原理、内部结构及其在单片机上的应用。包括单总线通信协议、温度读取方法及温度报警器的实现。
最低0.47元/天 解锁文章
1万+





