电子器件
ChineseJournalofElectronDevices
Vol42 No2Apr.2019
DesignofDataAcquisitionandTrajectoryRecognition
SystemBasedonMEMSSensor
CHENJianweiꎬCHENHong∗ꎬWANGJinqiꎬSUMinghui
(NorthUniversityofChinaꎬScienceandTechnologyonElectronicTestandMeasurementLaboratoryꎬKeyLaboratoryof
InstrumentationandDynamicMeasurementꎬMinistryofEducationꎬTaiyuan030051ꎬChina)
Abstract:AsystembasedonFPGAandARMarchitecturetocollectmotionattitudedatainrealtimehasbeenintroduced.ThesignalcollectedbythesensorisstoredbyFPGAꎬthenthedataistransittedtoARM.Atthesametimeꎬanalgorithmisdesignedtodetectthemotiontrajectoryaccurately.ThecollecteddatasignalisdesignedtoeliminaterandomnoisebydesigningaKalmanfilterandthezero ̄statecompensationalgorithmeliminatescumulativeerrors.ThissystemwithFPGAꎬsensorandARMcoulddealwithreal ̄timeandquickacquisitionofattitudedataandrelativelyflexibleandcanbetransplantedtootherrelatedmotiondetectionsystemseffectively.Keywords:FPGAꎻARMꎻKalmanfilterꎻzero ̄statecompensation
EEACC:7210G doi:10.3969/j.issn.1005-9490.2019.02.038
informationꎬandatthesametimeꎬthemotiontrajectorycanbeefficientlyrestored.Theprogramishighlypractical
基于MEMS传感器的数据采集识别系统设计
陈健伟ꎬ陈 鸿∗ꎬ王晋祺ꎬ苏明辉
(中北大学电子测试技术国家重点实验室ꎬ仪器科学与动态测试教育部重点实验室ꎬ太原030051)
摘 要:设计一种通过FPGA与ARM相结合的实时采集运动姿态数据的系统ꎬ由传感器采集到运动信号ꎬ通过FPGA控制数
据存储后传递给ARMꎬ将其存储处理ꎮ同时设计一种算法来精确实现运动轨迹的检测ꎬ采集的数据信号通过设计Kalman滤波器来消除随机噪声ꎬ零状态补偿算法实现累计误差的消除ꎮ通过该系统ꎬ实现了FPGA与传感器以及与ARM的通信ꎬ实时快速地采集到姿态数据信息ꎬ同时可以高效地复原运动轨迹ꎮ该方案实用性强ꎬ比较灵活ꎬ能够有效地移植到其他相关运动检测系统中ꎮ
关键词:FPGAꎻARMꎻ姿态数据采集ꎻKalman滤波ꎻ零状态补偿
中图分类号:TP274 文献标识码:A 文章编号:1005-9490(2019)02-0463-06 传统多采用ARM进行运动姿态数据采集ꎬ单片机的编程简单ꎬ控制处理数据比较灵活ꎬ但是它的控制周期较长ꎬ对于数据需要快速转换存储处理的场合ꎬ单片机的这种特性将限制数据的传输ꎮFPGA的时钟频率一般比较高ꎬ响应速度快ꎬ通过硬件电路来实现控制逻辑ꎬ效率较高ꎬ通过并行控制采集数据ꎬ在大规模数据高速采集过程中相对于单片机来说有较大的优势ꎬARM相对于FPGA来说对数据的处理能力较强[1-2]ꎮ通过结合ARM与FPGA的各自优势ꎬ本文设计了基于ARM与FPGA相结合的数据采集处理结构ꎬ采用ADXL34加速度传感器ꎬ
收稿日期:2018-04-07 修改日期:2018-05-16
L3GD20三轴陀螺仪ꎬQMC5883L三轴磁传感器ꎬ提同时在积分求解运动状态基础上实现系统噪声的滤出ꎮ
供了一种灵活的多通道的运动数据采集处理方案ꎬ
1 系统整体设计方案
图1为系统的整体结构图ꎬ硬件部分主要由传感器、FPGA与ARM组成ꎮ其中加速度传感器ꎬ陀螺仪以及磁传感器共输出9路模拟信号ꎬ通过A/D转换将模拟信号转换成16位数字信号ꎬFPGA通过相关I2C总线协议与传感器进行通信ꎬ传感器对
464
电 子 器 件第42卷
FPGA数据ꎬ存于发出指令应答之后FIFO存储器中ꎬFPGAꎬ然后通过读取传感器的内部ARM处理器中断采集接收ꎬARM处理器将接受到的信号进行存储ꎬ通过无线传输协议传输到上位机或存储器中ꎮ将采集到的运动状态数据读取之后ꎬ首先通过坐标系转换ꎬ将载体坐标系转换到地理坐标系ꎬ对得到的加速度信号再通过Kalman随机噪声滤波与零状态自适应消除累计误差ꎬ得到更加精确的运动状态数据ꎮ
图1 系统总体机构框图
2 系统硬件设计与实现
2.1 加速度传感器ADXL345ADXL345加速度传感器是一款功耗低的三轴
加速度传感器
A进行读取操作/D转换器ꎬ有ꎬ测量范围可达到16gnꎬ内部自带ꎮI2C图2与为SPIADXL345两种方式对所测的数据引脚配置图ꎮ其0x1E中13ꎬ0x1F引脚为传感器数据输出指令输入的端口ꎬ
存器地址ꎬ图中ꎬ0x2013为三轴加速度计内部的、14引脚为I2C通信接口xꎬyꎬꎬ1z轴寄引脚与电源相连通ꎬ10引脚接地ꎮ本系统根据I2C协议由FPGA发送指令到传感器上述3个寄存器地址处进行读取数据ꎮ
图2 引脚配置顶视图
2.2 L3GD20L3GD20同样是功耗较低的传感器三轴陀螺仪
半导体开发专用微加工工艺制造ꎬ它包括一个感应ꎬ采用意法
元件和能够提供测量外界角速度的IC芯片ꎬ它的顶视图如图3所示ꎮ
图3 L3GD20引脚顶视图
陀螺仪通过SDA/SDI/SDO口与FPGA进行通0x28信ꎮ~FPGA0x2d通过来控制三轴数据的读取与端口进行信息
I2C/SPI协议访问内部寄存器地址交流2.3 ꎮ
QMC5883LQMC5883L基于霍尼韦尔磁传感器
先进的高分辨率磁阻技术ꎮ它具有较低噪声AMR技术授权的最
ꎬ精度较高ꎬ功耗低ꎬ偏移取消等优点ꎮQMC5883L支持1°至2°罗盘航向精度ꎮ具有标准和快速模式的I2C接口QMC5883Lꎬ用于与主控芯片电路连接示意图快速数据通信的高速接口ꎮꎮ图4为图4 主从芯片连接
2.4 FPGAFPGA主要是用来协调多个传感器之间的工作
与ARM处理器
和数据的快速处理ꎬ同时要求能够高速进行数据的缓存处理RAMꎬ对于并行数据的处理就需要更多的双口
片:XC4VFX100作为缓存ꎮ
空间ꎬ因此选用Virtex ̄4系列芯片ꎬ它具有ARM处理器采用32位的处理器内核Cortex ̄M3ꎬ采用哈佛结构系列的Stm32ꎬ它的芯
指令与数据总线各自独立ꎬ142个引脚ꎬ112个GPIO口ꎬ8个定时器ꎬ68个可屏蔽中断ꎬ适合通信ꎬ协议处理等方面的应用ꎮ
第2期2.5 无线传感器
陈健伟ꎬ陈 鸿等:基于MEMS传感器的数据采集识别系统设计
4 65
本设计方案采用Wi ̄Fi传输ꎬ需要一个无线路由器作为无线节点与上位机之间的的网络连接器ꎬ
无线传输采用无线发射接收芯片WM-G-MR-9-Refꎬ它的内部结构如图5所示ꎮ
它具有发送接收功能ꎬ通过应用闭塞滤波器屏
3 硬件系统实施方案
3.1 FPGA通过I2C协议进行数据采集
加速度传感器ꎬ陀螺仪以及磁传感器均是三轴类ꎬ且自身拥有A/D转换功能ꎮ3种传感器将采集到的模拟信号转换为数字信号ꎬ传感器均通过I2C与FPGA进行通信ꎮ
FPGA通过I2C首先发送起始信号ꎬ然后发送I2C
蔽了GSM、PCS等干扰信号ꎬ同时支持SDIO和SPI两种通信方式ꎮ
要进行访问传感器的地址ꎬ此时相应传感器对FPGA进行应答ꎬ之后FPGA访问传感器采集数据的寄存器ꎬ通过发送寄存器的地址再次等待传感器进行应答从而实现通信[3]ꎮFPGA读取的3个传感器的数据存储到FIFO中ꎬ由于FPGA的高速度运行会与ARM芯片产生一定的时差ꎬ因此采用FIFO缓存器进行缓冲ꎬ以便
图5 WM-G-MR-9-Ref模块
ARM流畅地读取数据ꎬ具体的通信结构如图6所示ꎮ图6 FPGA与传感器通信
3.2 ARM处理器接受FPGA数据
括存储与显示ꎬ在对FPGA中的数据进行读取时ARM读取的是FPGA缓冲器FIFO中的数据ꎮFIFO中的数据分别有ALFUL与EMPTY两种状态信号ꎬ其中ALFUL指示FIFO接近满容量[4]ꎬALFUL从低电平信号变成高电平信号时ARM发送读取信号ꎬ读取FIFO中的数据ꎬ当EMPTY从低电平信号变为高电平信号时ꎬ说明FIFO中所有数据已经被读取完毕ꎬ此后ꎬARM等待ALFUL变换之后再次重复操作ꎬ读取数据ꎮARM与FPGA的硬件连接结构如图7所示ꎮ
ARM系统对FPGA中存储的数据进行采集ꎬ包
输到上位机上进行显示ꎬ也可以通过IDE通信协议传输到硬盘中ꎮ通常ARM芯片STM32与上位机通信主要是通过异步通信装置UART0使用STM32的通用GPIO口模拟产生硬盘的读写时序ꎬ从而对ARM中的存储器进行读写ꎬ这种方案是将数据采集之后再显示处理ꎬ无法实现实时进行数据的监控测试ꎮ本设计方案通过无线传感器实现与上位机的实时通信ꎮ下位机软件设计流程如图8所示ꎮ
下位机上电初始化之后ꎬ通过上位机服务器端口1发送应答命令ꎬ当应答成功后ꎬ下位机打开串口中断ꎮ通过RS232总线通信协议进行数据的接收与命令的发送ꎬ总共有3个部分的通信数据ꎬ采用轮回发送原则ꎬ下位机对收到的数据首先进行校验进行ꎬ然后筛选有效的数据ꎬ同时对数据进行解码计算ꎮ采用乒乓操作方式存储到3块SRAM中ꎬ在另一路线程中ꎬ下位机一直等待上位机发送指令ꎬ当接收到相关指令后ꎬ则从SRAM中读取数据ꎬ将数据按照通信协议发送给上位机ꎮ由于网络通信速率相
图7 ARM与FPGA数据传输
3.3 传感器数据的存储
由ARM读取到的传感器数据可以通过串口传
较串口通信速率高很多ꎬ如果采用即时通信将导致双方的通信速率出现时延[5]ꎬ因此上位机与下位机采用定时通信ꎬ当下位机对数据进行过滤分类等完
466
电 子 器 件
第42卷
图8 无线通信
成时一次性通过网络通信将数据传递给上位机ꎬ这极大提高了上位机与下位机的效率ꎮ
通信过程中为了避免网卡发生故障时导致整个服务器网络阻塞ꎬ因此本次设计的上位机在服务器上安装两块网卡ꎬ与交换机构成两条线路ꎬ这样一块网卡故障时服务器将数据流量转移到另一块网卡上ꎬ提高系统的容错能力ꎮ
4 轨迹识别
4.1 坐标系转换
通过MEMS传感器获得的运动状态数据是相对于载体坐标系下的运动状态信号ꎬ要获得地理坐标系下运动状态ꎬ首先进行坐标系的转换[6]
ꎮ载体
坐标系与地理坐标系之间的相互转换过程如图9
所示ꎮ
图9 坐标系转换示意图
地理坐标系O-XYZ经过3次坐标轴转动得到
载体坐标系O-XbYbZb的转动角度ꎬ3次转换的角度为俯仰角θꎬ偏航角φꎬ翻滚角γꎮ采用四元数龙格库塔算法对陀螺仪数据求解姿态角ꎬ然后采用卡尔曼滤波结合磁传感器数据与加速度计实现角度补偿ꎮ
载体坐标系转换过程首先绕z轴旋转β角得到
偏航角ꎬ此时得到转换矩阵éC(β)=ê
ê0êë
-cossinβC(β)ꎮ
0ù
ú然后绕y轴旋转α角得到俯仰角及转换矩阵0β
cossinββ
01úú(1)
û
éC(α)=êêcosC(α)ꎮ
êësin0α0α1-sin0cos0αùú
αúú(2)
û
最后绕x轴旋转γ得到翻滚角与矩阵0
C(γ)ꎮ
=éC(γ)ê
ê1êë
0
0-cossinγsin0ùúγcosγγúú(3)
û
系Cꎮ
3个坐标系相乘即可得到最终的转换坐标
C=Cφ∗C(θ)∗C(γ)
(4)
将得到的姿态矩阵与加速度传感器获得的加速度信号ab相结合即可得到地理坐标系下的加速度信号atꎮ
4.2 随机噪声的滤出
at=C∗ab
(5)
在4.1节获得的加速度信号由于存在着环境中的随机噪声信号ꎬ不可以直接对其进行积分求解ꎮ对于噪声信号ꎬ本文设计Kalman滤波器对加速度信号进行噪声滤波处理ꎮKalman滤波算法结合了测量数据前的预估计与测量之后的校正补偿能够实现误差的最小化[7]ꎮ进行随机噪声滤波的Kalman算法结构如图10所示ꎮ
图10 算法流程
图10中ꎬat|t-1为Kalman滤波器对t时刻加速
度信号的预测值ꎬat|t为Kalman滤波器根据t时刻采集到的加速度信号at以及t时刻的预测值at|t-1做出的加速度校验值ꎬF相邻时刻的状态转移函数ꎬ由于传感器的采样频率较高ꎬ相邻时刻状态变化不大所以此处设置为1ꎬQ为随机噪声的协方差矩阵ꎬ根据采样环境设置为[0.0001 0.0001 0.0001]ꎬPt|t-1与Pt|t分别为误差协方差矩阵的估计值与校验值ꎮKt为t时刻的Kalman增益ꎬσ为随机噪声的
第2期陈健伟ꎬ陈 鸿等:基于MEMS传感器的数据采集识别系统设计
4 67
方差ꎮ
经过Kalman滤波之后的地理加速度数据与原始地理加速度数据的对比结果如表1所示ꎮ
表1 原始数据与Kalman滤波数据对比ax
ay
az
ax-_k
ay_k
az_k
-9.615691.51178-0.46845900--9.582201.832610.0050.3587630.8397307966600-9.61500-9.58269201.5111.8327861-0.4680.00545900
-9.775391.9996576379-9.644-9.7759.64437201.9992.1066450
0.3580.8396946100000
-9.43220-9.372502.1069.452251.64650
751.416701.7446099-0.009-0.5623890.1119245002300-00-9.432601.646770.00947520-9.3729.45226741.4161.7446395--0.5620.1118670680000
数据相同 通过表ꎬ但是随着时间的累积1可知ꎬ在初始阶段滤波前与滤波后的ꎬ数据逐渐出现细微区别ꎬ表明Kalman滤波器能在一定程度上发挥精细4.3 调节作用累积误差消除
ꎮ
由Kalman滤波之后的数据在随后的积分过程中由于每一小步的积分过程中存在的微小误差ꎬ在不断的积分中会逐渐累加增大ꎬ严重影响运动轨迹的确定[8-9]ꎮ
本文设计了零状态自适应算法来消除累积过程中的误差Hz的数据进行滑窗处理ꎬ设计长度为ꎮ本次设计过程中数据的采样频率为25个数据的滑动窗口对每次采集100ꎬ算法流程如图11所示ꎮ分析滑动窗口内的数据方差ꎬ与设定的零状态判断阈值进行比较ꎬ进而确定运动过程中的零状态时刻ꎬ在此刻将数据归零从而消除累积误差ꎮ如表1所示第2行与第5行数据存在转折点ꎬ也就是出现零状态时刻ꎬ在此时进行归零就可以消除各个阶段累积的误差ꎬ从而提高数据的计算精度ꎮ图11 累积误差消除流程
4.4 轨迹求解
对最终处理得到的加速度通过二次积分可以到的运功过程中的位置ꎬ对于三维空间里m个加速度
数据就需要3m次二次积分求解ꎮ采用无限梯形逼近计算将仅消耗3m次加法计算ꎮ
图12 梯形积分
采用图示梯形逼近算法公式如式(6)所示ꎮ在整个积分区域将整体面积划分为多个小梯形t区间ꎬt1至t2tm至tn区间ꎬ整个积分区域的面积即为多个
1至t2区间的小梯形累加构成ꎮ
[vxmꎬvymꎬvzm]=[vxm-1ꎬvym-1ꎬv[azm-1]+xm-1Δtꎬaym-1Δtꎬazm-1Δt][SxmꎬSymꎬSzm]=[Sxém-1ꎬSym-1ꎬSzm-1]+êê1
(vxm-1+vxm)Δtꎬ1ë22(vym-1+vym)Δtꎬ12(vzù
m-1+vzm)Δtúúû=[Sxm-11+vxm-1Δt+
1
2
axm-1Δt2Sym-1+vym-1Δt+2aym-1Δt2Szm-1+vzm-1Δt+1
2
azm-1Δt2(6)
上式中aꎬvꎬs分别表示3个方向上的额加速度、速度、位置ꎬ整个系统经数据采集噪声滤除积分后ꎬ得到运动轨迹ꎮ本次实验是对人体在走下楼梯时运动轨迹的检测ꎬ检测结果如图13所示ꎮ通过比较ꎬ结果表明测得的运动轨迹与实际运动状态符合ꎮ
图13 运动轨迹
5 总结
ARM本文设计一套姿态采集识别系统ꎬ由FPGA与
取ꎬ同时设计了相结合实现了大容量多通道传感器数据的读Kalman滤波器与零状态自适应算法来提取运动状态ꎬ通过实验观察证明该系统具有高效性、可靠性ꎬ能够实现日常生活工作过程中的轨迹识别ꎮ
468参考文献:
电 子 器 件
[5][6][7][8][9]
第42卷
王海勇.无线传感器网络数据可靠传输关键技术研究[D].南京:南京邮电大学ꎬ2016.
李由.基于MEMS惯性传感器、WiFi、磁场特征的移动智能终端室内行人导航算法[D].武汉:武汉大学ꎬ2015.
杨丹.卡尔曼滤波器设计及其应用研究[D].长沙:湘潭大学ꎬ2014.
韩治国ꎬ王红梅ꎬ许辉.基于窗函数和特征滤波器的半带滤波器设计[J].计算机仿真ꎬ2013ꎬ30(8):181-184ꎬ383.
朱庄生ꎬ万德钧ꎬ王庆.航位推算累积误差实时修正算法研究[J].中国惯性技术学报ꎬ2003(3):8-12.
[1] 闫兴钰.基于ARM的数据采集传输仪设计[J].科技创新与生
产力ꎬ2013(9):73-75.[2][3][4]
董星.基于FPGA的存储控制器及相关系统计技术研究[D].杭州:浙江大学ꎬ2017.
李耀川.I~2C控制器及加速度传感器的驱动设计和实现[D].西安:西安电子科技大学ꎬ2012.30(7):146-148ꎬ152.
韩佳伟.高集成系统异步FIFO门限设计[J].电子科技ꎬ2017ꎬ
陈健伟(1991-)ꎬ男ꎬ硕士研究生ꎬ主要研究方向为电路与系统ꎬ自动化测试与控制技术的研究ꎬctfangcheng@
163.comꎻ
陈 鸿(1963-)ꎬ博士ꎬ教授ꎬ主要从事测试计量技术及仪器ꎬ自动化测试与控制技术、光电检测技术方向的研究ꎬ
917566060@qq.comꎮ
因篇幅问题不能全部显示,请点此查看更多更全内容