基于STM32和卡尔曼滤波的纸张计数系统设计

2021-05-18 02:16张子轩张雨鑫张昊博李鹏海宋立红
仪表技术与传感器 2021年4期
关键词:极板卡尔曼滤波纸张

王 鑫,张子轩 ,张雨鑫,张昊博,王 杰,李鹏海,宋立红

(1.天津理工大学,天津 300384;2.天津启诚伟业科技有限公司,天津 300190)

0 引言

在工业生产和日常生活中,经常会遇到需要对纸张进行计数的情况。传统纸张计数是采用人工方法测量纸张堆叠后总厚度除以单张纸的厚度四舍五入计算,费时费力又不精确[1]。后来随着技术发展,出现了图像、超声波、红外、电磁和射线等方法进行纸张数量测量,大都结构复杂,成本高昂[2]。FDC2214芯片具有强抗电磁干扰且功耗低的特点,能够适应多种物体电容值的测量[3]。基于C语言的高性能低功耗32位单片机STM32在软件编程上灵活快速[4]。卡尔曼滤波算法能很好地解决系统噪声问题[5],近年来在目标跟踪、人脸识别、图像分割和图像边缘检测等多个领域应用效果显著。

文中通过采集纸张两侧极板上不同厚度的电容,然后用单片机编程实现离散型卡尔曼滤波对采集的电容值进行平滑处理,可进一步提高抗干扰性。经过多次自校准学习和实验验证后,本方案的系统具有成本低、快速、稳定的纸张计数能力。

1 硬件设计

设计的纸张计数测量系统主要由STM32F103ZET6主控芯片、FDC2214电容传感器模块、OLED显示模块、语音播报模块、电源模块、降压模块、单面覆铜板压片组成。FDC2214将数字电容转换器输出的数字量信号通过IIC传送给STM32F103ZET6最小系统,通过STM32F103ZET6最小系统来储存FDC2214电容传感器测量的电容值,进而通过卡尔曼滤波算法精确计算出当前纸张数量下的电容值。同时调用OLED显示模块字库,通过I/O接口接收数据并显示。人机交互采用按键控制,可选择自校准和测量模式,准确测量纸张的具体数量。

电路设计如图1所示。

图1 电路设计图

2 系统原理

2.1 电容测量系统

如图2所示,该系统使用2块平行且正对的单面方形覆铜板,在2个覆铜板之间放入不同数量的纸张就能检测到对应的电容值。定义单张纸厚度为d1,则纸张总厚度d和纸张数目n的关系为

d=nd1

则两极板间电容值Cx可表达为

(1)

式中:ε0为真空的介电常数,ε0=8.85×10-12F/m;εr为纸介质的相对介电常数,εr=2.5;s为2块覆铜板的正对面积;k为静电力常量,k=9.0×109N·m2/C2。

平行板电容器安装示意图如图2所示。

图2 平行板电容器安装示意图

2.2 FDC2214采集原理

图3为FDC2214芯片的典型应用电路图。谐振电路是由连接在FDC2214各个通道输入端的电容和电感组成的。图3中左侧深色部分代表平行板电容器,接入谐振电路后产生特定振荡频率,由此可测算被测电容值[6]。

图3 FDC2214芯片内部原理图

FDC2214电容式传感器的前端具有电路驱动器,谐振时的振荡频率fx计算公式如下[7]:

(2)

式中:L1是谐振电感;C1是电路中两覆铜板电容器及线路其他部分的等效初始电容。

将式(1)代入式(2)求得纸张数n为

(3)

参考频率fREF由外部40 MHz时钟振荡器提供,通过FDC2214采集之后,数据传输到图3中Core(数字化传感器频率核心),STM32获取FDC2214转换的数据值Dx,于是频率fx计算式为[6]

(4)

设置常量m=DxfREF/228,简化式(4)为

fx=mDx

(5)

将式(5)代入式(3),便可知纸张数n与Dx关系的计算式:

(6)

由式(6)可知,n和Dx两变量之间满足一定映射关系,由STM32获得Dx之后,便可计算得出纸张个数n。

2.3 数据处理算法

FDC2214电容传感器在采集数据时会有各种随机噪声造成干扰。在调用电容值计算纸张数量时,如果不消除噪声对于测量结果的影响,会产生较大测量误差。为提高系统的稳定性和测量数据的准确性,应用离散型卡尔曼滤波将含有噪声的电容值进行等效离散化单一处理,再通过算术平均算法处理,得到一组相对稳定的电容和对应纸张数量的数据。

2.3.1 卡尔曼滤波

本系统采用的滤波器是卡尔曼滤波器。卡尔曼滤波器的计算步骤是:先估计某一时刻的状态,然后将测量过程中含噪声的变量进行反馈,因此卡尔曼滤波器可分为2部分:时间更新方程和测量更新方程[8]。时间更新方程可视为预估方程,测量更新方程可视为校正方程。预估方程计算向前推算当前状态变量,为下一个时间状态构造先验估计。校正方程计算反馈,将先验估计和新的测量变量结合成改进的后验估计。

由于采集值和真实值的偏差与前后时间是没有关系的而且符合高斯分布,于是当前测量偏差PNow可定义为[9]

PNow=PLast+Q

(7)

式中:PLast为上一个测量偏差;Q为过程噪声协方差。

卡尔曼增益Kg则可表示为

(8)

式中R表示测量噪声协方差。

实际输出电容值CNow,可通过当前输入值Cin及上一个输出值CLast计算得到:

CNow=CLast+Kg×(Cin-CLast)

(9)

最后,计算下一次数据的预计偏差,公式如下:

PLast=(1-Kg)×PNow

(10)

这样卡尔曼滤波器就不断地把Kg递归,随着引入数据数量的增多,输出值会逐渐收敛,从而估算出最优的电容值。

2.3.2 算术平均算法处理

经过卡尔曼滤波后的数据仍是上下浮动的,为使得读取单次纸张数量是稳定值,采用算数平均算法进行平均化处理[10],从而获得目标的最佳动态估计以便于校准和测量,处理后的电容值为x,即:

(11)

式中:xk为第k次采集的电容值;n为读取到电容值数据的个数。

3 系统程序设计

系统软件部分采用基于STM32的C语言编程实现,主要实现对电容数据的卡尔曼滤波和算术平均处理。原始数据中已保存规格为80 g A4纸的电容数据,在自校准环节中首先选择一个数据组保存将要校准的数据,读取需要测量的不同纸张数时的电容值,测量一个短路电容值作为第0张纸的数据,利用按键输入其实际张数,确定测量数量的上下限,完成自校准,并将校准数据保存到FLASH中,实现数据的断电保存。自校准结束后即可开始测量纸张数量。测量过程中,按下测量按键后开始测量,为保证数据的准确性,每次均读取电容值100次,测量模式中,将不同数量的纸张放入,FDC2214传输电容值给STM32,STM32将与自校准环节中读取的电容值进行查表法匹配,计算出纸张张数。主要程序流程图如图4所示。

图4 程序流程图

4 测试与分析

4.1 测试方案

实验装置如图5所示,主要包含:#1,极板固定部分,电容值与上下极板正对面积有关,加装极板固定以确保上下极板正对;#2,电容测量部分,极板上部的铁块施加压力,确保两极板与纸张无空隙,提高准确度;#3,控制与交互部分。包括STM32主控、FDC2214、按键组、OLED显示屏、语音播报模块。

图5 实物连接图

将纸张的测试范围定为0~100张,并设置10个梯度。按照每10张纸一个梯度的标准各进行10轮测量,每轮随机测量100次该梯度范围内的纸张数量,并记录下每轮测量的准确度,则每个梯度共测量1 000个纸张数据,10个梯度共测量10 000次纸张数据,最终将各梯度准确度平均值作为每个梯度设备测量纸张的最终准确度。

4.2 算法效果分析

采用卡尔曼滤波算法对采集的电容值进行滤波,除去无关噪声对测量电容值的影响,从而得到一组变化平缓的电容值数据曲线。电容值采集数据图如图6所示,星实线代表FDC2214电容传感器采集的原始数据波形,波动较大。圆圈实线代表经卡尔曼滤波后数据波形,波动范围明显变小,波形趋于平缓。点画线代表经过算术平均化处理得到一个平滑固定的电容值,即为此次测量的有效值。

图6 算法效果分析图

4.3 纸张计数结果分析

该纸张计数装置测试结果如图7所示,星实线代表滤波前测量准确率曲线,随着纸张数量的递增而大幅下降。圆圈实线代表滤波后测量准确率曲线,准确率提升明显,而且不会随纸张数量变化有较大改变,鲁棒性好。由此可见,通过卡尔曼滤波和平均值算法的处理后,纸张计数装置具有更高的准确率和稳定性。

图7 纸张计数准确率图

5 结论

文中实现的纸张计数系统主要基于FDC2214电容式传感器采集纸张两侧极板间电容数据,通过STM32单片机编程实现卡尔曼滤波和平均值算法对原始电容数据进行滤波处理,从而完成对纸张数量进行准确且快速的测量。该装置精巧,成本较低,在工业及生活中应用价值较高,应用发展前景广阔。

猜你喜欢
极板卡尔曼滤波纸张
薄如纸张的扬声器
近期国内市场纸张价格(2020年3月)
一种新型微球聚焦测量极板设计及应用*
基于递推更新卡尔曼滤波的磁偶极子目标跟踪
撕纸张
电容器与带电粒子在电场中的运动测试题
燃料电池双极板制备工艺及其热压机设计研究
不用一张纸,NENDO就描述出了纸张形态的千变万化
基于模糊卡尔曼滤波算法的动力电池SOC估计
基于扩展卡尔曼滤波的PMSM无位置传感器控制