具有自主飞行能力的无人驾驶飞机是一个应用到多学科前沿性的研究课题,无人机在机舱内不需要有人进行操纵,它在飞行的过程中依靠各种电子设备,全自动地完成各种姿态飞行。高度信息作为无人机的一项飞行参数,是保障无人机飞行控制系统正常有维持飞机安全平稳飞行的一个重要指标。本文以BMP085气压传感器为研究对象,采用卡尔曼滤波算法,通过TMS320F2812DSP构建一种更为精确的高度采集系统[1]。
1 系统工作原理及硬件结构
基于DSP的无人机高度采集系统的硬件部分主要包括气压和温度采集、数据处理及数据发送3个部分。该系统使用气压温度传感器采集无人机的气压和温度值送到无人机的处理器,使用无线传输发送给地面控制中心并通过公式计算得到相对高度值,经过卡尔曼滤波算法修正数据得到更为精确的高度值,以便于地面站工作人员对无人机进行控制,使无人机运行在安全可靠的飞行高度。
1.1 系统总体框架
基于DSP的无人机高度采集系统总体结构如图1所示,系统硬件部分由BMP085数字式气压传感器、TMS320F2812 DSP、无线传输模块、电源模块以及其他外围电路组成。TMS320F2812控制器通过I/O口模拟I2C总线与BMP085气压传感器相连接,BMP085气压传感器实时获得测量点的压强值与温度值,通过I/O口发送给控制器处理,并将压强值与温度值数据通过无人机的无线传输模块实时传输到无人机地面站。无人机地面站接收数据后,根据压力与高度的转换关系,求得在该气压下的相对应的高度值,对高度值进行补偿,并用卡尔曼滤波算法进行数据修正,分析后进行存储,再通过上行数据链把控制指令发送给飞控中心,调整无人机的姿态,从而控制无人机的高度,使无人机的飞行更加平稳[2]。
1.2 系统硬件选择
TMS320F2812数字信号处理器是TI公司最新推出的32位定点DSP控制器,是目前控制领域最先进的处理器之一。其频率高达150 MHz,大大提高了控制系统的控制精度和芯片处理能力;处理数据位数也从16位定点跃升到32位定点;最大的亮点是其拥有EVA、EVB事件管理器和配套的12位16通道的A/D数据采集,支持JTAG边界扫描接口;具有8 KB内部ROM存储器和128 KB的内部Flash存储器,3个32位CPU定时器;串口通信外设主要包括1个SPI串行接口、两个SCI串行接口、增强型控制器局域网通信接口Ecan2.0B;56个可配置通用I/O引脚;具有低功耗模式和省电模式;外部I/O口电压为3.3 V,内核电压为1.8 V,Flash的编程电压为3.3 V;有179引脚BGA封装和176引脚的LQFP封装[3]。
为了满足系统的抗超过载的要求,采用德国Bosch公司基于MEMS的BMP085气压传感器。BMP085采用强大的8-pin陶瓷无引线芯片承载(LCC)超薄封装,其压力测量范围为30 kPa~110 kPa(相当于-500 m~9 000 m),绝对精度最低可以达到0.03 hPa(0.25 m),温度测量范围为-40℃~+85℃。BMP085传送的是没有经过补偿的温度和压力值,要想得到补偿过的温度和压力值可以通过BMP085的EEPROM存储器中的标准数据进行补偿。EEPROM储存了176位单独的标准数据,这些数据用于温度和压力补偿,而176位的EEPROM被划分为11个字,每个字16位,一共11个校准系数,每个器件模块都有自己单独的校准系数[4]。
1.3 DSP系统内部框架
由于压力传感器的数据都是通过I2C总线传输给DSP,而TMS320F2812缺少I2C总线接口,所以这里使用TMS320F2812的I/O模拟I2C总线。无线收发模块则是通过SPI把数据发送给无人机地面站,因此在系统中要有SPI和I/O才能接收和发送数据,以完成该系统的完整设计。而DSP内部则包含了这两部分,只需要调用这些模块再配置好参数就可以与外部接口模块进行数据的传输[5],如图2所示。
2 系统的软件设计
测量系统的软件设计程序是基于Keil uVision4,使用C语言编写。程序设计思路为从顶层到底层,采用模块化设计方案,主要包括系统及其初始化、I/O口模拟I2C口通信以及卡尔曼滤波算法修正数据等3个子程序模块。主程序以循环方式进行,系统工作流程图如图3所示。
2.1 I/O口模拟I2C口通信
I/O口模拟I2C口通信主要用于TMS320F2812与BMP085之间的通信。对I/O口模拟I2C口通信进行设置后,控制器通过I2C接口提前将BMP085中的EEPROM的11个补偿系数读取出来,便于后面的温度补偿计算。DSP发送开始信号给BMP085传感器,启动传感器的压强与温度测量。BMP085传感器接到DSP发来的开始信号后,开始对当前压强与温度进行测量。经过4.5 ms的时间转换后,DSP利用I2C接口读取BMP085传感器中测量的压强与温度,并结合获取的补偿系数对温度和压强进行温度补偿。
该无人机于2011年暑假期间制作完毕,经过遥控试飞调试后,整机载重可达2.5 kg,飞行时长可满足一般性巡航任务。机舱内空间较为充足,可安装的体积为7 cm×8 cm×9 cm,考虑到该点,硬件电路板采用接插板的形式进行设计。
BMP085数字式压力传感器对气压-海拔高度提供了参考公式,利用该公式配合传感器采集到的气压值能得到较好的海拔高度,再经过卡尔曼滤波后得到的值更为精确。
其中气压-海拔高度公式为:
Altitude=44 330[1-(P-P0)(1/5.255)]
其中,Altitude是以m为单位的海拔高度值,P0为标准大气压值,P为当前某一高度的大气压强值。
整机测试结果如表1所示,以海拔高度测量结果作为理论值,将本机高度测量结果和海拔仪结果作对比。由于实验条件有限,高度取值范围为0~500 m。
从表1可以看出,经过系统解算出的高度误差值在测量范围内最大为0.52 m,系统误差普遍小于1 m。气压高度采集系统误差主要由传感器本身误差、电路误差和解算误差造成。系统经过传感器校正、温度补偿、软件滤波和解算高度公式,确保了测量结果的高精度,因此该高度测量系统满足高度测量的需求。
采用BMP085大气压力传感器和TMS320F2812 DSP设计的高精度高度采集测试系统,通过简洁的电路和有效的软件滤波算法,具有良好的稳定性和较高的精度,适用于精度高、体积小、方便携带等多功能的需求,在实际生活中有较为广泛的应用前景。
参考文献
[1] 王晅,李小民.高精度小型无人机气压高度测量系统的设计[J].测控技术,2012,31(2):12-15.
[2] 梁胜展,郭雪梅,余晓填.基于BMP085气压传感器及BP算法的高度测量研究与实现[J].传感技术学报,2013(5):654-659.
[3] 蒋乐平.基于DSP的太阳能飞艇飞控系统研究[D].南昌:南昌航空大学研究生院,2012.
[4] 王俊彩,王福平,侯瑞峰,等.基于BMP085的一种便携式海拔高度测量系统设计[J].传感器与微系统,2011,30(12):123-125.
[5] 王琪,蒋乐平.基于PSoC的飞艇艇内温度采集系统设计[J].电子技术应用,2012,38(1):41-43.
[6] 敬喜.卡尔曼滤波器及其应用基础[M].北京:国防工业出版社,1973.