查方勇
(中国铁路物资股份有限公司信息管理部,北京100032)
基于DS18B20的多点温度采集系统设计与实现
查方勇
(中国铁路物资股份有限公司信息管理部,北京100032)
介绍了一种基于1-wire总线的低成本,高可靠性的多点温度采集系统。指出了1-wire总线接口数字温度传感器DS18B20的特点,详细阐述了系统硬件以及软件的设计过程。整个系统采用DS18B20数字温度传感器作为温度采集单元,单片机采用STC89C52。
1-wire总线;单片机;多点温度采集;数字温度传感器
单总线是Dallas公司的一项专有技术。它具有节省I/O口线资源、结构简单、成本低廉、便于总线扩展和维护等诸多优点[1]。1-wire单总线适用于单个主机系统,能够控制一个或多个从机设备。当只有一个从机位于总线上时,系统可按照单节点系统操作;而当多个从机位于总线上时,系统则按照多节点系统操作。
DS18B20是DALLAS公司的单总线数字温度传感器,具有3引脚TO-92小体积封装,其封装形式与引脚配置如图1所示。其温度测量范围为-55~+125℃;具有可编程的9~12位的转换精度,测温分辨率最高可达 0.0625℃,被测温度用符号扩展的16位数字量方式串行输出;用户可自行设定非易失性的温度报警上下限值;工作电源既可在远端引入,也可采用寄生电源方式供电;每个DS18B20在出厂之前ROM中光刻有彼此不同的64位系列号,ROM的作用是使每一个DS18B20都各不相同,这样就可以在单总线上挂接多个DS18B20;多个DS18B20可以并联到单总线上,单片机只需一个I/O口与单总线连接就能与多个DS18B20通信,可以节省大量的引线和单片机资源[2]。因具有以上特点,DS18B20非常适合于远距离的多点温度采集系统。
图1 DS18B20封装与引脚配置
DS18B20内部主要由四部分组成:存储64位序列码的光刻ROM、高速缓存存储器、非易失的温度报警触发器TH和TL、温度传感器。
DS18B20的结构框图如图2所示。
图2 DS18B20内部结构框图
(1)64位光刻ROM从高位到低位的组成如表1。
表1 64位光刻ROM组成
光刻ROM在产品出厂之前就已经被光刻好,从低位到高位,开始8位是产品类型的编码,接着是每个器件的唯一的48位系列号,最后8位是前56位的CRC校验码。
(2)非易失性的温度报警触发器TH和TL。TH和TL的作用是配置温度报警的上下限值,当温度超过TH或低于TL时,系统就发出报警指示。TH和TL的值可以通过软件写入相应的数值来设定温度报警上下限。DS18B20完成温度转换后,就把测得的温度值与TH、TL作比较,若T>TH或T<TL,则将该器件内的告警标志置位,并对主机发出的告警搜索命令作出响应。
(3)高速暂存存储器。DS18B20温度传感器的内部存储器包括一个高速暂存存储器和一个非易失性的可电擦除的EEPROM。数据先写入高速暂存存储器,经校验后再传给EEPROM。高速暂存存储器组成见表2。
表2 高速暂存存储器
高速暂存存储器由9个字节的存储器组成。第1~2个字节是温度的显示位;第3~4个字节是温度报警高低限值,这两个字节的数字可以更新;第5个字节是配置寄存器,同时这个字节的数据也可以更新;第6、7、8个字节是保留的,默认值都为1。第9个字节读出的是前面所有8个字节的CRC码,可用来保证通信正确。第5个字节的配置寄存器用于确定温度值的数字转换分辨率,DS18B20工作时按此寄存器中设定的分辨率将温度转换为相应精度的数值。该字节各位的定义如表3:低5位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,建议用户不要改动,R1和R0决定温度转换的精度位数,即用来设置分辨率,分辨率配置如表4所示(DS18B20出厂时被设置为12位)。
表3 配置寄存器
表4 分辨率配置模式表
由表4可见,设定的分辨率越高,所需要的温度数据转换时间就越长。因此,在实际应用中要在分辨率和转换时间之间权衡考虑。
当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节中。数据的存储格式如表5所示。
DS18B20在出厂时默认配置为12位,其中最高位为符号位,温度值共11位,单片机读取数值时一次会读两字节共16位,读完后将低11位的二进制数转化为十进制数后再乘以0.0625便是所测的实际温度值。另外还需要判断温度的正负。前5个数字为符号位,这5位同时变化。前5位为1时,读取的温度为负值,此时测取的数值取反加1再乘以0.0625得到的数值即为负值时的实际温度值。前5位为0时,读取的温度为正值,此时只要将测得的数值乘以0.0625即可得到实际的温度值。当DS18B20设置为其它分辨率的时候,根据相应的转换精度,其温度的处理方法与上述相同。在本系统中由于对转换的精度要求较高,而且转换时间也不是很苛刻,所以DS18B20设置为默认的12位分辨率。
(4)CRC的校验。在64位ROM的最高有效字节中存储有循环冗余校验码(CRC)。主机根据ROM的前56位来计算CRC值,并和存入DS18B20中的CRC值做比较,以判断主机收到的ROM数据是否正确。
表5 温度数据存储格式
系统由多个外接的温度传感器及数码管显示单元、键盘电路、报警电路、单片机、通信接口组成。传感器将温度转为模拟信号后由传感器内部的A/D转换单元将模拟信号转换为数字信号,数字信号经过单总线传输至单片机处理,最后将温度值显示并存储起来。通过键盘可以控制数据的回放,同时也让系统具有超温报警功能。
本系统采用STC89C52单片机⑴为主控芯片。STC89C52是一种低功耗、高性能CMOS 8位微控制器,具有8Kb容量的在系统可编程Flash存储器[3]。使用高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧8位CPU和在线系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。STC89C52具有以下标准功能:8K字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,2个外部中断源,全双工串行口等。
在本设计中STC89C52单片机的引脚配置如图3所示。
图3 89C52的引脚配置
系统显示部分选择四个共阳极数码管来作为显示单元,如图4所示。用数码管作为显示单元不仅节约成本而且显示效果更直观。图中DS1显示数据代表测温线路的路数,其余三个则显示温度的具体数值,精确到小数点后一位。
图4 数码管显示单元
按键部分设有一个开关按键,一个复位按键,五个功能按键。功能按键S1为温度路线切换按键,按键S2、S3分别用来选择设置好的温度报警的上下限数值,按键S4、S5为温度报警数值的设定按钮。按键电路如图5所示,按键电路设计为一端接地,一端直接接单片机I/O端口。由于没有采用硬件消抖电路,在程序设计上需要采取相应的软件消抖措施,这样可以避免一些不必要的误操作。
图5 按键电路
温度采集部分由于是单总线传输模式,所以单片机与DS18B20的通信部分采用三线可拔插接口设计,如图6所示,其中1为接地端,2为数据总线,3为电源端。多个DS18B20只需将DQ数据端口挂接在数据总线上就可以进行多路温度采集。在数据总线上用4.7千欧的上拉电阻保证数据总线在空闲状态时为高电平。
图6 温度采集接口
系统总体电路设计除了以上所述各部分电路以外还应包括时钟电路、电源供电电路、系统复位电路、报警电路等部分组成,以下图7所示为系统设计的总体电路图。
图7 系统总电路图
软件部分用C语编写,由头文件、延时程序、温度检测程序、温度数据处理程序、数码管显示及报警程序、现实数据处理程序、温度报警设置函数和程序主函数八个部分组成。部分程序代码如下:
本设计介绍了远程多点温度采集的解决方案,并给出了硬件电路及部分驱动程序。该设计是一种低成本的解决方案。该方案具有实现简单、应用广泛、通信可靠、可移植性强等特点,在工业领域中有着较为广阔的应用空间。
[1]何立民.单片机高级教程—应用与设计(第2版)[M].北京:北京航空航天大学出版社,2007.
[2]美国达拉斯半导体公司,数字温度传感器DS18B20芯片手册[EB/OL].2008.
[3]谭浩强.C语言程序设计(第三版)[M].北京:清华大学出版社出版,2005.
[4]郭天翔.新概念51单片机C语言教程——入门、提高、开发、拓展[M].北京:电子工业出版社,2009.
Design and realization of multipoint temperature acquisition system based on D218B20
ZHA Fang-yong
(Information Management Department,China Railway Materials Commercial Company Limited,Xicheng 100032,Beijing,China)
The article introduces a multipoint temperature acquisition system based on 1-wire bus,in dicates the characters of 1-wire bus interface digital temperature sensor and explains in detail the design process of control system software and hardware.The whole system takes DS18B20 digital temperature sensor as temperature gathering unit.Single-chip microcomputer is STC89C52.A multi point temperature gathering scheme with low cost and high reliability has been realized.
1-wire bus;single-chip computer;multipoint temperature acquisition;digital temperature sensor
TP212.1+1;TP212.9
A
1003-8078(2011)06-0046-05
2011-09-24 doi10.3969/j.issn.1003 -8078.2011.06.13
查方勇,男,湖北蕲春人,工程师,硕士,主要从事计算机软件工程研究和开发.
在许多传统行业中,多路高精度温度采集系统是不可或缺的。粮仓、电厂、石化行业、钢铁厂以及制药厂等企业生产过程中,普遍存在着需要进行大量的温度测量的场合。本文结合实际使用需求,采用DS18B20⑷数字温度传感器及单片机设计硬件连接电路,并给出了硬件电路图及部分程序。
(张所滨)