La pulsioximetría es un método no invasivo, que permite medir el porcentaje de saturación de oxígeno de la hemoglobina (SaO2) en sangre de un paciente con utilizando un circuito de fotoeléctricos. Para esto se emplea un pulsioxímetro, que es un dispositivo que integra los emisores de luz y el sensor que mide la cantidad de luz reflejada por el dedo del paciente. La luz detectada por el sensor varía de acuerdo a la concentración de oxígeno en la sangre, la sangre oxigenada absorbe mayor cantidad de luz infrarroja, mientras que la sangre poco oxigenada absorbe mayor luz roja.
El MAX30100 es un dispositivo que integra un pulsioxímetro y un monitor de frecuencia cardiaca. Posee dos Leds: un led rojo (660nm) y un led infrarrojo (920nm), un fotodetector, óptica especializada, filtro de luz ambiental entre 50 y 60Hz, y un conversor ADC delta sigma de 16 bits y de hasta 1000 muestras por segundo. Además posee un sensor de temperatura interno para compensar los efectos de la temperatura en la medición.
El MAX30100 necesita de dos voltaje para funcionar: 1.8V y 3.3V, por lo que este módulo incluye ambos reguladores de voltaje en placa, de ese modo solo se necesita una fuente de 5V para la alimentación. Su consumo de corriente es mínimo, por lo que es ideal para aplicaciones portátiles. Puede ser utilizado en equipos de monitoreo médico, asistentes de estado físico y wearables en general.
ESPECIFICACIONES TÉCNICAS
- Voltaje de Operación: 3.3VDC
- Led rojo de 660nm
- Led infrarrojo de 920nm
- Filtro de luz entre 50 y 60Hz
- Protocolo de comunicación: I2C
- ADC delta sigma de hasta 16 bits
- Temperatura de trabajo: -40°C hasta +85°C
- Dimensiones: 14mm x 17mm
CONEXIÓN
- VIN: 3.3VDC
- SCL: I2C CLOCK
- SDA: I2C DATA
- INT: Interrupción, activo a estado bajo
- IRD: cátodo led infrarrojo (No conectar)
- RD: cátodo led rojo (No conectar)
- GND: 0V
*Es de gran importancia soldar correctamente los pines para no tener falso contacto y poder tener correctos los datos de salida.
**Nota importante: Para que pueda usarse con cualquier microcontrolador favor de seguir las especificaciones técnicas anteriormente mencionadas y realizar la conexión como se muestra a continuación.
Código de prueba
#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..");
// Initialize the PulseOximeter instance
// Failures are generally due to an improper I2C wiring, missing power supply
// or wrong target chip
if (!pox.begin()) {
Serial.println("FAILED");
for(;;);
} else {
Serial.println("SUCCESS");
}
pox.setIRLedCurrent(MAX30100_LED_CURR_7_6MA);
// Register a callback for the beat detection
pox.setOnBeatDetectedCallback(onBeatDetected);
}
void loop()
{
// Make sure to call update as fast as possible
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();
}
}
- Link de descargar de librería: https://github.com/oxullo/Arduino-MAX30100 (también se puede descargar directamente del gestor de librerías en el IDE del arduino)
Archivos de descarga disponibles: