【项目10-任务13-小组19】DS18B20温度传感器——我与你的初相识

别看图这么大,实际上呀它的体积超小超小。上面这个元件,它叫DS18B20温度传感器!

这是“一线总线”接口的数字化温度传感器,与传统的热敏电阻等测温元件相比,它不仅体积小,而且适用电压宽、与微处理器的接口更为简单。但因为是一线总接式其对时序脉冲的精度要求高。

那上面提到的“一线总线”是啥意思?

字面意思,用一根总线实现主设备对从设备的控制。所有的数据和命令都在这根线上传送,首先传送的是最低位。


为了使其他设备也能使用这根线,一根总线协议采用了一个三态门,使得每一个设备在不传送数据时空出该数据线给其他设备。一根总线在外部设备需要一个上拉电阻器,所以总线空闲时总是高水平。为了保证信号的完整性,一根总线协议定义了以下几种信号:复位脉冲、存在脉冲、读写0或1。除存在脉冲外,其他的信号均由主设备初始化。

DS18B20引脚定义:

(1)DQ为数字信号输入/输出端;

(2)GND为电源地;

(3)VCC为外接供电电源输入端(在寄生电源接线方式时接地)

可能在某些地方你还会见到DS18B20温度传感器的外接供电电源输入端不叫VCC,而叫VDD,区别就在于VDD端口要求3.0V—5.5V电压,而VCC端口必须保证电源在5V。


我们再来了解一下这个小元件的特点:

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内部结构示意图

配置寄存器是来配置不同的位数来选择温度检测精度的。

占用8个字节,如下图所示。

配置寄存器


要看的只是R1和R0,低5位固定为1,

TM固定是1表示可以开始工作,

R0和R1用来设置DS18B20的精度,可设置为9,10,11或12位,对应的分辨率温度是0.5℃,0.25℃,0.125℃和0.0625℃。

 R0和R1具体如何设置其精度呢?且看下表分解。


精度控制

一般默认R0 R1为11,即精度是12位。

高速暂存存储器由9个字节组成:


高速暂存寄存器

说明两点:

(1)LS和MS分别是所测温度的低位和高位所在的字节

(2)高温限值和低温限值是指当前所要测的温度范围 


温度数据格式如下:

温度数据格式

(1)LS是温度的低位所在,2^-1后面是负数的是小数部分,前面是整数部分

(2)MS是温度的高位所在,前面那5个S 是符号位,如果测得的温度大于0,这5位为‘0’,只要将测到的数值乘以0.0625(默认精度是12位)即可得到实际温度;如果温度小于0,这5位为‘1’,测到的数值需要取反加1再乘以0.0625即可得到实际温度。


温度与数据对应关系如下:

温度数据对应关系

举栗子吧!

※我们要计算+85°C,高5位是0,后面的11位才是我们需要的数据位,后面的数据换算成十进制是1360,所以温度是1360*0.625 = 85°C

※再比如我们计算-0.5°C前5位是1,后面的11位先取反变成1111 1000 0000 0111,再加1变成 1111 1000 000 1000换算成十进制再乘0.625就是0.5了。

你可能感兴趣的:(【项目10-任务13-小组19】DS18B20温度传感器——我与你的初相识)