51单片机——DS18B20 温度传感器实验,小白讲解,相互学习

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 外观实物如下图所示:
        从 DS18B20 外观图可以看到,当我们正对传感器切面(传感器型号字符那 一面)时,传感器的管脚顺序是从左到右排列。管脚 1 为 GND,管脚 2 为数据 DQ,管脚 3 为 VDD。如果把传感器插反,那么电源将短路,传感器就会发烫, 很容易损坏,所以一定要注意传感器方向,通常我们在开发板上都会标出传感器 的凸起出,所以只需要把传感器凸起的方向对着开发板凸起方向插入即可。
DS18B20 内部结构如下图所示:

        ROM 中的 64 位序列号是出厂前被光刻好的,它可以看作是该 DS18B20 的 地址序列号。64 位光刻 ROM 的排列是:开始 8 位(28H)是产品类型标号,接 着的 48 位是该 DS18B20 自身的序列号,最后 8 位是前面 56 位的循环冗余校 验码。光刻 ROM 的作用是使每一个 DS18B20 都各不相同,这样就可以实现一根 总线上挂接多个 DS18B20 的目的。
        DS18B20 温度传感器的内部存储器包括一个高速的暂存器 RAM 和一个非易 失性的可电擦除的 EEPROM,后者存放高温度和低温度触发器 TH、TL 和配置寄存器。
        配置寄存器是配置不同的位数来确定温度和数字的转化,配置寄存器结构如293 下:
        低五位一直都是"1",TM 是测试模式位,用于设置 DS18B20 在工作模式还 是在测试模式。在 DS18B20 出厂时该位被设置为 0,用户不需要去改动。R1 和 R0 用来设置 DS18B20 的精度(分辨率),可设置为 9,10,11 或 12 位,对 应的分辨率温度是 0.5℃,0.25℃,0.125℃和 0.0625℃。R0 和 R1 配置如下 图:

        在初始状态下默认的精度是 12 位,即 R0=1、R1=1。高速暂存存储器由 9 个 字节组成,其分配如下:
                             

         当温度转换命令(44H)发布后,经转换所得的温度值以二字节补码形式存 放在高速暂存存储器的第 0 和第 1 个字节。存储的两个字节,高字节的前 5 位 是符号位 S,单片机可通过单线接口读到该数据,读取时低位在前,高位在后, 数据格式如下:

        如果测得的温度大于 0,这 5 位为‘ 0’,只要将测到的数值乘以 0.0625 (默认精度是 12 位)即可得到实际温度;如果温度小于 0,这 5 位为‘ 1’, 测到的数值需要取反加 1 再乘以 0.0625 即可得到实际温度。温度与数据对应 关系如下:

         比如我们要计算+85 度,数据输出十六进制是 0X0550,因为高字节的高 5 位为 0,表明检测的温度是正温度,0X0550 对应的十进制为 1360,将这个值乘 以 12 位精度 0.0625,所以可以得到+85 度。

        计算-0.5,数据输出十六进制是0XFFF8,因为高字节的高 5 位为 1,表明检测的温度是负温度,那么0XFFF8对应的二进制(1111111111111000)就要取反,取反后变成0X0007,0X0007对应的十进制为7,在将7+1在乘以12 位精度 0.0625是0.5,因为高 5 位为 1,表明检测的温度是负温度,所以是 -0.5显示。

        知道了怎么计算温度,接下来我们就来看看如何读取温度数据,由于 DS18B20 是单总线器件,所有的单总线器件都要求采用严格的信号时序,以保证 数据的 完整性。DS18B20 时序包括如下几种:初始化时序、写(0 和 1)时序、 读(0 和 1)时序。 DS18B20 发送所有的命令和数据都是字节的低位在前。这里我们 简单介绍这几个信号的时序:

初始化时序

        单总线上的所有通信都是以初始化序列开始。主机输出低电平,保持低电平 时间至少 480us(该时间的时间范围可以从 480 到 960 微妙),以产生复位脉 冲。接着主机释放总线,外部的上拉电阻将单总线拉高,延时 15~60 us,并进入接收模式。接着 DS18B20 拉低总线 60~240 us,以产生低电平应答脉冲,若为低电平,还要做延时,其延时的时间从外部上拉电阻将单总线拉高算起最少要 480 微妙。初始化时序图如下:

写时序

        写时序包括写 0 时序和写 1 时序。所有写时序至少需要 60us,且在 2 次 独立的写时序之间至少需要 1us 的恢复时间,两种写时序均起始于主机拉低总 线。写 1 时序:主机输出低电平,延时 2us,然后释放总线,延时 60us。写 0 时序:主机输出低电平,延时 60us,然后释放总线,延时 2us。写时序图如下:

读时序
        单总线器件仅在主机发出读时序时,才向主机传输数据,所以,在主机发出 读
  • 12
    点赞
  • 111
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

生活就是抡大锤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值