目前,无论是在工业生产中还是在科研实验中通过对温度" title="温度">温度测量" title="测量">测量来进行自动控制的设备越来越普及,应用场合也越来越多。随之而来的问题是,如何能够测得精确的温度以保证自动控制设备能够正确地发出控制指令来控制生产过程。另一方面,如果温度过高可能会对一些设备中的一些半导体元器件造成损坏。因此,对于自动高温报警的需求也在逐渐增加。本文基于以上方面的考虑,研究并设计" title="设计">设计了一种基于单片机的自动温度测量与报警系统" title="报警系统">报警系统。
1 系统硬件设计
尽管目前市场上单片机的品种多样,功能也越来越多,但是受成本约束,性能优良的8位单片机仍然是工业检测与控制应用领域的首选。
本系统就是以ATMEL公司的AT89C51" title="AT89C51">AT89C51单片机为中心,通过模数转换器AD7812对温度传感器的输出电压进行模数转换,再将转换结果送入单片机进行相应的处理,通过编程分析处理的结果,最后决定是否报警。下面分别介绍各个硬件功能模块的设计。
1.1 温度传感器设计
温度传感器是感知外部环境中温度变化的重要元件,它是外界与本系统的接口。它将外界温度的变化转化成电压的变化,这样通过对电压的处理与分析就可以间接地测量出外界温度。本系统采用的温度传感器为LM35,该温度传感器由美国国家半导体公司生产,在常温下,不需要额外的校正处理就可以到达0.25℃的准确率。其输出电压与摄氏温度成线性关系,并且这种关系可以表示为:
或者
式中,Vo为传感器的输出电压,单位V,T是外界环境中的温度,单位℃。由于LM35能够测量的最高温度是150℃,由式(1)可得其最大输出电压为1.5 V。为了能够与AD7812的输入进行匹配,故需要对传感器的输出电压进行放大,放大的倍数约为3.33倍。可采用集成运放连接成同向放大器来实现电压放大的功能。经过放大后的电压约为5 V,恰好能够与模数转换部分的输入相匹配。该部分电路设计如图1所示。
图1温度传感器电路
1.2 A/D转换设计
经过温度传感器转换后的输出电压值不能直接送入单片机中进行处理,还必须在它们之间增加A/D转换装置。本文中选择AD7812作为A/D转换器。AD7812是由Analog Devices公司生产的一种串行接口的10位8通道A/D转换器。与一般的并行接口A/D转换器相比,它的优点在于能够节省处理器的引脚资源。节省下来的引脚资源可以进一步的对系统进行扩展,以使其功能更加强大。在AD7812内部有8路模拟开关可以采集8路模拟信号,这里只需要将经放大的传感器输出信号输入到其中任意一路即可,为了简便起见,就取其中的第1路模拟开关作为输入信号的通道。由于AD7812内部具有转换时钟源,因而不需要外部提供时钟源。单片机只需要通过它的串行时钟输入、数据输出、数据输入、转换输入4根引脚就可以对其进行控制。该部分电路设计如图2所示。
图2 A/D转换电路
1.3 单片机处理器电路设计
AT89C系列单片机是一款低电压,高性价比8位单片机。与MCS-51单片机相比,它有两大优势:第一,片内存储器采用闪速存储器,使程序的写入更加方便;第二,推出了更小尺寸的芯片,使电路的尺寸更小。
AT89C51是该系列中一种带4 KB容量可编程可擦除只读存储器和128字节随机存取数据存储器(RAM)的高性能8位单片机。它采用ATMEL的高密度非易失存储器制造技术,与工业标准的MCS-51指令集和输出管脚兼容。总之,ATMEL的AT89C51单片机为嵌入式控制系统提供了一种高性价比的实现方案。
AT89C51提供以下标准功能:4 K字节的Flash闪存存储器,128字节内部RAM,32个I/O口线,2个16位定时/计数器,1个5向量两级中断结构,1个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0 Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。在本文中该中央处理电路如图3所示。
图3 单片机处理电路
1.4 异常情况报警电路设计
报警电路的作用是在出现异常情况时及时地提醒工作人员尽快采取措施,减少危险,避免灾难性后果的出现。因此,在设计报警电路时,应该让它的报警行为能够迅速被人察觉,以进一步采取相应措施,避免或减少危害带来的损失。现代科学研究证明,通过刺激人的视觉与听觉能够较好地达到报警的目的。并且,闪烁的灯光与断续的声响最能够引起人们的注意。基于上面的这种考虑,在设计中使用了74LS0 0、74LS04等集成门电路芯片组成的脉冲信号发生器来控制声音的断续和灯光的亮灭。
外界环境中的温度被温度传感器所采集,温度传感器会将此时的温度转换成电压值,该电压值经过匹配后送入A/D转换器,经过转换之后的数据送入单片机进行处理。单片机按照编制好的程序进行处理,如果确实此时的温度超过了人们凭借经验设定的阈值,单片机将通过指令使P0.0、P0.1两口输出为高电平(约为+5 V),使得扬声器与发光二极管产生报警信号。该部分的电路设计如图4和图5所示。
图4 声音报警电路
图5 灯光报警电路
2 系统软件设计
为了便于程序的修改,将系统按照模块化的方法进行设计。该系统由温度采集、A/D转换、数据处理、报警输出4个模块部分组成。温度采集是由温度传感器LM35完成,A/D转换和报警输出是由单片机进行控制的。而数据处理部分则是单片机接收到A/D转换器送来的数据后,在单片机内部完成的,其结果将决定报警输出模块是否工作。
系统的工作流程是:LM35采集温度,并且将温度信号转换成电信号:A/D转换将线性放大后的模拟电信号进行A/D转换,使之成为单片机能够处理的数字信号;单片机通过处理转换后的数字信号来分析采样的温度值,并将分析结果送到报警输出电路中;报警输出电路根据分析的结果做出相应的反应。系统的软件设计流程图如图6所示。
图6 系统设计流程图
2.1 A/D转换模块
A/D转换器在启动之前需要对其进行初始化,否则会影响后面的使用。根据图2的连接方式,初始化时将单片机的P1.4口置1,然后软件启动一次转换过程即可。在转换的过程中。由于任何A/D转换器都会有一定的转换时间,所以在转换时要设置一定的延时,并且该延时要略长于器件的转换时间。由于AD1812的转换时间约为2.3 μs,在程序中可以将延时设置为3μs,以保证转换过程的顺利进行。
2.2 中央处理模块
这部分模块的软件设计主要包括单片机对A/D转换模块的控制、单片机处理送来的数据以及单片机对报警系统的控制3大部分。
对A/D模块的控制主要包括对AD7812进行有关控制字的写入以及对P1口的引脚的置位与清零操作;数据处理部分主要是将外界温度转换过来的电压值与预先的经验阈值进行比较,进而决定是否启动报警系统;报警系统的设计则是根据数据处理的结果对P0口进行清零或是置位,来启动或停止报警电路。
3 结束语
本文主要设计了一种自动温度测量报警系统,该系统的设计主要基于AT89C51单片机,中央处理单元与外围扩展模块的构造简单,整个系统实现成本较低。由于LM35是采用单电源供电方式,因此该系统只能够在5~150℃的范围内工作,可以作为常温下的报警装置使用,尤其是在一些对温度较敏感的电气设备内部,可以起到防止设备故障的作用,故而具有一定的实用价值。在设计中没有使用并口的A/D转换AD0 809而是使用了串口转换的AD7812为单片机节约了许多端口资源,可以利用这些资源扩展LED或LCD显示系统,也可制成温度的测量与报警系统,使其功能更加完善。