AutoLeaders控制组——51单片机学习笔记(DS18B20温度传感器、LCD1602、直流电机+PWM)

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

本篇内容是观看B站江科大自化协UP主的教学视频所做的笔记,对其中内容有所引用,并结合自己的单片机板块进行了更改调整。

以下笔记内容以一个视频为一个片段(内容较多,可能不适合速食,望见谅)

一些内容涉及前面的知识点,可能需要提前了解(可以翻看本人之前的文章或者去B站看UP主的视频)

文章目录

13-1 DS18B20温度传感器

单片机上的DS18B20:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iljM8zPy-1669906184823)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125124055954.png)]

拆卸后的DS18B20:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xAV6hkvi-1669906184824)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125124215182.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)]

通过外接电路,当温度变化时,热敏电阻两端电压发生改变,产生连续的电压变化(模拟信号),通过AD芯片将模拟信号转换为数字信号,最终将数据反馈出来。

(最终读取的数据只是正比于温度,还需要进行系数配比才能显示出温度)

——因此应用方面不如数字温度传感器。

电路模块:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pUnNnjO1-1669906184824)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125130408810.png)]

来自up主数据手册截图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5R4FqIwF-1669906184825)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125130650857.png)]

数字温度传感器原理:

DS18B20(TO-92分装):

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s4PyG0d6-1669906184825)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125125626295.png)]

如DS18B20一样,它内部集成了上面模拟温度传感器的部分(集成模拟温度传感器,并在内部实现数据转化),并将数据存储在内部的RAM(随机存储器)中。

——因此无需设计电路,只需要通过引脚与单总线通信协议,将RAM里面的温度转化读取出来即可。

(也就是说,模拟温度传感器的部分都需要利用外界资源,但数字温度传感器自己内部已经集成有了)

Ⅱ、引脚及应用电路

up主处部分:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fJYWUtIZ-1669906184825)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125130746143.png)]

本单片机DS18B20原理图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-25kHCECX-1669906184825)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125131426035.png)]

up主部分的R1为上拉电阻,与I2C部分的上拉电阻功能相同。(可以参考I2C总线部分笔记对照)

Ⅲ、内部结构框图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kTpCV5Zf-1669906184825)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125131719607.png)]

本单片机芯片资料内部结构框图(DS1820,不是DS18B20):

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x05l5fpN-1669906184826)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125163001914.png)]

一、PARASITE POWER CIRCUIT(寄生供电)部分

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LqSSOBbF-1669906184826)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125155533211.png)]

解释作用:这一部分电路能省去VDD,直接采用DQ供电。

①POWER-SUPPLY SENSE负责检测电路是否连接VDD。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o2ZP6jTr-1669906184827)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125154701459.png)]

②当VDD连接时,电流会正常过来,如下图。

(https://gitee.com/best_future/future_fighting/raw/master/image-20221125154837622.png)]

③当VDD没有连接时,上方的DQ会通过二极管流下来进行供电。

这里加入了一个上拉电阻,为了使得寄生供电能满足温度传感器的工作电流要求。

(https://img-blog.csdnimg.cn/6cda6c98a89646849aad66a5c513b343.png)

④当为低电平状态时,VDD与DQ都不流入电流,这时为了维持内部系统正常运转,于是需要Cpp(电容)来进行供电。

Cpp在高电平状态时会存储电能,当转为低电平时,将电能释放,以维持系统运转工作。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wioOxyOT-1669906184827)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125155302232.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)]

这里的ROM为只读存储器(真的只能只读),记录器件的地址(ID号),用于总线通信的寻址(不能更改)。

PS:当外部发送正确地址时,才能进入下一部分。(也可以设置指令跳过该部分)

三、控制逻辑与RAM部分

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ahp2Z0Ws-1669906184828)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125160226990.png)]

①上面的MEMORY CONTROL LOGIC为内存控制逻辑部分,负责与指令进行交互,进行指令的执行(如写入数据到下方的RAM,或将RAM数据放到单总线上)。

②下面的SCRATCHPAD(暂存器)为RAM,存储着温度等参数,为数据交互的一个寄存器。

四、存储数据部分

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HxHNsTnJ-1669906184828)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125160717493.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)]

本单片机芯片资料图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1Z6MyLzv-1669906184829)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125163301954.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)]

DHT11:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hm4z2Sqt-1669906184829)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125171402650.png)]

DHT11为温湿度传感器(顾名思义,既可以测温度,也可以测湿度)。

Ⅱ、单总线电路规范

  • 设备的DQ均要配置成开漏输出模式
  • DQ添加一个上拉电阻,阻值一般为4.7KΩ左右。

​ (与I2C总线部分类似,可以去I2C总线部分内容对比了解)

  • 若此总线的从机采取寄生供电,则主机还应配一个强上拉输出电路

外部供电:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nu1mXoCn-1669906184829)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125172058012.png)]

类似于I2C总线原理。

寄生供电:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JDDDShGh-1669906184829)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125172203872.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)]

这里使用了绝对时间,是因为只有一根线的原因,无法像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)]

操作:

①在从机(棕色部分)响应时,检测I/O口即可知道从机是否存在。

②因为中间的操作间隔时间为范围值,且没有参考数据,于是取中间值作为等待间隔时间。

二、发送一位部分

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ERZecH5y-1669906184830)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125222510669.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)]

过程:

①当主机拉低总线后,从机如果需要发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)]

五、接收一个字节部分

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mjOvOqEB-1669906184830)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125230853065.png)]

DS18B20操作部分

Ⅰ、DS18B20操作流程

初始化:从机复位,主机判断从机是否响应

ROM操作:ROM指令+本指令需要的读写操作

功能操作:功能指令+本指令需要的读写操作(RAM操作)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FBTISkXV-1669906184831)(https://gitee.com/best_future/future_fighting/raw/master/image-20221125231210041.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里面内容读取出来

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值