BME680压力传感器非线性补偿和温度补偿方法及实现

2020-07-27 02:12陈红涛薛子刚靳宏伟张文渊
海军航空大学学报 2020年2期
关键词:静态柔性补偿

陈红涛,薛子刚,靳宏伟,张文渊

(91515部队,海南三亚572016)

基于微机电系统(MEMS)技术的空气压力传感器具有体积小,耗能低,响应快,机电耦合性好等优点,可直接贴附在被测试对象表面,同时进行静态和动态压力测量[1];另一方面,集成电路(ASIC)技术的快速发展,半导体芯片的功能高度集成,芯片体积趋于微型化,功耗越来越低。因此,结合这些技术的优势,可以将MEMS空气压力传感器、数据采集处理以及传输电路集成在一款柔性电路板上,设计成柔性的薄片化压力片贴附于飞机翼面进行空气压力测量。

本文设计的集成化柔性压力片,选用了BOSCH的一款商用MEMS 传感器BME680。该传感器具有体积小、灵敏度高和可靠性好等优点,采用多孔硅薄膜工艺制造,将柔性压力膜和温度二极管、湿度敏感芯片集成于一颗MEMS芯片。其中,压力传感器是基于硅压阻式原理设计的,它的输出容易受到温度的影响而发生零点漂移和灵敏度漂移,并且传感器自身也存在非线性问题[2-3]。为了解决温度对压力传感器测量精度的影响,通常有硬件补偿和软件补偿2 种温度补偿方法[4]。其中,软件补偿方法效果较好,工程应用更为广泛,成为了国内外研究的热点[5-6]。因此,本文采用多项式拟合方法,基于嵌入式单片机在软件层面实现传感器的非线性补偿和温度补偿[7-9],设计了一款集成化柔性压力片,进行了试验分析和性能评估,试验结果表明补偿算法效果明显,传感器的精度提高明显,达到了预期要求。

1 传感器温度补偿算法

目前,有很多的软件补偿算法,如查表法、插值法、多项式拟合法、遗传算法、模拟退火算法和神经网络算法等[10-11]。其中,查表法须要占用较大的存储空间;插值法和多项式拟合法在工程实现中应用较多,插值法的精度略低,多项式拟合法对直线、单调和单峰值数据进行拟合一般能够得到理想的效果,并且实现简单,容易编程;遗传算法、模拟退火算法和神经网络算法能实现较高的精度,但是设计复杂,需要大量的数据和运算能力,不太适合用于性能较差的嵌入式单片机[12-13]。因此,本文采用多项式拟合方法实现传感器非线性补偿和温度补偿。

假设压力传感器静态输出—输入特性函数为:

式(1)中:U为压力传感器压力输出;P为压力传感器压力输入;T为压力传感器所处环境的温度。

一般该特性函数是未知的,如果能够根据多组压力传感器的输入P、输出U和环境温度T实测数据确定出压力传感器静态特性的反函数:

对于任意的压力传感器输出U和环境温度T,都可以找到对应的压力传感器输入P,从而实现传感器的非线性补偿和温度补偿[14]。

将式(2)表示成二元多项式:

2 压力片系统设计与实现

2.1 系统硬件设计

压力片的作用是在同步脉冲作用下采集空气压力数据,并对压力数据进行温度补偿和非线性补偿,最后有序地将数据发送给上级网络化应用处理器。主要组成包括一个MEMS 压力传感器、主控模块、CAN FD总线和电源模块等,如图1所示。其中,主控芯片采用超低功耗的ARM内核(Cotex-M0+内核),自带CAN FD、SPI、DAC和UART等外设;电源模块使用高效率、低噪声、小体积的解决方案,以降低压力片功耗和电源噪声,缩小压力片的尺寸;电路板设计采用FPC 柔性电路板技术,选择小体积的元件封装,比如QFN,0402等,以保证压力片的柔韧性,降低压力片的厚度。

图1 压力片硬件设计框图Fig.1 Block diagram of pressure piece hardware design

2.2 系统软件设计

为使主控芯片能以最快的速度响应同步脉冲,并启动一次数据采集,保证同步精度,程序以前后台形式工作,软件工作流程如图2 所示。后台程序为中断服务函数,响应同步脉冲触发的中断,每发生一次中断触发一次数据采集;前台是一个死循环,主要完成传感器数据的采集、转换和校正,并使用乒乓存储机制实现数据的有序缓存和发送。系统软件采用ASF(Atmel Software Framework)软件包,系统的开发选择使用IAR Embedded Workbench for ARM 第三方嵌入式集成开发环境,上手简单,获取ASF独立软件包后,稍加修改就可以使用IAR进行开发。传感器BME680的对外接口为SPI,主控芯片通过SPI接口获取传感器数据,采用多项式拟合方法实现传感器的非线性补偿和温度补偿,即将拟合的多项式系数存储在压力片主控芯片内,基于软件实现传感器误差的实时修正。

图2 压力片软件工作流程图Fig.2 Work flow chart of pressure piece software

3 传感器数据的误差修正

根据该压力片测试环境要求,选用的传感器BME680 工作温度为-40~65℃,压力测量范围为30~110 kPa。具体的软件实现步骤如下。

3.1 获取传感器实测数据

采集多组不同温度、不同标称压力下的静态输出数据用于求解多项式系数,数据点数要大于待求解的系数的个数,并且数据点应该分散地分布在传感器的量程范围和使用温度范围内。由于BME680 内部集成了温度传感器,可以准确地获取压力传感器的温度。测试时,选取了-40℃、-30℃、-20℃、-10℃、0℃、-10℃、20℃、30℃、40℃、50℃、65℃温度点进行正负温度环境下压力标定,采用德国GE-Druck 压力控制器PACE5000 作为标准压力发生器,其测量精度优于±0.03%FS 。每个温度点下提供30 kPa 、50 kPa 、60 kPa 、70 kPa 、80 kPa 、90 kPa 、100 kPa 、110 kPa 不同标准压力,测得压力传感器不同标准压力下的静态输出压力值和误差值。

3.2 确定多项式函数模型,求解多项式拟合的系数

使用MATLAB对获取的实测数据进行分析,不同温度下传感器非线性误差如图3、4 所示,不同标称压力下传感器数据的温度漂移如图5、6所示。分析结果表明:这款传感器在大于0℃的测量环境下,非线性特征比较有规律性,可以分为2段,30~90 kPa 这一段接近线性并且几乎没有温漂,而90~110 kPa 这一段略微有弧度,略有温漂;在小于等于0℃的测量环境下,非线性和温漂则比较严重。

实测数据获得的结论与这款传感器特性相当吻合,因为从这款传感器数据手册可知,它仅在0 ~65℃范围内进行了非线性补偿和温度补偿,以0℃以下非线性和温漂较为严重。但实测表明,在0 ~65℃范围的90~110 kPa 段仍存在较大的非线性和温漂。

图3 在0℃以上,不同温度下非线性误差Fig.3 Nonlinear error at different temperatures above 0℃

图4 在0℃以下,不同温度下非线性误差Fig.4 Nonlinear error at different temperatures below 0℃

图5 在0℃以上,在不同压力下温度漂移误差Fig.5 Temperature drift error under different standard pressures above 0℃

图6 在0℃以下,在不同压力下温度漂移误差Fig.6 Temperature drift error under different standard pressures below 0℃

根据以上该款传感器非线性误差和温度漂移分析结果,本文将多项式拟合分为3 段,使用MATLAB的Polyfit函数,通过拟合的三维图形和误差数据分析拟合效果,调整多项式的阶数,最终确定3段拟合多项式的模型如下。

第1 段,温度范围为-40~10℃,压力范围为50~110 kPa。须要使用高阶的二元多项式进行拟合,采用的多项式模型如下:

第2 段,温度范围为10~65℃,压力范围为30~90 kPa,使用二元一次多项式进行拟合,采用的多项式模型如下:

第3 段,温度范围为10~65℃,压力范围为90~110 kPa,可以使用低阶的二元多项式进行拟合,采用的多项式模型如下:

3.3 基于主控芯片实现传感器误差的实时修正

将拟合的多项式系数存储在压力片主控芯片的FLASH内。然后,将每次系统采集到的压力和温度数据代入多项式内,求得的结果即为修正后的压力数据,软件工作流程如图7所示。同时,压力片系统中的ATSAMC21E18A 微控制器支持了单周期硬件乘法器,利用此功能可以提高多项式的计算速度,并且在实现多项式运算时采用了定点数表示法,进一步降低了微控制器的计算压力。

图7 压力修正软件工作流程Fig.7 Workflow of pressure correction software

4 传感器测试结果分析

BME680传感器未经补偿时,在0℃以上,压力静态输出误差最大值为2 569.36 Pa ,最小值为1 268.92 Pa,最大值与最小值的差为1 300.44 Pa,传感器输出值与标准值最大误差为1.625%FS;0℃以下,压力静态误差的最大值为7 670.25 Pa ,最小值为1 264.05 Pa,最大值与最小值的差为6 406.2 Pa,传感器输出值与标准值最大误差为8.008%FS。

BME680 传感器经非线性和温度补偿后,在10℃及10℃以上,压力静态输出误差最大值为72.08 Pa,最小值为-93.88 Pa ,最大值与最小值的差为165.96 Pa ,传感器输出值与标称值的最大误差为0.207%FS ;在10℃以下,压力静态误差的最大值为632.68 Pa ,最小值为-479.45 Pa ,最大值与最小值的差为1 112.13 Pa,传感器输出值与标称值的最大误差为1.39%FS。

测试结果可以看出,相较未补偿时,补偿后传感器的精度提高明显,输出值与标准值最大误差,10℃及10℃以上,由1.625%FS 降低至0.207%FS,10℃以下,由8.008%FS 降低至1.39%FS ,补偿算法效果明显,但是在10℃以下传感器的精度仍然不太理想。虽然可以通过进一步提高多项式的次数提高精度,但是当增加多项式次数后,由于高次项的系数非常小,无法使用32 位定点数表示。如果使用更大位宽的定点数再加上高次项的乘法,单片机耗费的运算资源过多,在实时补偿时,对传感器数据采集的频率影响较大。

5 结论

本文设计了一款集成化柔性压力片,即将MEMS传感器(BME680)、数据采集处理以及传输电路集成在一款柔性电路板上,贴附于飞机翼面进行空气压力测量。为了解决温度对BME680 传感器压力测量精度的影响,通过分段拟合的多项式模型,基于压力片主控芯片对传感器采集的压力数据进行非线性补偿和实时修正。测试结果表明,温度补偿算法效果明显,传感器的静态输出精度提高明显,达到了预期要求。同时,该压力片系统设计和软件补偿方法也是通用的,对于不同的试验条件,可以通过修改压力片,更新迭代不同的传感器,尤其对于需要大量传感器的场合,该系统提供了一种安装方便、扩展灵活以及数据传输可靠的解决方案。本文仅对设计的集成化柔性压力片静态特性进行了分析,下一步将对压力片的动态特性进行测试和分析。

猜你喜欢
静态柔性补偿
一种霍尔传感器温度补偿电路及其补偿方法
柔性接口铸铁排水管在建筑排水工程中的应用
二维有限长度柔性壁面上T-S波演化的数值研究
中国耕地生态保护补偿的省级差序分区及补偿标准
最新进展!中老铁路开始静态验收
静态随机存储器在轨自检算法
动得多,还要坐得少——评WHO《身体活动与静态行为指南》
猜猜他是谁
解读补偿心理
柔性管理在企业经济管理中的作用