赞
踩
工作原理:一线协议是一种通信协议,它通过一根数据线进行通信,主机和从机在一条总线上可以挂多个器件。 一线协议没有相应的时钟线,所以是异步通信。只有一根总线,所以是串行传输数据。这根总线既可以传输时钟又可以传输数据。
DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。 [1]DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874
主要根据应用场合的不同而改变其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。
每个DS18B20都有唯一确定的64位产品序列号在它芯片的ROM中。
DS18B20温度传感器主要具有以下功能特性:
它的工作电压范围为3.0v~5.0v,另外也可以直接由数据线供电而不需要外部电源供电;
采用一线协议(1-Wire),即仅使用一根数据线(以及地线)与微控制器(MCU)进行通信;
它可以提供9-Bit到12-Bit的测量精度和一个用户可编程的非易失性且具有过温和低温触发报警的报警功能;
该传感器的温度检测范围为-55℃至+125℃,并且在温度范围超过-10℃至85℃之外时还具有±0.5℃的精度;
DS18B20温度转换时间在转换精度为12-Bits时达到最大值750ms;
每个DS18B20芯片在出厂时,都固化烧录了一个唯一的64位产品序列号在其ROM中,它可以看作是该 DS18B20 的地址序列码。 64 位 ROM 的排列是:前 8 位是产品家族码,接着 48 位是DS18B20 的序列号,最后 8 位是前面 56 位的循环冗余校验码(CRC=X8+X5+X4+1)。 ROM 作用是使每一个 DS18B20 都各不相同,这样就可实现一根总线上挂接多个 DS18B20。
1.DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。
2.DS18B20测温原理如图3所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号发送给计数器1。高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55℃所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。
– 任何器件想要使用,首先就是需要初始化,对于DS18B20单总线设备,首先初始化单总线为高电平,然后总线开始也需要检测这条总线上是否存在DS18B20这个器件。如果这条总线上存在DS18B20,总线会根据时序要求返回一个低电平脉冲,如果不存在的话,也就不会返回脉冲,即总线保持为高电平。
– 初始化具体时序步骤如下:
1.单片机拉低总线至少480us,产生复位脉冲,然后释放总线(拉高电平)。
2.这时DS8B20检测到请求之后,会拉低信号,大约60~240us表示应答。
3.DS8B20拉低电平的60~240us之间,单片机读取总线的电平,如果是低电平,那么表示初始化成功。
4.DS18B20拉低电平60~240us之后,会释放总线。
– 采用多个DS18B20时,需要写ROM指令来控制总线上的某个DS18B20。
– 如果是单个DS18B20,直接写跳过ROM指令0xCC即可。
DS18B20的高速暂存存储器由9个字节组成。当温度转换命令(0x44)发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器前两个字节。接着单片机可以发送读暂存存储器命令(0xBH)读出存储器里的值, 存储器里的9个字节的存储结构如下图所示:
字节0~1 是温度存储器,用来存储转换好的温度。第0个字节存储温度低8位,第一个字节存储温度高8位;
字节2~3 是用户用来设置最高报警和最低报警值(TH和TL)。
字节4 是配置寄存器,用来配置转换精度,可以设置为9~12 位。
字节5~7 保留位。芯片内部使用
字节8 CRC校验位。是64位ROM中的前56位编码的校验码,由CRC发生器产生。
如果我们只关心采样温度值的话,则只需要读前两个字节即可。其中Byte[0]为温度值的低字节,而Byte[1]为温度值的高字节。这16位数据的格式如下图所示:
BIT[3:0]为温度值的小数部分;
BIT[10:4]为温度值的整数部分;
BIT[15:11]则为符号位,如果为0则温度为正值,如果为1则温度为负值。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。