你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32实例-DS18B20温度传感器实验①-DS18B20计算温度

[复制链接]
STMCU小助手 发布时间:2022-6-26 18:28
    在前面我们介绍过 STM32F1 的内部温度传感器,由于芯片工作温升较 大,用内部温度传感器测量环境温度显然是不合理的,误差会比较大,因此本篇我们来学**精度较高的外部 DS18B20 数字温度传感器,由于此传感器是单总线 接口,所以需要使用 STM32F1 的一个 IO 口模拟单总线时序与 DS18B20 通信,将 检测的环境温度读取出来。本章要实现的功能是:系统开启时首先检测 DS18B20 温度传感器是否存在,若存在输出相应的提示信息,然后间隔 500ms 读取一次 DS18B20 测试的温度,并通过串口打印输出,最后让 D1 指示灯不断闪烁,提示 系统正常运行。

6 W( p4 p. w1 P6 Y! M, m9 I
DS18B20 介绍
    DS18B20 是由 DALLAS 半导体公司推出的一种的“一线总线(单总线)”接 口的温度传感器。与传统的热敏电阻等测温元件相比,它是一种新型的体积小、 适用电压宽、与微处理器接口简单的数字化温度传感器。DS18B20 温度传感器具有如下特点:
1、适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数据 线供电。
2、独特的单线接口方式,DS18B20 在与微处理器连接时仅需要一条口线即 可实现微处理器与 DS18B20 的双向通讯。
3、DS18B20 支持多点组网功能,多个 DS18B20 可以并联在唯一的三线上, 实现组网多点测温。
4、DS18B20 在使用中不需要任何外围元件,全部传感元件及转换电路集成 在形如一 只三极管的集成电路内。
5、温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃
6、可编程的分辨率为 9~12 位,对应的可分辨温度分别为 0.5℃、0.25℃、 0.125℃ 和 0.0625℃,可实现高精度测温。
7、在 9 位分辨率时最多在 93.75ms 内把温度转换为数字,12 位分辨率时最 多在 750ms 内把温度值转换为数字,速度更快。
8、测量结果直接输出数字温度信号,以"一根总线"串行传送给 CPU,同时 可传送 CRC 校验码,具有极强的抗干扰纠错能力。
9、负压特性:电源极性接反时,芯片不会因发热而烧毁, 但不能正常工作。DS18B20 外观实物如下图所示:

( W+ ?! z) K# c
微信图片_20220626182847.png

! G. j2 c- I  y* u! ?$ [
    从DS18B20 外观图可以看到,当我们正对传感器切面(传感器型号字符那一面)时,传感器的管脚顺序是从左到右排列。管脚 1 为 GND,管脚2为数据DQ,管脚 3为 VDD。如果把传感器插反,那么电源将短路,传感器就会发烫,很容易损坏,所以一定要注意传感器方向,通常我们在开发板上都会标出传感器的凸起出,所以只需要把传感器凸起的方向对着开发板凸起方向插入即可。DS18B20 内部结构如下图所示。
6 V5 l' m& v+ B; H. |. R# m8 \
微信图片_20220626182843.png
  m5 \# O* U9 n5 ]: |+ d" s
    ROM 中的 64 位序列号是出厂前被光刻好的,它可以看作是该 DS18B20 的地址序列号。64 位光刻 ROM 的排列是:开始 8位(28H)是产品类型标号,接着的48 位是该 DS18B20 自身的序列号,最后 8 位是前面 56 位的循环冗余校验码。光刻 ROM的作用是使每一个DS18B20 都各不相同, 这样就可以实现一根总线上挂接多个 DS18B20 的目的。
    DS18B20温度传感器的内部存储器包括一个高速的暂存器RAM和一个非易失性的可电擦除的 EEPROM,后者存放高温度和低温度触发器 TH、TL 和配置寄存器。
    配置寄存器是配置不同的位数来确定温度和数字的转化, 配置寄存器结构如下:

1 Y7 q( K' o! v3 \' k0 j' V
微信图片_20220626182840.png

" w+ ?! m* d0 [$ v) ^. d
    低五位一直都是"1",TM 是测试模式位,用于设置 DS18B20 在工作模式还是在测试模式。在 DS18B20 出厂时该位被设置为 0,用户不需要去改动。R1 和 R0用来设置 DS18B20 的精度(分辨率),可设置为 9,10,11 或 12 位,对应的分辨率温度是 0.5℃,0.25℃,0.125℃和 0.0625℃。R0 和 R1 配置如下图:
& t8 u6 J9 S2 d0 P! G5 @2 ]; d& j
微信图片_20220626182837.png

9 C  q8 R( E2 B  y. ?; S
    在初始状态下默认的精度是 12 位,即 R0=1、R1=1。
    高速暂存存储器由 9个字节组成,其分配如下:
3 j; n8 x+ H: d
微信图片_20220626182833.png
7 X7 T- h0 C; z
    当温度转换命令(44H)发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1 个字节。存储的两个字节,高字节的前5 位是符号位S,单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如下:
* F- z: Y2 V5 B9 z
微信图片_20220626182830.png

2 Q% ^) C1 [- O/ x2 F; G; t9 A; b$ A
    如果测得的温度大于0,这 5 位为‘0’,只要将测到的数值乘以 0.0625(默
认精度是 12 位)即可得到实际温度;如果温度小于 0,这 5 位为‘1’,测到的
数值需要取反加 1 再乘以0.0625 即可得到实际温度。温度与数据对应关系如下:
微信图片_20220626182827.png
    比如我们要计算+85 度,数据输出十六进制是 0X0550,因为高字节的高 5位为 0,表明检测的温度是正温度,0X0550 对应的十进制为 1360,将这个值乘以 12位精度 0.0625,所以可以得到+85 度。
9 _* D& j) U- }# M
收藏 评论0 发布时间:2022-6-26 18:28

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版