压力传感器高精度温度补偿的软件实现
2014-11-14王俊杰秦会斌
王俊杰+秦会斌
摘 要: 克服传统的通过硬件电路来对压力传感器进行温度误差补偿的缺点,介绍利用单片机进行压力传感器温度补偿的基本方法,论述如何利用软件进行温度误差补偿的方法,详细描述高精度温度补偿的软件算法原理,为实现通过软件进行温度补偿提供了理论依据。通过实验测试证明了采用高精度温度补偿算法的传感器输出精度有了显著的提高。
关键词: 压力传感器; 零点温漂; 温度补偿; 输出
中图分类号: TN919?34; TP212 文献标识码: A 文章编号: 1004?373X(2014)22?0105?03
Implementation of pressure sensor software for high accuracy temperature compensation
WANG Jun?jie, QIN Hui?bin
(Institute of Electronic Device and Application, Hangzhou Dianzi University, Hangzhou 310018, China)
Abstract: In order to overcome the shortcomings of traditional hardware circuits for the pressure sensor temperature compensation, the basic method using single chip processor for pressure sensor temperature compensation is introduced. The method to implement temperature compensation by software is discussed. The principle of software algorithm for high?accuracy temperature compensation is expatiated, which provides a theoretical basis for temperature compensation by software. The experiment results prove that the sensor output accuracy has been significantly improved by the high?accuracy temperature compensation algorithm.
Keywords: pressure sensor; zero drift; temperature compensation; output
0 引 言
压力传感器是一种常用的传感元件,由于其自身的非线性与使用时受到外界测量条件的影响,使得压力传感器在输出时大都出现了非线性的特征,故存在多种因素的误差。然而,在这些误差因素中以温度的影响最为明显,所以对传感器的温度误差补偿尤为重要[1?3]。采用硬件补偿的措施实现温度误差补偿是极为繁琐与困难的,但是通过引入软件来实现补偿是一种比较有效的途径[4?5]。只要采用足够精确的温度误差补偿模型就可以得到满意的结果,同时希望采用的算法简单、高效以避免如BP神经网络温度补偿算法的复杂与耗时的特点[6]。
1 传统的硬件补偿方式及其缺点
传统的硬件温度误差补偿解决方法是通过在惠斯特电桥电路中的一个或两个桥臂上并联热敏电阻Rt,如图1所示[7]。但是由于热敏电阻自身的特性,不可能做到完全的温度误差补偿[8?9]。此外,通过硬件电路来实现温度误差补偿存在器件固有的不稳定性、调试困难、通用性差、成本高、精度低等缺点,不利于工程实际应用。所以,本文介绍结合单片机实现自动检测和实时控制的高精度温度误差补偿的软件实现。
图1 并联热敏电阻温度误差补偿方式
2 温度补偿的原理
在单片机传感器测量系统中,要解决传感器温度误差补偿的问题,必须要测出传感器所在点的温度,因此需要温度传感器。温度传感器通常是安装在传感器内靠近敏感元件的地方。首先通过A/D采样电路采集温度传感器在此温度时对应输出的电压信号(记为Ut)后传送到单片机中暂存;然后通过A/D采样电路采集经过放大电路放大后的传感器输出信号(记为Uo)并传送到单片机;最后启动温度误差补偿程序,通过Ut找到事先已经记录在单片机中的零点温漂电压Uc,则最后的输出电压为:
[Ue=Uo-Uc] (1)
具体的原理框图如图2所示[10?11]。
图2 带软件温度补偿功能的单片机
传感器测量系统原理框图
3 温度补偿的数学模型建立
3.1 线性温度补偿数学模型
在对温度误差进行补偿的时候,必须事先在给定的n个温度值(T1,T2,…,Tn)上测出温度传感器输出的每个温度值对应的电压信号(Ut1,Ut2,…,Utn),然后测出每个温度点上传感器输出信号经过放大电路放大后对应的温漂电压(Uc1,Uc2,…,Ucn),为了保证数据的精确性,可以在恒温箱中进行测量。将(Ut1,Ut2,…,Utn)与(Uc1,Uc2,…,Ucn)制作成一张表,放入单片机内存中,然后建立温度传感器输出的温度值对应的电压信号与温漂电压信号的数学模型,其特性曲线Uc=F(Ut)如图3所示。我们可以将图3所示的曲线分成n段,将相邻两个点之间的曲线近似看作为直线,这样就可以利用线性方法求出温度传感器输出的某个温度值对应的电压信号Ut所对应的温漂电压Uc,这就是线性插值法。假设测得温度传感器输出的温度值对应的电压信号Ut为(Ut1,Ut2,…,Utn)中的某一个值,则对应的温漂电压Uc为其相对应的(Uc1,Uc2,…,Ucn)中的某一个值;假设测得温度传感器输出的温度值对应的电压信号Ut在(Uti,Ut(i+1))之间,则其对应的温漂电压Uc可由式(2)求得:
[Uc=Uci+(Ut-Uti)Uc(i+1)-UciUt(i+1)-Uti, 1≤i≤n-1] (2)
从式(2)可以得知n取得足够大就可以获得良好的精度,这样单片机就可以通过测得的温度对应的电压信号得到对应的零点温漂电压。
图3 温度传感器输出的电压与温漂电压的特性曲线
3.2 非线性温度补偿数学模型
若温度传感器输出的温度值对应的电压信号与温漂电压信号特性曲线变化很大,采用的线性插值法会造成比较大的误差。故可以采用二次曲线插值法,如图4所示。通过曲线上的3个点K1(Ut1,Uc1),K2(Ut2,Uc2),K3(Ut3,Uc3)形成一段抛物线,但是传统的一元二次抛物线方程为Uc=AUt2+BUt+C,这种方式为了求出A、B、C的值需要联立方程组,计算复杂导致程序也比较复杂。采用下面这种方程形式:
[Uc=A(Ut-Ut1)(Ut-Ut2)+B(Ut-Ut1)+C] (3)
式中:A,B,C的值很容易根据K1,K2,K3三点求出。当Ut=Ut1,Uc=Uc1时,可知C=Uc1,又根据Ut=Ut2,Uc=Uc2时,可知:
[B=Uc2-Uc1Ut2-Ut1] (4)
将C和B代入方程式(3)中得到方程式的另一种形式:
[Uc=A(Ut-Ut1)(Ut-Ut2)+Uc2-Uc1Ut2-Ut1(Ut-Ut1)+Uc1] (5)
将Ut=Ut3,Uc=Uc3代入方程式(4)得:
[A=Uc3-Uc1Ut3-Ut1-Uc2-Uc1Ut2-Ut1Ut3-Ut2] (6)
由此可见:可以利用3个已知的点K1,K2,K3求出A,B,C的数值,然后放入单片机的内存中,根据Ut的值可以求出相对应的Uc的值。以上便是对传感器进行温度误差补偿的数学模型,用这2个模型便可进行温度误差补偿。
图4 二次曲线插值法
4 温度补偿的软件设计与实现
线性温度补偿与非线性温度补偿软件设计流程图如图5和图6所示。因为温度是一个连续变化的模拟量,因此为了提高精度采集的温度点越多精度就会越高。可以采用位数较多的A/D芯片以保证一般情况下的需要。结合单片机的软件实现流程如图7所示。这种软件设计方式确保了无需手动设置就可以保证对温度的变化做出及时的反应并且找到相应的零点温漂电压,从而确保单片机输出的电压是实时更新过的修正后的电压值。
图5 线性温度补偿流程图
图6 非线性温度补偿流程图
5 测试结果
表1显示了20 ℃和80 ℃时传感器的零位输出变化情况。从表1中可以看出经过软件温度补偿后的零位输出比未经过软件温度补偿的零位输出得到了显著的改善。
表2是在25 ℃时对传感器的测量结果,从表2中可以看出经过补偿后的精度都在1%以下。
图7 软件执行流程图
表1 传感器补偿前后的零位输出变化
表2 传感器补偿前后的精度变化 %
6 结 语
为了满足压力传感器在高精度场合的应用要求,本文结合单片机利用软件来实现传感器温度误差补偿是一种非常简便、有效的方法。这种方法可以大大降低测量系统的电路复杂度且节约成本,对于普通的使用者来说无需额外的操作便可以得到可靠的数值,适合对批量传感器的补偿,因此具有极为广泛的应用前景。
参考文献
[1] 胡辽林,刘晨,盖广洪.硅压阻传感器的智能温度补偿研究[J].传感技术学报,2012,25(4):468?471.
[2] 杜永苹,何小映.浅谈传感器的温度补偿技术[J].电子设计工程,2009,17(6):63?64.
[3] 孙圣和.现代传感器发展方向[J].电子测量与仪器学报,2009,23(1):1?10.
[4] 郭冰,王冲.压力传感器的现状与发展[J].中国仪器仪表,2009(5):72?75.
[5] 曾钟波.压力传感器零点漂移的解决方法浅析[J].科技视界,2013(34):100?101.
[6] 章慧.基于BP神经网络的压力传感器数据融合[J].湖南工程学院学报,2011,21(1):55?58.
[7] 滕敏.压阻式压力传感器零点温漂补偿公式的推导[J].河南师范大学学报:自然科学版,2011,39(1):101?103.
[8] 关荣锋,王晓雪.MEMS压力传感器的温度补偿[J].河南师范大学学报:自然科学版,2009,37(1):70?73.
[9] 王淑华.MEMS传感器现状及应用[J].微纳电子技术,2011,48(8):516?522.
[10] 魏凯斌.一种扩散硅压力传感器温度补偿系统的设计与实现[J].制造业自动化,2013,35(5):117?119.
[11] 胡园园,李淮江,王大军.基于ATmega16的压力传感器温度补偿智能化设计[J].仪表技术与传感器,2010(10):8?11.
[Uc=Uci+(Ut-Uti)Uc(i+1)-UciUt(i+1)-Uti, 1≤i≤n-1] (2)
从式(2)可以得知n取得足够大就可以获得良好的精度,这样单片机就可以通过测得的温度对应的电压信号得到对应的零点温漂电压。
图3 温度传感器输出的电压与温漂电压的特性曲线
3.2 非线性温度补偿数学模型
若温度传感器输出的温度值对应的电压信号与温漂电压信号特性曲线变化很大,采用的线性插值法会造成比较大的误差。故可以采用二次曲线插值法,如图4所示。通过曲线上的3个点K1(Ut1,Uc1),K2(Ut2,Uc2),K3(Ut3,Uc3)形成一段抛物线,但是传统的一元二次抛物线方程为Uc=AUt2+BUt+C,这种方式为了求出A、B、C的值需要联立方程组,计算复杂导致程序也比较复杂。采用下面这种方程形式:
[Uc=A(Ut-Ut1)(Ut-Ut2)+B(Ut-Ut1)+C] (3)
式中:A,B,C的值很容易根据K1,K2,K3三点求出。当Ut=Ut1,Uc=Uc1时,可知C=Uc1,又根据Ut=Ut2,Uc=Uc2时,可知:
[B=Uc2-Uc1Ut2-Ut1] (4)
将C和B代入方程式(3)中得到方程式的另一种形式:
[Uc=A(Ut-Ut1)(Ut-Ut2)+Uc2-Uc1Ut2-Ut1(Ut-Ut1)+Uc1] (5)
将Ut=Ut3,Uc=Uc3代入方程式(4)得:
[A=Uc3-Uc1Ut3-Ut1-Uc2-Uc1Ut2-Ut1Ut3-Ut2] (6)
由此可见:可以利用3个已知的点K1,K2,K3求出A,B,C的数值,然后放入单片机的内存中,根据Ut的值可以求出相对应的Uc的值。以上便是对传感器进行温度误差补偿的数学模型,用这2个模型便可进行温度误差补偿。
图4 二次曲线插值法
4 温度补偿的软件设计与实现
线性温度补偿与非线性温度补偿软件设计流程图如图5和图6所示。因为温度是一个连续变化的模拟量,因此为了提高精度采集的温度点越多精度就会越高。可以采用位数较多的A/D芯片以保证一般情况下的需要。结合单片机的软件实现流程如图7所示。这种软件设计方式确保了无需手动设置就可以保证对温度的变化做出及时的反应并且找到相应的零点温漂电压,从而确保单片机输出的电压是实时更新过的修正后的电压值。
图5 线性温度补偿流程图
图6 非线性温度补偿流程图
5 测试结果
表1显示了20 ℃和80 ℃时传感器的零位输出变化情况。从表1中可以看出经过软件温度补偿后的零位输出比未经过软件温度补偿的零位输出得到了显著的改善。
表2是在25 ℃时对传感器的测量结果,从表2中可以看出经过补偿后的精度都在1%以下。
图7 软件执行流程图
表1 传感器补偿前后的零位输出变化
表2 传感器补偿前后的精度变化 %
6 结 语
为了满足压力传感器在高精度场合的应用要求,本文结合单片机利用软件来实现传感器温度误差补偿是一种非常简便、有效的方法。这种方法可以大大降低测量系统的电路复杂度且节约成本,对于普通的使用者来说无需额外的操作便可以得到可靠的数值,适合对批量传感器的补偿,因此具有极为广泛的应用前景。
参考文献
[1] 胡辽林,刘晨,盖广洪.硅压阻传感器的智能温度补偿研究[J].传感技术学报,2012,25(4):468?471.
[2] 杜永苹,何小映.浅谈传感器的温度补偿技术[J].电子设计工程,2009,17(6):63?64.
[3] 孙圣和.现代传感器发展方向[J].电子测量与仪器学报,2009,23(1):1?10.
[4] 郭冰,王冲.压力传感器的现状与发展[J].中国仪器仪表,2009(5):72?75.
[5] 曾钟波.压力传感器零点漂移的解决方法浅析[J].科技视界,2013(34):100?101.
[6] 章慧.基于BP神经网络的压力传感器数据融合[J].湖南工程学院学报,2011,21(1):55?58.
[7] 滕敏.压阻式压力传感器零点温漂补偿公式的推导[J].河南师范大学学报:自然科学版,2011,39(1):101?103.
[8] 关荣锋,王晓雪.MEMS压力传感器的温度补偿[J].河南师范大学学报:自然科学版,2009,37(1):70?73.
[9] 王淑华.MEMS传感器现状及应用[J].微纳电子技术,2011,48(8):516?522.
[10] 魏凯斌.一种扩散硅压力传感器温度补偿系统的设计与实现[J].制造业自动化,2013,35(5):117?119.
[11] 胡园园,李淮江,王大军.基于ATmega16的压力传感器温度补偿智能化设计[J].仪表技术与传感器,2010(10):8?11.
[Uc=Uci+(Ut-Uti)Uc(i+1)-UciUt(i+1)-Uti, 1≤i≤n-1] (2)
从式(2)可以得知n取得足够大就可以获得良好的精度,这样单片机就可以通过测得的温度对应的电压信号得到对应的零点温漂电压。
图3 温度传感器输出的电压与温漂电压的特性曲线
3.2 非线性温度补偿数学模型
若温度传感器输出的温度值对应的电压信号与温漂电压信号特性曲线变化很大,采用的线性插值法会造成比较大的误差。故可以采用二次曲线插值法,如图4所示。通过曲线上的3个点K1(Ut1,Uc1),K2(Ut2,Uc2),K3(Ut3,Uc3)形成一段抛物线,但是传统的一元二次抛物线方程为Uc=AUt2+BUt+C,这种方式为了求出A、B、C的值需要联立方程组,计算复杂导致程序也比较复杂。采用下面这种方程形式:
[Uc=A(Ut-Ut1)(Ut-Ut2)+B(Ut-Ut1)+C] (3)
式中:A,B,C的值很容易根据K1,K2,K3三点求出。当Ut=Ut1,Uc=Uc1时,可知C=Uc1,又根据Ut=Ut2,Uc=Uc2时,可知:
[B=Uc2-Uc1Ut2-Ut1] (4)
将C和B代入方程式(3)中得到方程式的另一种形式:
[Uc=A(Ut-Ut1)(Ut-Ut2)+Uc2-Uc1Ut2-Ut1(Ut-Ut1)+Uc1] (5)
将Ut=Ut3,Uc=Uc3代入方程式(4)得:
[A=Uc3-Uc1Ut3-Ut1-Uc2-Uc1Ut2-Ut1Ut3-Ut2] (6)
由此可见:可以利用3个已知的点K1,K2,K3求出A,B,C的数值,然后放入单片机的内存中,根据Ut的值可以求出相对应的Uc的值。以上便是对传感器进行温度误差补偿的数学模型,用这2个模型便可进行温度误差补偿。
图4 二次曲线插值法
4 温度补偿的软件设计与实现
线性温度补偿与非线性温度补偿软件设计流程图如图5和图6所示。因为温度是一个连续变化的模拟量,因此为了提高精度采集的温度点越多精度就会越高。可以采用位数较多的A/D芯片以保证一般情况下的需要。结合单片机的软件实现流程如图7所示。这种软件设计方式确保了无需手动设置就可以保证对温度的变化做出及时的反应并且找到相应的零点温漂电压,从而确保单片机输出的电压是实时更新过的修正后的电压值。
图5 线性温度补偿流程图
图6 非线性温度补偿流程图
5 测试结果
表1显示了20 ℃和80 ℃时传感器的零位输出变化情况。从表1中可以看出经过软件温度补偿后的零位输出比未经过软件温度补偿的零位输出得到了显著的改善。
表2是在25 ℃时对传感器的测量结果,从表2中可以看出经过补偿后的精度都在1%以下。
图7 软件执行流程图
表1 传感器补偿前后的零位输出变化
表2 传感器补偿前后的精度变化 %
6 结 语
为了满足压力传感器在高精度场合的应用要求,本文结合单片机利用软件来实现传感器温度误差补偿是一种非常简便、有效的方法。这种方法可以大大降低测量系统的电路复杂度且节约成本,对于普通的使用者来说无需额外的操作便可以得到可靠的数值,适合对批量传感器的补偿,因此具有极为广泛的应用前景。
参考文献
[1] 胡辽林,刘晨,盖广洪.硅压阻传感器的智能温度补偿研究[J].传感技术学报,2012,25(4):468?471.
[2] 杜永苹,何小映.浅谈传感器的温度补偿技术[J].电子设计工程,2009,17(6):63?64.
[3] 孙圣和.现代传感器发展方向[J].电子测量与仪器学报,2009,23(1):1?10.
[4] 郭冰,王冲.压力传感器的现状与发展[J].中国仪器仪表,2009(5):72?75.
[5] 曾钟波.压力传感器零点漂移的解决方法浅析[J].科技视界,2013(34):100?101.
[6] 章慧.基于BP神经网络的压力传感器数据融合[J].湖南工程学院学报,2011,21(1):55?58.
[7] 滕敏.压阻式压力传感器零点温漂补偿公式的推导[J].河南师范大学学报:自然科学版,2011,39(1):101?103.
[8] 关荣锋,王晓雪.MEMS压力传感器的温度补偿[J].河南师范大学学报:自然科学版,2009,37(1):70?73.
[9] 王淑华.MEMS传感器现状及应用[J].微纳电子技术,2011,48(8):516?522.
[10] 魏凯斌.一种扩散硅压力传感器温度补偿系统的设计与实现[J].制造业自动化,2013,35(5):117?119.
[11] 胡园园,李淮江,王大军.基于ATmega16的压力传感器温度补偿智能化设计[J].仪表技术与传感器,2010(10):8?11.