Arduino开发实例MAX30100 脉搏血氧仪传感器驱动
Arduino开发实例-MAX30100 脉搏血氧仪传感器驱动
MAX30100 脉搏血氧仪传感器驱动
1、MAX30100介绍
MAX30100 脉搏血氧仪和心率传感器是一款基于 I2C 的低功耗即插即用生物识别传感器。

MAX30100 是一款集成脉搏血氧饱和度和心率监测传感器解决方案。 它结合了两个 LED、一个光电探测器、优化的光学器件和低噪声模拟信号处理,以检测脉搏血氧饱和度和心率信号。

MAX30100模块结合了两个 LED、一个光电探测器、优化过的光学器件和低噪声模拟信号处理来检测脉搏血氧饱和度 (SpO2) 和心率 (HR) 信号。
在右侧,MAX30100 有两个 LED——一个 RED 和一个 IR LED。 左边是一个非常灵敏的光电探测器。 这个想法是你一次点亮一个 LED,检测反射回探测器的光量,然后根据特征,就可以测量血氧水平和心率。
MAX30100 芯片需要两种不同的电源电压:IC 为 1.8V,RED 和 IR LED 为 3.3V。 所以模块自带3.3V和1.8V稳压器。 这允许将模块连接到任何具有 5V、3.3V 甚至 1.8V 电平 I/O 的微控制器。
MAX30100 最重要的特性之一是其低功耗:MAX30100 在测量过程中的功耗低于 600μA。 也可以将MAX30100置于待机模式,其功耗仅为0.7μA。 这种低功耗允许在手机、可穿戴设备或智能手表等电池供电设备中实现。
MAX30100具有片上温度传感器,可用于补偿环境变化并校准测量值。可测量 -40˚C 至 +85˚C 范围内的“芯片温度”,精度为 ±1˚C。
MAX30100模块使用简单的两线 I2C 接口与微控制器通信。 它有一个固定的 I2C 地址:0xAE(用于写操作)和 0xAF(用于读操作)。
MAX30100 嵌入了一个 FIFO 缓冲器,用于存储数据样本。 FIFO 有一个 16 个样本的存储库,这意味着它可以容纳多达 16 个 SpO2 和心率样本。 FIFO 缓冲器可以减轻微控制器从传感器读取每个新数据样本的负担,从而节省系统功耗。
MAX30100可以编程产生中断,允许主机微控制器在传感器收集数据的同时执行其他任务。 可以为 5 个不同的源启用中断:
- 电源就绪:在上电或掉电后触发。
- SpO2 数据就绪:在收集每个 SpO2 数据样本后触发。
- 心率数据就绪:在收集到每个心率数据样本后触发。
- 温度就绪:当内部芯片温度转换完成时触发。
- FIFO 几乎已满:当 FIFO 已满且未来数据即将丢失时触发。
INT 线是漏极开路,因此被板载电阻拉高。 当中断发生时,INT 引脚变为低电平并保持低电平,直到中断被清除。
2、MAX30100工作原理
MAX30100,或任何光学脉搏血氧计和心率传感器,由一对高强度 LED(RED 和 IR,两种不同波长)和一个光电探测器组成。 这些 LED 的波长分别为 660nm 和 880nm。

MAX30100 的工作原理是将两束光照射到手指或耳垂(或者基本上是皮肤不太厚的任何地方,因此两束光都可以轻松穿透组织)并使用光电探测器测量反射光量。 这种通过光检测脉冲的方法称为光电体积描记图( Photoplethysmogram.)。
MAX30100的工作可以分为两部分:心率测量和脉搏血氧饱和度(测量血液中的氧含量)。
1)心率测量
动脉血中的氧合血红蛋白(HbO2)具有吸收红外光的特性。 血液越红(血红蛋白越高),吸收的红外光越多。 当血液随着每次心跳通过手指泵出时,反射光的量会发生变化,从而在光电探测器的输出端产生变化的波形。 当继续照射光并获取光电探测器读数时,很快就会开始获得心跳 (HR) 脉搏读数。

2)脉搏血氧饱和度测量
脉搏血氧仪的原理是,吸收的 RED 和 IR 光量取决于血液中的氧气量。 下图是含氧血红蛋白 (HbO2) 和脱氧血红蛋白 (Hb) 的吸收光谱。

从图中可以看出,脱氧血液吸收更多红光(660nm),而含氧血液吸收更多红外光(880nm)。 通过测量光电探测器接收到的 IR 和 RED 光的比率,可以计算出血液中的氧气水平 (SpO2)。
3、硬件准备
- Arduino Uno 开发板一块
- MAX30100传感器模块一个
- 面板板一块
- 边接线若干
硬件接线如下:

由于MAX30100模块的设计的有缺陷,修正方案请参考:
5、驱动实现
MAX30100驱动安装如下:

驱动示例代码如下:
1 | #include <Wire.h> |
文章来源: https://iotsmart.blog.csdn.net/article/details/127957929