摘 要:1-Wire总线技术具有节省I/O资源、结构简单、成本低廉,便于总线扩展和方便维护等特点。文章中介绍了1-Wire总线技术数字温度传感器的基本特性与功能块图,数字温度传感器ROM命令和功能命令。阐述了1-Wire总线技术数字温度传感器供电方式。利用1-Wire总线技术使用多个数字温度传感器,实时时钟电路,键盘显示电路,串行存储器电路,RS485通信电路以及看门狗电路等,组成了火灾报警系统硬件系统。绘制了温度采集与处理流程图。采用多个传感器测量不同房间内的温度,可以设置不同房间的报警上限值,可以实现多个房间对应温度的显示和报警。1-Wire总线技术数字温度传感器已经成功地应用于火灾报警系统中。
1.引言
1-Wire总线技术具有节省I/O资源、结构简单、成本低廉,便于总线扩展和方便维护等特点。因此在分布式测温系统中有着广泛的应用。而美国DALLAS公司生产的单总线智能温度传感器DS18B20是采用1-Wire总线技术的典型产品[2]。DS18B20通过单线按照1-Wire协议传送特定的命令序列并进行数据通信。该系列产品有个很重要的特性就是在出厂前每个器件都被写入了唯一的64位ROM 码即序列号,最低有效字节为家族代码。代表器件的类型。如DS1990A的家族码为01H,DS18B20的家族码为28H。由于在同一条1-Wire 总线上可同时挂接多个相同系列或不同系列的1-Wire 器件,因此主机必须能够决定如何正确地访问位于1-Wire 总线上的各个器件。64位ROM 码中家族码提供了器件的类型,随后的6 个字节是器件的唯一序列号,用以区分同一个系列的不同器件。该序列号可作为1-Wire 总线上器件的地址。这样1-Wire 总线上的所有器件连同主机就构成了一个微型局域网。它们之间通过一条公共线来进行通信[5].
2.数字温度传感器特性与功能块图。
DS18B20的核心功能就是可以直接转换成数字量。由于每一个智能温度传感器DS18B20有一个唯一的64位序列号。允许多个DS18B20在同一条总线上工作。因此可以用一个单片机在一个大范围内控制多个数字温度传感器DS18B20,经常用于环境温度控制、温度监测系统以及过程监测和控制系统中。1-Wire 器件64位序列号的最高有效字节是循环冗余校验CRC 码。该值基于前面的56位数据。当系统主机开始与某个器件进行通信时,可以从低位开始读取8个ROM 字节即64位序列号。
1-Wire总线技术的温度传感器DS18B20温度的测量范围为 - 55℃ ~ + 125℃ 。便笺存储器中包含两个字节温度寄存器用于存储温度传感器的数字输出。另外提供一个字节报警上限TH和一个字节报警下限TL寄存器。还有一个字节组态寄存器。组态寄存器允许用户设置分辨率为9 ~ 12位。分别对应温度值0.5℃、0.25℃、0.125℃和0.0625℃。TH、、TL和组态寄存器可以存放在EEPROM中,因此当系统掉电时,TH、、TL和组态寄存器中的数据仍将保存。
3.数字温度传感器ROM命令和功能命令。
为了能够使1-Wire总线技术的温度传感器DS18B20正常工作,需要按照一定顺序执行相关命令。首先进行初始化,其次执行ROM命令,最后执行DS18B20功能命令。常用的ROM命令有5个。每个命令均为一个字节。在发送DS18B20功能命令之前,主CPU必须发布适当的ROM命令。对ROM的五种操作命令有ROM搜索命令(代码为F0H),ROM命令(代码为33H),匹配ROM命令(代码为55H),跳过ROM命令(代码为CCH)和搜索报警命令(代码为ECH)。
当主CPU使用了ROM命令之后,如果访问想要通信的从设备DS18B20时,主CPU能够发布一个DS18B20功能命令。1-Wire总线技术的温度传感器DS18B20功能命令主要有5条。这些命令允许主CPU读或写DS18B20的便笺存储器,开始温度转换以及决定电源的模式。DS18B20功能命令如下所述。
1.温度转换命令(代码为44H)使DS18B20开始转换。转换完毕的温度数据存放在两个字节的温度寄存器中。
2.写便笺存储器命令(代码为4EH)允许主CPU 写3个字节数据到便笺存储器中。第一个数据字节被写入到TH寄存器中,第二个数据字节被写入到TL寄存器中,第三个数据字节被写入到组态寄存器中。数据写入从最低有效位开始。在主CPU发出复位脉冲之前,三个字节必须被写完。
3.读便笺存储器命令(代码为BEH)允许主CPU 读出便笺存储器中的内容。数据传输从字节0的最低有效位开始到字节8。便笺存储器中的9个字节内容被读出。其中字节8为CRC校验码。如果只需要读出便笺存储器中的部分字节,主CPU可以随时发出复位脉冲终止读操作。
4.拷贝便笺存储器命令(代码为48H)将拷贝便笺存储器字节2、3、4即TH 、TL和组态寄存器内容到EEPROM。
5.从EEPROM重新调出命令(代码为B8H)将从EEPROM重新调出TH 、TL和组态寄存器内容,并将数据放置到便笺存储器字节2、3、4中。上电时从EEPROM重新调出命令(代码为B8H)将会自动执行。
4. 火灾报警系统硬件组成
火灾报警系统由AT89C51,实时时钟电路DS1302,键盘与显示电路,RS485通信电路,MAX813L组成的看门狗电路,串行E2PROM存储器电路等组成,采用多个传感器测量不同房间内的温度,可以设置不同房间的报警上限值,可以实现多个房间对应温度的显示和报警。
5. 1-Wire总线技术数字温度传感器供电方式
DS18B20的电源供电有两种。外部供电方式和寄生电源供电方式。外部供电方式如图3所示。图3中引脚 VDD接外部电源。而寄生电源供电方式不需要外部电源如图4所示。工作于寄生电源供电方式时,VDD和GND 均接地。在需要远程温度检测和空间受限制时非常有用。图3中当1-Wire总线为高电平时,DS18B20从1-Wire总线上经过引脚DQ“偷窃”电源,偷窃的电荷给总线供电。当总线为低电平时,存储在寄生电源电容上的电荷为传感器供电。当DS18B20用于寄生电源供电方式时,VDD必须要接地[1]。但是在寄生电源供电方式时,当DS18B20执行温度转换和拷贝便笺存储器内容到EEPROM中时,操作电流能够达到1.5mA. 此电流能够导致电压明显下降而使传感器不能正常工作。为了保证DS18B20有充足的供电电流,当进行温度转换和拷贝便笺存储器内容到EEPROM中时,必须要在总线上提供足够强的上拉。可以用一个MOSFET管来完成对总线的上拉如图4 所示。一般当检测的温度超过100℃时,建议不要使用寄生电源供电方式而要用外部供电方式。因为在这样高的温度下,由于高的泄漏电流,DS18B20不可能保持数据通信。因此在条件允许的情况下,尽量采用外部供电方式。
6. 温度采集与处理流程图
基于AT89C51单片机设计的火灾报警系统采用智能温度传感器DS18B20,在正确读出64位序列号之后,需要根据时序的严格要求,编写温度读取程序。单片机控制DS18B20的温度转换必须按照DS18B20的命令流程。首先执行初始化时序,然后单片机发出跳过ROM命令(代码为CCH),此命令针对所有在线DS18B20,单片机再发出启动转换命令(代码为44H),启动DS18B20完成温度转换。对于12位分辨率还需延时750ms之后。接着再执行初始化时序,然后单片机发出匹配ROM命令(代码为55H)并向数据线上发出64位序列号,再发出读9个字节命令(代码为BEH),就可以读出智能温度传感器DS18B20对应序列号完成温度转换之后的相应正确温度。
7.结束语
传统的测温方法是将模拟信号传送到采样电路进行A/D转换,为了获得较高精度,就必须解决多点测量切换及放大电路零点漂移问题。而1-Wire总线技术数字温度传感器的出现较好地解决上述问题。本文作者创新点是应用1-Wire总线技术,采用多个数字温度传感器设计了火灾报警系统,分析了传感器供电方式和特性,阐述了数字温度传感器ROM命令和功能命令。基于AT89C51设计了实时时钟显示电路,键盘显示电路,串行存储器电路,RS485通信电路,看门狗电路等,阐述了火灾报警系统的硬件构成图。设计了温度采集的流程图,并编写程序完成了温度的正确显示。1-Wire技术温度传感器DS18B20将温度信号直接转换成串行数字信号以供单片机处理,在单总线接口上挂接了多个传感器,直接以一总线的数字方式传输现场温度,方便地组成分布式多点测温系统。使用1-Wire总线技术数字温度传感器有效地降低成本,使应用系统可靠性高而且传输距离远。目前已经较好地应用于分布式测温的火灾报警系统中。
参考文献
[1] Dallas Semiconductor. DS18B20 1-Wire Digital Thermometer [Z]. Dallas Semiconductor Co, 2002
[2] 于永学,葛建,1-Wire总线数字温度传感器DS18B20及应用 [J],电子产品世界,2003.12 / 下半月
[3] 谷云辉,刘亚斌,基于自动测试系统的故障诊断方法研究 [J],微计算机信息,2005年第 7 期
[4] 徐维涛,郝晓弘,OCXO恒温槽温度控制系统控制方法研究 [J],微计算机信息,2006年第 3 期
[5] 运用和理解Dallas iButtonTM 产品中的循环冗余校验(CRC)[Z],www. dalsemi. Com
转载请注明来源:中国测控网(www.ck365.cn)