祝 勋
(武汉软件工程职业学院,湖北 武汉 430205)
在电子应用领域,很多场合需要同时监测多路传感器传来的电压信号。当电压信号超过或者低于预设值时,要求系统能够在第一时间快速做出反应。在某些场合,系统的反应速度越快,越能够更早地根据实际情况进行调整或者动作。因此,快速反应的多路电压实时监测系统对实际现场的应用有很大帮助。本文详细介绍了一种多路电压实时监测系统,可以广泛应用于工业现场的亮度、温度、压力以及湿度等的监测,同时带有多种通信端口,方便与上位机进行通信。
整个电压监测系统采用ARM架构的STM32F103作为主控芯片。STM32F103本身基于Cortex-M3内核,最高工作频率72 MHz,内部存储器包含有64 kB的SRAM和256 kB的闪存程序存储器,具有SPI接口、I2C接口以及UART等多种接口[1],同时自带12位逐次逼近型AD转换器。它的AD转换通道多达16个,且各转换通道的工作模式可以设定为单次、连续、扫描以及间断4种模式。当时钟为72 MHz时,完成一次AD转换的时间仅仅需要1.17 μs,能够满足本系统的需求。整个硬件系统的结构图如图1所示。
图1 多路电压实时监测系统结构图
多路电压信号通过不同通道送到各自对应的电压比较器,与各自的基准设定电压进行比较。将各个电压比较器的输出送入一个多输入与门,与门输出端的信号可以作为外部终端的输出信号提供给STM32F103。当某路电压信号超出预设报警电压时,该路的比较器输出发生翻转,与门的输出向STM32F103发出中断请求。此时,STM32F103启动编码器,使得编码器将产生中断的通道的二进制编码提供给STM32F103。STM32F103收到中断请求后,根据编码器提供的二进制通道编码对该通道的电压进行采样,并记录该通道电压超出设定值的数值、时刻以及次数等信息。
电压监测电路选用比较常见的LM358运放芯片,应用范围十分广泛,在变频放大器、直流增益放大器以及一般常规运算放大电路中都十分常见。LM358内部集成有两个独立的、高增益以及内部频率补偿的运算放大器,主要特点包括直流电压增益高、输入电压范围宽、可以采用单电源或者双电源工作、功耗小、单位增益频带宽以及输出电压摆幅大等。另外,LM358对阶跃信号的响应时间可以达到微秒级,因此需使用LM358作为比较器监测外部电压。它可以根据外部电压的变化情况作出快速反应,大幅加快了系统的反应速度[2]。
在多路电压信号中任选一路,设该路的基准电压为2.5 V,并在该路对应的输入电压端加上一个1 000 Hz的周期性超限电压(幅值为2.6 V)信号,而多路电压信号的其余路的电压保持一个未超限的直流电压值(2 V)不变。将超限输入电压信号与多输入与门电路的输出波形相比较,比较波形如图2所示。可见,输入电压超过限制电压2.6 V的同时(即2.6 V方波的下降沿),与门的输出端得到了一个5 V脉冲的下降沿。这两个时刻的时间间隔主要取决于运放LM358的响应速度。集成运放LM358的手册中可以查到,这个时间在10 μs以内。可以将与门输出的下降沿作为电路中有某路电压信号超限的时间信号送入STM32F103的外部中断触发端,从而使STM32F103启动对应的中断服务程序。
图2 电压比较器输出波形图
集成编码器采用的是8路优先编码器74LS148。74LS148是8线-3线优先编码器,主要功能为对8条数据线I0~I7进行3线二进制优先编码,即对最高位数据线进行译码。在本系统中,使用它对8个通道的通道号进行二进制优先编码。优先编码器广泛应用于多输入控制系统,当有多个输入同时发出编码请求时,优先编码器输出的是发出请求的优先级别最高的输入端的二进制编码。74LS148是一个8-3线优先编码器,本身具有8个信号输入端,可以为8路通道的通道数生成对应的二进制编码。如果通道数超过8路,可以用两片74LS148进行级联,构成一个16-4线优先编码器[3]。
当多路电压信号其中一路上的电压信号超限时,STM32F103收到多路电压比较器后面的多输入与门输出的外部中断信号后向74LS148发出编码命令。74LS148的多个输入端与多路电压信号后的比较器的输出端相连,当74LS148收到编码请求后,根据多个输入端哪个引脚上有低电平状态来判断哪一路电压信号输入端出现了超限信号,然后将该通道的通道号进行二进制编码提供给STM32F103,而STM32F103根据编码器提供的二进制通道编码进行后续操作处理。
传统的多路电压检测系统一般采用顺序采样和随机采样两种方式[4]。顺序采样指的是采用固定的顺序(如按照通道号从小到大)依次对多路信号的每一路进行采样。随机采样指的是每次随机从多路信号中选择一路进行采样,依次执行,直至多路信号的每一路都被采样后开始下一个循环。不论采用哪种采样方式,都存在采样时间间隔长和超限提醒滞后等缺点。
本系统的软件设计分为主程序和外部中断服务程序两部分。由于整个系统的电压超限采样和记录等工程都通过中断服务程序完成,因此主程序只需要负责数据处理、存贮、显示以及与上位机通信等功能。系统中断服务程序流程如图3所示。
图3 中断服务程序流程图
本系统设计使用反应快速的运放作为比较器,实时监测多路电压信号是否超限。当多路电压信号中的任意一路上出现超限信号后,系统能够在非常短的时间内做出快速反应,并能存储记录超限信号通道数、超限程度以及超限时间等信息。该电路设计简单易用,应用场合广泛。