Aplikace senzoru MAX30100 – detektor srdečního tepu

Aplikace senzoru MAX30100


Článek nám zaslal František Hruška, děkujeme.
Zajímavým senzorem v nabídce Arduino je senzor MAX30100 vedle podobných, např. Max30102. Je určen pro měření tepu srdce a okysličení krve. Používá principy shodné s profesionálními snímači u zařízení v nemocnicích nebo také u chytrých hodinek.

Princip měření

Měření probíhá neinvazivně optickou metodou pulzní oxymetrie. Tkáň prstu se střídavě prosvěcuje impulzně paprskem světla Red o vlnové délce 650 nm a paprskem IR o vlnové délce 950 nm. Velikost odražených paprsků je různá podle velikosti okysličení hemoglobinu a podle vlnové délky. Rozdíly absorbance jsou patrné na obr.1. Vyhodnocení se provádí v programu aplikace, eliminují se rušivé vlivy a provádí se i kalibrace.

Obr.1: Princip měření okysličení krve, snímání paprsků Red a IR z prstu, a) velikost absorpce z teply (okysličený hemoglobin), b) velikost absorpce ze žíly (hemoglobin bez kyslíku)


Obr.1: Princip měření okysličení krve, snímání paprsků Red a IR z prstu, a) velikost absorpce z tepny (okysličený hemoglobin), b) velikost absorpce ze žíly (hemoglobin bez kyslíku)

Rekonstrukce senzoru

Nakupovaný senzor MAX30100 má konstrukční vadu. Signály SCL, SDA, INT jsou napájeny v nakoupeném stavu napětím 1,8V přes odporu R1, R2, R3, což je velmi nízké napětí pro vytvoření signálů pro kvalitního propojení I2C a pro přerušovací systém. Viz schéma.

Obr. 1: Schéma senzoru MAX30100 (1)


Obr. 1: Schéma senzoru MAX30100 (1)

Oprava se týká rekonstrukce obvodu senzoru. Nabízí se dvě možnosti. Jedna možnost je přerušit napojení napájení odporů R1, R2, R3 napětím 1,8V a napojit je na napětí 3,3V. Toto vyžaduje provést přerušení a přepojení na plošném spoji velmi jemným způsobem a se zkušenostmi.

Druhá možnost znamená vyletování SMD odporů R1, R2, R3 z plošného spoje senzoru, obvod senzoru s vyletovanými odpory napojit podle původního zapojení a vyletované odpory nahradit standardními odpory 4,7 K vně zapojení senzoru. Tak je zajištěna funkčnost senzoru celkem jednoduchým způsobem. (Doporučuje se vyletování SMD odporu provést způsobem vhodným pro zapojení SMD plošného spoje a osobou se zkušenostmi pro tuto operaci).

Umístění SMD odporů R1, R2, R3 je na obr. 2a. v části b) obrázku 2 je uvedeno nové zapojení senzoru na Arduino s vnějšími odpory R1, R2, R3.

Obr.2: a) označené odpory R1,R2,R3 pro vyletování, b) náhradní zapojení senzoru a vnějších odporů na desku Arduino.


Obr.2: a) označené odpory R1,R2,R3 pro vyletování, b) náhradní zapojení senzoru a vnějších odporů na desku Arduino.

Programování aplikace

Po otevření vývojového prostředí IDE a zapojení senzoru na Arduino a zapojení sestavy na USB lze postupovat v těchto krocích:

  • Zkontroluje se nainstalování knihovny MAX30100lib by OXullo Intersecans. Chybí li, provede se její instalace.
  • Programy pro otestování jsou v různém provedení k dispozici na webu, viz seznam v kapitole použitá literatura v závěru. Po zkušenostech s testováním programů na webu jsem napsal univerzální program MAX30100_FH.ino. Zdrojový text je přiložen.
  • Po jeho vložení do IDE do New Sketch se zkontroluje a přeloží v položce Sketch/Ověřit/Kompilovat.
  • Program má možnost řídit výpisy na obrazovce podle hodnot dvou proměnných, flag_HR=1 nebo 0 a flag_SpO2=1/0. Po spuštění dodaného programu jsou nastaveny obě hodnoty =1. Jsou vypisovány všechny hodnoty (viz výpis) pro situaci přiloženého prstu na LED senzoru:
    10:36:18.190 -> HP(bpm) 52.88, SpO2(%) 97, red 16358 ,ir 16256
  • Ve výpisu hodnoty času je uveden první údaj tepu srdce: HP(bpm) jako hodnota HR, dále je hodnota okysličení, SpO2 v %, a dále snímané primární hodnoty absorpce red a ir paprsků Red a IR .
  • Hodnoty absorbance lze vypisovat na grafu při hodnotě flag_plot=1.
  • Hodnoty flagů lze měnit ve zdrojovém programu v úvodní časti deklarace a výpisy sledovat po nahrátí přeloženého programu do modulu.
  • Jako centrální jednotku lze použít všechny typy již od nejjednodušších.

Zdrojový text programu MAX30100_FH

/*  upravený program podle návodů na webu pro MAX30100  */

// výstup přímo HP a SPO2, a nebo IR a LED, a nebo graf

#include <Wire.h>

#include „MAX30100_PulseOximeter.h“

#define REPORTING_PERIOD_MS     1000

// Create a PulseOximeter object

PulseOximeter pox;

MAX30100 sensor;

byte flag_HP=1; byte flag_plot=0;byte flag_redIr=1;  // nastavení flagů

void onBeatDetected() {

    Serial.println(„♥ Beat!“); }

void setup() {

    Serial.begin(115200);delay(2000);

    Serial.print(„Initializing pulse oximeter..“);

    // Initialize sensor

    if (!pox.begin()) {

        Serial.println(„FAILED“);

        for(;;);

    } else {

        Serial.println(„SUCCESS“);

    }

    pox.setIRLedCurrent(MAX30100_LED_CURR_7_6MA);  // konfiguruje senzor pro 7,6 mA odběru LED

   pox.setOnBeatDetectedCallback(onBeatDetected);  // nastavení rutiny Callback

}

void loop() {

    uint16_t ir, red;

    pox.update();

   if (flag_HP==1) {

       Serial.print(„HP(bpm) „);

       Serial.print(pox.getHeartRate());

       Serial.print(„, SpO2(%) „);

       Serial.print(pox.getSpO2());

       if (flag_redIr==0) { Serial.println(“ „);}

    }

    if (flag_redIr==1)  {

       sensor.getRawValues(&ir, &red);

       Serial.print(„, red „);Serial.print(red);

       Serial.print(“ ,ir „);

       Serial.println(ir);

       if (flag_plot==0) { Serial.println(“ „);}

    }

   if (flag_plot==1)  {

       Serial.print(„, „);Serial.print(pox.getHeartRate());

        Serial.print(„, „);

        Serial.print(pox.getSpO2());

        if (flag_HP==0||flag_redIr==0) { Serial.println(“ „);}

    }

}

Použitá literatura:

  1. Interface MAX30100 Pulse Oximeter Sensor with Arduino
  2. Interfacing MAX30100 Pulse Oximeter and Heart Rate Sensor with Arduino (lastminuteengineers.com)
  3. Detektor srdečního tepu MAX30100 | LaskaKit
  4. Interface MAX30100 Pulse Oximeter Sensor with Arduino (microcontrollerslab.com)
  5. Interface MAX30100 Pulse Oximeter Sensor with Arduino (microcontrollerslab.com)

Článek nám zaslal František Hruška, děkujeme.

Sdílet článek

2 Responses

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Mohlo by se také líbit

Nejčtenější články