APP下载

基于加速度传感器的无按键计步腕表低功耗算法

2015-03-26张晓濛毛东杰葛海通严晓浪

传感器与微系统 2015年3期
关键词:计步步数功耗

李 越,黄 凯,张晓濛,毛东杰,葛海通,严晓浪

(1.浙江大学 超大规模集成电路研究所,浙江 杭州310027;2.杭州中天微系统有限公司,浙江 杭州310027)

0 引 言

计步腕表是一种内含加速度传感器,并通过低功耗蓝牙技术和手机同步使用的热门户外设备。相比于市面上流行的按键计步腕表,无按键计步腕表能提供良好的用户体验和极佳的防水性。

无按键计步腕表的控制和计步的核心算法均基于加速度传感器实现,但现有的算法中存在一定的功耗问题。对于其控制功能,目前多使用ADI 公司提出的一种敲击算法[1]来实现按键的功能:微处理器通过加速度传感器不断读取X,Y,Z 三轴加速度并不断做敲击算法检测,但其长时间的工作会带来大量的能量消耗。对于其计步功能,现有的计步算法利用加速度传感器采集的运动数据采用动态阈值法或峰值检测法等进行计步判定,但为了保证最高运动速度时计步的精确性,对于速度不同的运动状态统一采用高采样率,增加了系统功耗。

针对以上问题,本文对无按键计步腕表的核心算法进行低功耗优化。在控制方面,文中提出了预测敲击检测算法以降低复杂的敲击算法调用频率;在计步算法方面,文中提出了自适应计步算法以根据运动速度调整加速度采样率。通过两者结合,在保证精度和用户体验的情况下,减少微处理器的运算量,降低系统功耗。

1 计步腕表核心算法优化

1.1 预测敲击检测算法

敲击算法通常包括信号调理和敲击状态机检测两个步骤。首先将三轴加速度作信号调理,将得到的结果作为检测状态机的输入Din并与设定的阈值进行比较来确定敲击状态机位于初始状态区、峰值检测区还是单击确认区(如图1所示)。

图1 敲击检测Din变化曲线Fig 1 Tapping detection Din change curve

以上算法虽然能够准确检测敲击,但是其频繁使用会带来较多功耗。本文在其基础之上进行优化,提出了预测敲击算法。

1)预测敲击算法原理

根据人们敲击的行为可以观察到,人们在开始敲击时普遍存在一个抬臂的前置动作,而这个动作比敲击缓慢,检测时所需的采样点更少。因此,整个敲击检测算法可以通过加入对抬臂的检测来进行优化,即以持续的低复杂度抬臂检测代替持续的高复杂度敲击检测,只有当检测到抬臂动作后才继续进行敲击检测和降臂检测。

预测敲击检测算法工作状态示意图如图2 所示:系统会周期性的进行检测计算,待机时计步腕表一直处于抬臂检测状态,如图中A 点之前和C 点之后所示。当检测到抬臂动作(A 点)时,腕表在下一周期进入敲击检测和降臂检测状态,此后若N1个周期都未检测到敲击即n1>N1时,则回到抬臂检测状态;若N1个周期内检测到敲击动作(B点),则微处理器对敲击事件进行相应的处理,并在接下来的N2个周期中持续进行敲击检测和降臂检测,若在N2个周期中检测到降臂动作(C 点)或N2个周期已经结束仍未检测到降臂动作,腕表重新回到抬臂检测状态。

图2 预测敲击算法工作原理示意图Fig 2 Working principle diagram of prediction tapping algorithm

2)预测敲击算法具体实现

由上一节的描述可知,预测敲击算法中主要包括抬臂检测、敲击检测、降臂检测三个过程。其中敲击检测仍采用ADI 的敲击检测算法实现,下面主要介绍抬臂和降臂检测的具体实现。

抬臂和降臂过程如图3 所示。由图可见,两者为互逆过程:抬臂时,Z 轴加速度从垂直逐渐变化到水平;降臂时,Z 轴加速度从水平逐渐变化到垂直。

图3 抬臂和降臂Z 轴加速度变化曲线Fig 3 Z-axis acceleration change curve of raising and dropping arm

根据这两个物理过程,抬臂(降臂)检测状态机可以分成初始和确认两种状态:

1)初始状态:取平滑滤波后的Z 轴数据作为状态机的输入,如果输入数据大于水平阈值T水平max,且在水平区间内持续保持采样点数目大于N水平,则进入抬臂确认状态;如果输入数据小于垂直阈值T垂直min,且在垂直区间内持续保持采样点数目大于N垂直,则进入降臂确认状态。

2)确认状态:进行抬臂确认时,如果垂直区间持续保持采样点数目大于N垂直,则认为检测到一个抬臂过程;进行降臂确认时,如果水平区间持续保持采样点数目大于N水平,则认为检测到一个降臂过程;否则,回到初始状态。

1.2 自适应计步算法

本文在常规计步算法的基础上提出了根据运动状态(跑步、走路或静止等)自适应地调节加速度传感器采样率的改进算法。算法中采用运动预判的方法进行动态采样率调整:对于跑步这种高速运动的状态,采用高采样率以保证计步的精度;对于慢走或者静止这种低速运动状态,采用低采样率以减少不必要的运算量,以减少功耗。

自适应计步算法整体流程图如图4。

整个算法包括信号预处理、步数检测和运动预判三个步骤:

1)信号预处理

对于手腕应用来说,运动中手腕不停的翻转,加速度有效轴可能不停的变换。因此,本算法中采用了三轴合一的方法来确定加速度[2],以提高计步的准确性,其公式如下

图4 自适应计步算法整体流程图Fig 4 Overall flow chart of self-adaptive pedometer algorithm

然后,采用加权平滑滤波的方法去除随机干扰。平滑滤波相对其他滤波具有平滑度高,计算简单,耗费资源少,在时间上对整个系统运行影响小的优点,其公式如下

经过预处理之后的波形可以体现出较好的正弦波特性,在此基础之上可以通过检测正弦波的个数对步数进行判断。

2)步数检测

本算法中使用动态阈值方法[3]来检测步数。由于手臂向前摆动时加速度变化比较大,而向后摆动时加速度变化比较小,故预处理之后的波形是(如图5)波峰一大一小的正弦波。

图5 计步信号预处理后波形Fig 5 Step signal waveform after pretreatment

在这种情况下,简单地取加速度的最大值和最小值平均值作为阈值会影响计步的精度,因此,本算法中的阈值需要在求得的平均值基础上再乘以一个大于1 的系数K,公式如下

这样就使得阈值能够高于所有小波峰,最终通过检测一段时间内大波峰个数乘以2 得到当前时间的计步结果。

3)运动预判

运动预判即根据当前计步周期的运动状态来判断下一计步周期内的运动状态,动态地调整采样率。

本计步算法以2 s 作为一个计步周期,每2 s会更新一次采样率。初始化时采用50 Hz 的采样率来计步,即采样点数达到100 即计算一次步数。由图5 所示,当检测到2 s内的步数小于预设的步数阈值时,则认为当前为低速状态,将下一个计步周期的运动预判为低速状态,下一次计步周期的加速度采样率设置为25 Hz,即2 s 内采样点数达到50 即计算一次步数,以减少运算量;当检测到2 s 内步数大于等于预设的步数阈值时,则认为当前为高速状态,因此,将下一个计步周期预判为高速运动状态,其采样率设置为50 Hz。如此循环往复,不断根据用户的运动状态进行运动预判,进而实现自适应的采样率调整,以达到降低功耗的目的。

2 实验与实现

2.1 系统实现

为了验证本文中所提出的算法的正确性和高效性,将该算法应用于一个由智能手机和计步腕表组成的系统,如图6 所示。

图6 系统架构图Fig 6 System architecture diagram

计步腕表的硬件由具有超低功耗的TI CC2541 SoC[4],ADI ADXL263 G-Sensor[5],AW9523B GPIO 管理芯片和LED组成。在工作时,计步腕表通过加速度传感器采集三轴加速度,并经过计步算法处理得到运动数据,通过低功耗蓝牙(BLE)通信方式传输给手机,手机将接收到的数据进行处理整合并显示。同时,用户可以通过敲击检测对腕表的计步和显示进行控制。

2.2 实验结果与分析

2.2.1 预测敲击算法功耗测试

无论是ADI 的敲击检测算法还是预测敲击算法都是周期性(本实验中都采用250 ms 作为一个检测周期)进行的,而在一个检测周期中处理器仅有工作和睡眠两种工作模式,所以,一个检测周期内工作时间的长短能够直接反映功耗的高低。检测结果如表1 所示。

对于ADI 的敲击检测算法,微处理器在每个检测周期完成的工作是读取数据并进行敲击检测。从表1 可以看到每个检测周期微处理器的工作时间为8.32 ms,其余为低功耗睡眠时间。

对于预测敲击检测算法,在一个检测周期中可能有以下两种工作状态之一:1)多数情况下,都是读取加速度并进行抬臂检测;2)在检测到抬臂之后,检测周期完成的工作是读取加速度再进行敲击和降臂检测。如表1 所示,这两种状态下的工作时间分别为5.06,9.14 ms,其余为睡眠时间。

表1 二种敲击算法耗时情况Tab 1 Time consuming of two tapping algorithms

通过与图2 相对应可以看出:大多数情况下微处理器都处于a 状态中,只有少数情况处于b 状态中,使用抬臂检测所节省的时间远大于加入降臂检测而增加的时间。因此,采用预测敲击检测可以大大减少微处理器的工作时间和系统功耗。另外,实验还通过测试平均电流来更直观地体现功耗的变化,如表2 所示。

表2 二种敲击算法电流测试结果Tab 2 Currents test result of two tapping algorithms

由表2 可见,腕表在使用预测敲击算法后电流降低1/3左右。这进一步证明了相比ADI 的敲击算法,预测敲击算法能够有效降低系统功耗。

2.2.2 自适应计步算法功耗和准确度测试

本实验中,对于跑步状态,加速度采样周期为20 ms;对于走路或者静止状态,加速度采样周期为40 ms。

如表3 所示,当采样周期为20 ms 时,每2 s 内计步算法耗时为5.92 ms;而当采样周期为40 ms 时,每2 s 内计步算法耗时为3.76 ms。相对于固定采样率计步算法,即各个2 s内都耗时5.92 ms 的计步算法,本文提出的自适应计步算法可以动态改变采样率,有效地减少微处理器的工作时间以降低功耗。

表3 不同采样率下计步算法耗时情况Tab 3 Time consuming of pedometer algorithm under different sampling rates

在降低功耗的同时,实验中采集了多人多组走路和跑步时的计步数据,来测试该计步算法的准确度,如表4 与表5所示。

表4 走路状态计步检测Tab 4 Pedometer test result of walking state

表5 跑步状态计步检测Tab 5 Pedometer test result of running state

由表4 可见,计步总体精度达到了95%以上,由此可见该计步算法在不同状态和不同测试人员身上测试都达到了较好的精度,满足准确计步的要求。

3 结 论

本文针对基于加速度传感器的无按键计步腕表提出了低功耗优化技术,通过预测敲击算法与自适应计步算法对腕表的核心算法进行改进以减少处理器运算时间,从而在保证用户体验和计步精度的情况下显著降低了系统功耗。

[1] Carlos Millan Navarro.ADXL362 tapping algorithm[EB/OL].[2013—06—15].http:∥www.analog.com.

[2] 谢如花.步数检测方法及在手腕式计步器中的应用研究[D].兰州:兰州交通大学,2013:13-15.

[3] Zhao N.Full-featured pedometer design realized with 3-axis digital accelerometer[J].Analog Dialogue,2011,6:1-5.

[4] Texas Instruments Inc.CC2541 Datasheet[EB/OL].[2013—06—11].http:∥www.ti.com.

[5] Analog Devices Inc.ADXL362 Datasheet[EB/OL].[2012—09—13].http:∥www.analog.com.

猜你喜欢

计步步数功耗
基于任务映射的暗硅芯片功耗预算方法
楚国的探索之旅
“步数”的背后
基于G-senor和步频的运动强度分析系统设计
移动手环的设计与实现
微信运动步数识人指南
国人运动偏爱健走
揭开GPU功耗的面纱
数字电路功耗的分析及优化
一种面向星载计算机的功能级功耗估计方法