APP下载

基于BMP085气压传感器及BP算法的高度测量研究与实现*

2013-04-30梁胜展郭雪梅余晓填

传感技术学报 2013年5期
关键词:测量点气压神经网络

梁胜展,郭雪梅,余晓填

(中山大学信息科学与技术学院,广州510006)

准确的相对高度测量(即空间中任意两点的垂直距离)在人们所研究、生活的各个领域中有着非常重要的应用,如小型无人机、野外探险和建筑施工等[1-4]。一般而言,相对高度测量方法大致分为两种:一种是传统的机械式直接测量;另一种是利用电子仪器(如气压传感器测量大气压)间接计算测量[4-6]。传统机械式测量方法采用机械仪器,具有携带不便、测量精度低和量程有限等缺点。相比之下,随着电子技术的发展,利用气压传感器进行相对高度测量具有更广泛的实际意义,且符合传感器应用发展趋势。然而,当测量点周围大气状态不符合理想标准大气压的状态(即压强为1 013.25 hPa,温度为15℃)时,用于计算相对高度的标准气压高度公式受大气温度或湿度的影响较大(即公式的“原理性”误差)。这导致利用气压传感器进行相对高度测量会产生较大误差[7]。

在文献[2,5,8]中,其研究所采用的高度计算方法是直接通过标准气压高度公式估算的。当测量点的周围环境不符合标准大气压状态时,其计算结果与实际高度相差较大。因此,为了获得更准确的相对高度,本文以BMP085气压传感器为研究对象,采用Back-propagation(BP)神经网络自学习算法,通过STM32F103RBT6微控制器构建一种更精确的相对高度测量系统。通过BMP085获取当前的温度与压强,并利用通过BP算法训练好的测量网络间接计算出当前测量点相对于地面的高度(其中,地面为用BP算法训练网络时,指定的测量基点)。实验证明,该相对高度测量系统的计算值比采用标准气压高度公式计算得到的相对高度更接近实际相对高度,且能有效削弱环境因素变化带来的影响。

1 测量系统硬件设计

测量系统的硬件部分由STM32F103RBT6微控制器、BMP085气压传感器和一些外围电路所组成。STM32F103RBT6微处理器通过I2C接口与BMP085气压传感器连接,并通过UART(串口)与计算机连接。BMP085气压传感器实时获得测量点的压强值与温度值,通过I2C总线发送至微处理器进行处理。为了方便展示结果,带有已训练好测量网络的微处理器计算相对高度值之后,通过串口将相关结果发送至计算机保存并展示。其硬件设计结构框图如图1所示。

图1 硬件结构框图

1.1 STM32F103RBT6 微控制器

STM32F103RBT6是意法半导体(ST)公司推出的增强型系列中的一款微控制器,其内核是高性能的ARM 32 bit的CortexTM-M3 CPU,工作频率能够达到 72MHz[9]。它具有 UART、I2C、USB 等高速通讯口,能够与外围电路实时通信。

1.2 BMP085数字气压传感器

BMP085是一款高精度、超低功耗的数字气压传感器,采用强大的8-pin陶瓷无引线芯片承载(LCC)超薄封装,适合应用于移动设备中。它由电阻式压力传感器、AD转换器、控制单元组成,其中控制单元包括E2PROM和I2C接口,可以通过I2C总线直接与各种微处理器连接通信[10]。BMP085的E2PROM存储11个校准系数,这些校准系数用于对气压传感器进行温度补偿,从而减少周围环境对其造成的误差。BMP085的压强测量范围在300~1 100 hPa(海拔高度-500 m ~9 000 m),温度测量范围在-40℃ ~85℃,符合产品开发与应用的需求。值得一提的是,本研究所测量的气压和温度的数据精度都是传感器内部硬件数模电路已实现的,数据精度分别为0.01 hPa和0.1℃。

此外,BMP085气压传感器虽然内置温度补偿,但是其补偿往往是有限的。为了更好地减少温度等环境因素引起的气压高度测量误差,本文基于BMP085气压传感器,采用BP神经网络自学习算法设计了相对高度测量系统。

2 测量系统软件设计

测量系统的软件设计程序是基于Keil uVision 4及MATLAB软件,使用C/MATLAB语言编写。程序的设计思路为顶层到底层,采用模块化设计方案,主要包括系统及其设备初始化、IO模拟I2C口通信、BP测高网络建立与训练以及数据发送与保存等四大部分子程序。主程序以循环方式进行,系统工作流程图如图2所示。以下对四部分程序设计进行详细的说明与阐述。

图2 相对高度测量系统工作流程图

2.1 系统初始化及其设备初始化

上电复位后,系统及其设备将进行初始化。系统初始化主要包括系统时钟初始化、端口与串口初始化、中断初始化以及看门狗初始化等。而设备初始化主要是对BMP085气压传感器进行初始化,使其能够正常工作。

2.2 IO模拟I2C口通信

IO模拟I2C口通信主要用于STM32F103RBT6与BMP085之间的通讯。对IO模拟I2C口通信进行设置后,微处理器通过I2C接口提前将BMP085中的E2PROM的11个补偿系数读取出来,便于后面的温度补偿计算。微控制器发送开始信号给BMP085传感器,启动传感器的压强与温度测量。BMP085传感器收到微控制器发来的启动信号后,开始对当前温度与压强进行测量。经过4.5 ms的转换时间后,微控制器利用I2C接口读取BMP085传感器中测量的温度与压强,并结合获取的补偿系数对温度与压强进行温度补偿。

2.3 BP神经网络建立与训练

BP神经网络具有并行处理等优越性能,在很多数据处理(如滤波、预测)等有广泛研究。本研究在相对高度测量系统中引入BP神经网络自学习算法,能够有效提高相对高度测量准确性。本节将详细阐述相对高度测量系统BP神经网络的建立与训练。

2.3.1 BP 神经网络及其原理

BP神经网络[11-12]是一种基于信号前向传播和误差反向传播的多层网络,它于1986年由Rumelhart和McCelland为首的科学家小组提出。由于BP神经网络具备容错性、并行性和自适应性等优点,它已成为应用最广泛的神经网络之一。

BP神经网络由一个输入层、若干个隐含层和一个输出层所组成,层与层之间采用全互连方式,同一层之间不存在相互连接。BP神经网络能学习和存贮大量的输入输出模式映射关系,而无需事先知道输入输出模型映射关系。在外界输入样本的刺激下不断改变网络连接的权值与阈值,使网络输出接近期望输出。

2.3.2 训练数据预处理

本研究中,训练数据是通过实际测量直接获得。训练数据以广东省广州市中山大学信息科学与技术学院实际楼层(以下简称中大信科院楼)为例展开。中大信科院楼楼层共有7层,每层楼高约为4.46 m,总高度约为26.76 m。将中大信科院楼一楼(即地面)作为基准点并取26个测量点,这26个测量点具有不同的相对高度。具体的采集数据地点选择在每层楼梯阶梯进行,这是为了方便选取26个不同高度的相对高度测量点。对每个测量点采集10组压强值和温度值数据,然后将10组数据中压强最低与压强最高的两组数据删除,并求得剩下8组数据的平均值作为测量点的温度值与压强值(其中,压强值精确到0.001 hPa,温度值精确到 0.01 ℃),同样的方法处理并记录这些测量点的相对高度(其中,相对高度的精度在计算时,取定为0.000 1 m。在实际应用中,可根据实际情况进行合适位数的取舍)。最终,将这些数据保存在计算机中,方便数据的使用和验证。训练数据由压强值p、温度值t和相对高度值ΔH组成,如表1所示。

表1 BP神经网络训练数据

2.3.3 BP神经网络模型的建立与训练

Robert Hecht-Nielsen已经证明,如果隐含层的激活函数采用S型函数,并且输出层的激活函数采用线性函数,那么典型的3层BP网络能够以任意精度逼近任何有理函数[11-12]。

BP神经网络建立与训练有两种实现方式,一种是在线的,另一种是离线的。在线建立与训练BP神经网络需要在微处理器上实现,这对微处理器本身的资源要求很高。由于计算机上的MATLAB软件具备专门的神经网络工具箱,为了减少训练程序工作量、提高工作效率,本文采用离线的方法,直接调用MATLAB提供的函数创建一个3层的BP神经网络[13-14]。输入层中共有两个输入,这两个输入分别为测量点的压强p和温度t;隐含层的单元数目设置为6,激活函数采用 S型的tansig函数,其原型为而输出层的激活函数采用purelin函数,其原型为f(x)=x,神经网络的输出则为该点相对于地面的高度ΔH。在进行神经网络数据训练之前,由于BP神经网络的隐含层激活函数采用的是S型函数,应先将训练数据进行归一化(数据归一化可以加快收敛速度和避免陷入S型函数饱和区)。BP神经网络测量模型建立与训练的具体步骤如下:

(1)调用MATLAB中的premnmx函数对训练数据进行归一化。其操作语句为:[Xn,minX,maxX,Yn,minY,maxY]=premnmx(X,Y),其中 X 为输入矩阵,表示训练数据中压强与温度的集合,Y为输出矩阵,表示训练数据中相对高度集,Xn、Yn分别表示X与Y归一化的结果;

(2)调用MATLAB中的newff函数创建一个3层神经网络。其操作语句为:net=newff(minmax(Xn),[6 1],{'tansig','purelin'},'traingd'),并将神经网络的学习速率设置为0.05,迭代步长设置为20 000,网络训练性能目标定义为10-6;

(3)调用MATLAB中的train函数对神经网络进行训练。其操作语句为:[net,tr]=train(net,Xn,Yn)。

由此所建立的BP神经网络如图3所示。

图3 BP神经网络结构图

图3中p、t分别表示某点的压强与温度,ΔH表示该点相对于地面的高度。W1i、W2i分别为压强p与温度t由隐含层到输入层之间的权值(其中,i=1,2,…,6),bi为隐含层的阈值,W3i为输出层到隐含层之间的权值,a为输出层的阈值。

高度测量系统的神经网络模型训练后,其相应层的权值与阈值分别为

其中,W1={W1i|i=1,2,…,6},W2={W2i|i=1,2,…,6},W3={W3i|i=1,2,…,6},b={bi|i=1,2,…,6}。根据图3可以得到ΔH的表达式为

将 W1、W2、W3、b、a 以数组的方式保存在微处理器中,编写神经网络计算表达式并将其嵌入到微处理器中。由于进行网络训练时,对数据进行了归一化处理,所以在实际测量时,应将测得的压强、温度进行归一化;再根据神经网络计算表达式得到ΔH归一化的值;最后将ΔH进行反归一化,得到实际估算的相对高度[15]。

2.4 数据发送与保存

为了能够方便观测压强、温度以及该点相对于地面的高度,本研究所实现的相对高度测量系统,能够利用USB串口读取测量的温度、压强和相对高度,并把它们发送到计算机上保存并展示。

3 实验验证

假设空气为理想标准大气压的状态,则气压与海拔高度的关系[15-16]为

式(2)为标准气压高度公式,式中的系数,R表示空气专用气体常数,其值为287.052 87 m2/(K·s2);gn表示自由落体加速度,其值为9.806 65 m/s2;β为大气温度垂直梯度(β=dT/dH);而 Pb、Tb、Hb分别代表不同海拔高度层的标准海拔高度大气压强、标准海拔高度温度和标准气压高度的下限值。在不同的海拔高度层,对应的β、Pb、Tb和Hb取不同的值。

表2 大气温度、温度梯度与高度分层系数

本文中,由于BMP085气压传感器测量的海拔高度范围为-500 m~9 000 m,表2给出在这范围内对应的系数。将各个系数的值代入式(2)中,可以得到,当-2 000 m≤H<11 000 m时,

3.1 比较分析1:以中大信科院楼为例

在中大信科院楼的实验中,我们对本文所提出的相对高度测量系统的有效性验证分为两个部分。第一部分为验证测量系统测量相对高度的准确性;第二部分为验证本文提出的相对高度测量系统测量相对高度时,能削弱环境因素的影响,即具备良好的稳定性。

3.1.1 相对高度测量系统准确性的验证

运用本文所提出的相对高度测量系统计算中大信科院楼其他空间点(实验中取17组验证数据)的相对高度。相对高度测量系统的验证数据如表3所示(其中,验证数据的压强与温度是不同点随机采集的)。

表3 相对高度测量系统测量相对高度验证数据

由表3可知,相对高度测量系统输出的估算值,没有突变,随着压强的减少,相对高度逐渐增大。为了进一步展示测量系统的有效性,将真实值、标准气压高度公式计算值以及运用本文所提出的相对高度测量系统(即基于BMP085传感器及BP算法的测量系统)计算输出的相对高度值进行对比,实验结果如图4所示。由图4可以明显地发现,相对高度测量系统的输出值更符合真实值。具体的差别为,测量系统的计算值与真实值的标准差为2.492 0 m,而标准公式计算值与真实值的标准差却达到5.365 2 m。这验证了本文所提出的相对高度测量系统具有更高的准确性。值得一提的是,如网络训练数据相对高度计算值的精度取定,在相对高度测量系统中,我们也取定相对高度计算值(即测量网络的输出值)的精度为0.000 1 m。在实际使用时,这能方便在不同应用场合取舍合适的位数。

图4 相对高度测量系统计算值与真实值、公式计算值的准确性比较分析一

3.1.2 相对高度测量系统稳定性的验证

为了验证本研究所提出的相对高度测量系统能有效削弱其他环境因素(如湿度、风速等)对相对高度测量造成的影响,我们采集不同湿度、温度和风速下的相对高度数据如表4所示。

表4 不同湿度、温度和风速下,测量的压强值、温度值和相对高度值

首先,在前面构建的神经网络基础上,我们使用其中4组数据进行神经网络的进一步训练,采用剩余的9组数据进行验证。相对高度测量系统计算输出的相对高度值如图5所示。图5的实验结果表明,在不同的温度、湿度和风速的情况下,本文提出的相对高度测量系统准确性仍然比用标准公式计算时高。这说明提出的相对高度测量系统很好地削弱了其他环境因素的影响,具备良好稳定性。

图5 相对高度测量系统计算值与真实值、公式计算值在不同环境因素影响下的比较分析

3.2 比较分析2:以中大宿舍楼为例

为了验证本文所提出的相对高度测量系统应用的普遍性,在中山大学学生宿舍至善园8栋(以下简称中大宿舍楼)进行数据采集,选择8组数据作为验证数据。采用相同的方法,得到本文研究的相对高度测量系统对相对高度的计算值。将真实值、标准气压高度公式计算值以及运用本文所提出的相对高度测量系统计算输出的相对高度值进行对比,实验结果如图6所示。由图6可以发现,本文提出的相对高度测量系统具有更高的准确性和稳定性。

图6 相对高度测量系统计算值与真实值、公式计算值的准确性比较分析二

总的来说,从图4~图6可以看出,本文所研究的相对高度测量系统(基于BMP085及BP算法的相对高度测量系统),相比传统的标准气压高度公式计算相对高度,具有更高的准确性。对比试验结果可以发现,该测量系统具有更好的稳定性。因此,本文所提出的相对高度测量系统具有比较高的工业和商业应用价值。

4 结论

本文研究并实现了相对高度的准确测量。基于BMP085气压传感器及BP算法,本文提出了具有更高准确性和稳定性的相对高度测量系统。该测量系统通过已训练好的BP测量网络,在获得测量点的压强值和温度值时,能够直接计算出测量基点(即地面)与测量点的相对高度。实验证明,基于BMP085气压传感器及BP算法的相对高度测量系统具有优越的性能(准确性和稳定性),能够减少温度、湿度等对相对高度测量的影响。本论文的研究结果将有广泛的工业和商业应用前景,且有可能对相关电子产品的研发与应用提供参考。

[1]严家明,张宏涛.基于FPGA的无人机气压高度测量系统设计[J].传感技术学报,2007,20(3):707-710.

[2]赖武刚,郭勇,詹鹏.大气压强传感器TP015P在海拔高度测量中的应用[J].电子元器件应用,2010,12(8):11-13.

[3]严广斌,刘绍堂.工程测量中高度测量方法[J].中州煤炭,2004,(3):45-46.

[4]周志久,闫建国,陈鹏.一种小型无人机高度测量方法的研究与实现[J].测控技术,2008,27(11):92-94.

[5]党玮,黄圣国.数字式气压高度表的设计[J].测控技术,2004,23(12):13-15.

[6]刘维亚,牛秀范,邓春建.基于智能传感器的新型高度与方向测量仪[J].传感技术学报,2010,23(8):1093-1097.

[7]赵天成,饶和昌.一种基于MS5803和气象数据的高度测量方法[J].电子设计工程,2011,19(14):44-47.

[8]王雪利,陈伟,贺志轶.气压测高的电路设计与算法研究[J].武汉理工大学学报:信息与管理工程版,2008,30(2):215-217.

[9]STMicroelectronics Corporation,STM32F103XX Datasheet[J].2007,11.

[10]BOSCH Sensortec.BMP085 Digital Pressure Sensor Data Sheet[EB/OL].[2009-10-15].http://www.bosch-sensortec.com.

[11]樊振宇.BP神经网络模型与学习算法[J].软件导刊,2011,10(7):66-68.

[12]邵军,刘君华,乔学光,等.利用BP神经网络提高光线广栅压力传感器的选择性[J].传感技术学报,2007,20(7):1531-1534.

[13]巨军让,卓戎.BP神经网络在MATLAB上的方便实现[J].新疆石油学院学报,1999,11(2):42-46.

[14]罗成汉.基于MATLAB神经网络工具箱的BP网络实现[J].计算机仿真,2004,21(5):109-111.

[15]Thomas Bob,Volker Diekmann,Reinhart jurgens.Biological Cybernetics[J].Sensor Fusion by Neural Network Using Spatially Represented Information,2001,85(5):371-385.

[16]吴浩然.大气压强和高度的关系[J].张家口师专学报:自然科学版,1994,1(1):22-25.

猜你喜欢

测量点气压神经网络
飞机部件数字化调姿定位测量点的优选与构造算法
看不见的气压
浅析冲压件测量点的规划
神经网络抑制无线通信干扰探究
压力容器气压端盖注射模设计
基于CAD模型的三坐标测量机测量点分布规划
PM2.5空中探测器的设计
基于神经网络的拉矫机控制模型建立
复数神经网络在基于WiFi的室内LBS应用
电渗—堆载联合气压劈烈的室内模型试验