MAX30102血氧心率模块讲解一:测量原理,硬件介绍及寄存器详细解析

目录

一、摘要

二、模块介绍

2.1技术规格

2.2主要功能

2.3工作模式

2.4心率和血氧的测量原理

基本光学原理

心率监测(HR)

血氧测量(SpO2)

三、芯片硬件和寄存器介绍

3.1 引脚定义

3.2 典型应用电路(这里使用的芯片是MAX30100,应该可以参考参考)

3.3 寄存器讲解

3.3.1 状态寄存器 (Status Registers)

a.中断状态寄存器1 (Interrupt Status 1) - 0x00

b.中断状态寄存器2 (Interrupt Status 2) - 0x01

3.3.2 中断使能寄存器 (Interrupt Enable Registers)

a.中断使能寄存器1 (Interrupt Enable 1) - 0x02

b.中断使能寄存器2 (Interrupt Enable 2) - 0x03

3.3.3 FIFO寄存器 (FIFO Registers)

a.FIFO写指针 (FIFO Write Pointer) - 0x04

b.溢出计数器 (Overflow Counter) - 0x05

c.FIFO读指针 (FIFO Read Pointer) - 0x06

d.FIFO数据寄存器 (FIFO Data Register) - 0x07

3.3.4 配置寄存器 (Configuration Registers)

a.FIFO配置 (FIFO Configuration) - 0x08

b.模式配置 (Mode Configuration) - 0x09

c.SpO2配置 (SpO2 Configuration) - 0x0A

3.3.5 LED脉冲振幅寄存器 (LED Pulse Amplitude Registers)

a.LED1脉冲振幅 (LED1 Pulse Amplitude) - 0x0C

b.LED2脉冲振幅 (LED2 Pulse Amplitude) - 0x0D

3.3.6 多LED模式控制寄存器 (Multi-LED Mode Control Registers)

a.多LED模式控制寄存器1 (Multi-LED Mode Control Register 1) - 0x11

b.多LED模式控制寄存器2 (Multi-LED Mode Control Register 2) - 0x12

3.3.7 温度数据寄存器 (Temperature Data Registers)

a.温度整数部分 (Die Temp Integer) - 0x1F

b.温度小数部分 (Die Temp Fraction) - 0x20

c.温度配置 (Die Temperature Config) - 0x21


一、摘要


本文主要介绍了MAX30102生物传感器模块。第二章阐述了该模块的基本信息,包括其功能、可佩戴部位以及如何通过单片机读取数据并计算心率和血氧饱和度,同时详细介绍了其技术规格,如供电电压、通信接口、ADC分辨率、LED波长、采样率等,还介绍了其主要功能,包括血氧测量、心率监测、温度补偿和环境光消除等。2.3探讨了其工作模式,包括心率模式、SpO2模式和多LED模式,并解释了心率和血氧的测量原理,基于光学原理和Beer-Lambert定律。第三章则聚焦于芯片硬件和寄存器介绍,包括引脚定义、典型应用电路和寄存器的详细讲解,寄存器分为多个功能组,用于实现各种功能和配置。

第二篇讲解MAX30102血氧心率模块的文章MAX30102血氧心率模块讲解二:驱动代码及计算算法-CSDN博客

主要包含软件模拟IIC库,max30102的驱动层函数,max30102的应用层函数以及心率和血氧的解算函数,文末网盘链接会有完整的示例代码和项目,有需要可以直接获取,基于标准库写的。 ​

代码和资料链接: 通过网盘分享的文件:MAX30102心率血氧传感器资料 链接: https://pan.baidu.com/s/1u_J5HX3-fc0obVjtVtk0Vg?pwd=wgti 提取码: wgti --来自百度网盘超级会员v7的分享


二、模块介绍

MAX30102是一个高度集成的脉搏血氧仪和心率监测仪生物传感器模块。这款小巧但功能强大的传感器可佩戴于手指、耳垂或手腕等部位,用于非侵入式地测量血氧饱和度(SpO2)和心率。

该器件整合了内部LED光源、高灵敏度光电检测器、精密光学元件和低噪声电子电路,并具有先进的环境光抑制功能,并将数字接口留给了用户,用户只需要使用单片机通过硬件 I2C 或者模拟 I2C 接口来读取 MAX30102 本身的 FIFO,就可以得到转换后的光强度数值,通过编写相应算法就可以得到心率值和血氧饱和度。

2.1技术规格

  • 供电电压
    • VDD:1.7V至2.0V
    • VLED+:3.1V至5.0V(LED电源)
  • 通信接口:标准I²C兼容接口
  • ADC分辨率:18位
  • LED波长
    • 红光LED:650-670nm
    • 红外LED:870-900nm
  • LED电流:可编程,0至51mA
  • 采样率:可设置为50sps至3200sps
  • LED脉冲宽度:可编程,69μs至411μs
  • 内部FIFO:32个样本容量

2.2主要功能

  1. 血氧测量:通过测量红光和红外光的吸收率计算血氧饱和度
  2. 心率监测:通过检测血流脉动获取心率信息
  3. 温度补偿:内置温度传感器调整LED波长温度依赖性
  4. 环境光消除:能够消除高达200μA的环境光电流
  5. 低功耗设计:接近检测功能,仅在需要时激活

2.3工作模式

  • 心率模式:仅使用红色LED捕获光学数据,用于测量用户心率和/或光电容积脉搏波
  • SpO2模式:使用红色和红外LED测量血氧饱和度
  • 多LED模式:可灵活配置LED时序

2.4心率和血氧的测量原理

  • 基本光学原理

    MAX30102采用反射式光电容积脉搏波描记术(PPG)原理,通过测量经组织反射后的光强变化来检测血容量变化。传感器包含两个不同波长的LED光源:

    • 红光LED(660nm)
    •  红外LED(880nm)



当这些LED发出光波后,部分光被组织吸收,部分被反射回传感器的光电二极管。血液中的血红蛋白是主要的光吸收体,而含氧血红蛋白(HbO2)与脱氧血红蛋白(Hb)对不同波长光的吸收特性存在显著差异

  • 脱氧血红蛋白(Hb)在红光区域(660nm)吸收率高
  • 氧合血红蛋白(HbO2)在红外光区域(880nm)吸收率高

心率监测(HR)

心率测量基于以下原理:

  1. 心脏跳动导致动脉血管扩张和收缩
  2. 血管容积的周期性变化影响光的反射和吸收
  3. 光电二极管捕获这种周期性的光强变化,产生PPG信号
  4. 通过数字滤波去除噪声和运动伪影

计算处理后的PPG波形峰值间隔得到心率

血氧测量(SpO2)

血氧饱和度测量基于光学原理和Beer-Lambert定律,过程如下:

  1. 1.在测量过程中,芯片使用18位ADC采集两种波长下的反射光强度
  2. 2.每个波长的PPG信号包含两个主要成分:

                a. 静态成分(DC):来自组织、骨骼和静脉血的稳定反

                b.动态成分(AC):由于心脏搏动引起的动脉血容量变化产生的脉动信号

  1. 3.血氧饱和度计算:

a. 首先计算比率R:

  •         R = (红光AC/红光DC)/(红外AC/红外DC)

        其中:

  1. DC分量代表静态光吸收基线,通常取PPG信号的平均值
  2. AC分量代表脉动血液吸收的变化部分,可通过以下方式计算:
  • 峰值法:AC = 峰值 - 谷值

有效值法:AC = PPG信号的标准差或RMS值

b. 使用经验拟合公式转换为SpO2百分比:

SpO2 = -45.060R² + 30.354R + 94.845

这个经验公式是通过大量临床数据拟合得出的,不同实现可能采用略有差异的系数。


三、芯片硬件和寄存器介绍

3.1 引脚定义

MAX30102采用14引脚OESIP封装,主要引脚功能如下:

3.2 典型应用电路(这里使用的芯片是MAX30100,应该可以参考参考)

3.3 寄存器讲解
 

MAX30102的寄存器地图可在数据手册第10-11页的"Register Maps and Descriptions"部分找到。寄存器分为以下几个功能组:

  1. 状态寄存器 (0x00-0x01)
  2. 中断使能寄存器 (0x02-0x03)
  3. FIFO寄存器 (0x04-0x07)
  4. 配置寄存器 (0x08-0x0A)
  5. LED脉冲振幅寄存器 (0x0C-0x0D)
  6. 多LED模式控制寄存器 (0x11-0x12)
  7. 温度数据寄存器 (0x1F-0x21)
  8. 部件ID寄存器 (0xFE-0xFF)

3.3.1 状态寄存器 (Status Registers)
a.中断状态寄存器1 (Interrupt Status 1) - 0x00
  • 功能:指示各种中断事件的状态
  • 位定义
    • B7 (A_FULL): FIFO几乎满标志
    • B6 (PPG_RDY): 新FIFO数据就绪
    • B5 (ALC_OVF): 环境光消除溢出
    • B4 (PROX_INT): 接近阈值触发
    • B0 (PWR_RDY): 电源就绪标志
  • 读取方式:读取此寄存器可清除相应中断
b.中断状态寄存器2 (Interrupt Status 2) - 0x01
  • 功能:指示温度相关中断状态
  • 位定义
    • B1 (DIE_TEMP_RDY): 内部温度就绪标志
  • 读取方式:读取此寄存器可清除温度就绪中断

3.3.2 中断使能寄存器 (Interrupt Enable Registers)
a.中断使能寄存器1 (Interrupt Enable 1) - 0x02
  • 功能:控制哪些中断源可以触发INT引脚
  • 位定义
    • B7 (A_FULL_EN): 使能FIFO几乎满中断
    • B6 (PPG_RDY_EN): 使能新FIFO数据就绪中断
    • B5 (ALC_OVF_EN): 使能环境光消除溢出中断
    • B4 (PROX_INT_EN): 使能接近阈值中断
b.中断使能寄存器2 (Interrupt Enable 2) - 0x03
  • 功能:控制温度相关中断
  • 位定义
    • B1 (DIE_TEMP_RDY_EN): 使能内部温度就绪中断

3.3.3 FIFO寄存器 (FIFO Registers)
a.FIFO写指针 (FIFO Write Pointer) - 0x04
  • 功能:指向MAX30102写入下一个样本的位置
  • 位定义
    • B4-B0 (FIFO_WR_PTR[4:0]): 5位写指针值(0-31)
b.溢出计数器 (Overflow Counter) - 0x05
  • 功能:计数FIFO已满时丢失的样本数
  • 位定义
    • B4-B0 (OVF_COUNTER[4:0]): 溢出计数值,最大15
c.FIFO读指针 (FIFO Read Pointer) - 0x06
  • 功能:指向处理器从FIFO获取下一个样本的位置
  • 位定义
    • B4-B0 (FIFO_RD_PTR[4:0]): 5位读指针值(0-31)
d.FIFO数据寄存器 (FIFO Data Register) - 0x07
  • 功能:存储采样数据的32样本深度FIFO
  • 访问方式
    • 重复读取此寄存器获取多字节样本
    • 每个样本包含3个字节/通道,SpO2模式下需读取6个字节
    • 读取此寄存器不会自动增加I2C寄存器地址

3.3.4 配置寄存器 (Configuration Registers)

a.FIFO配置 (FIFO Configuration) - 0x08
  • 位置:数据手册第17页
  • 功能:配置FIFO行为
  • 位定义
    • B7-B5 (SMP_AVE[2:0]): 样本平均设置(1,2,4,8,16,32次)
    • B4 (FIFO_ROLLOVER_EN): FIFO满时上卷使能
    • B3-B0 (FIFO_A_FULL[3:0]): FIFO几乎满阈值设置

b.模式配置 (Mode Configuration) - 0x09
  • 位置:数据手册第18页
  • 功能:设置传感器的工作模式
  • 位定义
    • B7 (SHDN): 关断控制,1表示进入省电模式
    • B6 (RESET): 复位控制,1触发软件复位
    • B2-B0 (MODE[2:0]): 模式控制
      • 010: 心率模式
      • 011: SpO2模式
      • 111: 多LED模式

c.SpO2配置 (SpO2 Configuration) - 0x0A
  • 位置:数据手册第18-19页
  • 功能:配置SpO2传感器参数
  • 位定义
    • B6-B5 (SPO2_ADC_RGE[1:0]): SpO2 ADC范围控制
    • B4-B2 (SPO2_SR[2:0]): SpO2采样率控制
    • B1-B0 (LED_PW[1:0]): LED脉冲宽度控制

3.3.5 LED脉冲振幅寄存器 (LED Pulse Amplitude Registers)

a.LED1脉冲振幅 (LED1 Pulse Amplitude) - 0x0C
  • 位置:数据手册第20页
  • 功能:设置红色LED的电流
  • 值范围:0x00(0mA)到0xFF(50mA)
b.LED2脉冲振幅 (LED2 Pulse Amplitude) - 0x0D
  • 位置:数据手册第20页
  • 功能:设置红外LED的电流
  • 值范围:0x00(0mA)到0xFF(50mA)

3.3.6 多LED模式控制寄存器 (Multi-LED Mode Control Registers)

a.多LED模式控制寄存器1 (Multi-LED Mode Control Register 1) - 0x11
  • 位置:数据手册第21页
  • 功能:配置时隙1和时隙2的LED行为
  • 位定义
    • B6-B4 (SLOT2[2:0]): 时隙2 LED选择
    • B2-B0 (SLOT1[2:0]): 时隙1 LED选择
b.多LED模式控制寄存器2 (Multi-LED Mode Control Register 2) - 0x12
  • 位置:数据手册第21页
  • 功能:配置时隙3和时隙4的LED行为
  • 位定义
    • B6-B4 (SLOT4[2:0]): 时隙4 LED选择
    • B2-B0 (SLOT3[2:0]): 时隙3 LED选择

3.3.7 温度数据寄存器 (Temperature Data Registers)

a.温度整数部分 (Die Temp Integer) - 0x1F
  • 位置:数据手册第22页
  • 功能:存储温度的整数部分
  • 格式:2的补码格式,每位对应1°C
b.温度小数部分 (Die Temp Fraction) - 0x20
  • 位置:数据手册第22页
  • 功能:存储温度的小数部分
  • 格式:增量为0.0625°C
c.温度配置 (Die Temperature Config) - 0x21
  • 位置:数据手册第22页
  • 功能:触发温度转换
  • 位定义
    • B0 (TEMP_EN): 温度使能位,设置为1启动单次温度读取

代码和资料链接: 通过网盘分享的文件:MAX30102心率血氧传感器资料 链接: https://pan.baidu.com/s/1u_J5HX3-fc0obVjtVtk0Vg?pwd=wgti 提取码: wgti --来自百度网盘超级会员v7的分享

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值