Pulsioxímetro con Arduino

Hola
Quería hacer un proyecto para un pulsioxímetro para monitorizar durante la noche el ritmo cardiaco y el contenido de oxígeno en la sangre. Para ello me hice de un pulsioxímetro para Arduino barato como este pero con el chip MAX30102 Cuando me llegó y lo conecté vi que no funcionaba. Buscando en la web, encontré que esta placa tiene un fallo de diseño (referencia) donde vi que se podía modificar para que funcionase.
Una vez hecha la reparación utilicé use los ejemplos que encontré en la página Pulsímetro y oxímetro con Arduino y MAX30102 Las conexiones las hice tal y como indicaba (SCL->A5 y SDA->A4, +5V y GND). Una vez todo conectado, al probar el dispositivo leía, pero las lecturas no eran nada estables, con variaciones bestiales y muchas veces dejaba de leer o se iba a lecturas de 300 BPM (Beat Per Minute) que evidentemente no eran correctas y lecturas de oxígeno de 35%, mientras en la otra mano mantenía un pulsioxímetro médico con lecturas correctas de 98% y ~53BPM.
Dudando que la reparación se hubiese hecho incorrectamente, pedí otro que leí que era de mejor calidad, pero con el mismo chip este
Una vez vuelto a conectar todo, obtengo exactamente el mismo resultado que con el anterior.
He repasado mil veces los ejemplos y las conexiones, he probado otros códigos de otras páginas, incluso con la librería SparkFun MAX301x Particle Sensor Library, con los mismos resultados.
Pienso que sería mucha casualidad que ambos estuviesen estropeados y que dieran los mismos resultados. He probado incluso alimentándolos con 3,3V, he cambiado de cables varias veces, con breadboard y sin ella…
No sé qué más probar. ¿Qué estaré haciendo mal? ¿temas de ruido? ¿alguna idea?
Ubico este post en hardware porque no tengo dudas sobre el software ya que lo supongo suficientemente probado por los autores de las páginas consultadas.
No pongo el esquema porque es muy sencillo.
SCL-> pin A5
SDA->pin A4
Vcc-> pin+5V
GND-> GND
Gracias

Esto se sale de mi área de conocimiento, pero te planteo una posibilidad por software ¿existe la posibilidad de que generes, de alguna manera conocida, un valor en el sensor y midas su respuesta? en definitiva calibrarlo.

No sé si es posible o he dicho una barbaridad, pero pongamos un ejemplo afín.

Tengo un sensor de luz (cámara fotográfica) y la obligo a medir una cantidad de luz conocida, pongamos gris al 18% que en teoría es 0, en el esquema -2, -1, 0, +1, +2 del exposímetro

Ahora mido la respuesta de la cámara y veo que ofrece otro valor diferente al 0, así conozco su desviación.

¿Es posible de alguna manera generar un estímulo conocido y medible para compararlo con el resultado obtenido por el sensor?

¿Probaste el arreglo en total oscuridad? ¿Cuando presionas el dedo sobre el sensor utilizas una mascara para evitar hacer contacto con la electrónica?

Veo varios videos en youtube donde miden directamente. Me gustó la idea de PeterKanTropus de hacerlo en un ambiente oscuro solo para confirmar que tienes una lectura mas limpia

mira estos videos Youtbue Max30102

En este video el autor tuvo la precaución de armar o consiguió un alojamiento para una lectura de acuerdo a como trabaja un oxímetro.

El autor del video dice que es sensible al movimiento del dedo. Te aconsejo lo mires a ver si te ayuda, Además ver la salida ploteada tmb te dirá que esta pasando.

Hola,

Gracias por vuestras respuestas.

TonyDiana. Creo que no es problema de calibración. Como comentaba tenía uno médico en un mano y en la otra el sensor, por lo que le valor de referencia, aproximadamente, lo tenía, pero los valores leídos parecían aleatorios, con variaciones entre el 35% 100% de saturación de O2 y hasta 350BPM.

PeterKantTropus: Sí, además fue lo segundo que hice, apagar la luz para que no hubiese ninguna interferencia de luz externa, y lo tercero hacerlo directamente con la mano totalmente liada en una manta por si acaso al apagar la luz había algún remanente de la que entrase por la ventana, el led del Arduino, etc. Ya sé que es un poco exagerado, pero bueno, era ya probar por probar cosas. :slight_smile: :slight_smile: :slight_smile:
Respecto a lo de la máscara de la electrónica, he hecho lo que he visto en decenas de videos en los cuales ponen el dedo directamente sobre el sensor, pero no se me había ocurro enmascarar la electrónica. Es buena idea, la probaré.

Surbyte: Sinceramente he visto tantos videos del MAX30102 que ya no recuerdo si ese primero lo vi o no (creo que sí). El que casi seguro que no vi fue el segundo. Le echaré un vistazo más detenidamente. Respecto a lo de mover el dedo, sí que afecta, incluso se nota en las lecturas "caóticas". Me he llegado a atar el sensor con esparadrapo al dedo.

Seguiré probando a ver si alguna de estas ideas puede funcionar. Gracias a todos

Hola,

No he podido tocar este proyecto durante un tiempo debido al trabajo, pero después de recuperarlo y echarle unas horas más siguiendo vuestros consejos, sigo exactamente igual, no se me ocurre nada más.
Tal vez compre un tercero a ver si es que ambos están estropeados, pero de momento lo dejo apartado, no sin agradecer vuestra, como siempre, inestimable ayuda.

Muchas gracias

Si nos pones una tabla con valores obtenidos con diferentes estímulos tipo:

estímulo sensor 1 sensor 2
12 8 7
15 10 9

Podemos montar una gráfica y ver qué deducimos, yo puedo echarle un vistazo, estoy ya descontextualizado del problema y un poco cansando de mi propio problema (tengo uno parecido pero midiendo luz)

Igual de un pájaro resolvemos los dos tiros

Hola

La verdad es que por temas trabajo me he apartado del hobby del arduino y ya estaba pensando en otros proyectos para cuando disponga de tiempo. Pero a ver si cuando lo retome, vuelvo a montar el sensor y recopilo datos y los posteo.

La verdad es que es muy, pero que muy raro que ambos tipos de sensor de O2 en sangre trabajen de la misma mala forma e incluso siguiendo al pie de la letra los tutoriales que hay, tampoco funcionen.

Gracias a todos por vuestros consejos.

Ojo comprueba cuando puedas que efectivamente te han vendido el MAX30102. Existen algunas denuncias en Amazon y Aliexpres que en realidad mandan la versión anterior el MAX30100 y las librerías no son compatibles.
Saludos.

Gracias Gonpezzy por la respuesta.

El integrado lleva marcado el MAX30102 y como también habia leido algo sobre eso que comenta, probe tambien con las librerias del MAX30100, y evidentemente no funcionaron.
Como comenté en el primer post porbé con la libería MAX301x de Sparkfun (supestamente válidas para los 2 modelos), con el mismo exito que con las otras, lecturas caóticas.

Saludos

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.