цифровая электроника
вычислительная техника
встраиваемые системы

 
» » » Пульсоксиметр своими руками на основе датчика пульсоксиметрии MAX30100 и Arduino

Пульсоксиметр своими руками на основе датчика пульсоксиметрии MAX30100 и Arduino

Автор: Mike(admin) от 23-12-2019, 03:55


В этом проекте мы будем использовать интерфейсный датчик пульсоксиметра MAX30100 с Arduino, который может измерять содержание кислорода в крови и частоту сердечных сокращений и отображать это на ЖК-дисплее 16×2. Концентрация кислорода в крови, обозначаемая как SpO2, измеряется в процентах, а частота сердечных сокращений / пульса измеряется в BPM (ударах в минуту). MAX30100 – это прекрасное решение для пульсоксиметрии и создания пульсометра.


Пульсоксиметр своими руками на основе датчика пульсоксиметрии MAX30100 и Arduino

Как работает пульсоксиметр? Кислород поступает в легкие, а затем попадает в кровь. Кровь переносит кислород к различным органам нашего тела. Основным способом переноса кислорода в нашей крови является гемоглобин. Во время считывания пульсовой оксиметрии небольшое зажимное устройство помещается на палец, ушную раковину или носок.


Как работает пульсоксиметр

Маленькие лучи света проходят через кровь в пальце, измеряя количество кислорода. Это достигается путем измерения изменений в поглощении света в кислородсодержащей или дезоксигенированной крови.


Как работает пульсоксиметр

Здесь-то нам и пригодится датчика пульсоксиметра, такой как MAX30100. Это датчик представляет собой интегрированный датчик для пульсоксиметрии и создания пульсометра. Он объединяет два светодиода, фотодетектор, оптимизированную оптику и обработку аналогового сигнала с низким уровнем шума для обнаружения сигналов пульса и сердечного ритма. Он работает от источников питания 1,8 В и 3,3 В и может быть отключен с помощью программного обеспечения с незначительным током в режиме ожидания, что позволяет источнику питания всегда оставаться подключенным.


MAX30100

Устройство имеет два светодиода: один излучает красный свет, другой излучает инфракрасный свет. Для частоты пульса нужен только инфракрасный свет. И красный свет, и инфракрасный свет используются для измерения уровня кислорода в крови.


Когда сердце накачивает кровь, происходит увеличение насыщенной кислородом крови в результате увеличения количества крови. Когда сердце расслабляется, объем насыщенной кислородом крови также уменьшается. Зная время между увеличением и уменьшением насыщенной кислородом крови, определяют частоту пульса.


Оказывается, насыщенная кислородом кровь поглощает больше инфракрасного света и пропускает больше красного света, в то время как деоксигенированная кровь поглощает красный свет и пропускает больше инфракрасного света. Это основная функция MAX30100: он считывает уровни поглощения для обоих источников света и сохраняет их в буфере, который может быть считан через I2C.


Теперь давайте подключим датчик пульсоксиметра MAX30100 к Arduino и отобразим значение в последовательном мониторе. Итак, принципиальная схема и подключение приведена далее.


Пульсоксиметр своими руками на основе датчика пульсоксиметрии MAX30100 и Arduino

Подключите Vin-контакт MAX30100 к Arduino 5V или 3.3V, GND к GND. Подключите I2C Pin, SCL и SDA MAX30100 к A5 и A4 платы Arduino.


Пульсоксиметр своими руками на основе датчика пульсоксиметрии MAX30100 и Arduino

Исходный код программы для сопряжения пульсоксиметра MAX30100 с Arduino приведен далее. Этот код будет отображать значение в последовательном мониторе. Скопируйте этот код и загрузите его на Arduino. Файлы библиотеки можно скачать по адресу https://drive.google.com/open?id=15w7Hp_Lg7FVVQoou1A56JgNDZADBuN15.



#include <Wire.h>
#include "MAX30100_PulseOximeter.h"
#define REPORTING_PERIOD_MS     1000
PulseOximeter pox;
uint32_t tsLastReport = 0;
void onBeatDetected()
{
    Serial.println("Beat!");
}
void setup()
{
    Serial.begin(115200);
    Serial.print("Initializing pulse oximeter..");
if (!pox.begin()) {
        Serial.println("FAILED");
for(;;);
    } else {
        Serial.println("SUCCESS");
    }
     pox.setIRLedCurrent(MAX30100_LED_CURR_7_6MA);
    pox.setOnBeatDetectedCallback(onBeatDetected);
}
void loop()
{
    pox.update();
if (millis() - tsLastReport > REPORTING_PERIOD_MS) {
        Serial.print("Heart rate:");
        Serial.print(pox.getHeartRate());
        Serial.print("bpm / SpO2:");
        Serial.print(pox.getSpO2());
        Serial.println("%");
        tsLastReport = millis();
    }
}

После загрузки кода вы можете положить палец на датчик MAX30100 и открыть монитор последовательного порта, чтобы увидеть значения, как показано на следующем изображении.


Пульсоксиметр своими руками на основе датчика пульсоксиметрии MAX30100 и Arduino

Теперь давайте используем ЖК-дисплей 16X2 вместо последовательного монитора, чтобы увидеть значения BPM и SpO2. Соберите схему, как показано далее.


Пульсоксиметр своими руками на основе датчика пульсоксиметрии MAX30100 и Arduino

Подключите Vin-контакт MAX30100 к Arduino 5V или 3.3V, GND к GND. Подключите контакт I2C, SCL и SDA MAX30100 к A5 и A4 Arduino. Аналогичным образом подключите вывод LCD 1, 5, 16 к GND Arduino и от 2, 15 до 5 В VCC. Аналогичным образом подключите вывод 4, 6, 11, 12, 13, 14 ЖКД к выводу 13, 12, 11, 10, 9, 8 Arduino. Используйте потенциометр 10K на выводе 3 ЖК-дисплея, чтобы отрегулировать контрастность ЖК-дисплея.


Пульсоксиметр своими руками на основе датчика пульсоксиметрии MAX30100 и Arduino

Исходный код программы:



#include <LiquidCrystal.h>
#include <Wire.h>
#include "MAX30100_PulseOximeter.h"

LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
 
#define REPORTING_PERIOD_MS     1000
 
PulseOximeter pox;
uint32_t tsLastReport = 0;
 
void onBeatDetected()
{
    Serial.println("Beat!");
}
 
void setup()
{
    Serial.begin(115200);
    Serial.print("Initializing pulse oximeter..");
    lcd.begin(16,2);
    lcd.print("Initializing...");
    delay(3000);
    lcd.clear();
 
    if (!pox.begin()) {
        Serial.println("FAILED");
        for(;;);
    } else {
        Serial.println("SUCCESS");
    }
     pox.setIRLedCurrent(MAX30100_LED_CURR_7_6MA);
 
    pox.setOnBeatDetectedCallback(onBeatDetected);
}
 
void loop()
{
    pox.update();
    if (millis() - tsLastReport > REPORTING_PERIOD_MS) {
        Serial.print("Heart rate:");
        Serial.print(pox.getHeartRate());
        Serial.print("bpm / SpO2:");
        Serial.print(pox.getSpO2());
        Serial.println("%");

        lcd.clear();
        lcd.setCursor(0,0);
        lcd.print("BPM : ");
        lcd.print(pox.getHeartRate());
        
        lcd.setCursor(0,1);
        lcd.print("SpO2: ");
        lcd.print(pox.getSpO2());
        lcd.print("%");
 
        tsLastReport = millis();
    }
}

После загрузки кода вы можете положить палец на датчик MAX30100, и на ЖК-дисплее начнут отображаться процентное содержание кислорода и количество ударов в минуту (BPM).


Пульсоксиметр своими руками на основе датчика пульсоксиметрии MAX30100 и Arduino



© digitrode.ru


Теги: Arduino, пульсоксиметр



   Благодарим Вас за интерес к информационному проекту digitrode.ru.
   Если Вы хотите, чтобы интересные и полезные материалы выходили чаще, и было меньше рекламы,
   Вы можее поддержать наш проект, пожертвовав любую сумму на его развитие.


Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий