登录    注册      
    
  

News Message

传感器的温度修正算法



传感器的温度修正算法



传感器的温度修正是使用传感器时常遇到的问题,尤其是需要传感器工作在一个较宽的温度范围时,这个问题更加突出。这里描述的方法是我在使用某型压力传感器时厂家提供的,这种方法不一定是最好的,但是它比较简单,适用范围也比较广。我在几种不同类型的传感器上应用了这个方法,效果还不错。因此,写这篇小文与大家交流。




首先,不考虑温度的影响,在某一固定的温度下,设传感器的输入输出值可以用多项式函数表示:






这里x 是传感器的输出(比如电压值或直接就是数字量),y 是传感器所测量的物理量的真实值。实际上,只要传感器的响应可以表示为单调连续函数,就可以利用多项式函数来逼近到任意精度,因此,一般情况下上面的式子是可以成立的。ai可以根据实验数据利用最小二乘拟合(LMS)的方法计算出来,唯一需要注意的是对于N次多项式,至少需要N+1个数据点才可以计算出。实际应用中,N的取值不宜过大,一般取为4以下就足够了,而数据点则是多多益善。


上面的式子可以写成矩阵的形式:






 


 


然后考虑温度的影响,不同温度下,上面公式中ai的 会发生变化。也就是说ai是温度t 的函数。类似的,也可以用多项式函数来逼近:






最终输出则可以表示为:






只要将这里的bij 确定下来就可以完成温度修正工作了,同样,上面的公式也可以表示为矩阵形式。






写为矩阵形式后的表达式非常的简洁,同时也易于在程序中实现。下面再多说一句,多项式函数可以通过一个小小的变型来减少乘法的次数。






这种方法称之为多项式的Horner 算法,也被称为秦九韶算法(虽然知道这个名称的人不多)。


上面的计算都是假设bji已经求出来了,但还都没有说明如何计算bji。下面将讨论这个问题。最直观的方式就是在一系列不同温度下,用最小二乘拟合的方法计算出一系列的多项式系数ai(t)。ai(t)是M次多项式函数,因此我们至少要计算出M+1个不同温度下的系数,也就是说要至少先进行M+1次多项式拟合。然后根据ai(t)拟合出bji,很显然,这里又需要进行N+1次多项式拟合。前后两次总共要进行至少M+N+2 次的多项式拟合才能求出所有的系数。


另一种方法是直接去求所有的bji。将所有的bji排成一个列向量:






定义一个辅助矩阵:






上述公式中的下标是标注的是第几次的测量值,xp表示第p个测量值。


则传感器的经过温度修正后的测量值为:






而传感器测量量的真实值为:






则我们的目标就是求b使得矢量 y-z 最小,这个最小如果是在2-范数的意义下的最小则是最小二乘拟合。这也就等效于求下列线性代数方程的最小二乘意义下的最优解。






这个方程的解法很多,比如说转换成下面的普通的线性代数方程:






上式中FT是F的转置。其他的方法还有奇异值分解一类的数值算法。想详细研究这个问题的话可以参考各种版本的数值分析课本。


总结,本文描述的方法比较简单、粗暴,之所以这么说是因为它不去探究温度漂移的物理本质,只是用简单的多项式函数来补偿温漂的结果。但就是因为它不依赖于某个具体的物理模型,可应用的范围才会很广。
————————————————
版权声明:本文为CSDN博主「liyuanbhu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/liyuanbhu/article/details/7725824



Share Http URL:  http://www.wittx.cn/get_news_message.do?new_id=936



请输入评论