一种用于温湿度批量自动校准系统的设计与实现
2023-06-02兰芳芳吕峰
兰芳芳 吕峰
关键词:批量;自动校准;FPGA;UART扩展;线性拟合
0 引言
在颗粒物检测系统中,温湿度参数的一致性,不仅影响颗粒物检测设备间的一致性,还影响颗粒物测量的准确性[1]。因此在设备出厂前需要对各温湿度传感器进行一致性校准。以前温湿度的校准采用单点校准,设备长期运行,温湿度又会跑偏,因此本系统采用多点线性拟合校准。而温湿度的线性校准需要对多个温度点和湿度点进行测量。如果一次只能同时测量几个温湿度传感器数据,再手动拟合,效率低下,需要投入大量的人工,不能满足生产的大量需求。为提高温湿度传感器的校准效率,需要同时对多个传感器进行批量校准,这就需要多个串口。
目前一般的单片机最多只有3~4 个UART,不能满足同时校准的要求。虽然串口的扩展可以通过分时复用、软件编程、使用专用芯片等方法解决,但这些方法都会增加处理器的占用时间或者增加外围电路的复杂程度。针对上述问题,本文设计了一种基于FPGA 的多串口扩展自动校准系统,满足批量校准系统多串口扩展的需求,无需额外的硬件串口扩展[2]。该批量校准系统还可以实现数据自动处理,自动线性拟合,输出校准系数,免去手动拟合的麻烦。在提升温湿度校准的效率的同时,也提高了设备之间数据的一致性。
1 系统设计
温湿度批量自动校准系统的基础是FPGA 的多串口扩展[3]。图1 为设计的总体框图。使用FPGA 内部的UART IP 核进行16 路UART 扩展,其中15 路UART接口分别与15 路温湿度传感器进行通信,15 路通信数据通过缓冲寄存器存储后,由处理器仲裁,经另一路UART 上传至PC 机。PC 机程序通过不同帧头识别不同通道的温湿度传感器数据,并分别存储,实现温湿度的批量自动校准。
1.1 FPGA的多UART扩展
本设计选择的FPGA 型号为Altera 公司的CycloneII 系列EP4CE6E22C8 芯片。使用FPGA 内部的UARTIP 核扩展16 路串口[4],为与温湿度传感器接口相匹配,串行端口采用RS3485 对UART 进行电平转换。
使用UART IP 核扩展串口,方便快捷,可以调用同一个IP 核生成模块使不同扩展串口设置相同的波特率、数据位、停止位等,也可以调用不同IP 核生成模块对不同串口设置不同的波特率、数据位等。本设计中使用UART IP 扩展生成16 路串口,其中15 路串口设置相同,波特率9 600,8 位数据位,1 位停止位,无奇偶校验,它们分别接收对应的温湿度传感器数据。另一路串口波特率设置115 200,与PC 机相连,传输采集到的温湿度数据。
使用Quartus II 对整个系统进行综合仿真,图2 为FPGA 综合后的资源消耗情况,逻辑单元消耗占整个资源的33%,还有大量的资源没有使用。根据FPGA 可编程器件的特性,只要选用芯片的资源足够,可以根据需求扩展更多的UART 接口[5]。
1.2 数据的仲裁传输
FPGA 串口与PC 机的数据交互采用轮询的方式。FPGA 的15 個串口采集到的数据存储在缓冲寄存器中,每个UART 通道在数据接收完成时,会产生1 个接收完成标志信号fl ag。数据仲裁模块由两个3-8 译码器组成,串口每次接收到PC 机的数据命令时,会轮询每个UART 通道的接收完成标志。如果标志为1,代表此通道有数据需要发送,设置串口发送模块的发送开始标志位,发送对应通道寄存器的数据,待数据发送完成,把此通道标志位置0。采用轮询的方式,不会遗漏每个uart 通道的数据。
2 自动校准的实现
2.1 PC机自动校准界面
批量自动校准在PC 机上实现,上位机的数据采集处理程序用C# 编写[6]。如图3 所示,“主界面”显示各通道的实时传输数据;“设置”界面可以设置串口的波特率等参数,同时该软件也支持TCP 传输,设置界面同样可以设置IP、端口号等。“校准”界面可以初始化内部参数、保存、查询、校准KB 参数等。
把各通道的温湿度传感器一起放入温湿度控制仓内,使用温湿度控制仓从低到高依次设置5 组温度和5组湿度,待每次温湿度控制仓示值稳定后,通过PC 机发送命令给FPGA 扩展口16 把各通道数据轮询传送至PC 机。每组数据测量10 次,程序中对每组数据使用中值滤波取平均值[7]。待所有数据测量结束,分别点击温度校准和湿度校准,程序自动完成每组数据的平均和线性校准。程序界面可以选择单个通道的自动校准,也可以选择所有通道同时完成自动校准。
2.2 校准数据处理
PC 上位机通过FPGA 扩展的第16 个UART,接收所有通道采集的传感器数据,程序通过帧头判断数据对应的通道。对于每一个控制仓设置点,程序自动读取10 组数据,并把对应通道的数据分别存储。然后使用中值滤波算法自动计算得到每个通道10 组数据的平均值另外外存。依次把所有控制仓设置点的数据测量结束,就会得到5 组温度值和5 组湿度值的平均值,分别点击温度校准和湿度校准,程序会自动调用线性拟合函数完成15 个通道的温度和湿度校准,点击“KB 查询”可以看到当前的校准系数。如图4 所示为传感器出厂校准得到的校准系数,这与之前对每组数据手动求平均,再线性拟合,效率得到大幅提升。
3 数据测试与分析
在颗粒物测量设备中,温湿度传感器用于环境温湿度和采样气体温湿度的测量。在线颗粒物设备的浓度与标准的手工设备相比,会受到不同地区、不同季节气候的影响,因此设备颗粒物的浓度需要使用环境温度湿度对其进行修正[8]。同时温湿度不一致也会直接影响各设备的加热策略,所以温湿度的校准直接影响设备之间颗粒物浓度的一致性。图5 和图6 为两台设备分别选取26 d 的运行数据,温湿度没有校准和校准后的数据拟合效果,根据“环境空气颗粒物(PM10 和PM2.5)连续自动监测系统技术要求及检测方法”[9],从拟合系数系数看,K 值从1.02 降到了1,两台数据的一致性有很大提高。而温湿度对颗粒物浓度修正的影响有专门的课题来研究,在此不做详细的分析。
4 结束语
基于FPGA设计的多UART扩展批量自动校准系统,不仅实现了多通道温湿度数据的批量采集,又实现了批量数据的自动处理,自动线性拟合校准,该设计已经成功应用于设备生产的出厂校准中,且性能稳定。此校准系统的设计方法和设计思想并不局限于温湿度的批量校准,也可以推广到其他需要批量数据采集,批量数据自动处理的场合,来提高工作效率。