基于STM32的步行者航位推算装置设计

控制/MCU

1879人已加入

描述

  基于便携性与实用性考虑,提出一种新的步行者航位推算装置设计。使用三维加速度计与电子罗盘集成芯片LSM303DLHC和陀螺仪集成芯片MPU3050对步行者的实时运动信息进行采集,采用具有ARMCortex-M3内核的STM32F103RBT6单片机收集传感器数据并对数据进行航位推算处理,将步行者航迹信息显示于TFTLCD上。实验证明,该装置具有较高的推算精度,能满足实际应用需求。

  1、系统组成与工作原理

该步行者航向推算装置主要由三维传感器模块、数据转换模块与处理模块组成,具体的组成框图如图1所示。三维传感器模块上分为三轴加速度计与电子罗盘集成芯片LSM303DLHC、陀螺仪集成芯片MPU3050,以及用于数据处理的单片机STM32F103RBT6。实际工作时,三轴传感器模块置于步行者腰间,三维加速度计用于采集前左上三个方向上的加速度,用于计算模块的俯仰角与倾斜角,以及步行者的步数统计与步幅估计;电子罗盘采集步行者实时航向角数据;陀螺仪测出单位时间内三轴角速度以校正计算出的俯仰角与倾斜角;单片机负责对传感器的原始数据进行转换处理,采用串口与数据处理模块进行通信。数据处理模块核心也采用了单片机STM32F103RBT6,在与三维传感器模块串口通信的同时,将航位推算所需的数据通过FAT32文件系统存于SD卡中。显示模块采用的是TFTLCDILI9320,当步行者需要查看当前的航位信息时,单片机可通过FAT32文件系统从SD卡中调出原始数据,进行航位推算处理,最终将步行者的航迹显示于TFTLCD上。

 STM32

  图1系统组成框图

  2、硬件设计

  2.1、主控芯片及外围电路设计

  主从单片机都采用ST公司生产的具有ARMCortex-M3内核的工业级控制芯片STM32F103RBT6,它具有72MHz时钟主频,内部ROM存储容量为128KB,RAM存储容量为20KB。它具有8个定时计数器,3个SPI、2个I2C总线、3个UART、1个USB、1个CAN总线等通信端口,这些通信端口完全能满足本系统在设计过程中的需要。

  STM32F103RBT6芯片由3.3V电压供电,而外部电源为5V电池,因此采用降压芯片AMS1117-3.3,它能将输出电压降低并且稳定在3.3V,精度为1%。

  2.2、三维传感器模块设计

  LSM303DLHC芯片可在2.16~3.6V低电压下正常工作,其内置三轴加速度计,量程为±2g~±16g。电子罗盘量程可为±1.3~±8.1gauss,单片机通过SCL、SDA引脚与其进行I2C总线通信,编程寄存器CTRL_REG4内容可设置三轴加速度计量程,编程寄存器CRB_REG_M内容可设置电子罗盘量程,其外围电路如图2所示。

 STM32

  图2LSM303DLHC外围接口原理图

  MPU3050能在2.1~3.6V低电压下正常工作,其内置的陀螺仪可测出三轴方向上±250~±2000°/s的角位移,通过编程其寄存器DLPF_FS可以选择陀螺仪工作的量程,同时单片机通过I2C总线,可从X_OFFS_USRH/L、Y_OFFS_USRH/L、Z_OFFS_USRH/L这6个数据寄存器读出三轴原始数据,其外围电路如图3所示。

  STM32

  图3MPU3050外围接口原理图

  2.3、数据存储及显示模块设计

负责航位推算的主单片机与三维传感器模块上的从单片机通过串口进行通信,它们被设置为相同的波特率。由于STM32F103RBT6的内置RAM容量只有20KB,而航位推算过程中使用的数据容量远大于其内存容量,所以采用FAT32文件系统,把主单片机接收的数据存入SD卡中,单片机通过SPI接口存入或读出数据,数据存储模块的原理图如图4所示。

 STM32

  图4数据存储模块原理图

  显示模块采用了Ilitek公司生产的TFTLCDILI9320,分辨率为320×240,正常工作电压为3.3V,采用16位双向数据线,单片机通过WR引脚向TFTLCD里写入数据,通过RD引脚读出数据,显示模块的原理图如图5所示。

  STM32

  图5显示模块原理图

  3、软件设计

  3.1、航迹推算原理

  步行者的运动通常可以认为是二维运动[4],步行者一个步伐周期内的两个落脚点间的连线可以认为是直线,数据采样时间为一个步伐周期时,已知步行者上一采样周期末的方位信息与本次采样周期内步伐长度与航向角信息,可以推算出本次采样周期末步行者的方位信息。以二维x-y坐标平面表示,设步行者初始时刻的方位为(x0,y0),任意时刻t的方位为(xt,yt),步行者每个采样周期内的步长为S,航向角为A,则按照一个步伐周期T内采样,根据递推原则,任意时刻t步行者的方位如下:

  STM32

  3.2、航向角计算

  由三轴加速度计测出的前左上三个方向上的加速度数Ax、Ay、Az可以计算出三维传感器模块的俯仰角(以θ1表示)和倾斜角(以θ2表示)为:

  STM32

  式中的Ax、Ay、Az为经过最小二乘法[6]校正后的三轴加速度值,由于传感器模块置于步行者腰间,步行者在走动的时候不可避免地引入振动干扰,造成俯仰角与倾斜角解算误差,因此采用互补滤波,融合陀螺仪数据,降低因振动干扰带来的解算误差。设陀螺仪经过互补滤波算法处理后,三轴的数据分别为Gx、Gy、Gz,融合后三个方向上的加速度为A′x、A′y、A′z,给三个方向上加速度赋予的权重为PxA、PyA、PzA,给陀螺仪三轴数据的权重为PxG、PyG、PzG,则可以用下式表示:

  STM32

  4、测试结果及分析

  实地测试结果如图6所示,测试场地为学校内部的标准田径场,田径场包含的两条直道一条为东西走向,另一条为西东走向,测试的时候选取标准田径场的第5跑道,步行实际长度为430m,实际步数为560步,经航位推算测得的步数为587步,测得的步行距离为428.5m,步数统计相对误差为4.8%,距离统计相对误差小于1%。与实际路线相比,最大偏移为5m,出现在东西走向的直线跑道上,偏移区间长度为85m,航向角测得的误差在±2°~±4°以内,说明以上方法设计的步行者航位推算装置有较高的精确性、实时性与可靠性,能够满足实际应用需求。

  STM32

    5、结 语

  本文介绍了基于STM32F103RBT6单片机的步行者航位推算装置的硬件设计与采用的软件算法,完成了对多传感器数据的采集和航迹推算。采用单片机与微惯性器件搭建的系统,能满足小型化、实用性、便携性及易于搭建的应用要求,经过实地实验,其测算精度亦能满足实际需求。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分