本发明涉及一种基于8051的压力传感器校准算法。
背景技术:
压力传感器是现实生活中最常用的一种传感器,其广泛应用于各种工业控制,汽车电子,医疗设备等多种领域。但由于传感器半导体材料的物理特性,其受温度影响较大,会出现明显的零点和灵敏度的漂移,尤其是在高温区间出现温漂现象更明显,所以必须要对压力传感器进行温度补偿,尽可能降低甚至消除温漂对其的影响。
目前常用的补偿方法主要是硬件电路补偿和软件算法补偿两种,硬件电路补偿方法主要有在桥臂上串并联合适的恒定电阻的方法,桥外串并联热敏电阻的方法以及双电桥补偿技术等。但用硬件电路进行校正大都存在电路复杂、调试困难、精度低、通用性差、成本高等缺点,不利于工程实际应用。软件算法补偿主要是通过实验的方法来确定压力传感器的静态特性,将微处理器和压力传感器结合起来,充分利用丰富的软件功能、结合一定的补偿算法对传感器温度的附加误差进行修正。软件算法补偿由于其高精度和低成本所以更多的用于实际工程。
目前软件算法补偿方法主要有曲线曲面拟合方法和神经网络方法,曲线曲面拟合精度不高,而作为主流的神经网络方法的最大缺点是网络不稳定,而且需要大量样本,训练时间教长。
技术实现要素:
本发明的目的在于提供一种基于8051的压力传感器校准算法,使得压力传感器校准误差在0.119%以内,且充分考虑了成本,硬件计算能力以及运行速度等问题,具有一定的实际工程应用价值。
为实现上述目的,本发明的技术方案是:一种基于8051的压力传感器校准算法,包括如下步骤,
步骤s1:选定压力传感器,预设n个温度值,m个压力值,其中,n个温度值分别为t0、t1、t2、t3、t4、t5,t0~t2为低常温段,t2~t5为高温段;
步骤s2:固定温度值不变,进行压力传感器测试,对其压力值p和输出电压u做多项式拟合,得到p-u函数pn=fn(u);
步骤s3:在低常温段和高温段分别对压力传感器进行测试,并分别进行如下处理;
(1)在低常温段下,对压力传感器进行测试,将测得的实际输出电压代入步骤s2的p-u函数pn=fn(u)中,从而得到压力传感器在低常温段各温度值下对应的压力值;而后,对低常温段各温度值及相对应的压力值运用二阶牛顿插值算法,具体如下:
p=f(t0)+f(t0,t1)(t-t0)+f(t0,t1,t2)(t-t0)(t-t1)
由于f(t0)=p0;f(t1)=p1;f(t2)=p2;
则
(2)在高温段下,对压力传感器进行测试,将测得的实际输出电压代入步骤s2的p-u函数pn=fn(u)中,从而得到压力传感器在高温段各温度值下对应的压力值;对高温段各温度值下及对应的压力值分别运用三次样条插值算法,因为p(t)满足三次样条插值的三个条件,再加上两端自然边界p"(t2)=0,p"(t5)=0,则可以得到三对角方程组,写成矩阵形式为:
其中,
对矩阵求解可以求得m0,m1,m2,m3的值,从而得到关于温度的p(t);
由(1)、(2)最终得到p、t、u三者之间的函数关系表达式,即建立了补偿算法模型。
在本发明一实施例中,t0、t1、t2、t3、t4、t5分别取0℃,15℃,30℃,40℃,50℃,60℃。
在本发明一实施例中,m个压力值分别取0kpa,4kpa,8kpa。
相较于现有技术,本发明具有以下有益效果:本发明方法使得压力传感器校准误差在0.119%以内,且充分考虑了成本,硬件计算能力以及运行速度等问题,具有一定的实际工程应用价值。
附图说明
图1为硬件系统架构。
图2为实验选定的传感器在不同温度下的输出特性曲线。
具体实施方式
下面结合附图,对本发明的技术方案进行具体说明。
本发明的一种基于8051的压力传感器校准算法,包括如下步骤,
步骤s1:选定压力传感器,预设n个温度值,m个压力值,其中,n个温度值分别为t0、t1、t2、t3、t4、t5,t0~t2为低常温段,t2~t5为高温段;
步骤s2:固定温度值不变,进行压力传感器测试,对其压力值p和输出电压u做多项式拟合,得到p-u函数pn=fn(u);
步骤s3:在低常温段和高温段分别对压力传感器进行测试,并分别进行如下处理;
(1)在低常温段下,对压力传感器进行测试,将测得的实际输出电压代入步骤s2的p-u函数pn=fn(u)中,从而得到压力传感器在低常温段各温度值下对应的压力值;而后,对低常温段各温度值及相对应的压力值运用二阶牛顿插值算法,具体如下:
p=f(t0)+f(t0,t1)(t-t0)+f(t0,t1,t2)(t-t0)(t-t1)
由于f(t0)=p0;f(t1)=p1;f(t2)=p2;
则
(3)在高温段下,对压力传感器进行测试,将测得的实际输出电压代入步骤s2的p-u函数pn=fn(u)中,从而得到压力传感器在高温段各温度值下对应的压力值;对高温段各温度值下及对应的压力值分别运用三次样条插值算法,因为p(t)满足三次样条插值的三个条件,再加上两端自然边界p"(t2)=0,p"(t5)=0,则可以得到三对角方程组,写成矩阵形式为:
其中,
对矩阵求解可以求得m0,m1,m2,m3的值,从而得到关于温度的p(t);
由(1)、(2)最终得到p、t、u三者之间的函数关系表达式,即建立了补偿算法模型。
在本发明实例中,t0、t1、t2、t3、t4、t5分别取0℃,15℃,30℃,40℃,50℃,60℃。
在本发明实例中,m个压力值分别取0kpa,4kpa,8kpa。
本发明方法,采用了如下三个算法:
1、最小二乘法多项式拟合
在所有曲线拟合方法中,最小二乘法多项式拟合是最常用也是最适合的方法。
对于一组给定数据(xi,yi),(i=0,1,...,m),这里yi=f(xi),其中f(x)∈c[a,b],要求一个函数y=s*(x)与所给数据{(xi,yi)(i=0,1,...,m)}拟合,若记误差
δi=s*(xi)-yi,i=0,1,2,...,m,
δ=(δ0,δ1,δ2,...,δm)t,
设
这里的
这就是一般的最小二乘法逼近,即几何上的曲线拟合的最小二乘[11]。
在用最小二乘拟合曲线时,首先要确定s(x)的形式,一般是通过给定数据描图,根据点的位置大致确定s(x)的形式,并通过实际计算选出比较好的结果,一般为线性形式。若
的极小点
则令
方程存在唯一解
从而得到函数f(x)的最小二乘解为
2、牛顿插值
newton法是靠不停迭代来逼近函数方程的解,它实际上是通过曲线一系列切线与x轴的交点的横坐标来逼近曲线与x轴交点的横坐标。
设函数f(x)在[a,b]上有定义,对于n+1个节点(xj,yj),j=0,1,...,n,其中xj∈[a,b]互不相同,满足f(xj)=yj,j=0,1,...,n.对任意x∈[a,b],由一阶差商的定义
则
f(x)=f(x0)+f[x,x0](x-x0),
类似的通过求各阶的差商,递推得到
f(x)=f(x0)+f[x0,x1](x-x0)+...+f(x0,x1,x2,...,xn)(x-x0)(x-x1)...(x-xn-1)+...+pn(x)+rn(x),
pn(x)=f(x0)+f(x0,x1)(x-x0)+...+f(x0,x1,x2,...,xn)(x-x0)(x-x1)...(x-xn-1)
其中pn(x)为次数不高于n次的x的多项式,可以验证pn(xi)=f(xi)(i=0,1,…,n).pn(x)称为过n+1个节点的f(x)的n阶牛顿插值多项式。rn(x)为插值多项式的余项。
3、三次样条插值
样条插值是一种工业设计中常用的得到平滑曲线的一种方法,其基本思想是在由两相邻节点所构成的每个小区间内用低次多项式来逼近。样条函数插值曲线实际上是由分段三次曲线并接而成,在连接点上即样点上要求二阶导数连续,这样能保证曲线有更好的光滑性。
设在区间[a,b]上给定一组节点x:a=x0<x1<...<xn=b,以及一组对应的函数值y0,y1,...,yn.若函数s(x)满足三个条件:
(1)在每一个子区间[xk-1,xk](k=1,2,..,n)上,s(x)是一个不超过三次的多项式;
(2)在每个节点上满足s(xi)=yi,i=0,1,...,n;
(3)s(x)在区间[a,b]上是二次连续可微函数
则称s(x)为[x,y]节点上的三次样条插值函数。
假定s”(xj)=mj(j=0,1,...,n),由于s(x)在区间[xj,xj+1]上是三次多项式,所以s”(x)在[xj,xj+1]上是线性函数,表示为:
对s”(x)积分两次并利用s(xj)=yj,s(xj+1)=yj+1可得
(其中hj=xj+1-xj,j=0,1,...n)
求出mj(j=0,1,...,n),即可得到所求的三次样条插值函数s(x)。
利用条件(3)可知s(x)在节点xj(j=1,2,...,n-1)处应该满足连续性条件
s(xj-0)=s(xj+0),s'(xj-0)=s'(xj+0),s"(xj-0)=s"(xj+0),
再加上相应的边界条件可得到关于mj(j=0,1,...,n)的三对角方程组,利用追赶法可求得唯一解。
基于上述三个算法,以下讲述本发明的具体方案。
如图1所示,为本发明采用的具体硬件系统架构,本发明基于8051的压力传感器校准算法构建温度补偿算法模型的具体过程如下:
选定一款最大量程为10kpa的压力传感器,在温度分别为0℃,15℃,30℃,40℃,50℃,60℃,压力值0kpa,4kpa,8kpa下进行标定,得到6x3组标定点。
首先固定温度t不变,对压力p和输出电压u做多项式拟合,得到pn=fn(u)。选定0℃,15℃,30℃为低常温区间,将测得的实际电压分别带入第一步的线性p-u函数,从而得到不同标定温度相对应的输出电压p值。对此区间温度t和电压p运用二阶牛顿插值算法,
p=f(t0)+f(t0,t1)(t-t0)+f(t0,t1,t2)(t-t0)(t-t1)
令t0=0,f(t0)=p0;t1=15,f(t1)=p1;t2=30,f(t2)=p2;
则
同理,对于高温区间30℃,40℃,50℃,60℃,对温度t和压力p分别运用三次样条插值算法,因为已知p(t)满足三次样条插值的三个条件,再加上两个两端自然边界p"(t0)=0,p"(tn)=0,根据公式可以求得mj(j=0,1,...,n)的值,从而得到关于温度t的p(t)。压力p也是根据第一步曲线拟合函数,由传感器实际输出电压u得到,所以综合最小二乘法曲线拟合函数和三次样条插值函数即可得到关于t,u,p三者之间的关系。
根据多项式拟合最小二乘法原理,可以得到不同温度t下的pn=fn(u),曲线拟合函数通过在matlab中编程实现。根据标定的数据点在图2的分布可以看出压力和传感器输出电压成线性关系。
t=0p=0.45u-1.0624;
t=15p=0.465u-0.8561;
t=30p=0.4788u-0.7957;
t=40p=0.4883u-0.7384;
t=50p=0.4998u-0.6760;
t=60p=0.5090u-0.6241。
由标定的数据根据上述牛顿差值和三次样条差值原理可求得各项系数,最终得到p,t,u三者之间的函数关系表达式,即建立了补偿算法模型。
对建立的温度补偿算法模型进行验证,低常温段选定3个温度点5℃,10℃,20℃进行测试,收集输出电压带入补偿算法模型做温度补偿,得到补偿结果表1。
表1
对比标准压强和经过补偿算法校准后的压强可以发现,低常温段测试结果的最大误差为0.0119kpa,相对于传感器满量程的综合误差为:
高温段选定35℃,45℃,55℃三个温度点进行测试,结果如表2所示。
表2
高温段的测试结果最大误差为0.0095kpa,相对于传感器满量程的综合误差为:
以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。