分享

基于STM32和LIS3DSH的高精度计步器设计

 zsok 2016-05-06

 

摘要:设计了一种基于STM32和LIS3DSH的高精度计步器。为了提高计步器的准确性,充分利用加速度传感器输出的三轴加速度信号,经数据预处理,采用动态阈值和峰值检测的改进算法。根据人体运动特征检测人体运动时加速度的变化,实现准确计步,并具备数据传输功能。实验结果表明,该计步器具有体积小、功耗低、精度高的特点。


//
引言
//



早期传统的计步器设计是利用加重的机械开关检测步伐,并带有一个简单的计数器。当计步器晃动时,装置内部的金属球会来回滑动,或者摆锤左右摆动敲击挡块,从而达到计步效果。但是这种计步器体积较大,重量偏重,计步精度也不高,同时也不方便携带。本文设计的高精度计步器采用ST公司的数字输出MEMS(微机电系统)[1]三轴惯性加速度传感器LIS3DSH作为传感元件,以STM32L151C6作为主控制器,通过优化的软件算法来精确检测步行频率。选择的MEMS传感器和微控制器具有成本低、尺寸小和功耗低的特点,所设计的新型电子计步器体积小、重量轻、计步精度高,便于携带。


1
工作原理


在人行走过程中,可以将距离、速度、加速度等属性作为描述人体行走状态的参数,本文主要对人体运动过程中的加速度信息进行采样分析。行走时,身体的各个部位都在运动,它们的运动都会产生相应的加速度,其中垂直方向的加速度变化是最大的,如图1所示。



图1 人体行走模型


在人体运动过程中,脚离开地面是行走的第一步。由于地面会给蹬地的人一个反作用力,垂直加速度开始逐渐增大,身体重心也逐渐上移。当脚要达到最高点位置时,脚的垂直速度值是最小的,垂直加速度值达到最大,然后接着脚会向下移动,垂直加速度值开始逐渐减小,最终脚落地,垂直加速度值减少到最小值,然后便进入到下一个步伐周期。在每一个步伐周期中,人体的垂直加速度值都会出现一个峰值,这样的一个峰值对应迈出的一步。采用加速度传感器对人体运动的加速度信息进行采集,对加速度信号作预处理,再由微控制器通过计步算法准确地计算出人体实际行走的步数。



2
硬件设计


根据上述工作原理,高精度计步器硬件设计框图如图2所示。


图2 计步器硬件设计框图


主控制器采用ST公司的基于ARM CortexM3内核的32位微控制器STM32L151C6,三轴加速度传感器采用LIS3DSH,蓝牙通信采用 ST BlueNRG嵌入BlueNRG4.0 LowEnergy协议栈蓝牙网络处理芯片,温湿度测量采用 HTS221电容数字传感器,同时采用OLED显示屏对行走步数、剩余电量等信息进行显示,按键和振动马达作为人机交互设备。


通过加速度传感器采集X、Y、Z三个不同方向的加速度信息,经过计步算法处理得到准确步数,并在显示屏上显示;同时也可以通过蓝牙模块实时传输数据至外部设备,通过按键也可以对计步器的工作参数进行设置。


图3 主控制器电路


2.1、主控制器


STM32L151C6是ARM CortexM3内核的RISC高性能、低功耗32位MCU,工作频率为32 MHz,具有32 KB Flash,采用48引脚封装。片内具有16 KB RAM和4 KB EEPROM,6个16位定时器、3个USART、2个SPI、2个I2C接口,与STM32F系列引脚兼容,功耗低至185 μA/DMIPS,工作电压范围为1.8~3.6 V,集成了USB连接电源,以及连接到两个APB总线的增强I/O和外设。其主控制器电路如图3所示,主要包括主控MCU及其时钟电路、复位电路、去耦滤波电路等。


2.2、加速度传感器


LIS3DSH是ST公司推出的低功耗、高性能并且内置有限状态机的三轴高分辨率加速度传感器,可支持1.7~3.6 V的宽输入电压,有±2g/4g/±8g/±16g不同量程范围,1个集成的FIFO(先入先出)缓冲存储区块,16位的数字输出,工作温度范围为-40~+85 ℃,能够提供稳定而精确的测量数据。


LIS3DSH和主控制器的接口采用I2C 总线,有X、Y、Z 三个自由度的加速度数字输出,可以全方位感知人体行走运动信息。当人行走时,传感器采集实时加速度数据,利用内部的A/D转换器进行A/D转换,然后进行逻辑控制并通过I2C总线与MCU通信。


3
软件设计


系统软件主要实现高精度计步器的数据采集、算法处理、信息输出以及人机交互,核心技术是步数检测算法实现。传统的步数检测算法主要有两种:一是动态阈值判断方法,从正弦波形的下降区间进行判断;二是峰值检测方法,从正弦波的拐点处判断步数。这两种检测方法都有局限性和不确定性。本计步器结合以上两种方法,提出一种新的改进算法,从而可高效准确地检测出人体行走的步数。


3.1数据预处理


数据预处理是指对采集的三轴加速度传感器数据进行实时的预处理,分两步进行:第一步是进行中值滤波的噪声处理,第二步是进行低通滤波的信号分离。


(1) 中值滤波


由于在运动过程中,加速度传感器的输出信号会包含大量的脉冲噪声信号,在实际计步过程中必须剔除。中值滤波是一种有效的消除脉冲噪声的方法,它是一种基于排序统计理论的能有效抑制噪声的非线性信号处理技术,它把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近真实值,从而消除孤立的噪声点。


在本系统中采用序列的中值是指采样序列中一半样本的值比该值小,而另一半的值比该值大的中值点。所以在信号处理的时候需要将采样的序列进行排序,然后选取其中的中间值。由于加速度传感器的输出信号中可能包含有脉冲噪声信号,系统中将滤波器窗口大小设为3。经过实验,如果窗体过大或过小,则会使判别人体活动状态的相关算法的效果变差。


(2) 低通滤波


通常来讲,人体每秒钟行走0.5~2.0步,最多不超过5.0步。因此合理的计步器输出为0.5~5.0 Hz,需要通过一个低通滤波器,以从原始加速度信号中分离出人体活动所产生的高频低通噪声,此时的低通滤波器截止频率为5.0 Hz。


3.2、步数检测算法


3.2.1、三轴数据合一的方法选取


加速度传感器采集到的是三轴的加速度数据,这3个轴分别对应人体运动的3个方向。无论如何穿戴计步器,总有至少一个轴的数据具有较大的周期性加速度变化,所以某些算法采用单个轴的加速度值来表征人体运动,算法实时比较三轴加速度数据大小,把加速度变化最大的那个轴记为有效轴,然后利用有效轴的数据进行分析和步伐判断。但是这种实时判断有效轴的方法容易丢失计数点,加速度有效轴可能会不停地变换,这会导致数据过于敏感,稳定性差。为了很好地解决这个问题,本文采用三轴合一加速度的方法处理数据。


考虑到三轴合一的问题,为了得到准确的数据,采用求3个数据平方和的二次方根,即2范数的方法



式(1)采用的2范数处理数据,其增益不会随着传感器方位的变化而变化,克服了传感器位置对收集有效数据的影响。


3.2.2、步数检测的核心算法


步数检测过程主要包括动态阈值和峰值检测。首先采用动态阈值和动态精度的方法,过滤掉高频噪声,从而得到有效步数。具体方法如下:系统中设定两个移位寄存器,其中一个寄存器用于保存新得到的加速度采样值,根据动态峰值可以确定动态阈值的大小,当新得到一个加速度采样值时,将其与新数据寄存器中的数值进行比较,若二者的差值的绝对值大于动态精度时,则新数据寄存器的值移位到旧数据寄存器,而新得到的加速度值就可以移位到新数据寄存器;当加速度变化值小于或等于动态精度时,此变化值被抛弃,新数据寄存器保持不变。旧数据寄存器则不断地更新采样数据。图4为动态阈值的算法示意图。持续更新三轴加速度的最大值和最小值,每采样50次更新一次。其中平均值(Max + Min)/2称为“动态阈值”。


图4 动态阈值算法示意图


在得到有效步数后,对有效步数的合加速度值进行检测,峰值点应满足下式,其中tp为峰值点附近加速度的幅值:



当满足峰值条件后,再对合加速度信号进行幅度阈值条件和时间阈值条件的判断,以避免行走时身体抖动对计步的影响,最后对实际的步数进行记录存储,显示到液晶屏上。其中幅度阈值为所有峰值点的均值,这样的均值比较合理。而人体每步行走的时间范围为0.2~2 s。其峰值检测的流程图如图5所示。


图5 峰值检测流程图



4
实验结果


对运动来说,步数是一个可以量化的指标,当用步数表征人体运动的时候,步数检测的精确度就是计步系统的一个衡量标准,因为计步器的精确度越高,检测到的运动步数越准确,就越能准确反映人体运动情况、运动量大小和运动活跃度。计步精度定义如下:



为了检验计步器的实际精确度,本系统进行了5次随机测试,测试结果见表1。



//
结语
//


本文讨论了基于STM32L151C6和LIS3DSH的高精度电子计步器的设计与实现,并对具体的硬件电路和算法软件进行了详细的介绍。此电子计步器系统采用STM32L151C6芯片,大大降低了系统功耗,提高了系统稳定性,而加速度传感器LIS3DSH的小尺寸封装,减小了系统尺寸,为移植到手机和移动设备上提供了可能。实验结果表明,本系统具有精度高、功耗低、体积小等特点。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多