APP下载

硅压阻式压力传感器误差修正算法的FPGA实现

2017-02-18华振宇徐大诚

传感器与微系统 2017年2期
关键词:校正补偿传感器

华振宇, 徐大诚

(苏州大学 微纳传感器研究中心,江苏 苏州 215100)

硅压阻式压力传感器误差修正算法的FPGA实现

华振宇, 徐大诚

(苏州大学 微纳传感器研究中心,江苏 苏州 215100)

针对现场可编程门阵列(FPGA)的输入输出(I/O)资源丰富、并行执行特点对设计大规模硅压阻式压力传感器补偿系统以及提高其补偿效率有一定的意义,提出了一种FPGA补偿系统设计方案并对传感器输入输出存在的非线性误差,设计了32位单精度浮点运算单元实现曲线拟合法中的多项式拟合算法,使用Verilog语言在Xilinx ISE中实现FPGA的逻辑设计、仿真和综合。结果证明:设计的可在FPGA中综合实现的多项式拟合算法效果显著,可以对非线性系统进行校正,有较高的应用价值。

硅压阻式压力传感器; 非线性校正; 现场可编程门阵列; 曲线拟合

0 引 言

硅压阻式压力传感器是利用半导体的压阻效应制成的压力传感器件,其特点是灵敏度高、线性度好、稳定性好,容易实现批量生产,易于利用标准的集成电路(IC)技术实现集成化等,被广泛应用于电力、石化、汽车电子等领域[1]。但用半导体材料作为敏感元件的压阻式压力传感器的温度特性不稳定,温度漂移现象明显,而且它特殊的加工工艺又使其非线性误差也具有随机性[2,3]。温度漂移特性和非线性误差,使得压阻式压力传感器在出厂使用之前必须要经过非线性误差的校正。在对压阻式压力传感器温度补偿方案中,传统的补偿方法可分为硬件补偿和软件补偿两大类。由于软件补偿技术实现相对简单,补偿效果明显,是提高压力传感器精度的重要途径[4]。所以,在现代流行的压力传感器温度补偿中大都采用软件补偿。

1 基于现场可编程门阵列的补偿系统方案

现场可编程门阵列(FPGA)因其良好的并行运算能力,以及无与伦比的可重配置性、可扩展性能,已经成为现代电子通信产品中不可或缺的组成部分,尤其在数字信号处理领域中得到了十分广泛的应用[5]。从以往设计的补偿系统来看,硅压阻式压力传感器软件补偿系统是将传感器和微处理器结合起来,充分利用微处理器丰富的软件功能,通过一定的补偿算法对压阻式压力传感器因温度而产生的误差进行修正来实现。但在多路数据补偿系统设计中会不免遇到单片机输入输出(input/output,I/O)口资源紧张,且单片机程序执行串行特点等会影响数据采集系统设计的难度以及补偿效率的降低;而FPGA 动辄数百I/O,可以方便连接外设实现大规模系统的设计,且FPGA不同逻辑可以并行执行,可以同时处理不同任务,这就使得FPGA实现补偿系统效率更高[6]。因此本文提出了用FPGA来实现补偿的一种硬件设计方案,在整个系统中FPGA处理系统是关健,它接收A/D采集到的数据后运行补偿算法,最后把校正系数写入EEPROM中存储起来;FPGA处理系统通过UART接口可以和上位机进行通信。系统框图如图1所示。

图1 系统设计框图

2 算法分析与实现

目前,软件补偿方法主要有插值法、曲线曲面拟合法、查表法和BP神经网络法等[7]。在插值法中,数据假定是正确的,要求以某种方法描述数据之间所发生的情况。曲线拟合方法就是设法找出某条光滑曲线,它是最佳的拟合数据,但不必要经过任何数据点。查表法是预先将一系列参数装入一个参数表内,获得测量数据后,根据相应的参数进行处理。查表法需要占用很大的RAM空间,而FPGA中RAM资源宝贵,因此,这种方法不适用于FPGA中实现。神经网络方法通过建立人工神经网络模型,并通过样本训练确定网络参数,最大的缺点是网络不稳定、训练时间较长、实现难度大等,不适合FPGA中实现,本文采用多项式拟合算法。

2.1 多项式拟合

多项式拟合方法数据处理的基本思想与熟知的最小二乘法一致。由于压阻式压力传感器的待补偿量是非线性的,采用最小二乘法会遗漏较多细节;而采用高次方的多项式拟合,可以在一定程度上弥补这一不足,在一定次数范围内,多项式次数越高越能反映传感器受温度影响的输出情况。设传感器拟合模型可表示为n阶多项式

W=φ(U)=k0+k1U+k2U2+k3U3+…+knUn+ε

(1)

式中W为被测压力;U为传感器的电压输出;ε为高阶无穷小,k0~kn为常系数。这里选择n=2,由式(1)可以看出,确定模型的关健在k0~k2的求解。由曲线拟合多项式计算得到的值Wk(U)值与实验标定值Wk之间误差的平方为

式中k=1,2,…,N,N为标定点的个数,其均方误差R可表示为

(2)

将函数R(k0,k1,k2)分别对k0~k2求偏导,令各偏导数等于零,整理后得

2.2 FPGA处理单元组成

FPGA处理单元由传感器输入I2C接口模块、校正算法多项式拟合模块、同步FIFO模块、UART发送模块、用户按键输入模块。FPGA处理单元如图2所示。下面介绍I2C模块和多项式拟合模块。

图2 FPGA处理单元框图

2.2.1 I2C采集模块设计

I2C(Inter-Intergrated Circuit)总线是一种由Philips公司开发的一种用于内部IC控制的双向串行总线。1988年,推出I2C总线协议2.0版本时,I2C协议实际上已经成为一个国际标准。通常高精度压阻式压力传感器带有I2C接口。I2C有标准、快速、高速三种工作模式[8]。本文采用标准模式,数据传输速率高达100 kbit/s。由于FPGA系统外部时钟输入为50 MHz,所以设计中进行了时钟分频处理。本文设计的I2C控制器模块结构框图3。

图3 I2C总线控制器模块结构图

2.2.2 多项式拟合模块

几乎所有的数字计算机,包括FPGA在内的数字信号处理器件,数字和信号量都是用二进制来表示的。数有定点数和浮点数之分,为了提高拟合的精度本文设计一律采用浮点数并且符合IEEE 754标准,由于几乎所有的计算机都支持该标准,所以大大改善了设计代码的可移植性。在FPGA中实现信号处理算法的途径就是把它分解为基本的代数运算[6]。本文设计中使用了大量的乘加运算,为了提高拟合的精度,本文设计32位单精度浮点乘法模块以及32位单精度浮点加减模块。下面给出设计代码可在Xilinx spantan 6XC6SLX9器件中实现的浮点乘法器在Xilinx 14.6 ISE中的仿真结果如图4所示。

图4 32位单精度浮点乘法器仿真图

3 实验过程与结果分析

为了对本文设计的FPGA拟合算法实现进行验证,实验对压阻式压力传感器进行了3次标定,每次标定取6个标定量。本文对这3组不同的标定数据进行拟合,为了使拟合后的表达式能直接应用于后期的测试实验中,3组标定量全部以电压作为输入量,压力作为输出量,用拟合后的压力值与实际添加压力标准值来做比较,得出FPGA中实现多项式拟合的非线性校正效果,并与在Matlab中实现多项式拟合的非线性校正效果做对比。

表1 传感器标定数据

W′k/kPa012345020406080100Uk/V0.4781.2502.1012.9523.8024.6460.3641.1101.9242.7363.5484.3590.3121.0281.8212.6143.4074.196

使用Matlab R2012b软件求出该数据拟合多项式的系数和拟合后的值,程序如下:

x1=[0.478,1.250,2.101,2.952,3.802,4.646];

x2=[0.364,1.110,1.924,2.736,3.548,4.359];

x3=[0.312,1.028,1.821,2.614,3.407,4.196];

y=[0,20,40,60,80,100];

p1=polyfit(x1,y,2);

p2=polyfit(x2,y,2);

p3=polyfit(x3,y,2);

yy1=polyval(p1,x1);

yy2=polyval(p2,x2);

yy3=polyval(p3,x3)。

得到的拟合多项式系数值和拟合值分别为

p1=[-0.212 8,24.936 1,-11.484 2]

p2=[-0.216 3,25.925 5,-9.079 0]

p3=[-0.269 6,26.800 9,-7.936 5]

yy1=[0.386 6,19.353 3,39.967 0,60.272 3,80.246 2,

99.774 7]

yy2=[0.329 2,19.431 8,40.001 1,60.234 3,80.182 4,

99.821 2]

yy3=[0.399 2,19.329 9,39.974 0,60.278 9,80.244 7,

99.773 3]。

为了方便在FPGA中验证Verilog多项式拟合算法,首先将把给定的标定数据转化为32位单精度的浮点格式。使用Matlab转换数据为32位十六进制表示,程序如下

xx1=num2hex(single(x1));

xx2=num2hex(single(x2));

xx3=num2hex(single(x3));

yy=num2hex(single(y))。

实验数据在Xilinx14.6 ISE中仿真结果如图5所示。

图5 实验数据仿真结果图

从仿真结果中分别得到3组待拟合实验数据用FPGA实现的多项式拟合算法拟合的校正系数如下

将上面得到的32位单精度浮点形式的校正系数转换为十进制数如下

用Matlab R2012b分别得到3组数据的曲线拟合对比图如图6所示。

图6 Matlab实现和FPGA实现对比

通过图6可以看出,本文用FPGA实现的多项式拟合算法和Matlab中多项式拟合结果基本一致,可以算出两种拟合结果的线性度(如表2)。拟合系统的线性度可由式(3)求得

(3)

式中δL为线性度;YFS为量程(100 kPa);ΔLmax为最大偏差。

表2 两种拟合的线性度

组数Matlab拟合/%FPGA拟合/%10.64670.641520.56820.557130.67010.6595

4 结 论

通过Matlab和FPGA算法实现的线性度相差不大,误差主要在于Matlab默认采用双精度浮点数据进行拟合和数据转化时小数点的保留上,说明FPGA实现了和Matlab相媲美的多项式拟合运算。因此,本文设计的多项式拟合算法能够达到理想的结果,可以被工程实际应用。

[1] Chen G,Sun T,Wang P,et al.Design of temperature compensation system of pressure sensors[C]∥2006 IEEE International Conference on Information Acquisition,IEEE,2006:1042-1046.

[2] Akbar M,Shanblatt M.A fully integrated temperature compensation technique for piezoresistive pressure sensors[J].IEEE Transactions on Instrumentation and Measurement,1993,42(3):771-775.

[3] Otmani R,Benmoussa N,Benyoucef B.The thermal drift characteristics of piezoresistive pressure sensor[J].Physics Procedia,2011,21:47-52.

[4] Perraud E.Theoretical model of performance of a silicon piezoresistive pressure sensor[J].Sensors and Actuators A:Physical,1996,57(3):245-252.

[5] 杜 勇.数字滤波器的Matlab与FPGA实现[M].北京:电子工业出版社,2014.

[6] 田永强.基于FPGA的多路矿用气体传感器智能调校系统[J].传感器与微系统,2014,33(11):69-72.

[7] 彭基伟,吕文华,行鸿彦,等.基于改进GA-BP神经网络的湿度传感器的温度补偿[J].仪器仪表学报,2013,34(1):153-160.

[8] 周 鹏.数字电路的FPGA设计与实现[M].北京:机械工业出版社,2013.

华振宇 (1989-),男,硕士,主要研究方向为惯性传感器。

Realization of error correction method by FPGA for Si piezoresistive pressure sensor

HUA Zhen-yu, XU Da-cheng

(Micro-nano Sensor Research Center,Soochow University,Suzhou 215100 ,China)

Aiming at abundent input/output(I/O)resource and parallel processing characters of field programmable gate array(FPGA)is of meaning for large-scale compensating system for Si piezoresistive pressure sensor and increasing its compensation efficiency is significative,a compensated system design scheme is proposed and aiming at nonlinear error of sensor input and output,design 32 bit single-precision floating point unit(FPU) for realizing the polynomial curve fitting methods,Verilog language is used in Xilinx ISE to implement logic design,simutation and synthesis of FPGA.The results show that the polynomial fitting algorithm which can be realized in FPGA is effective,and it can be used for calibration of nonlinear system and has application value.

Si piezoresistive pressure sensor; nonlinear correction; field programmable gate array(FPGA); curve fitting

2016—03—18

10.13873/J.1000—9787(2017)02—0101—03

TP 212

A

1000—9787(2017)02—0101—03

猜你喜欢

校正补偿传感器
康奈尔大学制造出可拉伸传感器
劉光第《南旋記》校正
简述传感器在物联网中的应用
无功补偿电容器的应用
“传感器新闻”会带来什么
跟踪导练(三)2
在Lightroom中校正镜头与透视畸变
机内校正
解读补偿心理
植物补偿和超补偿作用