ds18b20温度传感器原理
扫描二维码
随时随地手机看文章
1、DS18B20基本知识及管脚
DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单、体积小的特点。因此用它来组成一个测温系统,线路简单,在一根通信线上,可以挂很多这样的数字温度计,十分方便。DS18B20是美国DALLAS公司新推出的一种可组网数字式温度传感器,与DS1820相似,DS18B20也能够直接读取被测物体的温度值。但是与DS1820相比,DS18B20的功能更强大些。它体积小,电压适用范围宽(3~5V),用户还可以通过编程实现9~12位的温度读数,即具有可调的温度分辨率,因此它的实用性和可靠性比同类产品更高。另外,DS18B20有多种封装可选,如TO-92, SOIC及CSP封装。图5-5即为DS18B20的引脚排列图。其引脚功能见表5-1。
2、DS18B20内部结构
DS18B20内部结构如图5-6所示,主要由4部分组成:温度传感器、64位ROM、非挥发的温度报警触发器TH和TI、配置寄存器。由图5-6可见,DS18B20只有一个数据输入输出口,属于单总线专用芯片之一。DS18B20工作时被测温度值直接以“单总线”的数字方式传输,大大提高了系统的抗干扰能力。其内部采用在线温度测量技术,测量范围为55~125°C,在-10~85℃时,精度为±0.5°C。每个DS18B20在出厂时都已具有唯一的64位序列号,因此一条总线上可以同时挂接多个DS18B20,而不会出现混乱现象。另外用户还可自设定非易失性温度报警上下限值TH和TL(掉电后依然保存)。DS18B20在完成温度变换后,所测温度值将自动与存储在TH和TL内的触发值相比较,如果测温结果高于TH或低于TL, DS18B20内部的告警标志就会被置位,表示温值超出了测量范围,同时还有报警搜索命令识别出温度超限的DS18B20。
① 64位闪存ROM的结构如图5-7所示。
首先是8位的产品单线系列编码,接着是每个器件的唯一的序号,共有48位,最重要的8位是前面56位的CRC校验码(循环冗余校验码),这也是多个DS18B20可以采用一线进行通信的原因。
②非易失性温度报警触发器TH和TL,可通过软件写人用户报警上下限。
③高速暂存存储器。DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的(E2) RAM。后者用于存储TH和TL值。数据先写人RAM,经校验后再传给(E2)RAM。而配置寄存器为高速暂存器中的第5个字节,它的内容用于确定温度值的数字转换分辨率,DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。该字节各位的定义如图5-8所示。低5位一直都是1, TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动,R1和R0决定温度转换的精度位数,即用于设置分辨率,如表5-2所示(DS18B20出厂时被设置为12位)。
如表5-2可见,设定的分辨率越高,所需要的温度数据转换时间就越长。因此,在实际应用中要在分辨率和转换时间之间权衡考虑。高速暂存存储器除了配置寄存器外,还有其他8个字节,其分配如图5-9所示。其中温度信息(第1、 2字节),TH和TL值第3、4字节,第6~8字节未用,表现为全逻辑1;第9字节读出的是前面所有8个字节的CRC码,可用来保证通信正确。
当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可通过单线接口读到该数据,读取时高位在后、低位在前,数据格式以0.0625°C/LSB形式表示。温度值格式如图5-10所示。符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变换为原码,再计算十进制值。表5-3是对应的一部分温度值。
DS18B20完成温度转换后,就把测得的温度值与TH、TL进行比较,若T>TH或T< TL,则将该器件内的告警标志置位,并对主机发出的警告搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行告警搜索。
④CRC的产生。在64位ROM的最高有效字节中存储有循环冗余校验码(CRC)。主机根据ROM的前56位来计算CRC值,并和存入DS18B20中的CRC值进行比较,以判断主机收到的ROM数据是否正确。
3、DS18B20的测温原理
DS18B20的内部测温电路框图如图5-11所示,图中低温度系数振荡器的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数振荡器随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的基数分别置人减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55℃所对应的一个基数值。减法计数器1对低温度系数振荡器产生的脉冲信号进行减法计数,当减法计数器1的预置值减到。时温度寄存器的值将加1,减法计数器1的预置将重新被装人,减法计数器1重新开始对低温度系数振荡器产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图5-11中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。
由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。
1. DS18B20的初始时序
DS18B20的初始时间如图5-12所示。
2. DS18B20的读时序
对于DS18B20的读时序分为读0时序和读1时序两个过程,见图5-13。
对于DS18B20的读时序是从主机把单总线拉低之后,在15us之内须释放单总线,以便DSl8B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us。
3. DS18B20的写时序
对于DS18B20的写时序仍然分为写0时序和写1时序两个过程,见图5-14。
对于DS18B20写。时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15~45us之间正确地采集I/O总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内须释放单总线。
二、基于DS18B20构成的单片机温控系统
DS18B20的硬件连接(以51单片机为例),DS18B20与单片机的接口极其简单,只需将DS18B20的信号线与单片机的一位双向端口相连即可。如图5-15(a)所示。此时应注意将VDD、DQ、 GND三线焊接牢固。另外也可用两个端口,即接收口与发送口分开,这样读写操作就分开了,不会出现信号竞争的问题。如图5-15(b)所示,此图是采用寄生电源方式,将DS18B20的 VDD与GND接在一起。如若VDD脱开未接好,传感器将只送85. 0℃的温度值。一般测温电缆线采用屏蔽4芯双绞线,其中一对接地线与信号线,另一对接VDD和地线,屏蔽层在源端单点接地。