基于牛顿算法的压力传感器温压补偿方法
2019-02-22张广祥吕易轩
田 伟,张广祥,崔 炎,吕易轩
(1.辽阳石化分公司,辽宁辽阳 111003;2.吉林石化分公司,吉林吉林 132021;3.东北电力大学,吉林吉林 132021;4.多伦多大学,多伦多 M5S1V6)
0 引言
提高压力传感器性能的研究一直受到国内外的高度关注。随着硅微机械加工技术的不断进步,硅压力传感器成为目前使用最广泛的一种压力传感器,但由于压力传导、制造工艺以及硅本身对温度的敏感性导致了硅压力传感器具有较大的误差。目前智能芯片在智能仪表中的应用越来越普及,如何利用智能芯片强大的运算功能,设计统一、简单和适用的软件补偿方法,具有非常重要的现实和工程意义。本文提出了基于工程数学牛顿算法应用于压力变送器温度补偿,实现从 -40~80 ℃对传感器数据进行温压自动补偿,满足提高压力传感器精度的需要[1]。
1 压力传感器误差分析和补偿算法设计
1.1 压力传感器误差分析
在不同温度下施加标准压力,经过对大量的压力传感器进行输入输出采集实验,可以得到在不同温度和压力下的输入输出关系,在不同温度下得到的测量值与标称值偏差曲线图如图1所示。可以看出在输入压力保持不变的情况下,压力传感器的输入(p)与输出(U)呈非线性。对应不同的工作温度,传感器呈现不同的输入(p)与输出(U)特性。温度对压力传感器测量值的影响显著,压力传感器的输出随着温度的变化而变化,即各压力传感器输出受温度的影响存在温度漂移现象。温度误差具有相当的随机性,同一厂商生产,同一规格、型号的压力传感器的温度特性也不尽相同。从误差分析看,误差主要由以下几种误差构成。
图1 不同温度下实际与标称偏差曲线
1.1.1 非线性误差
误差原因是压力传导误差。因为传感器把实际压力作用到压力膜片,并作用到充油压力芯体传导到芯体的硅基芯体上,利用差动电桥原理把压力信号变化变成电阻的变化,进而对应到电压或电流信号,如图2所示。
图2 硅膜片结构
这种压力传导的过程受膜片加工、材质、形变重复度、传导油体传导滞后等原因影响,造成压力传导非线性误差。二是硅基膜片基底材料纯净度和相关分子扩散浓度不均匀,造成电桥非线性误差。
1.1.2 温度漂移误差
误差原因一是传导油体受被测物质和外界环境温度影响而产生膨胀;二是基底芯片因硅基材料受温度影响产生输出漂移;三是受外界温度影响,其压力信号经电桥(如图3所示)转换成对应的电压和电流小信号处理,在从模拟信号转换成数字信号过程中,电子电路中的电子元件受温度影响而产生输出漂移。
图3 惠斯登电桥
1.2 压力传感器软件补偿算法设计
根据压力传感器的误差分析, 所提出的误差补偿数学模型为
U(p,t)=f0(p)+f1(t)+f2(p)t+f3(p)t2
(1)
式中:U(p,t)为传感器输出;f0(p)为传感器非线性表达式;f1(t)为零点漂移误差、零点温度漂移表达式;f2(p)t为一次温度灵敏度漂移表达式;f3(p)t2为二次温度灵敏度漂移表达式。
从式(1)知,以上两种误差是相互叠加、相互作用的,减小误差,提高检测精度,是现实工程需要。目前智能芯片的发展,使软件误差补偿成为可能,软件补偿在成本、灵活度和效果方面与传统硬件补偿方法相比具有更大优势。常用的软件补偿方法有查表法、插值法和经验法等。考虑到采样芯片的限制,程序和计算阶数不能太复杂,本文采取查表和插值共同使用,设计了基于牛顿算法的压力传感器温压补偿方法,补偿效果明显[2-3]。
补偿方法设计主要是基于工程数学查表和插值原理,利用数据采集技术和网络通讯技术,实现从-40~80 ℃对传感器数据进行自动采集,自动补偿,满足了压力变送器温度补偿中,提高检测精度的需要。具体算法为首先对温度 -40~80 ℃横向最多分7个结点,线性从0%~100%最多设置11个纵向结点,并且对最多77个采集点进行相应条件下的变送器压力采集,并下载到RAM内,形成温度补偿数据表。其次根据温度采样值确定在当前温度下0~100%的11个动态线性数据点,组成线性曲线。根据温度采样码判断相邻的3条温度曲线,使用相邻3条温度线的33个线性数据,利用工程数学中的牛顿插值公式,推导出0~100%在当前温度下的11个动态线性数据点。以计算0%点为例:
首先构建一个差商表,差商表保存在一维数组中。
动态压力采样值计算公式:
pt(0)=DD[2]×(tx-t1)×(tx-t0)+
DD[1]×(tx-t0)+DD[0]
式中:t2、t1、t0为与tx相邻的3点温度;tx为当前温度;p2、p1、p0为0%行所在3点温度下的压力采样值。
以此类推,依次计算10%~100%动态线性数据点,即可得到tx温度下的动态线性表。
其次根据当前压力采样码px和计算出的动态线性表,找出与px相邻的3个线性点p0、p1、p2以及与之对应的理想压力值m0、m1、m2,带入压力牛顿插值公式,计算出px压力采样码对应的实际压力值mx。计算差商值:
DD[0]=m0
实际压力值计算公式为
mx=DD[2]×(px-p1)×(px-p0)+
DD[1]×(px-p0)+DD[0]
以上整体利用77个温度补偿数据、温度采样码、压力采样码,利用温度和压力两次牛顿插值算法,有效克服了因为非线性和温度漂移造成的综合误差,且通过动态线性表解耦误差综合影响。实际压力测量时,根据内部温度传感器采集的温度采集码,横向利用相邻最近的3个点,利用滑动牛顿算法公式计算在此温度采集码下线性表,再把压力采集码代入线性表中相邻最近的3个点,利用滑动牛顿算法计算在此压力采集码下的对应的压力值。算法的设计综合考虑了传感器数据采集芯片的数据存储能力、运算速度,且采用统一的牛顿算法调用和3点滑动降低计算阶数,可满足采集芯片的计算复杂度的要求。双牛顿算法实施后可以将仪表精度从0.2%提高到0.075%,实际工程应用效果良好[4]。
2 实际应用
实际应用中,为了满足牛顿算法对数据的最小需求,温度数据不能少于3组,压力数据不能少于3个。建立补偿数据时,压力信号和补偿温度可以根据需要设置,不必等分,温度点的选定和温度范围的选定和补偿方法无关,温度点和温度范围的选定只和该压阻式传感器的使用温度范围和补偿精度有关,使用温度范围越宽,补偿精度越高,则选取的温度点数量也就越多。
2.1 温度补偿标定
为了获得补偿方法的输入标定数据,选取400 kPa传感器进行数据采集,利用补偿装置分别在-40、-20、0 、20、40、60、80 ℃温度下对传感器进行信号采集,生成温度-被测目标参量-传感器输出量对应数据表,将不同温度下被测目标参量与传感器输出量之间的对应数据固化到单片机的FLASH中,单片机根据当前测得的温度数据利用补偿算法对传感器进行温度补偿和线性补偿。固化的压力数据和温度数据如表1、表2所示。从标定数据可以看出,温度对压力传感器输出影响显著,对于同一输入,压力传感器的输出随着温度的变化而变化,存在温度漂移现象。
表1 400 kPa压力传感器温度补偿标定数据
表2 400 kPa压力传感器温度采样码
2.2 温度补偿过程
以400 kPa传感器输入标准压力信号37.5 kPa采集到的数据为例,说明补偿过程。实测数据如表3所示。
表3 温度采样码为“8970”时压力采样码
温度传感器测得当前温度采样码为“8970”,通过查表找出最接近于当前温度的存储在FLASH存储器中的标定补偿数据,因为当前温度码为“8970”,所以程序通过查表算法判定补偿数据取值温度范围为40~80 ℃,即以40、60、80 ℃这3组24个数据作为牛顿算法的基础数据。通过滑动牛顿算法算出当前温度下的零点到量程的动态数据表,通过三点牛顿算法算出当前压阻式传感器的线性输出。
计算过程为首先计算动态表,根据公式计算出差商,然后计算出从零点到量程的动态数据表。经过滑动牛顿算法生成的动态数据表如表4所示。
表4 动态数据表
以输入压力信号37.5 kPa为例,说明线性化计算过程。因为压力信号为37.5 kPa时,压力采样码为148264,程序判断应该选取0、75、150 kPa这3点动态数据表数据进行运算,根据计算公式计算得出M37.5=37.42 kPa。
与实际输入信号相比,误差为0.02%,满足精度要求。压力变送器全量程补偿效果如表5所示。
表5 补偿效果对比表
从表5可以看出,经过两次滑动牛顿算法补偿,压阻式传感器的稳定性能基本上改善了1~2个数量级,有效地提高了传感器的采样精度。
3 结束语
本文提出的压阻式压力传感器滑动牛顿补偿算法有效减小了温度等因素对压阻式传感器输出的影响。温压补偿提高了压阻式压力传感器的稳定性和准确性,扩展了传感器应用范围。而且算法本身对硬件的要求较低,基本上一个带有24位A/D转换的8位单片机就可以满足要求,具有功能实现简单、补偿效果突出的特点。