使用MAX30100的脉搏血氧仪的制作

电子说

1.3w人已加入

描述

步骤1:材料和组件

需要的东西:

1)Arduino Uno x1

2)MAX30100接线板x1

3)适当长度的魔术贴

4)使用Arduino下载的笔记本电脑

5)跳线

6)焊接线

7)焊接工具

我们从ProtoCentral获得了MAX30100分支板,该分支板已准备就绪,可插入插槽以插入维可牢尼龙搭扣,以便将器件缠绕在手指上。为了将其连接到Arduino,我们还必须将跳线焊接到分支板的引脚上。

步骤2:要求和规格

-建立一个可以调节来自两个不同LED的光并在光电二极管上拾取透射光的手指套

-使用与Arduino和显示器集成在一起的MAX30100芯片。

-提供一个用于在显示心率和血氧饱和度之间进行选择的用户界面。

步骤3:操作摘要

脉搏血氧饱和度测定法根据氧化血红蛋白和脱氧血红蛋白的红色和红外光吸收特性进行操作。血氧浓度可以由血红蛋白从吸收红光和红外光之间的比率算出。心率通过整个手指的血量变化来检测,然后通过穿过手指的光量来量化。

MAX30100芯片集成了两个LED:红色和红外(IR),光电探测器和低噪声信号处理以检测脉搏血氧饱和度和心率信号。红外和红光的吸收数据存储在FIFO缓冲区中,最多64个字节。它提供两种操作模式;心率模式以及心率和氧饱和度模式。在心率模式下,仅IR LED点亮,而在双模式下,IR和红色LED均点亮。它还具有一个集成的60 Hz低通滤波器。虽然可以滤除电源线噪声,但仍不能解决环境噪声和波动问题。

红色和红外光通过LED传输通过手指,并且集成在芯片中的光电检测器可以感应到两个不同波长的光吸收。在本项目中,我们将血氧饱和度和心率检测操作与MAX30100一起使用,因此我们可以同时检测心率和氧饱和度。

步骤4:框图

MAX30100

步骤5:将MAX30100集成到Arduino

MAX30100

MAX30100

MAX30100是I2C器件,因此,通过代码,需要Wire库与Arduino接口。物理上,MAX30100(在本例中为分线板)通过特殊引脚连接到Arduino,这些引脚能够从SCL和SDA线(A4和A5)读取数据。 SCL和SDL线提供数据信号和时钟信号。地线和Vin线分别连接到GND和5V线。

LCD键盘屏蔽通过4-8针连接到Arduino,以便我们提供用户友好的显示。我们还使用了LCD键盘防护板上的两个按钮,用于在两种模式之间进行选择:心率监视器和氧气浓度监视器。

步骤6:源代码

#include

#include

#include

#include “MAX30100.h”

MAX30100*pulseOxymeter;

LiquidCrystal lcd(8,9,4,5,6,7)

int mode = 0;

void setup() {

Wire.begin();

lcd.begin(16,2);

lcd.print(“Up for SaO2”)

lcd.setCurson(0,2);

lcd.println(“Pulse oxymeter test!”)

pulseOxymeter = new MAX30100( DEFAULT_OPERATING_MODE, DEFAULT_SAMPLING_RATE, DEFAULT_LED_PULSE_WIDTH, DEFAULT_IR_LED_CURRENT, true, false);

pinMode(2, OUTPUT);

}

void loop() {

pulseoxymeter_t result = pulseOxymeter-》update();

if ((analogRead(0)》130) && (analogRead(0)《160)) {

lcd.clear();

lcd.setCursor(0,0);

lcd.print( “SaO2: ” );

mode = 1;

} else if ((analogRead(0)》130) && (analogRead(0)《160)) {

lcd.clear();

lcd.setCursor(0,0);

lcd.print( “BPM: ” );

mode = 2;

if (result.pulseDetected == true)

{

if (mode == 1) {

lcd.clear();

lcd.setCursor(0,0);

lcd.print( “SaO2: ”);

lcd.print( result.SaO2 );

lcd.print( “%” );

} else if (mode == 2) {

lcd.clear();

lcd.setCursor(0,0);

lcd.print( “BPM: ”);

lcd.print(result.heartBPM);

}

}

delay(10);

digitalWrite( 2, !digitalRead(2) );

}

步骤7:有关代码实现的更多信息

我们在此项目中提供的代码基于由Raivinis Strogonovs使用开放源代码库编写,该库已使用MAX30100实现了自己的脉搏血氧仪版本。

这是他的库的链接:https://github.com/xcoder123/MAX30100

步骤8:挑战

在实施MAX30100时,我们注意到手指的位置和移动会显着影响所记录的读数。这可能是由于心率的测量很大程度上取决于流经手指的血液量而引起的,皮肤的厚度也在这里发挥了作用。如果手指四处移动,则在获取读数时可能会导致光线不均匀。

测试我们项目的人们不应四处移动手指/手以获取稳定的读数。可以通过将传感器放置在实际的手指套中来改进此项目,该方法可以进一步减少环境光的影响,并且可以使手指保持在适当的位置,而不仅仅是使用简单的魔术贴条即可。
        责任编辑:wv 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分