赞
踩
本文转自传感器的温度修正方法
传感器的温度修正是使用传感器时常遇到的问题,尤其是需要传感器工作在一个较宽的温度范围时,这个问题更加突出。这里描述的方法不一定是最好的,但是它比较简单,适用范围也比较广。
首先,不考虑温度的影响,在某一固定的温度下,设传感器的输入输出值可以用多项式函数表示:
y = ∑ i = 0 N a i x i = a 0 + a 1 x + a 2 x 2 + ⋯ + a N x N y=\sum_{i=0}^{N} a_{i} x^{i}=a_{0}+a_{1} x+a_{2} x^{2}+\cdots+a_{N} x^{N} y=i=0∑Naixi=a0+a1x+a2x2+⋯+aNxN
这里 x x x是传感器的输出, y y y是传感器所测量的物理量的真实值。实际上,只要传感器的响应可以表示为单调连续函数,就可以利用多项式函数来逼近到任意精度,因此,一般情况下上面的式子是可以成立的。 a i a_i ai可以根据实验数据利用最小二乘拟合( L M S LMS LMS)的方法计算出来。实际应用中,N的取值不宜过大,一般取为4以下就足够了,而数据点则是越多越好。
然后考虑温度的影响,不同温度下,上面公式中 a i a_i ai的会发生变化。也就是说 a i a_i ai是温度 t t t的函数。类似的,这两者之间的关系也可以用多项式函数来逼近:
a i ( t ) = ∑ j = 0 M b j i t j = b 0 i + b 1 i t + b 2 i t 2 + ⋯ + b M i t M a_{i}(t)=\sum_{j=0}^{M} b_{j i} t^{j}=b_{0 i}+b_{1 i} t+b_{2 i} t^{2}+\cdots+b_{M i} t^{M} ai(t)=j=0∑Mbjitj=b0i+b1it+b2it2+⋯+bMitM
通过之前博文介绍过的最小二乘法的一般计算步骤,通过构建齐次线性方程组,我们可以求出最优的 b j i b_{ji} bji。(求 i i i次最小二乘解)
接下来便可以进行温度修正工作了,将上述公式表示为矩阵形式则有:
T
=
(
1
t
⋯
t
M
)
\mathbf{T}=\left(
B
=
(
b
00
b
01
⋯
b
0
N
b
10
b
11
⋯
b
1
N
⋮
⋮
⋱
⋮
b
M
0
b
M
1
⋯
b
M
N
)
\mathbf{B}=\left(
A
=
(
1
t
⋯
t
M
)
⋅
(
b
00
b
01
⋯
b
0
N
b
10
b
11
⋯
b
1
N
⋮
⋮
⋱
⋮
b
M
0
b
M
1
⋯
b
M
N
)
=
T
⋅
B
\mathbf{A}=\left(
y = T ⋅ B ⋅ X y=\mathbf{T} \cdot \mathbf{B} \cdot \mathbf{X} y=T⋅B⋅X
写为矩阵形式后的表达式非常的简洁,同时也易于在程序中实现。下面再多说一句,多项式函数可以通过一个小小的变形来减少乘法的次数。
y
=
∑
i
=
0
N
a
i
x
i
=
a
0
+
a
1
x
+
a
2
x
2
+
⋯
+
a
N
x
N
=
a
0
+
x
(
a
1
+
x
(
a
2
+
x
(
a
3
+
⋯
 
)
)
)
这种方法称之为多项式的 H o r n e r Horner Horner算法。
总结,本文描述的方法比较简单、粗暴,之所以这么说是因为它不去探究温度漂移的物理本质,只是用简单的多项式函数来补偿温漂的结果。但正是因为它不依赖于某个具体的物理模型,可应用的范围才会很广。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。