贾宇龙
(内蒙古科技大学,内蒙古 包头 014010)
在日常生活、生产和工作中,对多点温度的测量需求一直是必要的,比如电力及医疗设备过热监测、物联网应用,以及危险环境下的温度测量。而市面上常见的测量方法存在反馈时间长、系统复杂、精度较差、功能良莠不齐等问题。而该系统以单片机为控制中枢,通过多模块信息交互,实现多点温度监测等功能,并最终将数据传输到PC 机上,可以做到随时监测,有效提高了多点测温的效率和质量。
用4 片DS18B20 传感器构成温度采集系统,具有温度显示、温度报警、参数设置和串口远程操控能力。
主要功能包括8 个方面。1)4 路温度采集,测温范围:-55 ℃~+125 ℃,精度0.1 ℃。2)8 位数码管显示,显示功能包括提示对应的温度信息、显示当前通道号以及当前通道的采集温度、系统参数值(报警上下限和回差)高温报警时,200 ms 快速闪烁温度,低温报警时,1 s 慢速闪烁温度。3)具有上下限报警功能,用指示灯提示报警,并闪烁当前温度值。4)4 个按键进行人机交互,按键功能包括切换显示通道、修改报警上下限和报警回差(报警范围-20 ℃~120 ℃)。5)系统参数(报警上下限和回差)掉电不能丢失。6)PC 通过串口命令可以控制采集系统的行为,包括:读取报警上下限和报警回差、设置报警上下限和报警回差、读取当前采集的温度值、开关自动温度报文功能。7)采样周期:500 ms。8)USB 供电方式。
系统主要的设计理念是主从分布思想,一方面,单片机系统可单独工作,用户采集温度通过串口实时控制传输并且显示环境各点的温度值。另一方面,PC 机可发送控制命令给下位机进行温度采集,也可进行温度的处理与显示,使观测者可以实时得到温度的变化情况。即PC 机与单片机系统组成两级主从分布式多点温度监测系统,最终通过软硬件设计完成整个系统设计。
该系统硬件部分主要包括温度转换模块、串口通信模块、高低温报警模块、温度显示及控制模块、温度存储模块,电路设计框图如图1 所示。温度转换模块主要负责将DS18B20 传输的字节转换成机器可识别的十进制温度。温度显示模块用8 位共阴极数码管。串口通信模块主要是负责将数据从下位机传送至上位机,报警电路模块负责将实时温度和设定的温度上下限进行对比,决定是否启动报警,温度存储模块主要负责存储报警上下限。
图1 电路设计框图
单片机采用80C51 单片机作为控制中枢,采用12 MHz的晶振频率,内部较为完整的结构及总线、SFR 的集中管理模式、面向工业控制的8 位操作系统和面向控制功能的指令系统是该单片机的优势特点。此外,该单片机内含的时钟电路需要外接石英晶体和微调电容。
在该系统中,DS18B20 单总线元件与80C51 的连接采用电源供电。DS18B20 是DALLAS 半导体公司研发的一种单总线改进型数字温度传感芯片[1],可直接与单片机连接,它的测温范围在-55 ℃~+125 ℃,测量分辨率达到0.0625 ℃,最大的特点是在不进行其余转换的情况下,可以直接读取温度信息,也可由用户设定具有不易丢失性的报警上下限,而且在单总线工作模式下,允许多个传感器同时工作,可以实现双向通信并且具备抗干扰能力,这样占用端口少且节省了大量的连接线和逻辑电路,实现了多点测量的主要功能。
温度显示模块采用8 位共阴LED 数码管,一端为输出段码端,一端为位选端。为了有效节省输入输出端口,即节约硬件资源,系统中用动态扫描的方式进行显示。
在温度高于上限或低于下限时,上下限报警模块提供报警提示。这一模块是有2 个阳极接电源的发光二极管以及数码显示屏组成,当对应引脚为低电平时被点亮,同时数码管显示屏上的数字定时闪烁。
AT24C02 是Atmel 公司开发的一种低功耗 CMOS 型可编程只读存储器芯片[2]。AT24C02 有一个16 字节页写缓冲器和一个专门的写保护端口,用来支持硬件的写保护。它通过两线串行电可擦除接口(I2C)总线模式进行数据传输操作,所以占用硬件的资源和接口线较少,传输时钟频率达400 kHz。在程序运行时数据可进行改写,掉电后数据不丢失,相当于单片机的硬盘。
按键在人机交互中起着重要作用。该系统从实际出发设定了4 个独立式按键,分别是用来实现切换温度通道、设置温度回差、设定报警温度的上下限和查看上下报警温度的功能。单片机的输入输出口与按键接地后直接连接,不会影响其他按键的状态。程序设计为低电平触发。除此之外,为了确保按键闭合后有有效的输入信号,需要对其进行消抖处理。比起硬件消抖来说,软件消抖简单易行,因此采用软件处理办法来消除按键抖动的影响。
系统开始运行后,PC 机与单片机系统组成两级主从分布式温度监测系统,两者通过串行通信线相互连接,由PC 机向单片机传输工作方式指令。上位机构成了设计的主系统,主要是在Windows 系统下的PC 机,对整个系统进行控制监测,可发送控制命令给下位机进行温度采集,在PC 机上也可进行温度的处理与显示。下位机80C51 构成从系统。
该系统的主程序采用C 语言编程,对不同模块进行驱动编程、功能定义和接口定义,主要由DS18B20 子程序、AT24C02 子程序、控制按键子程序、上下限报警子程序、数码显示子程序、菜单设置子程序等组成,进而实现不同模块间的数据传输,最后完成整个运行。
分为4 个步骤。1)初始化。2)ROM 操作指令。3)存储器操作指令。4)数据传输。
分为4 个步骤。1)起始信号。2)(页)写字节和(页)读字节。3)等待应答和发送应答。4)终止信号。
结果表明,Proteus 与Keil 联调构建的实际电路在仿真系统中运行良好,最终可实现对所需要监测的环境温度的全面控制, 将测温数据通过串口通信传输给计算机。通过切换对应序号DS18B20 的加温减温按键,可在数码管显示屏上得到对应的序号值和温度值,测温范围为-55 ℃~+125 ℃。
通过调节温度通道开关设置,按下后不停的在4 个温度传感器之间不断切换,并在数码管显示屏上得到此时的序号和温度。通过调节设置按钮,可切换3 种设置状态。1)设置报警上限。2)设置报警下限。3)设置温度回差,实现控制报警(报警范围-20 ℃~120 ℃)。在设置状态下,可通过按下数值加、数值减按键,调节对应状态下的报警上限、报警下限及回差。
如果传感器温度高于报警上限,报警模块中的高温报警LED 灯亮起,显示屏200 ms 快速闪烁当前温度。如果传感器温度低于报警下限,报警模块中的低温报警LED 灯亮起,显示屏1 s 慢速闪烁当前温度。涉及回差时,比如上限温度40 ℃,不存在回差,那么当温度超过40 ℃时报警,降到40 ℃以下时取消报警。当设置上限温度40 ℃,存在回差2 ℃,那么当温度到40 ℃时报警,回到38 ℃以下时取消报警。
该次设计可较好的完成预期设计效果,节省了搭建实物的时间与经费。该系统可用于多种应用场景,在大多数危险环境下可以实现实时监测环境温度的功能,如果再加上后期控制系统设计、智能控制空调等控温设备,即可构建完整的环境温度监测方案,有较强的实用价值。