计步器是一种流行的日常锻炼进度.,它能激励人们挑战自己,增强体质,帮助减肥。早期设计采用加重机械开关检测步伐,并配备简单的计数器。摇晃这些装置时,你可以听到一个金属球来回滑动,或者一个锤子左右摆动敲击块。
如今,先进的计步器被使用MEMS惯性传感器和复杂的软件(微机电系统)准确检测真实步伐。MEMS惯性传感器能更准确地检测步伐,误检率较低。MEMS惯性传感器具有成本低、尺寸小、功耗低的特点,因此越来越多的便携式消费电子设备开始集成音乐播放器、手机等计步器功能。ADI公司三轴加速度计ADXL335、ADXL345和ADXL346小巧纤细,功耗极低,非常适合这种应用。
基于对步伐特征的研究,本文描述了三轴加速度计ADXL345全功能计步器参考设计,可识别和计算步伐,测量距离、速度甚至消耗的卡路里。
ADXL345专有(申请专利)片32级先进先出(FIFO)缓冲器可以存储数据并执行计步器应用程序的相关操作,从而最大限度地减少主处理器的干预,为便携式设备节省宝贵的系统功率。其13位分辨率(4 mg/LSB)甚至允许计步器以合理的精度测量超低速行走(每步加速度变化约55 mg)。
了解模型
我们选择加速度作为分析跑步或步行特征的相关参数。个体(及其相关轴)的运动包括前(滚动)、垂直(偏航)和侧(俯仰)三个重量,如图1所示。ADXL345检测其三个轴--x、y加速度在z上。计步器处于未知方向,因此测量精度不应严重依赖于运动轴与加速度计测量轴的关系。
图1. 各轴的定义
让我们考虑一下步行的特点。图2描述了一个步骤,我们将其定义为单位步行周期,显示了步行周期与垂直和前加速度变化之间的关系。
图2. 步行阶段和加速模式
图3显示了一个跑步者的垂直、前向和侧向加速度x、y以及z轴测量结果的典型图案。无论如何佩戴计步器,至少有一个轴具有相对较大的周期性加速度变化,因此峰值检测和动态阈值决策算法对检测单元的步行或跑步周期至关重要。
图3. 从一名跑步者测得的x、y典型的图案和z轴加速度
算法
步伐参数
数字滤波器:首先,需要一个数字滤波器来使图3所示的信号波形光滑。四个寄存器和一个求和单元可以使用,如图4所示。当然,更多的寄存器可以使加速度数据更加光滑,但响应时间会更慢。
图4. 数字滤波器
图5显示了步行者佩戴的计步器最活跃轴的滤波数据。对于跑步者来说,峰值会更高。
图5. 最活跃轴的滤波数据
动态阈值和动态精度:系统持续更新3轴加速度的最大值和最小值,每采样50次更新一次。平均值(Max Min)/2称为动态阈值。接下来的50次采样利用这个阈值来判断个体是否迈出步伐。
因为这个阈值每50次采样更新一次,所以是动态的。这种选择是自适应的,足够快。除动态阈值外,还使用动态精度进行进一步过滤,如图6所示。
图6. 动态阈值和动态精度
用线性移位寄存器和动态阈值来判断个体是否有效。线性移位寄存器含有两个寄存器:sample_new寄存器和sample_old寄存器。这些寄存器中的数据分别称为sample_new和sample_old。当新的采样数据到来时,sample_new无条件移入sample_old寄存器。然而,sample_result是否移入sample_new寄存器取决于以下条件:如果加速度变化大于预定义精度,则最新的采样结果sample_result移入sample_new否则,寄存器sample_new保持寄存器不变。因此,移位寄存器组可以消除高频噪声,从而确保结果更准确。
步伐的条件定义为:当加速度曲线超过动态阈值时,加速度曲线的斜率为负(sample_new < sample_old)。
峰值检测:根据步伐计数器x、y、z三轴中加速度变化最大的轴计算步数。若加速度变化过小,步伐计数器将被忽略。
步伐计数器可以很好地工作,但有时它看起来太敏感了。当步伐计数器因行走或跑步以外的原因振动非常快或非常慢时,步伐计数器也会认为它是步伐。为了找到真正有节奏的步伐,必须排除这种无效的振动。使用时间窗口和计数规则来解决这个问题。
时间窗口用于消除无效振动。假设人们最快的跑步速度是每秒5步,最慢的步行速度是每2秒1步。这样,两个有效步骤.2 s - 2.0 s]在此期间,应排除超过时间窗口的所有步骤。
此算法使用50 Hz数据速率(20 ms)。采用interval寄存器记录两步之间的数据更新次数。如果间隔值在10和100之间,则两步之间的时间在有效窗口内;否则,时间间隔超过时间窗口,步伐无效。
用计数规则来确定步伐是否是节奏模式的一部分。步伐计数器有两种工作状态:搜索规则和确认规则。步伐计数器以搜索规则模式开始工作。假设经过四个连续有效的步伐,发现有一些规则(in regulation),步伐计数器将刷新和显示结果,并进入确认规则工作模式。在这种模式下工作时,步伐计数器每次有效步伐后都会更新一次。但是,如果发现一个无效的步伐,步伐计数器将返回搜索规则模式,重新搜索四个连续有效的步伐。
图7显示了步伐参数的算法流程图。
图7. 步伐参数算法流程图
距离参数
步伐参数按上述算法计算后,我们可以使用公式1获得距离参数。
距离 = 步数 × 每步距离(1)
每个步骤的距离取决于用户的速度和身高。如果用户跑得更高或更快,步长就会更长。参考设计每2秒更新一次距离、速度和卡路里参数。因此,我们使用每2秒计数的步数来判断当前的步长。表2显示了用于判断当前步长的实验数据。
采样数可以准确计算2秒的时间间隔。以50 Hz以数据速率为例,处理器可以每100次采样发送相应的指令。处理器使用一个名字m_nLastPedometer变量记录每2秒间隔开始时的步数,并使用一个名称m_nPedometerValue每2秒间隔结束时记录步数。这样,每2秒步数等于m_nPedometerValue与m_nLastPedometer之差。
尽管数据速率为50 Hz,但ADXL345的片内FIFO处理器不需要每200个 ms读取一次数据,大大减轻了主处理器的负担。缓冲器支持四种工作模式:旁路、FIFO、流和触发。在FIFO模式下,x、y、z存储轴测量数据FIFO中。当FIFO采样数和FIFO_CTL当寄存器采样数量相等时,水印中断1。如前所述,人的跑步速度最快可达每秒5步,所以每0步.2秒刷新可以在2秒内刷新一次结果,这样处理器只需要每0秒.2秒通过水印中断唤醒一次ADXL345读取数据。FIFO其它功能也很有用。使用触发模式,FIFO告诉我们中断前发生了什么。解决方案没有使用FIFO作者将不讨论其他功能。
速度参数
速度 = 距离/时间,每2秒步数和步长可根据上述算法计算,因此可以使用公式2获得速度参数。
速度 = 每2秒步数 × 跨步/2 s (2)
卡路里参数
我们无法准确计算卡路里的消耗率。决定其消耗率的一些因素包括体重、健身强度、运动水平和新陈代谢。然而,我们可以使用传统的近似方法来估计它。表3显示了卡路里消耗与跑步速度的典型关系。
公式(3)可通过表3获得。
卡路里(C/kg/h) = 1.25 × 跑步速度(km/h)(3)
上述速度参数单位为m/s,将km/h转换为m/s可得公式4。
卡路里(C/kg/h) = 1.25 × 速度(m/s) × 3600/1000= 4.5 × 速度(m/s) (4)
每2秒更新一次卡路里参数。为了考虑运动员的体重,我们可以将公式4转换为公式5。(kg)为用户输入量,一小时等于18002秒。
卡路里(C/2 s) = 4.5 × 速度 × 体重/1800= 速度 × 体重/400 (5)
如果用户步行或跑步后休息,步数和距离不会改变,速度应为0。此时,卡路里消耗可以用公式6计算(休息时的卡路里消耗约为1 C/kg/h)。
卡路里(C/2 s) = 1 × 体重/1800 (6)
最后,我们可以将所有2秒间隔的热量加入到总热量中。
硬件连接
ADXL345易于连接到任何使用I2C.或SPI处理数字通信协议。图8给出了演示设备的原理示意图,采用3V电池供电。ADXL345的/CS引脚连接到板上的VS,以选择I2C模式。低成本精密模拟微控制器ADuC7024从ADXL345读取数据并执行算法UART发送结果PC。SDA和SCL分别为I2C从ADXL345连接到ADuC7024对应引脚。ADXL连接345的两个中断引脚ADuC7024的IRQ产生各种中断信号并唤醒处理器的输入。
图8. 硬件系统的原理示意图
用户界面
测试数据显示在用户界面上,并显示给操作员指令做出响应。用户界面(UI)运行之后,串行端口应打开,通信链路应启动,随后演示程序将持续运行。图9显示了用户佩戴计步器步行或跑步时的测试情况。用户可以输入其体重和身高数据,距离、速度和卡路里参数将根据这些数据进行计算。
图9. 用户佩戴计步器步行或跑步时的测试情况
结论
ADXL345是一款出色的加速度计,非常适合计步器应用。它具有小巧纤薄的特点,采用3 mm × 5 mm × 0.95 mm塑封封装,利用它开发的计步器已经出现在医疗仪器和高档消费电子设备中。它在测量模式下的功耗仅40 μA,待机模式下为0.1 μA,堪称电池供电产品的理想之选。嵌入式FIFO极大地减轻了主处理器的负荷,使功耗显著降低。此外,可以利用可选的输出数据速率进行定时,从而取代处理器中的定时器。13位分辨率可以检测非常小的峰峰值变化,为开发高精度计步器创造了条件。最后,它具有三轴输出功能,结合上述算法,用户可以将计步器戴在身上几乎任何部位。 几点建议:如果应用对成本极其敏感,或者模拟输出加速度计更适合,建议使用ADXL335,它是一款完整的小尺寸、薄型、低功耗、三轴加速度计,提供经过信号调理的电压输出。如果PCB尺寸至关重要,建议使用ADXL346,这款低功耗器件的内置功能甚至比ADXL345还多,采用小巧纤薄的3 mm × 3 mm × 0.95 mm塑封封装,电源电压范围为1.7 V至2.75 V。