文章转自ADI官网,版权归属原作者一切
简介
计步器是一种颇受欢迎的日常训练进展监控器,能够鼓励人们应战自己,增强体质,协助减肥。前期规划运用加剧的机械开关检测脚步,并带有一个简略的计数器。晃动这些设备时,能够听到有一个金属球来回滑动,或许一个摆锤左右摇摆敲击挡块。
现在,先进的计步器运用MEMS(微机电体系)惯性传感器和杂乱的软件来准确检测实在的脚步。MEMS惯性传感器能够更准确地检测脚步,误检率更低。MEMS惯性传感器具有低本钱、小尺度和低功耗的特色,因而越来越多的便携式消费电子设备开端集成计步器功用,如音乐播放器和手机等。ADI公司的3轴加速度计ADXL335, ADXL345和 ADXL346 细巧纤薄,功耗极低,十分合适这种运用。
本文以对脚步特征的研讨为根底,描绘一个选用3轴加速度计ADXL345的全功用计步器参阅规划,它能区分并计数脚步,丈量间隔、速度乃至所耗费的卡路里。
ADXL345专有的(正在申请专利)片内32级先进先出(FIFO)缓冲器能够存储数据,并履行计步器运用的相关操作,然后最大程度地削减主处理器干涉,为便携式设备节约名贵的体系功率。其13位分辨率(4 mg/LSB)乃至答应计步器以合理的精度丈量超低速步行(每步加速度改变约55 mg)。
了解模型
在可用于剖析跑步或步行的特征傍边,咱们挑选”加速度”作为相关参数。个别(及其相关轴)的运动包含三个重量,别离是前向(”翻滚”)、竖向(”偏航”)和侧向(”俯仰”),如图1所示。ADXL345检测其三个轴——x、y和z上的加速度。计步器处于不知道方向,因而丈量精度不该严峻依赖于运动轴与加速度计丈量轴之间的联系。
让咱们考虑步行的特性。图2描绘了一个脚步,咱们将其界说为单位步行周期,图中显现了步行周期各阶段与竖向和前向加速度改变之间的联系。
图3显现了与一名跑步者的竖向、前向和侧向加速度相对应的x、y和z轴丈量成果的典型图样。无论如何穿戴计步器,总有至少一个轴具有相对较大的周期性加速度改变,因而峰值检测和针对一切三个轴上的加速度的动态阈值决议计划算法关于检测单位步行或跑步周期至关重要。
算法
脚步参数
数字滤波器:先,为使图3所示的信号波形变得滑润,需求一个数字滤波器。能够运用四个寄存器和一个求和单元,如图4所示。当然,能够运用更多寄存器以使加速度数据愈加滑润,但呼应时刻会变慢。
图5显现了来自一名步行者所戴计步器的最活泼轴的滤波数据。关于跑步者,峰峰值会更高。
动态阈值和动态精度: 体系继续更新3轴加速度的最大值和最小值,每采样50次更新一次。平均值(Max + Min)/2称为”动态阈值”。接下来的50次采样运用此阈值判别个别是否迈出脚步。因为此阈值每50次采样更新一次,因而它是动态的。这种挑选具有自适应性,而且足够快。除动态阈值外,还运用动态精度来履行进一步滤波,如图6所示。
运用一个线性移位寄存器和动态阈值判别个别是否有用地迈出一步。该线性移位寄存器含有2个寄存器:sample_new寄存器和sample_old寄存器。这些寄存器中的数据别离称为sample_new和sample_old。当新采样数据到来时,sample_new无条件移入sample_old寄存器。可是,sample_result是否移入sample_new寄存器取决于下述条件:假如加速度改变大于预界说精度,则最新的采样成果sample_result移入sample_new寄存器,不然sample_new寄存器坚持不变。因而,移位寄存器组能够消除高频噪声,然后确保成果愈加准确。
脚步迈出的条件界说为:当加速度曲线跨过动态阈值下方时,加速度曲线的斜率为负值(
峰值检测: 脚步计数器依据x、y、z三轴中加速度改变最大的一个轴核算步数。假如加速度改变太小,脚步计数器将疏忽。
脚步计数器运用此算法能够很好地作业,但有时显得太灵敏。当计步器因为步行或跑步之外的原因而十分敏捷或十分缓慢地振荡时,脚步计数器也会以为它是脚步。为了找到真实的有节奏的脚步,有必要扫除这种无效振荡。运用”时刻窗口”和”计数规矩”能够处理这个问题。
“时刻窗口” 用于扫除无效振荡。假定人们最快的跑步速度为每秒5步,最慢的步行速度为每2秒1步。这样,两个有用脚步的时刻间隔在时刻窗口[0.2 s – 2.0 s]之内,时刻间隔超出该时刻窗口的一切脚步都应被扫除。
ADXL345的用户可选输出数据速率特性有助于完成时刻窗口。表1列出了TA = 25°C, VS = 2.5 V和 VDD I/O = 1.8 V时的可装备数据速率(以及功耗)。
表1. 数据速率和功耗
输出数据速率 (Hz) | 带宽 (Hz) | 速率代码 | IDD (µA) |
3200 | 1600 | 1111 | 146 |
1600 | 800 | 1110 | 100 |
800 | 400 | 1101 | 145 |
400 | 200 | 1100 | 145 |
200 | 100 | 1011 | 145 |
100 | 50 | 1010 | 145 |
50 | 25 | 1001 | 100 |
25 | 12.5 | 1000 | 65 |
12.5 | 6.25 | 0111 | 55 |
6.25 | 3.125 | 0110 | 40 |
此算法运用50 Hz数据速率(20 ms)。选用interval的寄存器记载两步之间的数据更新次数。假如间隔值在10与100之间,则阐明两步之间的时刻在有用窗口之内;不然,时刻间隔在时刻窗口之外,脚步无效。
“计数规矩” 用于承认脚步是否是一个节奏形式的一部分。脚步计数器有两个作业状况:查找规矩和承认规矩。脚步计数器以查找规矩形式开端作业。假定通过四个接连有用脚步之后,发现存在某种规矩(in regulation),那么脚步计数器就会改写和显现成果,并进入”承认规矩”作业形式。在这种形式下作业时,每通过一个有用脚步,脚步计数器就会更新一次。可是,假如发现哪怕一个无效脚步,脚步计数器就会回来查找规矩形式,从头查找四个接连有用脚步。
图7显现了脚步参数的算法流程图。
间隔参数
依据上述算法核算脚步参数之后,咱们能够运用公式1取得间隔参数。
间隔 = 步数 × 每步间隔 (1)
每步间隔取决于用户的速度和身高。假如用户身段较高或以较快速度跑步,步长就会较长。参阅规划每2秒更新一次间隔、速度和卡路里参数。因而,咱们运用每2秒计数到的步数判别当时跨步长度。表2显现了用于判别当时跨步长度的试验数据。
表2. 跨步长度与速度(每2秒步数)和身高的联系
每2秒步数 (m/s) | 跨步 (m/s) |
0~2 | 身高/5 |
2~3 | 身高/4 |
3~4 | 身高/3 |
4~5 | 身高/2 |
5~6 | 身高/1.2 |
6~8 | 身高 |
>=8 | 1.2 × 身高 |
2秒的时刻间隔能够运用采样数准确算出。以50 Hz数据速率为例,处理器能够每100次采样发送一次相应的指令。处理器运用一个名为m_nLastPedometer的变量记载每个2秒间隔开端时的步数,并运用一个名为m_nPedometerValue的变量记载每个2秒间隔结束时的步数。这样,每2秒步数等于m_nPedometerValue与m_nLastPedometer之差。
尽管数据速率为50 Hz,但ADXL345的片内FIFO使得处理器无需每20 ms读取一次数据,极大地减轻了主处理器的担负。该缓冲器支撑四种作业形式:旁路、FIFO、流和触发。在FIFO形式下,x、y、z轴的丈量数据存储在FIFO中。当FIFO中的采样数与FIFO_CTL寄存器采样数位规则的数量持平时,水印中止置1。如前所述,人们的跑步速度最快可达每秒5步,因而每0.2秒改写一次成果即可确保实时显现,然后处理器只需每0.2秒通过水印中止唤醒一次并从ADXL345读取数据。FIFO的其它功用也都十分有用。运用触发形式,FIFO能够告知咱们中止之前发生了什么。因为所述处理方案没有运用FIFO的其它功用,因而笔者将不展开讨论。
速度参数
速度 = 间隔/时刻, 而每2秒步数和跨步长度均可依据上述算法核算,因而能够运用公式2取得速度参数。
速度 = 每2秒步数 s × 跨步/2 s (2)
卡路里参数
咱们无法准确核算卡路里的耗费速率。决议其耗费速率的一些要素包含体重、健身强度、运动水平缓推陈出新。不过,咱们能够运用惯例近似法进行估量。表3显现了卡路里耗费与跑步速度的典型联系。
表3. 卡路里耗费与跑步速度的联系
跑步速度 (km/h) | 卡路里耗费 (C/kg/h) |
8 | 10 |
12 | 15 |
16 | 20 |
20 | 25 |
由表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)为用户输入量,一个小时等于1800个2秒间隔。
卡路里 (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的对应引脚。ADXL345的两个中止引脚衔接到ADuC7024的IRQ输入,以发生各种中止信号并唤醒处理器。
用户界面
用户界面显现测验数据,并对操作员的指令做出呼应。用户界面(UI)运转之后,串行端口应翻开,通讯链路应发动,随后演示程序将继续运转。图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。
称谢
本文学习了Charles Lee和Harvey Weinberg二位的技能经历,笔者对此表示感谢。
参阅电路
1. Data sheets and additional product information on all Analog Devices products can be found at www.analog.com.
2. www.analog.com/en/products/mems/accelerometers.html.