MAX30102脉搏血氧仪和心率传感器(四)血氧+心率完整版(STM32) 您所在的位置:网站首页 手指心率测试仪哪个牌子准确率更高 MAX30102脉搏血氧仪和心率传感器(四)血氧+心率完整版(STM32)

MAX30102脉搏血氧仪和心率传感器(四)血氧+心率完整版(STM32)

2024-07-11 23:14| 来源: 网络整理| 查看: 265

文章目录 前言一、先上测试结果1.测试步骤2.测试结果3.后续处理方法 二、血氧饱和度1.原理2.计算方法 三、源码获取(STM32例程)

前言

相较于上一章,增加和改进的地方有:①增加了血氧饱和度测量;②改进了心率的代码。即中断采集完一段数据后才“扔进“函数进行处理,期间处理器可以做其它事情,但算法原理与上一章基本相同;③减少了代码量,较为简洁高效。

一、先上测试结果 1.测试步骤 手指接触到传感器,等待1-2s后串口输出信息;前2-3个数据是不稳定的数据,因为采集的是刚刚接触到传感器的数据(如下图红框部分),可以丢弃;输出的第3个数据以后是比较稳定的数据了;手指离开传感器以后,串口不再输出信息。再次接触传感器后重新开始测量。 2.测试结果

在这里插入图片描述在这里插入图片描述在这里插入图片描述

3.后续处理方法

可以看到就算是稳定的数据也有一定的起伏,可以来个滤波处理。

均值滤波:例如采集10组数据,去掉2个最大、最小值,剩下的取均值;取中值,这个很简单就不说了。

还有其它很多的滤波方法。总之,可以根据需要进行数据处理。

二、血氧饱和度 1.原理

MAX30102传感器上具有红光(660nm)和红外光(880nm)两个LED,人体氧合血氧蛋白和非氧合血氧蛋白对这两个不同波长的光吸收率的差异较为明显。可以据此得出血氧饱和度。

2.计算方法

官方提供的方法如下:

在这里插入图片描述

float max30102_getSpO2(float *ir_input_data,float *red_input_data,uint16_t cache_nums) { float ir_max=*ir_input_data,ir_min=*ir_input_data; float red_max=*red_input_data,red_min=*red_input_data; float R; uint16_t i; for(i=1;i ir_max=*(ir_input_data+i); } if(ir_min>*(ir_input_data+i)) { ir_min=*(ir_input_data+i); } if(red_max red_min=*(red_input_data+i); } } R=((ir_max+ir_min)*(red_max-red_min))/((red_max+red_min)*(ir_max-ir_min)); return ((-45.060)*R*R + 30.354*R + 94.845); } 三、源码获取(STM32例程)

关注下方公众号,回复 “MAX30102V4” 获取源码;若有疑问,请在公众号回复“交流群”,进群一起讨论分享! 在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有