基于BP神经网络的高精度电容测量
2022-03-30刘湘鹏袁冠辉陆永辉颜浪波
刘湘鹏,袁冠辉,陆永辉,颜浪波
(1.重庆大学 电气工程学院,重庆 400038;2.玉林师范学院 物理与电信工程学院 智能信息与通信技术研究中心,广西 玉林 537006)
0 引言
电容器是3种(电阻、电容、电感)最常用的无源电子元器件之一,其电容量(简称电容)受极板材料、有效面积、间距以及介电材料的影响。标准电容器是电子设备不可或缺的元器件,而非标准的电容器件,由于其电容值受外形以及中间介电材料的调控,常被作为感知外部变化的传感器件[1-2]。例如,2019年,一种基于电容传感器的非接触式手势识别系统被实现[3],该系统设计的电容传感器具有4路输出信号,可识别8种手势,其识别准确率达到了95%。类似的,2021年,基于电容式传感器的非接触式液位测量系统被提出。该系统可准确测量0~140 mm的液位高度,且误差仅为5%[4]。文献[5]基于平行板电容传感器设计了纸张计数系统,实现了87张以内100%的正确率。此外,朱永灿等人[6]基于插指电容传感器实现了光伏组件覆冰雪的在线监测。无论是标准电容的使用,还是电容传感器的使用,电容的快速准确测量都是必要的环节。电容测量值的准确度既影响设备的电路参数,也影响传感器的感应精度。对于标准电容器件,通过其标称值即可估算电容值,也可通过LCR电桥等设备进行高精度的测量;而对于非标准的电容传感器,由于受使用场合、工作环境和实时性要求等限制,常常难以用仪器设备来实现高精度的实时在线测量,因此研究快速高精度的电容测量方法对电容传感器件的应用显得尤为重要。
目前,常用的电容测量方法有电容表法、三表法、电桥法和谐振法等[7]。电容法使用电容测量仪表来测定目标电容值,其测量精度依赖于所使用的测量仪器,且需要人工操作,不适用于需要在线实时测量的应用场合。三表法是早期进行电路设计时所使用的方法,它使用交流电压表、交流电流表与功率表来获得被测元器件两端的电压、电流和功率等电参数,然后通过计算求得所需参数值[8]。该方法操作繁杂,且测量误差受3个测量仪表影响,精度难以提高,一般只应用于实验验证。电桥法与谐振法把被测电容分别接入电桥电路与谐振电路中,然后测量电桥的输出电压与谐振电路的谐振频率,并利用该输出电压与谐振频率计算出被测元件的电容值[9]。这种方法虽然可应用于实时系统中,但受限于电路在宽频带工作时的非线性,在目标电容变化范围较大时,测量误差比较大。
近年来,伴随着人工智能技术的快速发展,基于人工神经网络(Artificial Neural Network)的参数预测与测试研究备受关注,并在实际应用中展现了较好的测量精度[10-11]。例如,Kai Cui等人[12]以BP神经网络理论为基础,以工程地质数据库为研发平台,在分析岩土材料特性、岩土沉积物分布和岩土参数的基础上,建立了岩土参数预测模型,并取得了良好的预测效果。文献[13]提出了一种基于蚁群优化算法—径向基函数(ACO-RBF)神经网络的接触电阻预测模型,使预测的平均误差相对传统方法降低了5.9%,预测精度更高。Jerzy Roj等人[14]使用BP神经网络,在电路的准平衡态与非平衡态下测量了目标对象的电容值与介质损耗因数,且近似误差(Approximation Error)仅为0.5×10-5。鉴于当前常用电容测量方法的不足与神经网络技术发展现状,本文基于BP神经网络原理,搭建了电容测试数据获取电路,并以此获取1~470 pF电容范围的C-V测量数据作为BP神经网络的训练与测试样本。模型的测试实验结果表明,电容测量精度达到了97%,测量范围为1~470 pF,单次测量时间仅为0.5 s,可应用于实时在线电容传感器系统中。
1 本文方法
1.1 电容的基本测量模型
测量电路与实际等效电路如图1所示。阻容分压电路测量理想电容的模型如图1(a)所示。
(a) 阻容分压电路
(b) 实际电容的等效电路
图中,us(t)为输入的正弦波信号,us(t)=Uscos(ωt),ω=2πfs为输入信号的角频率;R为系统测量电阻。电容两端的电压为:
(1)
式中,θ为电容两端电压相对于输入信号源的相位延迟;ZC为电容阻抗,其值为ZC(ω)=1/(jωC),代入式(1)可得:
(2)
ZC的模值为:
(3)
|ZC(ω)|=A*f(γ)+B,
(4)
但在实际应用中,电容是一种非线性器件,其等效图如图1(b)所示。图中,Rs为串联电阻,Rp为并联电阻,L为串联电感,电容的阻抗可表示为:
(5)
当电容值比较大时(大于10 pF),串联电阻Rs比并联电阻Rp对电容特性的影响更大[15]。因此,在进行电容测量时,并联电阻常常被忽略去;此时,电容的阻抗值ZC(ω)及其模值|ZC(ω)|分别为:
(6)
(7)
由式(7)可知,电容的阻抗模值|ZC(ω)|是ω的二阶非线性函数(Rs=10 Ω,L=10 μH时的典型曲线如图2所示),|ZC(ω)|与C也是二阶非线性关系,因此无法再使用一阶线性模型来实现对实际电容的准确测量,而BP神经网络可用于实现对任意非线性函数的逼近,因此本文将以此实现对真实非理想电容的高精度测量。
图2 典型真实电容的阻抗特性对数曲线Fig.2 Logarithmic curve of impedance characteristics of typical real capacitance
1.2 BP神经网络算法
BP神经网络是一种按照误差逆向传播算法训练的多层前馈神经网络,一般包括输入层、隐含层和输出层3部分,每一层有若干节点[16]。其算法称为BP算法,基本的算法包括信号的前向传播和误差的反向传播。当处于信号的正向传播过程时,输入的信号通过隐含层作用于输出节点,经过变换,产生输出信号;若实际输出与期望输出存在误差,则进入误差的反向传播过程。误差的反向传播过程是将误差通过隐含层向输入层逐层反传,并分摊给各层所有单元,以从各层获得的误差信号作为调整各单元参数的依据。通过调整输入层节点与隐层节点的参数,用梯度下降法使误差沿梯度方向下降,经过反复学习训练,反复修改参数,使误差的信号最小[17]。典型的多层神经网络结构如图3所示。
图3 BP神经网络结构Fig.3 BP neural network structure
简单的线性分类问题通过单层前向神经网络即可解决,而非线性问题只能通过带隐含层的多层神经网络来求解。每个神经元节点的输入输出关系均可以用一个非线性函数来表示:
(8)
1.3 系统总体实现思路
本文所提系统的实现由4个模块构成:数据获取、数据预处理、特征选择和BP神经网络,如图4所示。
图4 本文方法实现流程Fig.4 Implementation flow chart of the proposed method
系统首先通过数据获取电路获得被测电容两端的电压数据,构建原始样本集;然后在数据预处理模块中对原始样本集进行清洗与去噪处理,接着对预处理后的样本集进行特征选择以在保证测量精度的前提上降低网络规模,加快网络训练与测试速度。之后,对样本集进行归一化后输入至BP神经网络中进行训练,并最终获得测试模型。
2 模块设计
2.1 数据获取模块
数据获取模块电路主要由DSP主控板、DDS信号发生器、AGC放大器、ADC采样器和阻容分压测量电路构成,如图5所示。
图5 数据获取模块Fig.5 Data acquisition module
其中,DSP控制核心采用TI(Texas Instruments)公司生产的32 bit C2000系列高性能实时微控制器TMS320F28379D,其运算速率达到800 MIPS,闪存容量为1 MB,可满足测量系统实时性与精度的要求。DDS信号发生器采用Analog Devices(AD)公司生产的直接数字频率合成器AD9910,经由DSP控制器进行配置并启动后,线性输出频率为1~8 MHz,共计71个频点的正弦波扫频信号。AGC放大器模块由AD公司的AD8367器件及外围器件构成,使扫频信号幅度在整个频率范围内均保持1 V。ADC模块由有效值检测器与AD转换器构成,有效值检测由AD公司生产的有效值测量芯片AD637实现,它的工作频率为0~8 MHz,电压测量范围为-45~+30 dBm;AD转换器采用DSP内置16 bit-ADC。获取模块实物如图6所示。
图6 数据获取模块实物Fig.6 Picture of the real data acquisition module
模块工作时,首先由DSP控制器启动DDS信号发生器,步进为100 kHz,共计71个频点,每个频点信号维持时间为500 ms,线性输出频率为1~8 MHz的正弦测试信号;之后由AGC放大器对测试信号进行限幅放大输出,使得所有频点的信号输出幅度保持1 V不变。最后由ADC模块对电容两端电压幅值进行有效值检测和模数转换,所获信号幅值保存后作为数据样本的特征值。
2.2 数据预处理
电压信号数据样本的预处理主要包括数据清洗与去噪处理。为确保样本数据的可靠,试验对50个电容样本组的电压进行了6次测量,每次测量间隔24 h。对相同的电容样本,如果某次测量的电压幅度小于其他5次测量平均值的一半,或者大于其他5次测量平均值的1.5倍,即认为是异常数据点,例如图7所示的A点。鉴于异常数据点对模型的性能有较大影响,本文所提方法利用数据清洗程序实现对异常数据点的查找,并替换其为其他5次测量的平均值。
(a) 原始信号
(b) 预处理后的平均信号
去噪处理采用了中值滤波器法。中值滤波器法是一种高效的非线性滤波方法,可有效滤除模拟离散信号中的白噪声等随机噪声。在离散时域标准中值(SM)滤波算法中,窗口在信号序列X上滑动,窗口内样本的中值作为每个位置的输出[18]。中值滤波操作可表示为:
Y=Med{X1,X2,…,XN},
(9)
式中,Y为滤波输出值;X为离散的模拟信号序列;N为滤波窗口大小;X1,X2,…,XN为滤波器窗口内样本。在去除异常数据点与滤波后,取6次测量的平均值作为样本的新特征值,预处理前后的电压曲线(样本C=204.761 pF)对比如图7所示。
2.3 特征选择
数据采集模块输出的扫描信号频率可达100 Hz~8 MHz,但由于本次试验样本所使用的电容较小(电容标称值1.6~970 pF),在低频时(<1 MHz),电容等效于开路,此时电容两端电压的幅值均为输入信号幅度, 对所有样本没有区分度,因此在选择特征值时,本方法仅取频率值大于1 MHz的71个信号电压幅值作为样本的特征。
2.4 BP神经网络模型
利用文献[19]所述BP神经网络的设计方法,并经过反复验证、对比、修改后,本文确定了71×16×32×16×1的5层网络结构,如图8所示。
图中,输入层节点个数与样本的特征个数相等,为71个;输出层节点个数为1;3层隐藏层的节点个数分别为16,32,16 。
3 实验结果与分析
3.1 数据集
实验所用数据集均是通过数据获取模块获得,并经过数据清洗与去噪等预处理操作,共计50个样本,每个样本具有71个特征值。特征值是样本电容在阻容分压电路上的分压幅值,对应信号频率在1~8 MHz的线性变化点上,频率步进为100 kHz。样本标签值由常州同惠电子股份有限公司生产的高频LCR数字电桥TH2826在低速、10次平均、C-D测量、自动量程、列表模式条件下测量所得。部分样本曲线如图9所示。
图9 样本曲线举例Fig.9 Examples of sample curves
鉴于标签值与特征值属于不同的量纲,数据集需进行归一化处理方可使用。本文所提方法采用minmax归一化方法把数据转换到[0,1],转换式如下:
(10)
式中,xi为初始数据;min(xi),max(xi)为初始数据的最大值和最小值;x′i为归一化后的输出数据。
3.2 评价指标
为了评价模型的性能,本文采用均方误差(Mean Square Error,MSE)和决定系数R2两个指标评价模型测试的性能。MSE是预测值与真实值之差的平方的均值:
(11)
R2代表所设计模型的解释中方差所占的比例,是模型相对均值模型的比较量纲,计算式如下:
(12)
(13)
(14)
式中,SSE(Sum of Due to Errors)为误差的平方和;SST(Total Sum of Squares)为样本偏离均值的平方和。当R2=1时,SSE=0,说明预测值与真实值完全一致,所设计模型完美地解释了因变量的变化。当R2=0时,SSE=SST,说明预测性能与均值模型一样,模型相对均值模型没有进一步的解释能力,不可用。因此,R2在[0,1]时可用于评价模型的性能,越接近1,表示模型的性能越好。
3.3 训练参数设置
神经网络模型的训练与测试试验是在联众集群(北京)科技有限公司生产的深度学习GPU工作站LZ540-GR上基于Matlab环境开展的。工作站的主要配置为CPU:Intel E5-2620,内存64 GB,GPU GTX 1080Ti×2;操作系统 64位Windows。训练参数设置如表1所示。
表1 神经网络模型训练参数
3.4 实验分析
把获取的50个样本数据分为2组,选择其中的9个作为测试数据集,其余的41个作为训练数据集。在Matlab软件环境下构建训练程序与BP神经网络,并按照上节内容设定训练参数,输入测试数据对其反复学习直至训练完成,最后再用训练好的模型对测试数据进行预测。图10为BP神经网络的训练收敛曲线。
由图10可以看出,MSE性能曲线随着迭代次数的增加快速下降,并在第6次时训练集的MSE值达到设定学习目标值(10-7)而结束训练,而验证集与测试集的MSE值在第3次迭代以后就趋于稳定。图11为BP神经网络在训练集上的回归拟合曲线。决定系数R2在训练、验证、测试数据上的值分别为1,0.997 47,0.998 76,在整个训练集上也达到了0.997 09,表明本文所提BP神经网络模型具有很高的预测精度。
图10 BP神经网络训练收敛曲线Fig.10 Training convergence curve of the BP neural network
(a) 训练样本(R=1)
(b) 验证样本(R=0.997 47)
(d) 全部训练集样本(R=0.997 09)
为了评价模型对新数据的预测能力,利用训练好的模型对测试集进行预测,预测结果如表2所示。
由表2可以看出,模型预测的误差最小仅为0.417%,最大误差为10.107 3%,平均误差约为2.629 1%,且在电容小于10 pF时具有比较大的预测误差。预测结果与原值的对比如图12所示。由图12可以看出,模型的预测结果与原值有很好的一致性,且在测试集上的决定系数R2也达到了0.999 14,说明该模型具有很好的泛化能力。
表2 测试集测试结果
图12 预测结果与原值对比Fig.12 Comparison of predicted results and original values
4 结束语
本文提出了一种基于BP神经网络的高精度电容测量方法。利用数据获取模块采集50个标准电容在71个不同频点的分压幅值,经过数据清洗与中值滤波去噪预处理后,构建了50×70的C-U数据集;然后利用该数据集对隐藏层结构为16×32×16的BP神经网络模型进行训练,获取电容预测模型。试验结果表明,模型预测值与真实值的平均相对误差仅为2.629 1%,具很好的泛化能力。接下来将对方法在边缘终端的部署进一步研究,以实现电容的在线实时测量。此外,还将对网络模型做进一步改进,使模型可输出多个不同频点的预测值,继而获得电容在宽频带范围下的曲线扫描值,以适应不同应用场合的需求。