OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7533|回复: 2

使用MAX30100原始数据计算心率值的简易方法

[复制链接]

4

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
489
金钱
489
注册时间
2015-4-20
在线时间
52 小时
发表于 2021-1-23 14:59:12 | 显示全部楼层 |阅读模式
本帖最后由 imxuheng 于 2021-1-23 14:59 编辑

使用MAX30100原始数据计算心率值的简易方法

0 前言
    手里有块MAX30100模块,最近找出来准备用它实现心率测量。网上的方法貌似都是采用傅里叶变换,奈何编程水平有限,所以没去尝试这种方法、
    想到以前用对数、双对数、求导等方法处理数据,所以试着用这些方法处理心率adc数据,看看能不能找到突破口。
    最终确定方法:计算原始心率adc数据变化量+一阶滤波+阈值设置

1 方法简介
    计算原始心率adc数据变化量+一阶滤波+阈值设置。
  • 计算原始心率adc数据变化量
就是将新的心率adc数据减去前一次心率adc数据得到新数据序列
  • 一阶滤波
    使用软件编程实现普通硬件RC低通滤波器的功能。 本例中指对上一步得到的adc数据变化量进行一阶滤波。
    一阶低通滤波的算法公式为(摘自“书生侠客”的博客):
              Y(n)=αX(n) + (1-α)Y(n-1)
    式中:α=滤波系数;X(n)=本次采样值;Y(n-1)=上次滤波输出值;Y(n)=本次滤波输出值。 一阶低通滤波法采用本次采样值与上次滤波输出值进行加权,得到有效滤波值,使得输出对输入有反馈作用。
  • 阈值设置
    设置阈值x,adc数据变化量一阶滤波后的值小于该阈值x,就认为出现一次心跳。


2 数据处理
2.1 数据采集
    读取数据的方法就不多说了,就是初始化传感器、然后IIC通信连续读取fifo四次。
    使用串口接收adc数据画出实际波形,如图1所示。波形随心跳波动,波形总体也有波动

原始adc

原始adc
图1 原始心率adc数据图

2.2 求取前后两次数据的差值
    波形如图2所示,现在的数据波形已经很有规律,不再像原始adc波形那样整体都做波动。每次心跳对应的波形基本等高,波形中心基本在同一高度。

图2.png
图2  原始心率adc变化量曲线

2.3  一阶滤波
    实际是对adc数据变化量波形有较多的“毛刺”,如果直接用阈值判断是否为心跳信号,那么有可能误判,如图3所示,如果阈值取-20,那么就会有一次误判。进行一阶滤波后(这里取滤波系数α=0.1)波形变得光滑,将降低误判风险。
, 图3.png
图3 心率adc变化量一阶滤波曲线
2.4 设定阈值
    实际编程时可对滤波结果进行放大,从而有利于阈值的合理设置。
图4.png
图4 阈值设定示意图

3 验证        使用STC15W408AS最小系统软件模拟IIC读写max30100模块,程序见附件
    程序中使用了两次一阶滤波,滤波系数0.1,阈值-5,自己按需确定滤波次数、滤波系数、阈值,效果自查
实物.png

https://v.youku.com/v_show/id_XN ... 5!2~5~5!3~5!2~5~5~A[/media]



STC15W MAX30100.rar

953.88 KB, 下载次数: 54

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

34

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
857
金钱
857
注册时间
2018-9-16
在线时间
240 小时
发表于 2021-2-17 21:31:06 | 显示全部楼层
回复 支持 反对

使用道具 举报

4

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
489
金钱
489
注册时间
2015-4-20
在线时间
52 小时
 楼主| 发表于 2021-4-7 15:12:30 | 显示全部楼层
plue 发表于 2021-2-17 21:31
楼主,有STM32的代码吗

这里提供了思路,就是对原始数据求一阶导数,所以剩下的自己去完成吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-1 08:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表