DS18B20构成的多点温度测量系统的设计
DS18B20构成的多点温度测量系统的设计,multi-point temperature measurement system design with DS18B20
四川大学 蒋鸿宇 王勇 植涌
引 言
在传统的温度测量系统设计中,往往采用模拟技术进行设计,这样就不可避免地遇到诸如引线误差补偿、多点测量中的切换误差和信号调理电路的误差等问题;而其中某一环节处理不当,就可能造成整个系统性能的下降。随着现代科学技术的飞速发展,特别是大规模集成电路设计技术的发展,微型化、集成化、数字化正成为传感器发展的一个重要方向「1」。美国Dallas半导体公司推出的数字温度传感器DSl8820,具有独特的单总线接口,仅需要占用一个通用I/O端口即可完成与微处理器的通信;在-10~+85℃温度范围内具有±0.5℃精度;用户可编程设定9~12位的分辨率。以上特性使得DSl8820非常适用于构建高精度、多点温度测量系统。
1 DSl8B20简介
1.1 DSl8B20的特点
DSl8820是美国Dallas半导体公司继DSl820之后最新推出的一种改进型智能数字温度传感器[2]。与传统的热敏电阻相比,它能够直接读出被测温度,并且可根据实际要求通过编程实现9~12位的数字值读数方式;可以分别在93.75 ms和750 ms内完成9位和12位的数字量;从DSl8820读出信息或写入DSl8820信息仅需要1根口线(单线接口);温度变换功率来源于数据总线,总线身也可以向所挂接的DSl8820供电,而无需额外电源。使用DSl8820可使系统结构更趋简单,可靠性更高。DSl8B20在测温精度、转换时间、传输距离、分辨率等方面较DSl820有了很大的改进。
DSl8B20的内部结构「3」如图1所示,主要包括寄生电源电路、64位只读存储器(ROM)和单线接口、存储器和控制逻辑、存放中间数据的高速暂存存储器、温度传感器、报警上限寄存器TH、报警下限寄存器TL、配置寄存器和8位CRC(循环冗余校验码)发生器。
DSl8B20的核心是其数字温度传感器,精度可以通过用户编程配置为9、10、11和12位,其分别对应于O.5℃、O.25℃、O.125℃和O.062 5℃,可以满足各种不同的分辨率要求。开始一次温度转换时,微处理器需要向DSl8B20发出Convert T指令。转换完成之后,该温度数据存放在高速暂存存储器的温度寄存器中,占用2字节,并且DSl8B20返回到空闲状态。当DSl8B20采用外部供电方式时,主机可以在发送温度转换指令后发起一次读时隙。若此时该DSl8820已经完成温度转换,它将会返回"1",否则返回"O"。
2 温度测量系统设计
由DSl8B20和美国Microchip公司推出的PIC单片机PICl8F8620以及相关外围电路组成的高精度、多点温度测量系统的结构框图如图2所示。系统采用6片DSl8820构成小型温度传感器网络,通过单线连接方式连接至微处理器的通用I/O端口RBO。其中DSl8B20的分辨率为11位模式,即0.125℃。微处理器通过单线协议与温度传感器网络实现通信。微处理器获得温度信息后,通过特定的算法,将处理后的温度信息通过USB口或RS485接口传送至上位机。
2.1 DSl8820的自动搜索算法「4」
由于系统中使用了多片DSl8B20构成温度传感器网络,因此,如何准确、有效地对每一温度传感器进行寻址成为该系统设计的一个核心问题。结合DSl8B20的实际特点和系统的需求,提出如下解决方案:首先利用DSl8B20的内部报警上限寄存器(如图1所示,以下简称"TH寄存器")存放温度传感器的编号,并将其编号贴在温度传感器表面。由于TH寄存器具有掉电不丢失数据功能,因此,便把每片DSl8B20的唯一64位注册码及其编号一一对应起来。这一过程需要对DSl8B20进行单独编程。然后,将确定好编号的温度传感器接入单线网络,利用DSl8B20特有的单线网络自动搜索功能,即可搜寻到每片DSl8B20的注册码,再利用该注册码和相应的ROM操作指令,即可从每片DSl8B20的TH寄存器中读出相应的设定编号,实现每片DSl8820的寻址功能。下面重点介绍一下该自动搜索功能。
每片DSl8B20有唯一的64位注册码,存储在只读存储器(ROM)中,其结构如下:
其中低8位是产品的工厂代码(DSl8B20为28H),接着是每个器件的唯一序号,共48位,最高8位是前56位的循环冗余校验码。这就准许总线主机对总线上特定的DSl8B20进行寻址。只有与64位注册码严格相符的DSl8B20,才能对后续的操作作出反应。所有与64位注 册码不符的DSl8B20将等待复位脉冲。
搜索算法首先通过复位和在线应答脉冲时隙将单线总线上的所有DSl8B20复位。成功地执行该操作后发送1字节的搜索命令,使所有连接到单总线的DSl8B20准备就绪,开始进行搜索操作。搜索命令发出之后,开始实际的搜索过程。
首先,总线上的所有DSl8B20同时发送注册码中的第1位(最低有效位,参见上述DSl8B20内部64位注册码结构)。按照单总线的特性,当所有DSl8B20同时应答主机时,结果相当于全部被发送数据位的逻辑"与"。DSl8B20发送其注册码的第1位后,主机启动下一位操作,接着DSl8B20发送第1位数据的补码。从两次读到的数据位可以对注册码的第1位作出几种判断,如表1所列。
然后,主机向总线上的所有器件发回一个指定位。如果DSl8B20中注册码的当前位的值与该数据位匹配,则继续参与搜索过程;若DSl8B20的当前位与之不匹配,则该器件转换到等待状态并保持等待状态,直到下一个复位信号到来。其余63位注册码的搜索依然按照这种读2位写1位的模式进行重复操作。按照这种搜索算法进行下去,最终除了唯一一个DSl8B20外,所有DSl8B20将进入等待状态,经过最后一轮检测就可得到最后保留未进入等待状态的DSl8B20的注册码。在后续搜索过程中选用不同的路径或分支来查找其他器件的注册码,即可完成所有器件注册码的识别。
2.2软件系统设计
系统软件采用C语言编写。在中断服务程序中,实现用户输入以及和上位机的接口功能;在主程序中,实现温度传感器网络的自动搜索、编号排序、获取温度信息,并根据预先设定的温度上下限,实现相应的报警功能「5」。该系统中,根据不同的分辨率要求,DSl8B20的分辨率可通过编程设定,最高分辨率为12位,即O.062 5℃,可满足高精度设计要求。同时,由于设计中使用传感器网络的自动搜索算法,因此,当对网络中的温度传感器作出调整(如更换、添加、删除等操作)时,系统具有很强的自适应能力.系统软件流程如图3所示
3 结 论
在传统的温度测量系统中,往往采用模拟的温度传感器进行设计,必须经过A/D转换后才可以被微处理器识别和处理。这样的设计方法不仅对前端模拟信号处理电路提出了更高的要求,而且不具有数字通信和网络功能。本文结合DSl8B20的新特性和现代温度测量系统提出的新要求,提出了基于智能数字温度传感器DSl8B20的高精度、多点温度测量系统设计方案。该方案具有安装方便、数字化程度高、精度高、适应性强等特点,在多种温度检测中具有广阔的应用前景。
(来源:单片机与嵌入式系统应用)
相关文章
发表评论