Mostrando entradas con la etiqueta heart. Mostrar todas las entradas
Mostrando entradas con la etiqueta heart. Mostrar todas las entradas

sábado, 15 de febrero de 2020

ARDUINO-MAX30105-Opciones en tiempo real


ARDUINO

MAX30105

Opciones en tiempo real

Gambas(VB-Linux) - Visual Basic 6 - wxwidgets


Después de realizar el montaje con el  módulo MAX30105, utilicé Gambas (VB para Linux).
Al tener que hacer pruebas y pruebas, decidí crear otro programa que me permitiera cambiar muchas de las configuraciones del MAX30105 en tiempo real.
También este programa está realizado en Gambas -  Linux bajo la distribución Debian 9. Como he dicho en muchas ocasiones el que quiera lo puede traspasar a Visual Basic con poco trabajo.

Programa con muchas de las opciones de la librería SparkFun_MAX3010x.



VIDEO

PROGRAMA




Un amigo me dijo que estaba bien hacer el programa en Gambas, pero también me dijo que la mayoría tiene Windows, y era una pena no hacerlo para Windows.
Como yo soy muy bien mandado, me puse manos a la obra, y me lo programé para Windows con Visual Basic 6, es lo que tengo a mano.
Lo que si he notado es que se programa mucho mejor en Gambas que en VB6, autocompletado, busca automática de variables, etc... Me imagino que en versiones posteriores lo hayan mejorado.


Programa en Visual Basic.

PROGRAMA_VB6

  







Programa en Linux y Windows, ¿alguien distingue cual es cual?

Una vez puesto a programar, como todos los años, creo un programa multiplataforma (Linux y Windows).
Que mejor que realizar el  visualizador  de pulso con la librería wxwidgets.
Está programado utilizando la versión 3 de la librería
wxwidgets.
Primero se programa en Linux sobre Debian 9 , y luego se traslada a Windows.
Para que se compile en una plataforma u otra solo debemos modificar el archivo define.h  y  poner:
    #define YesWindows 0
o
    #define YesWindows 1
El que quiera ver mas programas realizados con esta librería que visite mi página wxseta.html.
En el fichero comprimido se incorporan la librerías *.dll necesarias para las versiones compiladas en dinámico.
La versiones compiladas en estático programa311s.exe no necesitan ninguna dll , pero su tamaño es mayor.
En Linux se necesitan librerías wx, las necesarias son:
    libwxbase3
    libwxgtk-webview3
    libwxgtk3
Estas librerías suelen estar instaladas, pero si no es así se instalan desde los repositorios.

PROGRAMA WX


Saludos.
Juan Galaz

Bibliografía:
https://github.com/sparkfun/SparkFun_MAX3010x_Sensor_Library
https://desensores.com/sensores-arduino/tipos-de-sensores-arduino/sensor-de-frecuencia-cardiaca-max30102-para-arduino/
https://create.arduino.cc/projecthub/SurtrTech/measure-heart-rate-and-spo2-with-max30102-c2b4d8?ref=tag&ref_id=health&offset=2
https://polaridad.es/max30100-sensor-latido-corazon-oximetro-pulso-i2c-wearable-salud/

martes, 28 de enero de 2020

ARDUINO - Detector de pulso sanguíneo. Latidos del corazon.

ARDUINO

Detector de pulso sanguíneo.

Latidos del corazon.


A la espera del módulo MAX30102 que hace todo el trabajo, he diseñado un detector de pulso sanguíneo mediante un led blanco y detector de luz (LDR).
Con cada pulso cardíaco la sangre se desplaza por todo el cuerpo, al ser mediante impulsos, la cantidad de sangre  en cada momento varía, y esto lo medimos en los dedos.
Como la piel no es opaca completamente, mediante una luz intensa generada por un LED, la  emitimos en una parte del dedo.
En la otra parte del dedo medimos la cantidad la cantidad de luz que traspasa a través de la piel, la medición la hacemos mediante una LDR.

Como pude observa en un osciloscopio la variación es muy pequeña, pero apreciable.
Para poder observa la señal, lo primero que se me vino a la mente fue  un arduino digitalizando las pequeñas variaciones de señal, y mostrando las variaciones en una herramienta que viene en las últimas versiones de arduino, Serial Plotter.


Como podemos observar la señal es muy pequeña.
Se puede aumentar la amplificación del arduino cambiando el voltaje de referencia de convertidor.
Si lo cambiamos a 3.3V la amplificación sera de x1.5 , y se lo ponemos a 1.1V , conseguiremos una amplificación de x4.5  .
Aún así, no conseguimos una señal buena, solo detectaríamos las pulsaciones, pero no la forma de la onda, por lo que debemos utilizar un amplificador operación LM358 para amplificar la señal.

Circuito amplificador.

Ahora ya podemos visualizar perfectamente la señal.

Señal cardíaca.

Para conseguir ondas mas perfectas, o mas o menos pronunciadas , podemos jugar con los valores de C1 y C2.
En mis múltiples pruebas he empleado valores de C1= 400uF  y C2=330nF consiguiendo ondas como estas.

Onda de pulso sanguíneo después de hacer ejercicio.

El programa me costo bastante, hice muchas pruebas, el detectar los flancos de subida fueron una pesadilla, al final me quedo algo digno.
Existen dos modos, el visual para que se represente en la herramienta de arduino Serial Plotter, y otra que solo manda al terminal serie las pulsaciones por segundo.
Para cambiar de un modo a otro debemos de comentar o descomentar  la línea que pone #define VISUAL .

Después de realizar todas las pruebas todo en una placa Breadboard, lo pasé a un circuito impreso, y lo junté con un conjunto de poliespan donde se encuentra el LED y el LDR.



Como podéis observar en el circuito he añadido un zumbador para poder oír los latidos, ademas de ver como parpadea el LED del arduino que se encuentra en el PIN 13  del arduino.


PROGRAMA

Espero que les guste este montaje, es fácil de hacer y es bastante vistoso.
En internet existen bastantes montajes como este, pero yo lo he diseñado desde cero.
También tengo previsto hacer una pinza con la impresora 3D ,  como lo tienen los hospitales.
Otra idea que he visto es colocar un diodo infrarrojo para ver el % de oxigeno en sangre.

PROGRAMA

Saludos.
Juan Galaz