0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

采用ADXL345实现功能全面的计步器设计

电子设计 来源:郭婷 作者:电子设计 2019-02-06 09:14 次阅读

计步器是一种颇受欢迎的日常锻炼进度.,可以激励人们挑战自己,增强体质,帮助瘦身。早期设计利用加重的机械开关检测步伐,并带有一个简单的计数器。晃动这些装置时,可以听到有一个金属球来回滑动,或者一个摆锤左右摆动敲击挡块。

如今,先进的计步利用MEMS微机电系统)惯性传感器和复杂的软件来精确检测真实的步伐。MEMS惯性传感器可以更准确地检测步伐,误检率更低。MEMS惯性传感器具有低成本、小尺寸和低功耗的特点,因此越来越多的便携式消费电子设备开始集成计步器功能,如音乐播放器和手机等。ADI公司的3轴加速度计ADXL335、ADXL345和ADXL346小巧纤薄,功耗极低,非常适合这种应用。

本文以对步伐特征的研究为基础,描述一个采用3轴加速度计ADXL345的全功能计步器参考设计,它能辨别并计数步伐,测量距离、速度甚至所消耗的卡路里。

ADXL345专有的(正在申请专利)片内32级先进先出(FIFO)缓冲器可以存储数据,并执行计步器应用的相关操作,从而最大程度地减少主处理器干预,为便携式设备节省宝贵的系统功率。其13位分辨率(4 mg/LSB)甚至允许计步器以合理的精度测量超低速步行(每步加速度变化约55 mg)。

了解模型

在可用于分析跑步或步行的特征当中,我们选择“加速度”作为相关参数。个体(及其相关轴)的运动包括三个分量,分别是前向(“滚动”)、竖向(“偏航”)和侧向(“俯仰”),如图1所示。ADXL345检测其三个轴--x、y和z上的加速度。计步器处于未知方向,因此测量精度不应严重依赖于运动轴与加速度计测量轴之间的关系。

采用ADXL345实现功能全面的计步器设计

图1. 各轴的定义

让我们考虑步行的特性。图2描绘了一个步伐,我们将其定义为单位步行周期,图中显示了步行周期各阶段与竖向和前向加速度变化之间的关系。

采用ADXL345实现功能全面的计步器设计

图2. 步行阶段与加速度模式

图3显示了与一名跑步者的竖向、前向和侧向加速度相对应的x、y和z轴测量结果的典型图样。无论如何穿戴计步器,总有至少一个轴具有相对较大的周期性加速度变化,因此峰值检测和针对所有三个轴上的加速度的动态阈值决策算法对于检测单位步行或跑步周期至关重要。

采用ADXL345实现功能全面的计步器设计

图3. 从一名跑步者测得的x、y和z轴加速度的典型图样

算法

步伐参数

数字滤波器:首先,为使图3所示的信号波形变得平滑,需要一个数字滤波器。可以使用四个寄存器和一个求和单元,如图4所示。当然,可以使用更多寄存器以使加速度数据更加平滑,但响应时间会变慢。

采用ADXL345实现功能全面的计步器设计

图4. 数字滤波器

图5显示了来自一名步行者所戴计步器的最活跃轴的滤波数据。对于跑步者,峰峰值会更高。

采用ADXL345实现功能全面的计步器设计

图5. 最活跃轴的滤波数据

动态阈值和动态精度:系统持续更新3轴加速度的最大值和最小值,每采样50次更新一次。平均值(Max + Min)/2称为“动态阈值”。接下来的50次采样利用此阈值判断个体是否迈出步伐。

由于此阈值每50次采样更新一次,因此它是动态的。这种选择具有自适应性,并且足够快。除动态阈值外,还利用动态精度来执行进一步滤波,如图6所示。

采用ADXL345实现功能全面的计步器设计

图6. 动态阈值和动态精度

利用一个线性移位寄存器和动态阈值判断个体是否有效地迈出一步。该线性移位寄存器含有2个寄存器: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步。这样,两个有效步伐的时间间隔在时间窗口[0.2 s - 2.0 s]之内,时间间隔超出该时间窗口的所有步伐都应被排除。

ADXL345的用户可选输出数据速率特性有助于实现时间窗口。表1列出了TA = 25°C、VS = 2.5 V、VDD I/O = 1.8 V时的可配置数据速率(以及功耗)。

采用ADXL345实现功能全面的计步器设计

此算法使用50 Hz数据速率(20 ms)。采用interval的寄存器记录两步之间的数据更新次数。如果间隔值在10与100之间,则说明两步之间的时间在有效窗口之内;否则,时间间隔在时间窗口之外,步伐无效。

“计数规则”用于确定步伐是否是一个节奏模式的一部分。步伐计数器有两个工作状态:搜索规则和确认规则。步伐计数器以搜索规则模式开始工作。假设经过四个连续有效步伐之后,发现存在某种规则(in regulation),那么步伐计数器就会刷新和显示结果,并进入“确认规则”工作模式。在这种模式下工作时,每经过一个有效步伐,步伐计数器就会更新一次。但是,如果发现哪怕一个无效步伐,步伐计数器就会返回搜索规则模式,重新搜索四个连续有效步伐。

图7显示了步伐参数的算法流程图。

采用ADXL345实现功能全面的计步器设计

图7. 步伐参数算法流程图

距离参数

根据上述算法计算步伐参数之后,我们可以使用公式1获得距离参数。

距离 = 步数 × 每步距离(1)

每步距离取决于用户的速度和身高。如果用户身材较高或以较快速度跑步,步长就会较长。参考设计每2秒更新一次距离、速度和卡路里参数。因此,我们使用每2秒计数到的步数判断当前跨步长度。表2显示了用于判断当前跨步长度的实验数据。

采用ADXL345实现功能全面的计步器设计

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秒步数 × 跨步/2 s (2)

卡路里参数

我们无法精确计算卡路里的消耗速率。决定其消耗速率的一些因素包括体重、健身强度、运动水平和新陈代谢。不过,我们可以使用常规近似法进行估计。表3显示了卡路里消耗与跑步速度的典型关系。

采用ADXL345实现功能全面的计步器设计

由表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输入,以产生各种中断信号并唤醒处理器。

采用ADXL345实现功能全面的计步器设计

图8. 硬件系统的原理示意图

用户界面

用户界面显示测试数据,并对操作员的指令做出响应。用户界面(UI)运行之后,串行端口应打开,通信链路应启动,随后演示程序将持续运行。图9显示了用户佩戴计步器步行或跑步时的测试情况。用户可以输入其体重和身高数据,距离、速度和卡路里参数将根据这些数据进行计算。

采用ADXL345实现功能全面的计步器设计

图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。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2525

    文章

    48135

    浏览量

    740236
  • 微机电系统
    +关注

    关注

    2

    文章

    120

    浏览量

    23664
  • ADXL345
    +关注

    关注

    13

    文章

    68

    浏览量

    33128
  • 计步器
    +关注

    关注

    4

    文章

    75

    浏览量

    19772
收藏 人收藏

    评论

    相关推荐

    ADXL345 activity无法进入中断怎么解决?

    最近在使用ADXL345,想使用ADXL345的activity中断功能,让单片机一直读取中断信号INT2,但一直无法进入activity中断,请高手指点!!!。 程序如下; void
    发表于 12-28 06:55

    adxl345的使用问题

    请问adxl345 无法进入静止中断是什么原因?adxl345能否用于检测沿Z轴方向做上下运动的加速度有关51单片机与加速度传感器adxl345采用i2c通信的问题
    发表于 09-11 16:07

    请问ADXL345的中断如何配置?

    .C/************************************************************************************ 文件名称:adxl345.c文件功能ADXL345
    发表于 10-19 09:28

    利用3轴数字加速度计实现功能全面的计步器设计

    应用。本文以对步伐特征的研究为基础,描述一个采用3轴加速度计ADXL345的全功能计步器参考设计,它能辨别并计数步伐,测量距离、速度甚至所消耗的卡路里。
    发表于 10-24 10:37

    ADXL345中断清零问题

    尊敬的技术支持人员,我在使用ADXL345计步器设计的时候, 碰到了以下问题;非常着急, 请帮忙看看, 如何解决?目前我们用ADXL345设计计步器, 已经到了测试阶段; 在测试阶段
    发表于 11-29 09:50

    ADXL345原理图

    ADXL345是一款小而薄的超低功耗3轴加速度计,分辨率 高(13位),测量范围达± 16g。数字输出数据为16位二进制 补码格式,可通过SPI(3线或4线)或I2 C数字接口访问
    发表于 11-20 16:21 44次下载

    ADXL345模块资料

    ADXL345模块资料+原理图。
    发表于 12-19 14:01 0次下载

    基于C51的ADXL345数据LCD显示

    基于C51的ADXL345数据LCD显示
    发表于 12-17 16:33 67次下载

    ADXL345的中文PDF

    ADXL345的中文PDF
    发表于 10-19 09:07 89次下载
    <b class='flag-5'>ADXL345</b>的中文PDF

    ADXL345 3轴、±2 G/±4 G/±8 G/±16 G数字加速度计

    电子发烧友网为你提供ADI(ti)ADXL345相关产品参数、数据手册,更有ADXL345的引脚图、接线图、封装手册、中文资料、英文资料,ADXL345真值表,ADXL345管脚等资料
    发表于 02-22 15:57
    <b class='flag-5'>ADXL345</b> 3轴、±2 G/±4 G/±8 G/±16 G数字加速度计

    ADXL345参考代码

    ADXL345参考代码
    发表于 03-18 11:16 90次下载
    <b class='flag-5'>ADXL345</b>参考代码

    ADXL345卫星PCB布局2

    ADXL345卫星PCB布局2
    发表于 03-19 12:41 16次下载
    <b class='flag-5'>ADXL345</b>卫星PCB布局2

    ADXL345 pmod Xilinx FPGA参考设计

    ADXL345 pmod Xilinx FPGA参考设计
    发表于 05-16 19:45 8次下载
    <b class='flag-5'>ADXL345</b> pmod Xilinx FPGA参考设计

    ADXL345和MPU6050的区别

    探讨。 设计差异: ADXL345是一款由ADI(Analog Devices Inc.)生产的数字式三轴加速度计,采用了MEMS(Microelectromechanical Systems)技术
    的头像 发表于 01-04 11:30 2994次阅读

    adxl345 klipper不识别

    ADXL345是一种MEMS加速度计,广泛应用于许多领域,如运动追踪、健康监测和自动导航等。然而,有时候我们可能会遇到ADXL345在klipper中不被识别的问题。本文将详细介绍这个问题以及
    的头像 发表于 01-07 15:47 327次阅读