In all dieser Zeit haben wir eine große Anzahl davon gezeigt Elektronische Bauteile kompatibel mit Boards wie Arduino oder kompatiblesowie für viele andere Maker- oder Heimwerkerarbeiten. Nun stellen wir Ihnen das Modul vor MAX30102, das einen Sensor zur Messung von Puls und Blutsauerstoff enthält.
Auf diese Weise können Sie auch Wearables wie selbstgemachte Aktivitätsarmbänder oder Hardware für erstellen Gesundheitszustand überwachen einer Person, die biometrische Daten oder Telemetrie dieser Person dank der Integration des Herzfrequenzmessers und des Oximeters in dieses Gerät liefert ...
Was ist ein Herzfrequenzmesser? Wie funktioniert es?
Un Pulssensor oder Herzfrequenzmesser Dabei handelt es sich um ein elektronisches Gerät, mit dem die Herzfrequenz einer Person in Echtzeit gemessen wird. Es wird vor allem im Sportbereich eingesetzt, um Leistung und Anstrengung beim Training oder im Alltag zu überwachen. Herzfrequenzmesser sind bei Sportlern beliebt, aber auch in medizinischen Zentren sind sie ein grundlegendes Gerät, um die Herzfrequenz, also die Herzfrequenz oder Schläge pro Minute, zu ermitteln:
- PR Bpm: Zeigt die Herzfrequenz an, also die Schläge pro Minute.
In allen Fällen ist die Sensoren erfassen Schwankungen des Blutvolumens bei jedem Herzschlag. Diese Variation wird in ein elektrisches Signal umgewandelt, das verarbeitet wird, um die Herzfrequenz zu ermitteln. Einige Herzfrequenzmesser verfügen außerdem über Schaltkreise zur Verstärkung und Geräuschunterdrückung, um die Genauigkeit der Messwerte zu verbessern.
Was ist ein Oximeter? Wie funktioniert es?
Un Oximeter ist ein medizinisches oder Sportgerät mit dem die Sauerstoffsättigung im Blut gemessen wird. Dieses Gerät bietet Daten zur Blutsauerstoffsättigung mit Werten von 0 bis 100 %. Üblicherweise verfügt das gleiche Gerät auch über die Herzfrequenzoption, die alle Informationen zur Überwachung oder Aufzeichnung anzeigt.
Die Daten, die misst ein Oximeter ist:
- %SpO2: bezieht sich auf den Prozentsatz der Sauerstoffsättigung im Blut.
Das Oximeter wird wie eine Klemme so platziert, dass es an die Morphologie unseres Fingers angepasst ist oder es kann auch an anderen Stellen des Körpers angebracht werden, wie es beim Herzfrequenzmesser der Fall ist, etwa am Handgelenk ist in vielen Aktivitätsarmbändern zu sehen. ,
Oximeter emittieren hinsichtlich ihrer Funktionsweise unterschiedliche Werte Lichtwellenlängen die durch die Haut gehen. Was auf dieses Licht einwirkt, ist Hämoglobin, ein Blutmolekül, das für den Sauerstofftransport verantwortlich ist und je nach transportiertem Sauerstoffgehalt unterschiedliche Lichtmengen absorbiert. Der detaillierte Ablauf ist wie folgt:
- Lichtemission- Das Oximeter sendet Licht mit zwei Wellenlängen aus, eine rote und eine infrarote, die durch den auf das Gerät gelegten Finger gelangen.
- Lichtabsorption: Hämoglobin, ein Molekül in roten Blutkörperchen, das Sauerstoff transportiert, absorbiert unterschiedliche Mengen dieser Lichter. Sauerstoffbeladenes Hämoglobin (Oxyhämoglobin) und sauerstofffreies Hämoglobin (Desoxyhämoglobin) haben unterschiedliche Lichtabsorptionseigenschaften.
- Lichterkennung: Ein Detektor auf der gegenüberliegenden Seite des Lichtsenders sammelt das Licht, das durch den Finger gelangt ist.
- Berechnung der Sauerstoffsättigung- Das Gerät berechnet das Verhältnis von Oxyhämoglobin zur Gesamtmenge des vorhandenen Hämoglobins, sowohl Oxyhämoglobin als auch Desoxyhämoglobin. Dieser Anteil wird als Prozentsatz der Blutsauerstoffsättigung (%SpO2) dargestellt. Dies geschieht durch einen Prozessor, der diese elektrischen Signale interpretieren und in einen numerischen Wert umwandeln kann.
Was ist das MAX30102-Modul?
Der Sensor MAX30102, hergestellt von Maxim Integratedist ein integriertes Gerät, das die Funktionen eines Herzfrequenzmessers und eines Oximeters kombiniert. Dieser Sensor kann problemlos mit einem Mikrocontroller wie Arduino verwendet werden. Der MAX30102 gehört zur MAX3010x-Serie optischer Sensoren dieser Firma.
Seine Funktionsweise basiert auf der Variation der Lichtabsorption durch das Blut in Abhängigkeit von seiner Umgebung Sauerstoffsättigungsgrad und Puls wie ich in den beiden vorherigen Abschnitten erwähnt habe. Dieser Sensor ist mit zwei LEDs ausgestattet, einer roten und einer Infrarot-LED. Es wird auf die Haut, beispielsweise am Finger oder Handgelenk, gelegt und erkennt reflektiertes Licht, um den Grad der Sauerstoffsättigung zu bestimmen.
Die Kommunikation mit dem MAX30102 wird durchgeführt über I2C-BusDies erleichtert den Anschluss an einen Mikrocontroller wie Arduino. Der MAX30102 benötigt eine doppelte Stromversorgung: 1.8 V für die Logik und 3.3 V für die LEDs. Typischerweise bei 5-V-Modulen zu finden, die bereits über die erforderliche Pegelanpassung verfügen.
La optische Pulsoximetrie Es handelt sich um eine nicht-invasive Methode zur Bestimmung des Prozentsatzes der Sauerstoffsättigung im Blut. Wie ich bereits erwähnt habe, basiert es auf dem Unterschied in den Lichtabsorptionskoeffizienten von Hämoglobin (Hb) und Oxyhämoglobin (HbO2) für verschiedene Wellenlängen. Sauerstoffreiches Blut absorbiert mehr Infrarotlicht, während sauerstoffarmes Blut mehr rotes Licht absorbiert. In Körperregionen, in denen die Haut dünn genug ist und sich darunter Blutgefäße befinden, kann dieser Unterschied zur Bestimmung des Sauerstoffsättigungsgrads genutzt werden.
Merkmale des MAX30102-Moduls mit Puls- und Blutsauerstoffsensor
Der MAX30102 beinhaltet:
- 2x LEDs, eine rote (660 nm) und eine infrarote (880 nm)
- 2x Fotodioden zur Messung des reflektierten Lichts
- 18-Bit-ADC-Wandler mit einer Abtastrate von 50 bis 3200 Abtastungen pro Sekunde.
- Darüber hinaus verfügt es über die notwendige Elektronik zur Signalverstärkung und -filterung, Unterdrückung von Umgebungslicht, Unterdrückung von Frequenzen von 50–60 Hz (künstliches Licht) und Temperaturkompensation.
Modulverbrauch kann bis zu 50mA erreichen während der Messung, obwohl die Intensität programmgesteuert angepasst werden kann, mit einem Energiesparmodus von 0.7 µA während der Messungen.
Preis und wo zu kaufen
Die MAX30102-Sensoren zur Messung von Puls und Blutsauerstoff Sie sind ziemlich billig. Diese Module können Sie für nur wenige Euro auf Websites wie eBay, Aliexpress oder Amazon erwerben. Sie werden sehen, dass es verschiedene Arten gibt, und wir empfehlen Folgendes:
Verbindungen und Beispiel mit Arduino
Um den MAX30102 mit Arduino zu testen, müssen Sie zunächst dieses Modul mit der Arduino-Platine verbinden. Das Der Anschluss ist sehr einfach, Sie müssen nur Folgendes anschließen:
- Vcc des Moduls muss an den 5V-Ausgang des Arduino-Boards angeschlossen werden.
- GND des Moduls muss mit der GND-Buchse des Arduino-Boards verbunden werden.
- Der SCL des Moduls muss mit einem der analogen Eingänge des Arduino-Boards verbunden werden, z. B. A5.
- Der SDA des Moduls muss mit einem anderen analogen Eingang des Arduino-Boards verbunden werden, z. B. A4.
Sobald die entsprechenden Verbindungen zwischen dem MAX30102-Board und dem Arduino-Board hergestellt wurden, müssen Sie als Nächstes einen Quellcode oder eine Skizze schreiben, damit es funktioniert und mit dem Empfang biometrischer Daten von der betreffenden Person beginnt. Dies ist so einfach wie das Schreiben des folgenden Codes Arduino IDE und programmiere das Board:
#include <Wire.h> #include "MAX30105.h" #include "spo2_algorithm.h" MAX30102 pulsioximetro; #define MAX_BRIGHTNESS 255 #if defined(__AVR_ATmega328P__) || defined(__AVR_ATmega168__) //Arduino Uno no tiene suficiente SRAM para almacenar 100 muestreos, por lo que hay que truncar las muestras en 16-bit MSB. uint16_t pulsoBuffer[100]; //infrared LED sensor data uint16_t oxiBuffer[100]; //red LED sensor data #else uint32_t pulsoBuffer[100]; //Sensores uint32_t oxiBuffer[100]; #endif int32_t BufferLongitud; //Longitud de datos int32_t spo2; //Valor de SPO2 int8_t SPO2valido; //Indicador de validez del valor SPO2 int32_t rangopulsacion; //PR BPM o pulsaciones int8_t validrangopulsacion; //Indicador de validez del valor PR BPM byte pulsoLED = 11; //Pin PWM byte lecturaLED = 13; //Titila con cada lectura void setup() { Serial.begin(115200); // Inicia la comunicación con el microcontrolador a 115200 bits/segundo pinMode(pulsoLED, OUTPUT); pinMode(lecturaLED, OUTPUT); // Inicializar sensores if (!pulsioximetro.begin(Wire, I2C_SPEED_FAST)) //Usar el bus I2C a 400kHz { Serial.println(F("MAX30102 no encontrado. Por favor, comprueba la conexión y alimentación del módulo.")); while (1); } Serial.println(F("Pon el sensor en contacto con tu dedo y presiona cualquier tecla para iniciar la conversión.")); while (Serial.available() == 0) ; //Esperar hasta que se pulsa una tecla Serial.read(); byte brilloLED = 60; //Opciones: 0=Apagado hasta 255=50mA byte mediaMuestreo = 4; //Opciones: 1, 2, 4, 8, 16, 32 byte ModoLED = 2; //Opciones: 1 = Rojo solo, 2 = Rojo + IR, 3 = Rojo + IR + Verde byte rangoMuestreo = 100; //Opciones: 50, 100, 200, 400, 800, 1000, 1600, 3200 int anchoPulso = 411; //Opciones: 69, 118, 215, 411 int rangoADC = 4096; //Opciones: 2048, 4096, 8192, 16384 pulsioximetro.setup(brilloLED, mediaMuestreo, ModoLED, rangoMuestreo, anchoPulso, rangoADC); //Configuración del módulo } void loop() { BufferLongitud = 100; //10 almacenamientos en el buffer con 4 segundos corriendo a 25sps //Leer las primeras 100 muestras for (byte i = 0 ; i < BufferLongitud ; i++) { while (pulsioximetro.available() == false) //Comprobar nuevos datos pulsioximetro.check(); oxiBuffer[i] = pulsioximetro.getRed(); pulsoBuffer[i] = pulsioximetro.getIR(); pulsioximetro.siguienteMuestreo(); //Muestreo terminado, ir al siguiente muestreo Serial.print(F("red=")); Serial.print(oxiBuffer[i], DEC); Serial.print(F(", ir=")); Serial.println(pulsoBuffer[i], DEC); } //Calcular el valor del pulso PM y SpO2 tras los primeros 100 samples maxim_heart_rate_and_oxygen_saturation(pulsoBuffer, BufferLongitud, oxiBuffer, &spo2, &SPO2valido, &rangopulsacion, &validrangopulsacion); //Calcular muestreos continuos while (1) { //Volcar los 25 primeros valores en memoria y desplazar los últimos 75 arriba for (byte i = 25; i < 100; i++) { oxiBuffer[i - 25] = oxiBuffer[i]; pulsoBuffer[i - 25] = pulsoBuffer[i]; } for (byte i = 75; i < 100; i++) { while (pulsioximetro.available() == false) //Comprobar si existen nuevos datos pulsioximetro.check(); digitalWrite(lecturaLED, !digitalRead(lecturaLED)); //Parpadea el LED on-board con cada dato oxiBuffer[i] = pulsioximetro.getRed(); pulsoBuffer[i] = pulsioximetro.getIR(); pulsioximetro.siguienteMuestreo(); //Al finalizar, moverse al siguiente muestreo Serial.print(F("Oxígeno=")); Serial.print(oxiBuffer[i], DEC); Serial.print(F(", Pulso=")); Serial.print(pulsoBuffer[i], DEC); Serial.print(F(", HR=")); Serial.print(rangopulsacion, DEC); Serial.print(F(", HRvalid=")); Serial.print(validrangopulsacion, DEC); Serial.print(F(", SPO2=")); Serial.print(spo2, DEC); Serial.print(F(", SPO2 válido=")); Serial.println(SPO2valido, DEC); } //Recalcular tras los primeros muestreos maxim_heart_rate_and_oxygen_saturation(pulsoBuffer, BufferLongitud, oxiBuffer, &spo2, &SPO2valido, &rangopulsacion, &validrangopulsacion); } }
Natürlich können Sie den Code entsprechend Ihren Anforderungen ändern. Dies ist nur ein Beispiel ...