当前位置: 首页 > news >正文

MAX30102心率血氧传感器

MAX30102心率血氧传感器介绍

  • 背景
  • 基本功能
  • 基本结构
  • 基本原理
    • 采集方法
      • 直通式采集方法
      • 反射式采集方法
    • 血氧采集原理
      • Beer-Lambert 定理
      • 皮肤组织模型
      • 血氧测量过程
      • AC / DC 的计算
    • 心率采集原理
  • 实验结果
  • 代码走读
  • 资源链接

背景

目前,基本上所有的可穿戴式设备都集成了心率血氧测量的功能,在手表/手环中尤为常见。一般情况下,开发人员用于评估的心率血氧传感器型号用的都是MAX30102/MAX30100。MAX30102EFD如下图所示。
在这里插入图片描述
为上图所示的MAX30102传感器增加外围电路后就成为了常见的MAX30102模组,如下图所示。
在这里插入图片描述
MAX30102传感器是美国美信公司(maxim integrated)生产的一款集成的脉搏血氧仪和心率监测仪生物传感器模块。由于公司名称是Maxim,所以器件名以MAX开头,型号为30102。不过目前这个公司已经被美国的半导体巨头亚德诺半导体(ADI)公司收购,MAX30102属于一种光学生物传感器,ADI在售的心率血氧传感器还有MAX30101、MAX86140、MAX86141、MAX32664、MAXM86161等,有需要的朋友可以直接去ADI官方对相应的器件功能进行相应的评估。

基本功能

使用MAX30102可以对心率、血氧、温度三个指标进行测量,配合一些MCU能够实现相关物理量的快速采集。

基本结构

链接: MAX30102官方介绍
链接: MAX30102心率血氧评估板数据解算及使用手册
链接: SpO2 测量原理介绍
链接: [心率血氧测量原理论文](file:///C:/Users/23890/Desktop/MAX30102%E8%B5%84%E6%96%99/%E5%BF%83%E7%8E%87%E8%A1%80%E6%B0%A7%E6%B5%8B%E8%AF%95%E5%8E%9F%E7%90%86%E6%96%87%E7%AB%A0.pdf)

基本原理

通过光电的方式对心率和血氧进行测量,在模块上有两个LED,然后又有两套光电二极管。

采集方法

直通式采集方法

在医院测量中常用的一种血氧采集方式,如下图所示,光电传感器和光源分别置于手指的两侧,光源穿过手指被另一侧的光电二极管接收,根据光衰减量计算血氧浓度。
在这里插入图片描述

反射式采集方法

常见于一些穿戴设备如常见的手环、手表等设备中。LED光源和光电二极管置于同侧,光穿过皮肤被反射回同侧光电二极管,光电二极管根据光衰减量进行血氧的计算。

血氧采集原理

血氧即血氧饱和度(SpO2),这是一个百分比的概念。物理含义是血液中氧气饱和度的百分比。我们都知道,人体或者动物中有自己的血液循环系统,血液中由血红蛋白携带氧气从动脉流出,然后在携二氧化碳等气体送到肺部。所以会有富氧的血红蛋白
(Hb-O2)和缺氧的血红蛋白(Rhb)之分。所以可以通过血液中富氧血红蛋白占总血红蛋白的比例来定义血氧饱和度。所以SpO2可以用以下表达式描述,C代表血红蛋白的数量:
S p O 2 = C [ H b O 2 ] C [ H b O 2 ] + C [ R H b ] × 100 \mathrm{SpO}_{2}= \frac{\mathrm{C}\left[\mathrm{HbO}_{2}\right]}{\mathrm{C}\left[\mathrm{HbO}_{2}\right]+\mathrm{C}[\mathrm{RHb}]} \times100 SpO2=C[HbO2]+C[RHb]C[HbO2]×100

Beer-Lambert 定理

Beer-Lambert 定理描述了光在传播过程中通过材料的衰减特性。
I = I 0 e − ε ( λ ) C d I = I_{0} e^{-\varepsilon (\lambda )Cd} I=I0eε(λ)Cd
根据上面的公式,可以计算得到
A = ln ⁡ I 0 I = ε ( λ ) C d A = \ln_{}{\frac{I_{0} }{I} } =\varepsilon (\lambda )Cd A=lnII0=ε(λ)Cd
A 这里代表光线总的衰减量, I 0 为入射光强度, I 为反射光强度。 ε ( λ ) 称为摩尔消光系数,指物质对某波长的光的吸收能力的量度。 C 是穿透材料的浓度, d 为光传播路径。 A 这里代表光线总的衰减量,I_{0}为入射光强度,I为反射光强度。\\\varepsilon (\lambda )称为摩尔消光系数,指物质对某波长的光的吸收能力的量度。\\C是穿透材料的浓度,d为光传播路径。 A这里代表光线总的衰减量,I0为入射光强度,I为反射光强度。ε(λ)称为摩尔消光系数,指物质对某波长的光的吸收能力的量度。C是穿透材料的浓度,d为光传播路径。

皮肤组织模型

使用光电方式完成血氧测量基于下面的三层主要结构的基本模型。光线首先穿透皮肤组织,下面一层是动脉血,动脉血由心脏推动,心脏跳动一次血液产生一次脉动。第二层是静脉血及分布的毛细血管,第三层是骨头、肌肉等其他物质。光线穿透这三层物质被光电二极管接收,根据光线衰减量对血氧含量进行测量。
在这里插入图片描述

那么,根据上面的Beer-Lambert 定理,针对测量的具体场景,测量过程的衰减为三层穿透物质衰减量的叠加。
A = d [ ε H b O 2 ( λ ) C [ H b O 2 ] + ε R H b ( λ ) C [ R H b ] + ε other  ( λ ) C [ other  ] ] A=d\left[\varepsilon_{\mathrm{HbO}_{2}}(\lambda) C\left[\mathrm{HbO}_{2}\right]+\varepsilon_{\mathrm{RHb}}(\lambda) C[\mathrm{RHb}]+\varepsilon_{\text {other }}(\lambda) C[\text { other }]\right] A=d[εHbO2(λ)C[HbO2]+εRHb(λ)C[RHb]+εother (λ)C[ other ]]

血氧测量过程

基本的测量原理是使用一个LED照射待测量点,这个测量点可能是手指、耳垂等位置,接收端的光电二极管对穿透上面三层结构的反射光进行计算,进而得出血氧含量。具体的细节在于,三层模型中的脉动血会对光线产生不同程度的吸收和调制。穿透皮肤的反射光线称为PPG(photoplethysmographic)信号,正常情况下,PPG信号如下图所示。值得注意的是,为了保证高精度,一般使用两种不同波长的光(660nm和880nm)进行照射并根据结果进行联合计算。
在这里插入图片描述
常见的计算过程需要知道R的值,R与SpO2强相关,可以根据R直接计算SpO2
R = A C red  / D C red  A C ired  / D C ired  \mathrm{R}=\frac{\mathrm{AC}_{\text {red }} / \mathrm{DC}_{\text {red }}}{\mathrm{AC}_{\text {ired }} / \mathrm{DC}_{\text {ired }}} R=ACired /DCired ACred /DCred 
R与SpO2的关系式由经验的出来的,比较简单的一种计算方式为:
S p O 2 = 104 − 17 R SpO2 = 104 - 17R SpO2=10417R

AC / DC 的计算

AC是交流分量,DC是直流分量。通常情况下,光电二极管接收到的典型的波形如下:
在这里插入图片描述
估算AC、DC值的方法如下:找两个波谷点,两个波谷点之间有一个波峰点,两个波谷点相连成一条直线,与Y轴平行的线穿过波峰点会与两个波谷点连接成的直线相交于一点,这个点就是DC点,DC点的Y轴对应值就是直流分量,AC分量的值为波峰点到DC点之间的差值。
为什么是这样没有弄明白。

里面有两种不同波长的光对与皮肤的穿透的原理的论文没有弄明白。

心率采集原理

血管脉动的频率和心脏跳动的频率相同,血管脉动会导致光衰减量的不同。心脏每跳动一次,会产生一个波峰点和一个波谷点,典型的波形如下,通过计算波峰和波谷之间的时间差就能够计算心率。
在这里插入图片描述

实验结果

串口调试助手测量的结果如下图所示。心率数据为83,血氧浓度98。
在这里插入图片描述

代码走读

资源链接

内容涵盖: MAX30102 DataSheet (英文版)、

相关文章:

MAX30102心率血氧传感器

MAX30102心率血氧传感器介绍 背景基本功能基本结构基本原理采集方法直通式采集方法反射式采集方法 血氧采集原理Beer-Lambert 定理皮肤组织模型血氧测量过程AC / DC 的计算 心率采集原理 实验结果代码走读资源链接 背景 目前,基本上所有的可穿戴式设备都集成了心率…...

高效解决 TypeError : ‘ numpy._DTypeMeta‘ object is not subscriptable 问题

文章目录 问题描述解决问题 问题描述 解决问题 参考博文 打开报错位置 AppData\Roaming\Python\Python39\site-packages\cv2\typing\ 添加single-quotes,即单引号 博主说The trick is to use single-quotes to avoid the infamous TypeError: ‘numpy._DTypeMeta’…...

Hadoop作业篇(一)

一、选择题 1. 以下哪一项不属于Hadoop可以运行的模式__C____。 A. 单机(本地)模式 B. 伪分布式模式 C. 互联模式 D. 分布式模式 C. 互联模式 不属于Hadoop可以运行的模式。 Hadoop主要有四种运行模式: A. 单机(本地&#xf…...

SpringCloud中的分布式锁用法详解(Java+Redis SETNX命令)

前言: 在分布式系统中,保证数据的一致性和并发控制是至关重要的。分布式锁能够解决多个进程/线程同时访问共享资源的问题,确保只有一个进程/线程能够获得锁。本文将介绍如何使用Java和Redis实现分布式锁,并提供示例代码和注意事项…...

初学者如何选择:前端开发还是后端开发?

#开发做前端好还是后端好【话题征文】# 作为一名有多年开发经验的过来人,我认为前端开发和后端开发都有其独特的魅力和挑战。下面我将就我的个人经历和观点来分享一些关于前端开发和后端开发的看法。 首先,让我们将编程世界的大城市比作前端开发和后端开…...

从php页面插入MySQL的数据变为乱码如何解决?

在 PHP 页面中向 MySQL 数据库插入数据时,如果数据出现乱码,可能是因为字符集设置不正确或者字符编码不匹配。 数据库字符集设置不正确: 确保数据库的字符集设置与您的应用程序所使用的字符集一致。通常情况下,UTF-8 是一个通用的…...

OpenCV防抖实践及代码解析笔记

视频防抖是指用于减少摄像机运动对最终视频的影响的一系列方法。摄像机的运动可以是平移(比如沿着x、y、z方向上的运动)或旋转(偏航、俯仰、翻滚)。 正如你在上面的图片中看到的,在欧几里得运动模型中,图像…...

函数栈帧的创建与销毁剖析

目录 一、前言 二、基础知识介绍 2.1 寄存器介绍 2.2、汇编指令介绍 三、函数栈帧的创建销毁过程 3.1 调用main函数的函数 3.2 main函数开辟栈帧 3.3 在main函数中创建变量 3.4 调用Add函数前的准备 3.5 为Add函数开辟栈帧 3.6 在Add函数中创建变量并运算 3.7 Add函…...

性能测试-如何进行监控设计

监控设计步骤 首先,你要分析系统的架构。在知道架构中使用的组件之后,再针对每个组件进行监控。 其次,监控要有层次,要有步骤。先全局,后定向定量分析。 最后,通过分析全局、定向、分层的监控数据做分析…...

大数据List去重

概述 两个超大List集合去重,时间最短的方式去实现。 详细 MaxList模块主要是对Java集合大数据去重的相关介绍。 背景: 最近在项目中遇到了List集合中的数据要去重,大概一个2500万的数据,开始存储在List中,需要跟一个2万的List去…...

CentOS8.2重启网络

查看网络配置命令 # ip addr  # nmcli ens160: 已连接 到 ens160"VMware VMXNET3"ethernet (vmxnet3), 00:50:56:B6:34:84, 硬件, mtu 1500ip4 默认inet4 10.3.10.111/24route4 10.3.10.0/24route4 0.0.0.0/0inet6 fe80::250:56ff:feb6:3484/64route6 ff00::/8rou…...

2023年【G1工业锅炉司炉】考试题及G1工业锅炉司炉模拟考试

题库来源:安全生产模拟考试一点通公众号小程序 2023年G1工业锅炉司炉考试题为正在备考G1工业锅炉司炉操作证的学员准备的理论考试专题,每个月更新的G1工业锅炉司炉模拟考试祝您顺利通过G1工业锅炉司炉考试。 1、【多选题】TSGG0001-2012《锅炉安全技术监…...

观察者模式 行为型设计模式之七

1.定义 在GOF的《设计模式:可复用面向对象软件的基础》一书中对观察者模式是这样定义的:定义对象的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。当一个对象发生了变化&#xff0…...

数据结构与算法之堆: Leetcode 451. 根据字符出现频率排序 (Typescript版)

根据字符出现频率排序 https://leetcode.cn/problems/sort-characters-by-frequency/ 描述 给定一个字符串 s ,根据字符出现的 频率 对其进行 降序排序 。一个字符出现的 频率 是它出现在字符串中的次数。返回 已排序的字符串 。如果有多个答案,返回其…...

吃透底层:从路由到前缀树

前言 今天学到关于路由相关文章,发现动态路由中有一个很常见的实现方式是前缀树,很感兴趣这个算法,故进行记录。 前缀树 Trie(又被叫做字典树)可以看作是一个确定有限状态自动机,尽管边上的符号一般是隐含…...

SparkSQL外部数据源

1.简介 1.1 多数据源支持 Spark 支持以下六个核心数据源,同时 Spark 社区还提供了多达上百种数据源的读取方式,能够满足绝大部分使用场景。 - CSV - JSON - Parquet - ORC - JDBC/ODBC connections - Plain-text files 1.2 读数据格式 所有读取 API 遵循以下调用格式: // …...

林沛满-TCP 是如何避免被发送方分片的?

TCP 可以避免被发送方分片,是因为它主动把数据分成小段再交给网络层。最大的分段大小称为 MSS(Maximum Segment Size),它相当于把 MTU 刨去 IP头和 TCP 头之后的大小,所以一个 MSS 恰好能装进一个 MTU 中。 图4 图 4 …...

Java中的枚举是什么?

Java枚举详解 枚举(Enum)是Java编程语言中的一种特殊数据类型,它用于表示一组具名的常量。枚举提供了一种更加类型安全和易于理解的方式来表示常量值,使代码更加清晰和可维护。 为什么需要枚举? 在介绍Java枚举的具…...

java学习--day24(单例模式序列化Lambda表达式)

文章目录 回顾今天的内容1.单例模式2.序列化3.Lambda表达式3.1入门案例3.2lambda表达式语法格式3.2.1无参无返回值的形式3.2.2有参无返返回值的方法3.2.3无参有返回值3.2.4有参有返回值的 回顾 1.三种创建Class对象的形式Class.forName("")类.class对象.getCalss()字…...

从0开始学go第六天

方法一:gin获取querystring参数 package main//querystring import ("net/http""github.com/gin-gonic/gin" )func main() {r : gin.Default()r.GET("/web", func(c *gin.Context) {//获取浏览器那边发请求携带的query String参数//…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言: 类加载器 1. …...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析,分为​​已启动​​和​​未启动​​两种场景: 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​:当其他组件(如Activity、Service)通过ContentR…...

Unity中的transform.up

2025年6月8日,周日下午 在Unity中,transform.up是Transform组件的一个属性,表示游戏对象在世界空间中的“上”方向(Y轴正方向),且会随对象旋转动态变化。以下是关键点解析: 基本定义 transfor…...

智能职业发展系统:AI驱动的职业规划平台技术解析

智能职业发展系统:AI驱动的职业规划平台技术解析 引言:数字时代的职业革命 在当今瞬息万变的就业市场中,传统的职业规划方法已无法满足个人和企业的需求。据统计,全球每年有超过2亿人面临职业转型困境,而企业也因此遭…...