目录
3.2 典型应用电路(这里使用的芯片是MAX30100,应该可以参考参考)
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主要功能
- 血氧测量:通过测量红光和红外光的吸收率计算血氧饱和度
- 心率监测:通过检测血流脉动获取心率信息
- 温度补偿:内置温度传感器调整LED波长温度依赖性
- 环境光消除:能够消除高达200μA的环境光电流
- 低功耗设计:接近检测功能,仅在需要时激活
2.3工作模式
- 心率模式:仅使用红色LED捕获光学数据,用于测量用户心率和/或光电容积脉搏波
- SpO2模式:使用红色和红外LED测量血氧饱和度
- 多LED模式:可灵活配置LED时序
2.4心率和血氧的测量原理
-
基本光学原理
MAX30102采用反射式光电容积脉搏波描记术(PPG)原理,通过测量经组织反射后的光强变化来检测血容量变化。传感器包含两个不同波长的LED光源:
- 红光LED(660nm)
- 红外LED(880nm)
当这些LED发出光波后,部分光被组织吸收,部分被反射回传感器的光电二极管。血液中的血红蛋白是主要的光吸收体,而含氧血红蛋白(HbO2)与脱氧血红蛋白(Hb)对不同波长光的吸收特性存在显著差异
- 脱氧血红蛋白(Hb)在红光区域(660nm)吸收率高
- 氧合血红蛋白(HbO2)在红外光区域(880nm)吸收率高
心率监测(HR)
心率测量基于以下原理:
- 心脏跳动导致动脉血管扩张和收缩
- 血管容积的周期性变化影响光的反射和吸收
- 光电二极管捕获这种周期性的光强变化,产生PPG信号
- 通过数字滤波去除噪声和运动伪影
计算处理后的PPG波形峰值间隔得到心率
血氧测量(SpO2)
血氧饱和度测量基于光学原理和Beer-Lambert定律,过程如下:
- 1.在测量过程中,芯片使用18位ADC采集两种波长下的反射光强度
- 2.每个波长的PPG信号包含两个主要成分:
a. 静态成分(DC):来自组织、骨骼和静脉血的稳定反
b.动态成分(AC):由于心脏搏动引起的动脉血容量变化产生的脉动信号
- 3.血氧饱和度计算:
a. 首先计算比率R:
- R = (红光AC/红光DC)/(红外AC/红外DC)
其中:
- DC分量代表静态光吸收基线,通常取PPG信号的平均值
- 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"部分找到。寄存器分为以下几个功能组:
- 状态寄存器 (0x00-0x01)
- 中断使能寄存器 (0x02-0x03)
- FIFO寄存器 (0x04-0x07)
- 配置寄存器 (0x08-0x0A)
- LED脉冲振幅寄存器 (0x0C-0x0D)
- 多LED模式控制寄存器 (0x11-0x12)
- 温度数据寄存器 (0x1F-0x21)
- 部件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的分享