一种改变Q值的卡尔曼滤波方法、装置及可读存储介质
技术领域
本发明涉及毒气检测领域,特别是一种利用卡尔曼滤波方法来标定检测毒气用的电化学传感器的方法。
背景技术
毒气检测的重要性在很早就已经被人们所认同,20世纪80年代中期以来,小型电化学传感器开始用于检测PEL范围内的多种不同有毒气体,并显示出了良好的敏感性与选择性。
电化学传感器通过与被测气体发生反应并产生与气体浓度成正比的电信号来工作,电化学传感器在使用之前,需要在实验室环境下进行标定,测出一些重要的参数,如零点和灵敏度,用于在实际使用中浓度的计算。在电化学传感器标定时,通常的做法是将电化学传感器放入工装通入不同浓度的标气,根据电化学传感器输出的电压值,计算相关的参数。例如:零点是在通入零气(浓度为0的标准气体)情况下的传感器输出电压;灵敏度指的是在通入不同浓度标准气体情况下,电化学传感器输出电压与浓度的换算比例关系。
然而,由于电化学传感器本身测量精度并不是非常高,其输出的电压值也存在误差,而且电化学传感器输出的信号属于小信号放大,容易受到硬件及其他外界环境的干扰,具体表现为在特定浓度的标气下电压在小范围内波动,偶尔会出现极值的情况,导致后续标定参数的计算不准确。
因此,对电化学传感器输出的电压值进行滤波,并且能够保证电化学传感器对不同浓度的标气做出及时响应也是十分必要的。
现有的电化学传感器输出电压的滤波方法主要包括均值滤波、卡尔曼滤波等。然而这些方法仅仅适用于实际的毒气检测场合,在实验室的传感器标定场合中并不适用。这是由于实验室的传感器标定场合中,标气浓度呈现出随时间阶跃变化的情况、并非连续变化,而当标气浓度阶跃变化是,现有的滤波方法出现滤波结果难以及时跟踪标气浓度的变化,响应不及时、收敛速度慢的问题。
发明内容
本发明的目的在于提供一种基于卡尔曼滤波算法来对电化学传感器进行标定的方法和装置,以克服现有的滤波算法存在的上述问题。
提供了一种改变Q值的电化学传感器输出电压的卡尔曼滤波方法,
将电化学传感器的输出电压假设为一个离散控制过程,离散控制过程受到噪声的影响,该噪声的协方差用Q表示;
利用上一时刻电化学传感器输出电压的最优估计值X(k-1|k-1)对当前时刻电化学传感器输出电压进行估计得到当前时刻电化学传感器输出电压的预测值X(k|k-1);
将当前时刻电化学传感器的实际输出电压作为测量值Z(k),计算所述测量值Z(k)与当前时刻的所述预测值X(k|k-1)的差值,比较该差值与阈值Th的大小,根据所述比较的结果对所述离散控制过程的噪声的协方差Q进行更新;
根据所述更新后的协方差Q来进一步计算当前时刻的卡尔曼增益Kg(k),并进而根据所述测量值Z(k)、所述卡尔曼增益Kg(k)以及当前时刻电化学传感器输出电压的预测值X(k|k-1)来计算当前时刻的电化学传感器输出电压的最优估计值X(k|k)。
在一个方案中,如果测量值Z(k)减去当前时刻的预测值X(k|k-1)的所述差值大于阈值Th,则将Qmax作为更新后的Q;如果测量值Z(k)减去当前时刻的预测值X(k|k-1)的差值小于等于阈值Th,则将Qmin作为更新后的Q,其中Qmax > Qmin,Qmax和Qmin均为预设的经验值。
在一个方案中,Qmax为0.1-5,Qmin为0.01-0.5。
在一个方案中,Qmax为0.5,Qmin为0.05。
在一个方案中,利用上一时刻电化学传感器输出电压的最优估计值X(k-1|k-1)对当前时刻电化学传感器输出电压进行估计得到当前时刻电化学传感器输出电压的预测值X(k|k-1)的具体计算方法是:
X(k|k-1)=X(k-1|k-1),
所述卡尔曼滤波方法,还包括预测对应于X(k|k-1)的后验估计误差协方差P(k|k-1) :
P(k|k-1)=P(k-1|k-1)+Q,
其中P(k-1|k-1)是上一时刻更新后的后验估计误差协方差。
在一个方案中,还包括对当前时刻的后验估计误差协方差P(k|k)进行更新:
P(k|k)=(1-Kg(k))P(k|k-1) 。
在一个方案中,所述计算当前时刻的卡尔曼增益Kg(k)的具体过程为:
Kg(k)=P(k|k-1)/(P(k|k-1)+R)
其中R为测量噪声的协方差;
所述计算当前时刻的电化学传感器输出电压的最优估计值X(k|k)的具体过程为:
X(k|k)=X(k|k-1)+Kg(k)(Z(k)-X(k|k-1)) 。
在一个方案中,R为5。
还提供了一种利用卡尔曼滤波方法对电化学传感器进行标定的方法,将待标定的电化学传感器安装在标定设备中,在标定工装中先后输入不同标准浓度的标气,利用前述的改变Q值的卡尔曼滤波方法对电化学传感器输出的电压数据进行卡尔曼滤波,得到滤波后的输出电压数据,利用所述滤波后的输出电压数据,以及所述标气的标准浓度参数,来计算所述待标定的电化学传感器的零点参数以及灵敏度参数。
还提供了一种改变Q值的电化学传感器输出电压的卡尔曼滤波装置,将电化学传感器的输出电压假设为一个离散控制过程,离散控制过程受到噪声的影响,该噪声的协方差用Q表示,包括:输出电压预测装置,利用上一时刻电化学传感器输出电压的最优估计值X(k-1|k-1)对当前时刻电化学传感器输出电压进行估计得到当前时刻电化学传感器输出电压的预测值X(k|k-1)(304);Q值更新装置,将当前时刻电化学传感器的实际输出电压作为测量值Z(k),计算所述测量值Z(k)与当前时刻的所述预测值X(k|k-1)的差值,比较该差值与阈值Th的大小,根据所述比较的结果对所述离散控制过程的噪声的协方差Q进行更新;最优估计值计算装置,根据所述更新后的协方差Q来进一步计算当前时刻的卡尔曼增益Kg(k),并进而根据所述测量值Z(k)、所述卡尔曼增益Kg(k)以及当前时刻电化学传感器输出电压的预测值X(k|k-1)来计算当前时刻的电化学传感器输出电压的最优估计值X(k|k)。
还提供了一种计算机可读存储介质,以及一种电子设备。
还提供了一种电化学传感器的标定设备,电化学传感器的标定设备包括按键、电流电压转换放大电路、信号处理电路、以及显示输出装置,以及用于安装电化学传感器的探头;所述信号处理电路运行程序,以执行前述的改变Q值的卡尔曼滤波方法,以对电流电压转换放大电路输出的电压数据进行滤波。
技术效果:
本发明利用卡尔曼滤波对电化学传感器电压值进行实时估计,并根据时刻k的测量值和时刻k的预测值之间的残差来判断电化学标气浓度的是否变化,当残差大于设定的阈值时,采用Qmax值,使其进行快速响应,残差小于设定阈值时,采用Qmin值,使其快速收敛。同时,由于快速收敛和响应,使得标定过程可以缩短,从而节约气体用量,降低标定成本。而且本发明中对于卡尔曼滤波模型进行了简化,使得运算简单、效率高。得到了一种特定于电化学传感器标定应用中的卡尔曼滤波方法。
附图说明
图1为本发明的毒气检测用电化学传感器的标定仪器的示意图
图2为图1中电化学传感器标定设备的电路原理图
图3为本发明用于电化学传感器标定的卡尔曼滤波算法的具体数据处理流程图
图4为标气浓度随时间的变化曲线图、以及未处理的电化学传感器原始电压反算出的气体浓度值随时间的变化曲线图
图5为采用现有的滑动均值滤波算法的标定实验结果图
图6为采用现有的卡尔曼滤波算法的标定实验结果图
图7为采用本发明的改变Q值卡尔曼滤波算法的标定实验结果图
图8为本发明改变Q值的电化学传感器输出电压的卡尔曼滤波装置的结构示意图。
具体实施方式
图1所示为本发明所涉及的毒气检测用电化学传感器的标定设备 1。图1所示的毒气检测用电化学传感器的标定设备1包括用于显示滤波后的传感器输出电压波形的显示输出装置12,还包括切换量程等功能的按键11,另外还包括安装电化学传感器13的探头16。
在标定时,将待标定的电化学传感器13安装在探头16中,将探头16置入实验环境的工装中,在工装中依次通入不同浓度的标气。在一个实施例中,标气的浓度如图5-6中的实线线条所示,标气的浓度随着时间从50ppb、100ppb、150ppb、200ppb、300ppb、400ppb……台阶上升式依次阶跃变化。图5-6中横轴为时间轴,纵轴为气体浓度。
本发明所涉及的毒气检测用电化学传感器的标定仪器 1可以标定的电化学传感器13能够检测的毒气包括异丁烯、一氧化碳(CO)、硫化氢(H2S)、甲醛、二氧化硫(SO2)、PM2.5等多种气体中的一种或多种。
图2为本发明涉及的电化学传感器标定设备1的内部电路原理图。
在实验室环境中,采用电化学传感器标定设备1实现电化学传感器的标定。电化学传感器标定设备1的电路结构中包括电化学传感器13、电流电压转换放大电路14、信号处理电路15、以及显示输出装置12。
其中,电化学传感器13,由电极134、过滤器和透气膜132、电解液133、电极引出线(管脚)135、传感器壳体等部分组成。电化学气体传感器的主要原理是把测量对象气体在电极处发生反应,而产生与气体浓度成正比的电信号来工作,利用电极输出的电信号来计算对象气体的浓度。被检测的环境气体通过传感器中的过滤器和透气膜132扩散到传感器的电解液133中。电解液133中的电极134包括一个测量电极,一个反电极和一个参考电极。通过选择适当的电压、电解液133和电极134的材料,被检测的气体在测量电极上会发生化学反应并产生微电流。此电流与检测气体浓度成正比。
电化学传感器13检测得到的该微电流经过电流电压转换放大电路14的转换和放大,成为处理电路或者半导体芯片能够处理的电压信号(例如TTL电平),此电压信号送入信号处理电路15中进行处理。在一个优选实施例中,信号处理电路15是一个诸如FPGA、DSP、ARM、SOC的芯片,该芯片用于对输入的电压信号执行卡尔曼滤波以及其他的信号处理。
信号处理电路15对电压信号进行卡尔曼滤波处理后,得到滤波后的电压波形在显示输出装置12上进行显示输出,显示输出装置12可以是LCD、LED等显示屏。
工作人员根据显示输出装置12输出的滤波后的稳定电压波形,读出电化学传感器1的输出电压值,根据该电压值以及标气的浓度值,计算电化学传感器13在当前浓度和电压情况下的灵敏度、或者在通入零浓度标气的情况下记录零点参数。零点参数、以及在不同浓度下的灵敏度用于电化学传感器1在实际使用中从电压值向浓度值的换算。
[现有的卡尔曼滤波算法]
为了避免电化学传感器1受到外界环境的干扰、保持输出值的稳定,现有技术中采用均值滤波、卡尔曼滤波等滤波方法对电化学传感器输出电压的进行滤波。
卡尔曼滤波(Kalman filter)是一种高效率的递归滤波器(自回归滤波器),它能够从一系列的不完全及包含噪声的测量中,估计动态系统的真实状态。卡尔曼滤波会根据各测量量在不同时间下的值,考虑各时间下的联合分布,再产生对未知变数的估计。
卡尔曼滤波算法假设系统是一个离散控制过程的系统,该系统可用一个线性随机微分方程来述:
X(k)=A·X(k-1)+B·U(k)+W(k)……(1)
再加上系统的测量值:
Z(k)=H·X(k)+V(k)……(2)
上述式(1)和式(2)中,X(k)是k时刻的系统真实状态,U(k)是k时刻对系统的控制量。A和B是系统参数,对于多模型系统,他们为矩阵。Z(k)是k时刻的测量值,H是测量系统的参数,对于多测量系统,H为矩阵。W(k)和V(k)分别表示离散控制过程和测量的噪声。他们被假设成高斯白噪声(White Gaussian Noise),他们的协方差(covariance)分别是Q,R(这里假设他们不随系统状态变化而变化)。
对于满足上面的条件(线性随机微分系统,过程和测量都是高斯白噪声),卡尔曼滤波器是最优的信息处理器。可以结合协方差Q、R来估算系统的最优化输出。
卡尔曼滤波是一种递归的估计,即只要获知上一时刻状态的估计值以及当前状态的测量值就可以计算出当前状态的估计值,因此不需要记录观测或者估计的历史信息。
卡尔曼滤波器的操作包括两个阶段:预测与更新。在预测阶段,滤波器使用上一状态的估计,做出对当前状态的估计。在更新阶段,滤波器利用对当前状态的测量值优化在预测阶段获得的预测值,以获得一个更精确的新估计值。
1、阶段一:预测
预测阶段包括下一时刻系统的状态的预测以及协方差的预测两部分预测。
首先要利用系统的过程模型,来预测下一时刻系统的状态。假设现在的系统状态是k,根据系统的模型,可以基于系统的上一状态而预测出现在状态:
X(k|k-1)=A·X(k-1|k-1)+B·U(k)………(3)
式(3)中,X(k|k-1)是利用上一状态预测的结果,X(k-1|k-1)是上一状态最优的结果,U(k)为现在状态的控制量,如果没有控制量,它可以为0。
其次是k时刻的后验估计误差协方差矩阵P(k|k-1)的预测,对应于X(k|k-1)的协方差P(k|k-1)通过下面式子(4)来预测:
P(k|k-1)=A·P(k-1|k-1)·A’+Q ……… (4)
式(4)中,P(k|k-1)是X(k|k-1)对应的协方差,P(k-1|k-1)是X(k-1|k-1)对应的协方差,A’表示A的转置矩阵,Q是系统过程的协方差。
以上式子(3)、(4)就是卡尔曼滤波器5个公式当中的前两个,也就是对系统的预测过程。
2、阶段二:更新
有了现在状态的预测结果,然后再收集现在状态的测量值Z(k)。结合预测值和测量值,可以得到现在状态(k)的最优化估算值X(k|k):
X(k|k)= X(k|k-1)+Kg(k)·(Z(k)-H·X(k|k-1)) ……… (5)
其中Kg为卡尔曼增益(Kalman Gain):
Kg(k)= P(k|k-1)·H’/(H·P(k|k-1)·H’+ R) ……… (6)
到现在为止,已经得到了k状态下最优的估算值X(k|k)。但是为了要令卡尔曼滤波器不断的运行下去直到系统过程结束,还要更新k状态下X(k|k)的协方差:
P(k|k)=(I-Kg(k)·H)P(k|k-1) ……… (7)
其中I为矩阵,对于单模型单测量,I=1。当系统进入k+1状态时,P(k|k)就是式子(4)的P(k-1|k-1)。
以上式子(5)-(7)就是卡尔曼滤波器5个公式当中的后三个,是对系统的更新过程。
如图6所示,现有的卡尔曼滤波算法滤波后的电压值反算出的气体浓度值曲线,对于在实验室下环境下对传感器进行标定的浓度阶跃变化气体来说,存在响应不及时、收敛速度慢的问题。实线线条所示的标气浓度发生阶跃变化之后,虚线所示的卡尔曼滤波后的实际估算出的气体浓度值,并不能随着标气浓度的变化而及时改变,需要在多个时刻的迭代之后,其气体浓度值的才能跟上标气真实浓度的变化。
[电化学传感器标定中的卡尔曼滤波算法模型]
本发明的卡尔曼滤波算法模型
以下对本发明中用于电化学传感器标定中的卡尔曼滤波算法进行描述。本发明中的卡尔曼滤波算法同样包括预测和更新两个阶段。
一、预测
由于在电化学传感器标定时,通入的气体的浓度在一定时间内是保持不变的,因此这段时间内在通入相同浓度的标气(标定用的标准浓度的气体)时,我们认为当前时刻电化学传感器输出的电压与前一刻输出的电压应该是相同的,增益为1,所以A=1。在气体标定的实验室环境下,由于干扰很小,U(k)过程中没有控制量,所以取U(k)=0。因此在电化学传感器标定环境下,当前时刻预测值的预测公式(3)可以简化为下面公式(8):
X(k|k-1)=X(k-1|k-1)………(8)
对应于X(k|k-1)的后验估计误差协方差P(k|k-1)的预测公式(4)可以改成:
P(k|k-1)=P(k-1|k-1)+Q………(9)
二、更新
在电化学传感器的标定中,因为测量的值Z(k)是电化学传感器输出电压值,与预测的电压X(k|)是直接对应,增益为1,所以H=1。式子(5),(6),(7)可以简化如下:
X(k|k)=X(k|k-1)+Kg(k)(Z(k)-X(k|k-1))………(10)
其中,Kg(k)=P(k|k-1)/(P(k|k-1)+R)………(11)
P(k|k)=(1-Kg(k))P(k|k-1) ;………(12)
其中R为测量噪声V(k)的协方差,R与仪表的电路结构、元器件的固有参数相关,在本发明中,根据实际测定R取值为5。在其他实施例中,R根据元器件参数可以取其他值,例如1~10的值。
图3显示了本发明的用于电化学传感器标定的卡尔曼滤波算法的具体数据处理流程图。如图5-6实线线条所示,在标定实验环境下,在工装中分时段依次通入50ppb、100ppb、150ppb、200ppb、300ppb、400ppb浓度的标定用的标准浓度气体(简称标气),根据不同的标定场合,标准气体可以是异丁烯、雾霾气体、甲醛、一氧化碳等等有毒气体。标气的浓度可以根据所需要的精度来灵活调整,当需要较高标定精度时,两个时段中的标气浓度差值,可以较小,例如10ppb,当需要较低标定精度时,两个时段中的标气浓度差可以较低,例如100ppb。
标气进入图2中的电化学传感器13中,产生体现浓度的电流微信号,该信号通过电极引出线(管脚)135输入电流电压转换放大电路14,经过转换放大,得到信号处理电路15能够识别处理的电信号(例如TTL电平),信号处理电路15对该TTL电信号进行卡尔曼滤波处理,得到滤波后的电压信号,将该滤波后的电压信号与标气浓度进行换算(例如用电压值除以标气浓度),得到电化学传感器13在该浓度和电压范围的灵敏度。通入不同浓度的标气,分别测量电化学传感器13在不同浓度和电压范围的灵敏度,完成电化学传感器13的灵敏度标定。
初始化
在步骤302,获得初始化后验估计误差协方差P(k|k)的初始值P(0|0),根据经验值可以取为0。在步骤303,以及获取传感器采集的电压值X(0|0)为系统检测值,X(0|0)可以在通入50ppb气体的稳定后的电压值作为X(0|0),也可以在输出电压稳定后,取前几个时刻的电压值的平均值作为X(0|0)。在本发明所涉及的电化学传感器的标定应用中,电压值均为一维的标量、协方差也为一维的标量。
预测
步骤304,在气体标定过程中,假设根据上一时刻(时刻k-1)的最优估计值X(k-1|k-1)采用公式(8)来估计当前时刻的电化学传感器输出电压的预测值X(k|k-1);
X(k|k-1)=X(k-1|k-1)………(8)
步骤306,根据化学传感器的实际输出电压Z(k)-X(k|k-1)中的差异与阈值Th的大小关系,来确定如何更新离散控制过程噪声的协方差Q,当差异大于阈值Th时,采用经验值Qmax作为更新后的Q(步骤307、309),当差异小于等于阈值Th时,采用经验值Qmin作为更新后的Q(步骤308、309),接下来根据步骤309更新得到的Q,在步骤310利用公式(9)预测协方差P(k|k-1):
P(k|k-1)=P(k-1|k-1)+Q………(9)
在一个实施例中,经验值Qmax取值为0.5、Qmin取值为0.05,阈值Th选择为。在其他的实施例中,Qmax和Qmin根据电流电压转换放大电路14的放大倍数,电路元件的物理特性,信号处理电路15所采用的电平参数等来设定,例如可以Qmax可以取0.1-5,Qmin可以取0.01-0.5等参数,Qmax大于Qmin。
在现有的卡尔曼滤波技术中,协方差Q是固定不变的,导致后验估计误差协方差P(k|k-1)的更新速度很慢,在电化学传感器标定的应用中,当标气的浓度从50ppb阶跃上升到100ppb时,P(k|k-1)很难立刻跟上标气浓度的变化,导致卡尔曼增益、最优估计值X(k|k)的变化均落后于实际气体浓度的变化(如图6所示),传统卡尔曼滤波算法在气体浓度阶跃变化时,需要多个时刻的循环、迭代,才能跟上实际其他浓度的变化,存在收敛速度慢、响应速度慢的问题,同时由于需要很长时间才能稳定,需要通入标气的标定时间也较长,导致了宝贵的标气资源的浪费。本发明采用可变的Q值,在标气浓度阶跃变化时,能够使得后验估计误差协方差P(k|k-1)快速更新,使得卡尔曼滤波快速响应、快速收敛,进而能够节约标气,降低成本,提高传感器标定速度,提高效率(如图7所示)。
更新
在根据公式(8)-(9)分别得到电化学传感器输出电压的预测值X(k|k-1)以及在步骤310中得到的后验估计误差协方差P(k|k-1)之后,在步骤311中根据公式(11)计算卡尔曼增益Kg(k):
Kg(k)=P(k|k-1)/(P(k|k-1)+R)………(11)
其中R为测量噪声V(k)的协方差,R与仪表的电路结构、元器件的固有参数相关,在本发明中,根据实际测定R取值为5。在其他实施例中,R根据元器件参数可以取其他值,例如1~10的值。
在步骤305中利用公式(10),根据电化学传感器采集到的电压测量值Z(k)、步骤311中计算出的卡尔曼增益Kg(k)、以及步骤304中计算的当前状态的预测值X(k|k-1),对预测值X(k|k-1)进行更新,得到更新后的最优估计值X(k|k):
X(k|k)=X(k|k-1)+Kg(k)(Z(k)-X(k|k-1))………(10)
并在步骤312中对后验估计误差协方差也进行更新:
P(k|k)=(1-Kg(k))P(k|k-1)………(12)
并在步骤314中输出该最优估计值。而后,对k进行更新,进入下一个时刻循环(步骤313和315)。
C语言代码的卡尔曼滤波实现如下:
在根据步骤306-309得到更新后的离散控制过程噪声的协方差Q值之后,将上一时刻的最优估计值、测量噪声V(k)的协方差R,输入下面的KarmanFilter函数中,计算当前时刻的的最优估计值X(k|k)。
static double KalmanFilter(const double ResrcData, doubleProcessNiose_Q, double MeasureNoise_R)
{
double R = MeasureNoise_R;
double Q = ProcessNiose_Q;
static double x_last;
double x_mid = x_last;
double x_now;
static double p_last;
double p_mid ;
double p_now;
double kg;
x_mid=x_last; //x_last=x(k-1|k-1),x_mid=x(k|k-1)
p_mid=p_last+Q; //p_mid=p(k|k-1),p_last=p(k-1|k-1),Q=噪声
kg=p_mid/(p_mid+R); //kg为kalman filter,R为噪声
x_now=x_mid+kg*(ResrcData-x_mid); //估计出的最优值
p_now=(1-kg)*p_mid; //最优值对应的协方差
p_last = p_now; //更新协方差值
x_last = x_now; //更新系统状态值
return x_now;
}
其中,ProcessNiose_Q表示更新后的离散控制过程噪声的协方差Q值;MeasureNoise_R表示测量噪声V(k)的协方差R,在一个实施例中R取值为5;ResrcData表示上一时刻的最优估计值X(k-1|k-1)。
本发明利用卡尔曼滤波对电化学传感器电压值进行实时估计,并根据时刻k的测量值和时刻k-1预测值之间的残差来判断电化学标气浓度的是否变化,当残差大于设定的阈值时,采用Qmax值,使其进行快速响应,残差小于设定阈值时,采用Qmin值,使其快速收敛。
[本发明算法与现有算法的实验比较]
为了验证卡尔曼滤波处理对于提高电化学传感器参数标定的作用。我们在电化学传感器1的信号处理电路15中嵌入了三种不同的滤波方法,第一种滤波方法是滑动均值滤波,第二种滤波方法是不改变Q值的卡尔曼滤波方法,第三种是本发明的可变Q值的卡尔曼滤波方法。
本试验使用的是TVOC电化学传感器,将电化学传感器放入标定工装后,打开电化学标定气体发生装置,开始向电化学标定工装输入50ppb浓度的标气,标气浓度随时间变化的曲线如图4-7中实线所示。信号处理电路15每隔三秒输出三种不同滤波方法对应输出的电压值。试验首先通入50ppb的异丁烯标气,通入时间为10分钟,接着依次通入浓度为100ppb,150ppb,200ppb,300ppb和400ppb的标气,通入标气时间各5分钟,试验完成后,将信号处理电路15输出的电压数据进行保存,最后进行数据分析。
没有经过滤波处理的电化学传感器原始电压随时间的变化曲线图如图4所述,图中纵轴为标气浓度值,单位为ppb。实线为通入的标准气体浓度值随时间的变化曲线,虚线代表电流电压转换放大电路14输出的未处理的原始电压反算出的浓度值。
经过滑动均值滤波处理的电压数据反算气体浓度值曲线绘图如图5,图中纵轴为标气浓度值,单位为ppb。实线为通入的标准气体浓度值,虚线代表根据信号处理电路15经过滑动均值滤波电压反算出的浓度值。
经过普通卡尔曼滤波处理的电压数据反算气体浓度值曲线绘图如图6,图中纵轴为标气浓度值,单位为ppb。实线为通入的标准气体浓度值,虚线代表根据信号处理电路15输出经过卡尔曼滤波电压反算出的浓度值。其中测量噪声R设置为5,过程噪声Q设为0.05。
经过改变Q值的卡尔曼滤波处理的电压数据反算气体浓度值曲线绘图如图7,图中纵轴为标气浓度值,单位为ppb。实线为通入的标准气体浓度值,虚线代表根据信号处理电路15输出经过滤波电压反算出的浓度值。其中测量噪声R设置为5,过程噪声Qmax设为0.5,Qmin设为0.05。
为了量化三种滤波算法的优劣,采用相对误差来量化数据差异,将为三种滤波算法得到的滤波后的气体浓度曲线数据与真实标气浓度曲线数据进行比较,计算相对误差,测量相对误差公式如下:
式中:R为根据信号处理电路15输出电压反算出的浓度值,r为电化学标气输出设备输出标气的浓度值,e为相对误差。表1统计了原始电压浓度值,几种滤波方法计算的浓度值与标准气体浓度值的相对误差。
表1 相对误差
由此可见,本发明提出的改变Q值的卡尔曼滤波算法,与实际标气浓度数据相比具有最低的相对误差,并且从图5-7来看,本发明的滤波后的电压数据能够在标气浓度阶跃变化时,快速响应和收敛,及时跟踪标气浓度的变化,快速、真实地反映实际气体的浓度。
如图8所示,为本发明改变Q值的电化学传感器输出电压的卡尔曼滤波装置的结构示意图。
本发明将电化学传感器的输出电压假设为一个离散控制过程,离散控制过程受到噪声的影响,该噪声的协方差用Q表示。
本发明的卡尔曼滤波装置包括输出电压预测装置(801),Q值更新装置(802),以及最优估计值计算装置(803)三部分组成,其中:
输出电压预测装置(801),利用上一时刻电化学传感器输出电压的最优估计值X(k-1|k-1)对当前时刻电化学传感器输出电压进行估计得到当前时刻电化学传感器输出电压的预测值X(k|k-1)(304);
Q值更新装置(802),将当前时刻电化学传感器的实际输出电压作为测量值Z(k),计算所述测量值Z(k)与当前时刻的所述预测值X(k|k-1)的差值,比较该差值与阈值Th的大小,根据所述比较的结果对所述离散控制过程的噪声的协方差Q进行更新(306~309);
最优估计值计算装置(803),根据所述更新后的协方差Q来进一步计算当前时刻的卡尔曼增益Kg(k),并进而根据所述测量值Z(k)、所述卡尔曼增益Kg(k)以及当前时刻电化学传感器输出电压的预测值X(k|k-1)来计算当前时刻的电化学传感器输出电压的最优估计值X(k|k)(311,305)。
本发明中的卡尔曼滤波方法可以应用于一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,当程序被处理器执行时,使得处理器执行如上所述的方法。
应该理解,上述的装置实施例仅是示意性的,本申请的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
所述集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本申请的方法及其核心思想。同时,本领域技术人员依据本申请的思想,基于本申请的具体实施方式及应用范围上做出的改变或变形之处,都属于本申请保护的范围。综上所述,本说明书内容不应理解为对本申请的限制。