MAX30102脉搏血氧仪和心率传感器(三)心率计算——时域法

这篇具有很好参考价值的文章主要介绍了MAX30102脉搏血氧仪和心率传感器(三)心率计算——时域法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

本章介绍PPG信号的心率计算方法——时域法。基本思想是计算动态阈值曲线,利用波形与曲线相交来确定PPG信号的周期。


一、算法思想

如下图,当PPG波形在相同的位置两次经过动态阈值曲线的交点时,这段时间的间隔就能认为是PPG的一个周期,根据此周期即可求出心率动态阈值曲线的某一点的值为前面若干个周期内的点的平均值。
MAX30102脉搏血氧仪和心率传感器(三)心率计算——时域法

二、算法详解

MAX30102脉搏血氧仪和心率传感器(三)心率计算——时域法

1.阈值检测

只有在达到阈值(皮肤接近传感器)后,才开始心率计算,否则计算无意义。

#define PPG_DATA_THRESHOLD 100000 //根据实际情况进行设置

if(ppg_raw_data[1] > PPG_DATA_THRESHOLD)  {...} //阈值检测
else	{...}	//没有达到阈值,计数清零

2.等待波形稳定

经过测试,当达到阈值后,也就是皮肤刚刚接触到传感器时,会有一段不稳定的时间段。所以尽可能地丢弃这段数据。

wave_stable_counter++;
if(wave_stable_counter>=WAVE_STABLE_NUMS)	//等待波形稳定{...}

3.FIR滤波、存入缓存区

FIR滤波器在上一章介绍,缓存区的目的是储存了某个点的前若干周期内的数据点,利用这些数据点的平均值得出当前的阈值

for(i=0;i<CACHE_NUMS;i++)
{
	ppg_cache_sum_avr+=ppg_data_cache[i];   //求和
}
ppg_cache_sum_avr = ppg_cache_sum_avr/CACHE_NUMS;  //求平均数

4.检测PPG信号与阈值曲线的交点

这一步比较复杂,主要利用了波形的特征与阈值曲线的点进行比较。具体内容请看工程内的源码。

5.心率计算

计时是用到了MCU的定时器,当定时器中断一次时,时间+若干毫秒,心率计算开始时清零。如下:

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
   if(htim->Instance == TIM2){     
      ppg_times +=10; 	//中断一次10ms
	 }
}

三、实际测试

1.静止测试

多次测试如下(经过了5次平均滤波),手指几乎静止贴在传感器上。大概8-10秒测量一次,这里取决于心率快慢。
MAX30102脉搏血氧仪和心率传感器(三)心率计算——时域法MAX30102脉搏血氧仪和心率传感器(三)心率计算——时域法MAX30102脉搏血氧仪和心率传感器(三)心率计算——时域法

2.动态测试

手指贴在传感器上滑动,多次测试如下:
MAX30102脉搏血氧仪和心率传感器(三)心率计算——时域法MAX30102脉搏血氧仪和心率传感器(三)心率计算——时域法MAX30102脉搏血氧仪和心率传感器(三)心率计算——时域法

四、总结

缺点:

  • 抗干扰性很差,几乎等于没有;
  • 舍弃了一部分数据(间隔的周期没有测到);
  • 准确度不高;

改进(有时间再弄):

  • 在上一章滤波中使用带通滤波器,去除0.5Hz以下的频率成分;
  • 增加平均值滤波的次数;
  • 使用其它滤波方法(去除最大最小值或者去除不合理数据等);

五、获取工程源码

关注下方公众号,回复 “MAX30102V3” 获取源码;若有疑问,请在公众号回复“交流群”,进群一起讨论分享!
MAX30102脉搏血氧仪和心率传感器(三)心率计算——时域法文章来源地址https://www.toymoban.com/news/detail-437732.html

到了这里,关于MAX30102脉搏血氧仪和心率传感器(三)心率计算——时域法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32传感器外设集--心率模块(MAX30102)

    目录 ​​​​​​​ 一、模块介绍 二、资料获取连接  欢迎关注微信公众号--星之援工作室 发送(MAX30102) 三、接线方式 四、代码编写 main.c max30102.c max30102.h myiic.c myiic.h algorithm.c algorithm.h 五 、参考 MAX30102模块是一种集成了光学传感器和信号处理器的模块,广泛应用

    2024年01月22日
    浏览(53)
  • Arduino开发实例-DIY简单脉搏血氧仪(基于MAX30100)

    本文将介绍如何通过MAX30100制作一个简易的脉搏血氧仪。脉搏血氧仪用于测量心率和 SpO2 水平,在这里,我们将使用 Arduino、MAX30100 传感器和 0.96 英寸 SSD1306 OLED 显示屏 DIY 脉搏血氧仪。 在前面的文章中,对MAX30100传感器模块驱动做了详细的介绍,请参考: MAX30100 脉搏血氧仪传

    2024年02月01日
    浏览(49)
  • STM32+ MAX30102通过指尖测量心率+血氧饱和度

            重要的事情放在最前面:max30102只适用于指尖手指测量,不适用与手腕手指测量,如需做成可穿戴样式选择传感器的小伙伴请pass掉他,因为他只有红光和红外2种光,不够充足的数据源去运算。         由于一些原因,本篇文章所有下载资源不收取任何积分,让你不

    2024年02月03日
    浏览(53)
  • 【开源】ESP8266_MAX30102_OLED屏幕实现血氧心率检测

    本系列,是记录自己入门嵌入式领域的学习笔记。 看看能坚持多久。 今天是2023年5月2日 源代码的来源:https://github.com/yangqingyuan-byte/MAX30102-0.96_4pin_oled-esp8266_HR_and_SPO2 * ESP8266 --- OLED * GND --- GND * * 5V --- VCC  * D1 --- SCL  * D2 --- SDA  * ESP8266 --- MAX30102 * 5V --- VIN * G --- GND * D0 --- INT

    2024年02月03日
    浏览(45)
  • 84、基于STM32单片机的心率MAX102血氧浓度脉搏检测系统设计

    毕设帮助、开题指导、技术解答(有偿)见文末。 目录 摘要 一、硬件方案 二、设计功能 三、实物图 四、原理图 五、PCB图 六、硬件框图 七、流程图  八、程序源码  九、 资料包括 血氧饱和度是人体生理参数检测的一个重要指标。但是传统的血氧监测仪造价成本太高,只

    2024年02月07日
    浏览(75)
  • STM32F103标准库函数驱动max30102心率血氧模块

    实际接线图, 1.VIN 3v-5v都可以 2.SDA SCL 是两根依据IIC传输的线(具体看你想用哪两个IO口) 代码里面iicStart.c有解释 3.GND接地 4.其余的端口,我没接,最后是可以接受到数据的。 (想更详细了解模块的朋友,可以看该模块手册)手册放下面了 ----------------------------------------------

    2023年04月15日
    浏览(47)
  • 基于STM32F030、MAX30102血氧心率监测仪的设计(一)

            搞这个设计用时大约一周,中途遇到好多问题,查找资料乱七八糟,始终没有解决问题,只能自己慢慢的啃资料,本文章主要记录设计过程及记录遇到的问题,做个记录同时帮助有需要的朋友。         目前该设计已成功读取计算出血氧及心率数据,算法还需

    2023年04月23日
    浏览(48)
  • 基于STM32F030、MAX30102血氧心率监测仪的设计(二)

            上篇主要讲解了MAX30102寄存器相关知识,这篇主要看下程序配置。 MAX30102寄存器配置         在一般的配置中我们让设备开机直接开始进入SpO2/HR 模式(PROX_INT_EN 置 0),设置两个LED的电流都为0x40,然后开启 RDY 中断使能。这样每次数据采集ok就可以中断一次去

    2024年02月06日
    浏览(48)
  • STM32--基于STM32F103的MAX30102心率血氧测量

    本文介绍基于STM32F103ZET6+MAX30102心率血氧测量+0.96寸OLED(7针)显示(完整程序代码见文末链接) 一、简介 MAX30102是一个集成的脉搏血氧仪和心率监测仪生物传感器的模块。它集成了一个红光LED和一个红外光LED、光电检测器、光器件,以及带环境光抑制的低噪声电子电路。 MA

    2024年01月16日
    浏览(51)
  • 基于单片机心率脉搏心率血压体温血氧检测系统的设计与实现

     功能介绍        本次设计通过32系列单片机STM32进行数据处理,配置引脚和JFC103传感器以及温度传感器进行数据通信。采用防水DS18B20进行腋下温度采集,通过单总线方式进行数据传输。心率血氧血压模块通过串口通信方式把采集到的数据发送给单片机,所有的信息我们通

    2024年02月07日
    浏览(99)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包