汤锴杰, 栗 灿, 王 迪, 张 琴
(重庆交通大学 机电与汽车工程学院,重庆 400074)
测温系统在粮食仓储、医疗保健、交通运输、智能家居和温室大棚以及电力电讯系统等领域都有广泛应用,带有报警功能的系统还能减少温度事故的风险[1]。
目前,测温装置采集的温度值仍以模拟信号为主,微处理器只能处理数字信号,需先A/D转换,使得装置结构复杂、精度不高,数字式温度传感器的出现解决这一问题。以DS18B20为代表的新型数字温度传感器集温度采集和A/D转换于一体,直接输出数字信号,与单片机接口电路简单[2]。DS18B20具有单总线、体积小、分辨率高、抗干扰强等特点,在冻土区公路路基温度场测量[3]和轴承温度检测[4]等场合都有应用。该传感器有唯一的64位序列号,单信号线能挂多器件,实现远距离、多点分布式测温。
本文以51单片机为处理核心,利用DS18B20组成测温模块,加上按键模块、显示模块和报警模块等,设计出一种多场合适用的数字式温度采集报警系统,实现指定温度的同步采集、显示、报警和控制多重功能。该测温报警系统已通过PROTUS仿真平台的模拟仿真测试,并用电路板成功验证其功能,装置运行稳定、测温效果好、误差小。
该系统包括核心AT89S52单片机及其外围电路、测温模块(DS18B20数字式温度传感器)、电源模块、显示模块(驱动电路、多位LED数码管)、按键模块、报警模块(蜂鸣器、LED发光二极管),如图1所示。
图1 测温系统框图
采用DS18B20智能温度传感器,输出数字信号,无需处理和转换,只要严格遵守DS18B20的读写时序就能准确读取实时温度[5]。
该系统精度高,程序相对复杂,但电路简单、体积小,有利于系统的智能化和轻量化。单总线挂多片DS18B20,微机只需一根数据线能与多片DS18B20通信的特点[6]也符合多点测温的要求。
本系统处理器选用AT89S52单片机。AT89S52是Atmel公司的一种高性能、低功耗8位CMOS微处理器,8K系统可编程FLASH存储器使其下载线路简单,并能实现串并行模式的在线编程[7]。该芯片内部有3个16位定时/计数器,1个全双工串行口,4个I/O口和256 bytes的RAM,程序调试方便。
DS18B20温度传感器是DALLAS半导体公司生产的一线式智能数字温度传感器,是世界上首片支持“单线总线”接口的温度传感器,具有传输距离远、体积小、接口简单等特点[8]。
DS18B20内部主要由温度传感器、配置寄存器、64位的ROM和高低报警触发器TH和TL等部件构成[9],其中,光刻ROM是实现多点测温的关键。
温度测量转换后以16位带符号扩展的二进制补码形式输出,储存在DS18B20 2个8 bit的RAM中。
系统的硬件电路主要由测温模块、电源模块、显示模块、报警模块和按键模块这5大模块组成。总体电路原理图如图2所示,AT89S52单片机接一个11.059 2 MHz的晶振电路提供外部时钟,复位端RESET接看门狗电路,形成一个最小单片机系统。
系统能实现以下功能:
1)DS18B20采集温度,单片机负责对传感器的通信和控制;2)显示模块实时显示处理后的温度值;3)报警模块监测温度范围,当超过温度上下限时利用LED二极管和蜂鸣器产生报警信号,提醒使用者采取措施;4)按键模块根据需要设置报警值,提高实用性。
电路采用+5 V的工作电压为单片机、采集、报警等电路供电,硬件制作时另外加入一个独立电源模块。
DS18B20利用单总线特点,通过一只4.7 kΩ上拉电阻器把温度输出端DQ和P0.3口相连,单片机通过该导线对初始化传感器和完成温度采集。传感器的GND接地,VDD可以采用数据线供电,也可以采用外部供电,为提高抗干扰能力,本设计采用外部电源供电方式。
图2 硬件电路结构
为节约硬件接口,采用动态扫描显示方案。动态扫描是循环移位法,利用人眼的视觉暂留实现连续显示的效果。本设计采用6位带小数点的8段共阴极数码管来显示温度值,其中,第一位是正负符号位,第二,三,四,五位分别显示温度的百位、十位、个位和小数位数值,最后一位显示温度单位℃。单片机的P2口(P2.0~P2.7共8位对应8个字段)通过驱动芯片74LS245与数码管的段选公共信号线相连,P3口的P3.0~P3.5与数码管的位选信号线相连,实现位选控制。
为了增加安全系数,报警电路采用声光双重保障的报警方式,包括1个蜂鸣器和2个不同颜色的LED发光二极管。采集的温度不断地与设定的温度阈值比较,当温度高于上限阈值时,P3.7口的蜂鸣器发出高频报警信号,同时点亮P0.6口的红色LED灯,进行高温报警;当温度低于下限阈值时,蜂鸣器发出低频报警信号,同时点亮P0.7口的蓝色LED灯,进行低温报警。
通过按键实现人机交互,调整温度阈值,使系统适用更多场合。此模块由两部分组成,一部分是控制按键(K1~K4),另一部分是指示灯,占用单片机P1.0~P1.5端口,具体见图3。当按下K1,红灯亮,表明进入上限设置状态,通过按键K2(+)和K3(-)调整温度,同时显示模块同步显示温度值设置,调整完成后再次按下K1退出。下限温度值调整(K4)过程与上限一致,不再赘述。
DS18B20硬件电路简单,须用相对复杂的软件设计提供合理的逻辑时序,才能保证工作的可靠准确[10]。DS18B20主要包括初始化、总线读取和总线写入3种操作,而且都必须严格遵循时序要求,下面将对这三方面进行深入分析。
根据DS18B20的通信协议,传感器在工作时必须利用其提供的ROM指令和存储器RAM指令进行操作,2种指令都以8 bit字长的十六进制形式在程序中出现,常用的代码和具体含义如表1和表2所示。每次温度转换一般都经过三步:复位操作、发送ROM指令、发送RAM指令,然后读取温度。
表1 ROM指令
表2 RAM指令
初始化是DS18B20底层基本操作之一,相当在单片机和传感器之间建立通信桥梁,为后面操作做准备。初始化脉冲包括CPU发出的复位脉冲和传感器发出的响应脉冲。初始化脉冲时序如图3所示。
图3 DS18B20初始化时序
主机先发出480~960 μs的复位脉冲(低电平信号),然后释放总线进入接收模式(RX),当DS18B20检测到总线释放时的上升沿后等待15~60 μs,然后发出一个延时60~240 μs的低电平响应脉冲,此时传感器的DQ置1,主机也置1,初始化过程完毕,传感器处于既可读取又可写入的状态。
单片机向DS18B20写数据,是指令和数据发送的基本操作,采用位右移操作实现低位在前高位在后的逐位写入,主要包括写“0”和写“1”2种时序。写时序从主机拉低总线大于1 μs开始,在随后的15 μs内把待发送的信号发送至DQ上,等待传感器对其进行采样,传感器在45 μs内完成对数据的采集。数据采集时,如果总线是高电平,写入逻辑“1”;反之,写入逻辑“0”。从图4的写时序看出,一个写周期至少需要60 μs,2个写周期之间须有一个大于1 μs的间隔。
图4 DS18B20写入时序
单片机从DS18B20读取数据,包括温度的采集和其他状态信息的回传,也是以位为单位,包括读“0”和读“1”两种时序。读取也是以总线拉低至少1 μs作为启动信号,然后置1并保持至少60 μs进入接收状态。传感器在接收到启动信号后15 μs内把数据(0或1)发送到DQ端供单片机读取,主机由低到高依次读取8位二进制数,随后的45 μs又释放总线。读时序如图5所示,这是一个读“1”的时序图,即使主机在15 μs内就完成数据读取,仍要求1个读周期应大于60 μs,且2个读周期之间要有一个大于1 μs的恢复间隔。
图5 DS18B20读取时序
下面以温度采集程序为例,对源代码进行简单说明:
∥功能:启动DS18B20温度转换
Void Convert_18B20(Void)
{RST_18B20(); ∥初始化
WR_18B20(0xcc); ∥跳过ROM识别
WR_18B20(0x44); ∥启动温度转换}
∥功能:读取返回DS18B20温度值
Int Read_18B20(Void)
{RST_18B20(); ∥初始化
WR_18B20(0xcc); ∥跳过ROM识别
WR_18B20(0xbe); ∥读DS18B20暂存器
Temp_8[0]=RD_18B20; ∥读温度低位
Temp_8[1]=RD_18B20; ∥读温度高位
return(Temp_8); ∥返回2字节温度值}
测试温度值如表3。
表3 真实值与测量值对比
系统误差小于0.5,测试结果表明:系统的精确度较高,实用性强。
本文设计了一种基于AT89S52单片机和DS18B20数字温度传感器的温度采集报警系统,对软硬件设计进行详细说明。该设计具有结构简单、精度高和稳定性好等优点, 适用于粮仓、电力机房、轴瓦、空调、冰箱和工农业等领域,DS18B20单总线和多点式测温特点使其扩展性加强,具有广阔的市场前景。
参考文献:
[1] 李会聪.DS18B20多点测温方法探讨[J].微计算机信息,2010,26 (9):166-167,188.
[2] 张宇宁,周 颖.DS18B20数字式温度测量装置的研究[J].机械工程与自动化,2012(4):149-151.
[3] 何东坡,任贵波,韩春鹏 ,等.DS18B20在季冻土区公路路基温度场测量中的应用[J ].电子技术应用,2010,36 (4 ):48-50.
[4] 张海传,吴晨霞,许东卫,等.低功耗轴承温度无线检测系统的设计[J ].电子技术应用,2009,35 (10 ):96-98,102.
[5] 赵海兰,赵祥伟.智能温度传感器DS18B20的原理与应用[J].现代电子技术,2003(4):32-34.
[6] 潘 勇,孟庆斌.基于DS18B20的多点温度测量系统设计[J].电子测量技术,2008(9):91-93.
[7] 胡亚琦.单片机原理及应用系统设计[M].西安:西安电子科技大学出版社,2010,10.
[8] 刘建亭,毛善坤.DS18B20工作原理及基于C语言的接口设计[J].仪器仪表用户,2005(6):138-140.
[9] Qiao Xiaojun,He Xiuhong.Design and implement of multi-point soil temperature measurement system[J].Journal of Shenyang Agricultural University,2006(37):126-127.
[10] 顾振宇,刘鲁源,杜振辉.DS18B20接口的C语言程序设计[J].单片机与嵌入式系统应用,2002(7):22-24.