代龙
(北方民族大学电子信息工程专业,银川 750000)
传统的对物体运动状态确定的方法依赖单一的数据,而在复杂情况下,如在可接受卫星数较少或外界气象条件不允许时,无法获得准确的卫星数据或气压数据,同时由于卫星定位原理所致我们只能二维平面速率,当我们在三维空间运动时只能通过数学推算出速率。
因此,针对这些弊端,笔者设计出了一套由气压传感器、温度传感器、双模定位模块及陀螺仪构成的运动状态感知系统。气压传感器推算出的高度与定位模块的得到的高度相互验证后得到修正后的高度,陀螺仪加速度计与定位模块的数据经滤波、相互验证获得修正后的速率、方向,实现多数据融合,从而获得相对准确的物体运动状态。
以恩智浦MK60 作为MCU,使用BMP180 气压温度一体式传感器模块测定温度及气压,MPU6050 采集加速度值和欧拉角。温度、压力、加速度及欧拉角均通过I2C 总线传输给MCU 进行分析,最后将得到的数据通过SPI 接口显示到LCD 上并存入Flash。同时可以通过蓝牙将数据实时发送至PC 控制台的上位机软件,以便实现实时监控。详见图1。
选用恩智浦公司推出的的MK60,选择理由如下:
(1)MK60 是基于 ARM 公司的 Cortex-M4 内核设计的芯片,此内核是由ARM 公司专门开发的32 位处理器,具有强大的模拟数字计算能力。
(2)具备多种低功耗运行模式,允许外设在CPU处于休眠的情况下正常运行,从而降低功耗。
(3)各种通信协议(包括 I2C、SPI、蓝牙等)被集成在芯片内部。
基于以上这三点,此芯片能够满足设计需求。
(1)温度及气压传感器采用博世公司的BMP280一体式传感器,它将温度传感器、气压传感器集成在一起,整体仅仅需要一个供电接口,一根信号线(采用I2C通讯),相对于分体式传感器具有功耗低、维护调试方便等优势,同时分辨率最高达1.7cm,可以自动补偿温度偏差,完全满足设计需求。
图2
(2)陀螺仪加速度计采用InvenSense 公司推出的MPU6050,此传感器具有精度高(加速度最高达16384LSB/g,角度最高达 0.1°),功耗低的特点,DMP(数字运动处理器)集成在里面,融合了各种姿势,MCU 能够直接通过I2C 读取输出结果,能够满足设计需求。
图3
(3)定位采用SkyTra 的s1216 模块,此模块能够进行双模定位(北斗、GPS),带有有源天线,具有追踪灵敏度高(最高达-165dBm)、定位精度高(最高达2.5CEP)、冷启动时间短(30s 左右)、更新速率快(最快达20KHz)的特点,能够通过UART 串口与MCU 进行数据传输,故能够满足设计需求。
图4
蓝牙方案采用HC-08 蓝牙模块,该模块使用蓝牙4.0 协议,一主一从配对通讯,与微控制器间采用串口通讯,有通讯距离远(最远达 80m)、灵敏度高(-93dBm@1Mbps)连接稳定、功耗低的特点。
图5
采用1.8 寸TFT 液晶显示屏,采用ST7735S 芯片驱动能够以SPI 通信协议与单片机进行通信。
图6
微控制器负责控制传感器及定位模块采集数据并回传,其中数据采集采用中断方式进行,如设定每30ms 进行一次采集,将数据输入到数据分析计算系统,进行分析计算,如果可靠,将数据写入Flash 并传输到LCD 及蓝牙,否则将数据再次分析计算,确定产生误差的原因,同时再次进行数据采集并进行分析计算,得到的数据与上一次的数据进行验证、融合、取舍后将最终的数据输出。
数据分析计算系统主要先对定位模块和陀螺仪加速度计获得的数据进行滤波、解算及多数据融合计算,其主要流程如图7。
图7
(1)滤波器:
①背景:
卡尔曼滤波器是一种状态估计算法,其在工业界得到了广泛应用,可以综合利用不同传感器回传的数据,相对精确地推算出一个系统状态的估计值。由于物体具有惯性,运动状态的各个分量之间都具有相关性,这就使得卡尔曼滤波可以利用状态量和观测量对定位目标和相邻时刻的位置状态进行最优的估计,从而使滤波后的定位结果更加准确,它有一个小的内存优势(除了以前的状态量,不需要保持其他历史数据),而且速度非常快,非常适合实时和嵌入式系统的问题。
②工作原理:
简而言之,卡尔曼滤波器是能够分析上一时刻的状态,估算当前时刻的状态,而后把当前时刻的测量值与估算的状态进行分析并加权,加权后的结果作为当前的实际工作状态,而不是仅仅取决于当前的测量值。
③简化后的算法流程:
a 设定参数。
b根据时间t(K-1)的状态预测第t(K)时刻的状态 X(K|K-1)。
c根据时间t(K-1)的系统预测误差来估计时间t(K)的系统预测误差P(K|K-1)。
d 计算卡尔曼增益Kg。
e 计算系统的最加估计值X(K|K)。
f 计算系统目前的的系统预测误差P(K|k)。
g 回到步骤b。
④实现代码:
(2)姿态解算:
姿态解算包括了解算欧拉角、加速度及速度。对于速度我们知道加速度对时间的积分为速度,在这个系统中,我们把对加速度的采集放入中断(此中断级别应为最高级以保证加速度的实时性)并把加速度放入数组,中断时间设为1ms,六个中断作为一个周期,一个周期后对六个加速度数据用逐差法处理后作为平均加速度再对一个周期的时间积分得到速度。
欧拉角、加速度测定的实现代码可参考《基于嵌入式系统的数字滤波器、倾角传感器设计》这里不再赘述。
速度实现推算代码:
(3)数据融合:
数据融合首先对滤波后的陀螺仪加速度计进行融合,获得相对准确的数据后与滤波后的定位模块的数据气压计数据进行验证取舍。
①背景:
因为陀螺仪受到偏置不稳定性的影响,由于初始零个读取装置固有的缺陷和噪声,随着时间的推移陀螺仪漂移。我们可以在已知的温度范围内校准偏置不稳定,但积分常数偏角会导致不稳定的错误。这种误差随着陀螺仪旋转或角度估计的长期漂移而积累。漂移航向计算错误造成不良后果将会继续增加,而不是减少。而加速度计则相反,其对振动和其他非重力以及加速度变化敏感。因此,实际应用中,数据通过它们融和,相辅相成。
对于零漂我们阈值限定的方法修正,温漂采用程序进行补偿的方法校正,温漂系数通过建立温漂补偿模型测定(一般情况下,传感器的温漂系数会被厂商标定,但由于各传感器温漂系数不同,而各传感器在电路的组合导致温漂系数改变,故无法直接使用给定温漂系数。温漂补偿模型的建立可参考北微传感器公司的文章——MEMS 陀螺仪如何进行信号温漂补偿,温度数据直接使用集成到BMP280 中的温度传感器的数据)。对于原始数据的不平滑我们在之前已经采用了卡尔曼滤波进行校正。
②实现代码:
可参考《一种基于六轴MEMS 器件的低成本动态倾角传感器设计》,这里不再赘述。
③数据验证与取舍:
由于在复杂情况下,如卫星数较少、短时间内气压变化剧烈时,数据可能存在问题,不能反映真实情况,所以我们采取对各传感器的数据验证、融合、取舍的策略,具体步骤见如图8-图9 的程序框图。
本系统使用了定位模块及多个传感器对数据测定,并利用了成熟的卡尔曼滤波、数据融合算法实现了在复杂情况下对物体运动状态的精确测定,同时能够通过蓝牙将数据回传便于实时监测。在实验中与依靠单数据测定值进行对比,精度有较大幅度的提高。
最后感谢国家、学校的经费支持,以及学校对实验设备资料的提供,为本项目的完成奠定了基础。
图8
图9