MAX3010x Pulsoximetermodule (Teil 1)

Module Biometrie

Es ist Zeit für ein paar fortschrittlichere Herzfrequenzsensoren. Heute werden wir einen Blick auf die MAX3010x Sensor-Familie werfen.

MAX3010x Pulsoximetersensoren

Die MAX3010x Familie besteht aus einer Reihe von Pulsoximetersensoren, die von Maxim Integrated hergestellt werden. Derzeit besteht die Sensorfamilie aus dem MAX30100, dem MAX30101, dem MAX30102 und dem MAX30105. Nur der MAX30101 und der MAX30102 werden noch aktiv hergestellt. Alle Sensoren verfügen über eine rote und eine Infrarot-LED sowie eine Fotodiode zur Messung der reflektierten Lichtmenge. Der MAX30101 und der MAX30105 verfügen zusätzlich über eine grüne LED. Die Sensoren sind für die Herzfrequenzmessung, die Pulsoximetrie, die Näherungsmessung und im Falle des MAX30105 auch für die Erkennung von Partikeln (z. B. in Rauchmeldern) konzipiert.

Das grundsätzliche Funktionsprinzip ist dasselbe wie bei den einfachen Pulssensoren. Es ist immer nur eine LED aktiv. Mit der Fotodiode wird dann die Menge des reflektierten Lichts gemessen, die sich aufgrund der sich ändernden Blutmenge im Gewebe während der Herzschläge ändert. Die MAX3010x-Sensoren können jedoch mehr als nur Herzfrequenzmessungen durchführen. Sie können auch für die Pulsoximetrie verwendet werden.

Was ist also Pulsoximetrie und wie funktioniert sie? Die Pulsoximetrie ist eine Methode zur Messung der peripheren Sauerstoffsättigung (SpO2). In unserem Körper transportieren die roten Blutkörperchen Sauerstoff aus der Lunge in den gesamten Körper. Sie tun dies mithilfe eines Proteins namens Hämoglobin. Das Hämoglobin reagiert mit dem Sauerstoff in der Lunge und wird zu sauerstoffhaltigem Hämoglobin. Der gespeicherte Sauerstoff wird dann in den Zellen freigesetzt, die ihn benötigen, und das Hämoglobin wird wieder zu sauerstofflosem Hämoglobin.

Sauerstoffhaltiges und sauerstoffloses Hämoglobin haben eine leicht unterschiedliche Molekularstruktur, wodurch sie ein anderes Absorptionsspektrum aufweisen. Sauerstoffhaltiges Hämoglobin absorbiert Infrarotlicht stärker als rotes Licht, während sauerstoffloses Hämoglobin rotes Licht stärker absorbiert als Infrarotlicht. Im Blut findet man immer eine Mischung aus beiden. Vergleicht man die Menge des absorbierten Lichts für die rote und die Infrarot-LED, kann man die Konzentration der beiden bestimmen und so die Sauerstoffsättigung ermitteln.

Verwendung des Moduls

Lass uns sehen, wie wir die MAX3010x-Module verwenden können, um Daten zu erfassen, die wir später für die Erkennung der Herzfrequenz und die Pulsoximetrie verwenden können.

Anschließen des Moduls

Als ersten Schritt müssen wir das Sensormodul mit dem Arduino Uno verbinden. Der Sensor verwendet I2C für die Datenübertragung. Folglich benötigen wir nur vier Kabel: zwei für die Stromversorgung, eine Datenleitung (SDA) und eine Taktleitung (SCL). Im einfachsten Fall können wir den Sensor direkt mit dem Arduino Uno verbinden. Dazu verbinden wir VIN mit 5V, GND mit GND, SDA mit SDA und SCL mit SCL. Es gibt jedoch einige MAX301x-Module, die nicht für 5 V, sondern für 3,3 V ausgelegt sind. Um diese Module mit dem Arduino Uno zu verwenden, braucht man einen Pegelwandler. Beide Wege sind in den nachfolgenden Abbildungen dargestellt:

Installieren der Bibliothek

Um mit dem Sensor zu kommunizieren, werden wir eine Arduino-Bibliothek verwenden. Es gibt bereits einige Bibliotheken für verschiedene Sensoren aus der MAX3010x-Sensorfamilie, aber keine, die ich gefunden habe, bietet Unterstützung für alle Sensoren. Aus diesem Grund habe ich beschlossen, für dieses Tutorial eine eigene Bibliothek zu erstellen.

Du kannst die MAX3010x Sensor Library über den Arduino Bibliotheksverwalter installieren oder sie über den untenstehenden Downloadlink herunterladen. Das ZIP-Archiv kann in die Arduino IDE importiert werden, indem man auf Sketch > Bibliothek einbinden > ZIP-Bibliothek hinzufügen ... klickt. Falls es Probleme mit der Bibliothek gibt, kannst du diese auf GitHub melden.

Installation der MAX3010x Sensor Bibliothek mit dem Bibliotheksverwalter

Der Code

Nachdem die Bibliothek installiert wurde, ist es an der Zeit, sie einzusetzen. Das folgende Beispiel zeigt, wie der Sensor mit einer standardmäßigen Konfiguration verwendet werden kann, um Daten sowohl für die rote als auch für die Infrarot-LED zu erfassen. Um den Code an den verwendeten Sensor anzupassen, muss lediglich die entsprechende Codezeile einkommentiert werden:

#include <MAX3010x.h>

/* 
 * Select your sensor by uncommenting
 * the corresponding line
 */

MAX30100 sensor;
// MAX30101 sensor;
// MAX30102 sensor;
// MAX30105 sensor;

void setup() {
  Serial.begin(115200);

  if(sensor.begin()) { 
    Serial.println("IR,Red");
  }
  else {
    Serial.println("Sensor not found");  
    while(1);
  }  
}

void loop() {
  auto sample = sensor.readSample(1000);
  Serial.print(sample.ir);
  Serial.print(",");
  Serial.println(sample.red);
}

In der Standardkonfiguration führt der Sensor 50 Messungen pro Sekunde durch, also eine Messung alle 20 ms. Der Sensor verfügt über einen internen Puffer, um diese Messungen zu speichern. Wenn sie jedoch nicht schnell genug gelesen werden, läuft der Puffer voll und der Sensor beginnt, Messwerte zu verwerfen. Aus diesem Grund verwendet das Programm eine Baudrate von 115200 anstelle der üblichen 9600. Dies ermöglicht eine schnellere Datenübertragung vom Arduino zu deinem Computer.

Das Ergebnis

Die Messdaten können mit dem seriellen Plotter (Werkzeuge > Serieller Plotter) angezeigt werden. Vergiss nicht, die Baudrate auf 115200 einzustellen. Wenn du deinen Finger auf den Sensor hältst, solltest du in der Lage sein, deine Herzschläge in den visualisierten Daten zu erkennen:
Messergebnisse für die rote und die Infrarot-LED

Wenn die Werte der beiden LEDs sehr unterschiedlich sind, zoomt der serielle Plotter heraus und man kann die kleinen Änderungen, die durch den Herzschlag verursacht werden, möglicherweise nicht mehr erkennen. In diesem Fall kann es sinnvoll sein, das Programm so zu ändern, dass jeweils nur der Wert einer der beiden LEDs übertragen wird.

Wenn du mit dem Sensor herumspielst, wirst du schnell feststellen, dass es sehr einfach zu erkennen ist, wenn kein Finger auf dem Sensor liegt. Bei den einfacheren Herzfrequenzmodulen mit nur einer LED und einer Fotodiode war dies dagegen viel schwieriger. Der Grund dafür ist die in den MAX3010x-Sensoren eingebaute Umgebungslichtunterdrückung. Wenn kein Finger auf dem Sensor liegt, ist der Messwert nahezu Null, sobald man den Finger näher heranführt, steigt der Wert an. Dank der Umgebungslichtunterdrückung kann der Sensor so auch als Näherungssensor verwendet werden. Beim MAX30105 Sensor gibt es dafür sogar einige spezielle Zusatzfunktionen.

Vorheriger Beitrag Nächster Beitrag