别看图这么大,实际上呀它的体积超小超小。上面这个元件,它叫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、负压特性:电源极性接反时,芯片不会因发热而烧毁, 但不能正常工作。
内部结构
配置寄存器是来配置不同的位数来选择温度检测精度的。
占用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了。