基于BP神经网络的一种传感器温度补偿方法
扫描二维码
随时随地手机看文章
摘要:简单介绍了硅压阻式传感器温度误差产生的原因及其特点,提出了一种利用BP神经网络对其温度误差及非线性误差进行补偿的方法。根据传感器温度误差的特点设计了一个多层的BP神经网络,其中传感器测试电路中四臂电桥的桥路电压和未经补偿的传感器的输出作为神经网络的两个输入。利用MatLab对该网络进行训练,得到了网络的权值和阀值。经过试验证明,该网络能够有效的补偿传感器的温度非线性误差,在-40~60℃范围内,使温度误差从原来的5.4%降到了0.2%。
关键词:温度补偿;硅压阻式;传感器;BP神经网络;电桥
传感器特别是硅压阻式传感器的温度误差在其总误差中占有很大的比重,温度补偿的好坏直接影响着传感器的总精度。温度误差的补偿方法有很多种,其中软件补偿是一种较常见的方法。由于传感器的温度误差是一种非线性误差,即各个温度点的补偿系数也应该呈非线性,这给补偿带来了一定的困难。常常采用的方法是选取几个温度点,求得补偿系数,其它温度点的补偿系数通过线性插值得到,这种方法实质上是一种将补偿系数分段线性化来拟合补偿系数的非线性曲线的方法。因此,要做到较高的补偿精度比较困难。而BP神经网络具有很强的曲线拟合能力,可以利用BP网络对传感器输出值进行处理,得到去除了温度误差的理想输出值。但是,单单从传感器的输出很难判断哪些是由输入压力所引起的输出,哪些是由于温度误差所带来的输出。所以,向BP网络引入一个反映温度变化的参数至关重要。而传感器桥路电压可以满足条件。因此,利用传感器的桥路电压和未经温度补偿的传感器输出一起作为神经网络的输入。试验证明,构建的BP神经网络能够使传感器的温度误差得到大大降低,使得传感器在-40~60℃温度范围内,非线性温度误差降低到0.2%。
1 BP神经网络硅压阻式传感器温度补偿
1.1 硅压阻式传感器的温度误差
硅压阻式传感器是用半导体材料制成的,而半导体材料对温度很敏感。因此,硅压阻式传感器的温度误差较大,并且其温度误差具有以下特点:首先,在相同压力下硅压阻式传感器的温度误差比其他材料传感器的要大;其次,它的温度误差是非线性的;再次,在进行温度补偿的过程中,很难区分温度误差引起的输出量的变化和压力变化引起的输出量的变化;此外,硅压阻传感器的温度误差有很大的分散性,甚至由同一制造商提供的同一型号传感器的误差幅度彼此之间也会有轻微的差异。这些特点给硅压阻式传感器的温度误差补偿带来了一定的困难。鉴于硅压阻传感器温度误差的特点,要对它进行补偿,首先必须找到一个能够反映温度变化的参量,这可以从传感器的测量电路中获得。
硅压阻式传感器的测量电路,由应变计组成的四臂电桥组成,如图1所示,四臂电桥中的4个电阻的阻值不仅会随压力的变化而变化,还会随温度的升高而增大。
假设温度为t0时,Rt=R2=R3=R4=R0,当温度、压力发生变化时,各电阻阻值可以用式(1)、(2)表示:
从式(4)可得,桥路电压Vb与压力产生的应变没有关系,仅与温度引起的附加应变有关。因此,可以利用它作为反映温度变化的参数,而不需另外增加一个温度传感器,这样做的好处是,直接利用压力传感器本身元件敏感温度的变化,从而避免由于外加温度传感器而导致测量温度和压阻传感器应变片实际温度存在差异给补偿带来误差,提高了补偿的精度,同时也节约了成本,简化了电路。
硅压阻式传感器虽然存在着很大的温度误差,但是在温度不变的情况下,传感器的输出呈现出很好的线性度和重复性,这就为用BP神经网络对它进行温度补偿提供了必要的条件。
1.2 BP神经网络算法
1986年Rumelhart,Hinton和Willians完整而简明地提出一种ANN的误差反相传播训练算法(简称BP算法)。目前,在人工神经网络的实际应用中,绝大部分的神经网络模型是采用BP网络和它的变形形式,它也是前向网络的核心部分,并体现了人工神经网络最精华的部分。
BP神经网络由输入层、输出层和多层隐含层组成,只要隐含层中有足够数量的神经元,它就可以用来逼近几乎任何一个函数。事实上,研究已表明,两层网络在其隐含层中使用S形传输函数,在输出层中使用线性传输函数,就几乎可以以任意精度逼近任何函数。三层BP神经网络的结构图如图2所示,任意层的BP神经网络具有类似的结构。
在多层网络中,某一层的输出成为下一层的输入。描述此操作的等式为:
这里,M是网络的层数。多层网络的BP算法是LMS(Least Mean Square,最小均方)算法的推广。算法的输入是一个网络正确行为的样本集合:
这里pQ是网络的输入,tQ是对应的目标输出。每输入一个样本,便将网络输出与目标输出相比较。算法将调整网络参数以使均方误差最小化。每一步对参数的调节见式(7)(8)。
式(6)为均方误差的期望。这里,均方误差的期望值被第k次迭代的均方误差所代替。
这里α是学习速度。
1. 3 BP神经网络的构建和训练
用BP神经网络对硅压阻式传感器进行温度补偿的原理图如图3所示,在MatLab中创建的是一个1-10-2-1的BP网络。
用BP神经网络对硅压阻式传感器实现温度补偿分成两部分,如图3所示。其中,P表示输入的压力;y表示未经温度补偿的传感器输出;Vb表示传感器测量电路的桥路电压;y'表示经过温度补偿的传感器输出。
BP神经网络隐层由Log-Simoid层和线性层两层组成。也就是说隐层的函数分别为:
传感器未经温度补偿的输出电压y和测量电路中的桥路电压Vb作为神经网络的两个输入参数,经过该网络后将得到除去了温度误差的输出结果。
表1所示分别为-40、-20、0、20、40℃下测定的传感器桥路电压、2 MPa时传感器输出,100 MPa满量程输出。鉴于0 MPa较难获得,则可以将2 MPa作为最小压力。硅压阻式传感器在一定温度下具有很好的线性度,因此各温度下根据两个压力点的输出很容易推算出20、40、60、80 MPa输入压力时的电压输出值。
选取常温20℃时的传感器输出作为目标值。这样就可以形成30个样本点,可以用式(10)表示。
其中Xi为输入样本,可以表示为(yi,Vbi),yi为-40、-20、0、20、40℃温度下测得的未进行温度补偿的传感器输出;Vbi为yi相应的电桥桥路电压值;yi’为目标值,即与yi相同压力下在20℃所测得的传感器输出,该压力下的补偿后的目标输出值。
采用L—M算法用MatLab对样本进行训练。得到值、阈值,训练过程如图4所示。
分别测量-40~60℃,2~100 MPa传感器输出和相应温度下的最小压力下的Vb值,将传感器输出经过BP神经网络进行温度补偿后得到的结果如表2所示。
2 结论
硅压阻式传感器经过BP神经网络补偿后,温度误差得到了大大的降低,在-40~60℃范围内,温度误差由原来的5.4%降到了0.2%,并且这个方法对其他类型的传感器的温度补偿同样适用,也可以应用于一些传感器输出的非线性校正。