Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Detectar la frecuencia cardíaca con un fotorresistor

Componentes y suministros

Digilent OpenScope MZ
× 1
Arduino UNO
× 1
Amplificador operacional cuádruple de uso general de Texas Instruments
× 1
Comparador único de alta velocidad de Texas Instruments
× 1
Potenciómetro de precisión multivuelta - 10k ohmios (25 vueltas)
× 2
Potenciómetro de una sola vuelta de 100 k ohmios
Si puede conseguir un potenciómetro de varias vueltas, será más fácil de ajustar.
× 1
Potenciómetro de una sola vuelta - 10k ohmios
× 1
Condensador 100 µF
× 1
Condensador 100 nF
× 1
Resistencia de 10k ohmios
O un solo 20k
× 2
Resistencia de 4,75 k ohmios
× 1
Resistencia 82k ohm
También puede obtener dos de los potenciómetros de 100k y configurar uno en 82k.
× 1

Aplicaciones y servicios en línea

Arduino IDE
Digilent WaveForms Live

Acerca de este proyecto

Introducción

Este proyecto se inspiró en un video de YouTube publicado por CapitanoRed , donde el autor hizo un monitor de frecuencia cardíaca basado en fotorresistores para mostrarlo en un osciloscopio. Después de ver su video, quise replicar el proyecto y agregar un Arduino para calcular y mostrar la frecuencia cardíaca. De esa manera, podría ver la forma de onda en un osciloscopio y al mismo tiempo obtener una lectura de su frecuencia cardíaca.

Cuando el corazón se contrae y empuja la sangre por todo el cuerpo, las fluctuaciones momentáneas de la presión arterial son detectables. Ésta es la razón por la que podemos sentir nuestro pulso. En áreas del cuerpo donde la piel y la carne son lo suficientemente delgadas, estos pulsos se pueden detectar en las ligeras variaciones de luz que atraviesan. Si bien nuestros ojos no son lo suficientemente sensibles como para ver la luz que atraviesa nuestro cuerpo, sin mencionar las fluctuaciones, los fotorresistores tienen este nivel de sensibilidad.

Un fotorresistor varía su resistencia con la intensidad de la luz que incide sobre él. Aunque la variación en la resistencia puede ser bastante pequeña para cambios sutiles en la intensidad de la iluminación, se pueden amplificar usando un par de circuitos integrados de amplificadores operacionales.

Principios de funcionamiento

Los siguientes diagramas muestran el esquema del circuito, así como la placa de pruebas utilizada en este proyecto.

El fotorresistor está en un divisor de voltaje con el resistor de 20 kΩ, lo que significa que a medida que aumenta la cantidad de luz en el resistor, también aumenta el voltaje en el divisor. El primer amplificador operacional ("Amp1" en la imagen de arriba) sirve como filtro para el divisor de voltaje, eliminando el ruido de alta frecuencia de la señal. El segundo amplificador operacional ("Amp2") sirve como amplificador inversor, configurado para maximizar la señal que llega a través del filtro. El tercer amplificador operacional ("Amp3") establece el suelo virtual, que centra la señal en 2.5V. Esto asegura que los amplificadores operacionales sean capaces de proporcionar una oscilación máxima de señal de 0 V a 5 V. Después de ser filtrada y amplificada, la señal se ve así.

Para permitir que Arduino mida su frecuencia cardíaca, la señal debe pasar a través de un comparador ("Cmp" en el esquema). Un comparador es un amplificador operacional especializado que está diseñado para generar una señal alta o baja. Cuando el voltaje en la entrada positiva es mayor que la entrada negativa, el comparador genera un valor alto, y cuando el voltaje en la entrada positiva es menor que el negativo, el comparador genera un valor bajo. En su configuración más básica, un comparador sirve como detector de umbral, señalizando cuando el voltaje medido está por encima o por debajo de ese umbral. Dado que un comparador emite una salida alta (5 V) o baja (0 V), es perfecto para interactuar con los pines digitales de un Arduino.

Al observar más de cerca la imagen de la señal que proviene del amplificador operacional, está claro que hay un pulso secundario antes de que baje el voltaje (esto se llama muesca dicrótica). Además, hay una cantidad significativa de ruido en la señal. Estos dos hechos significan que la configuración básica del comparador no podrá detectar adecuadamente los pulsos. En lugar de un solo pulso cuadrado por cada latido, el comparador generará varios pulsos. Esto ocurrirá porque el ruido hará que la señal cruce el umbral varias veces en la fase ascendente y descendente y, dependiendo de dónde se establezcan los umbrales, posiblemente durante la muesca dicrótica. Esto dará como resultado que Arduino cuente muchos más pulsos de los que realmente estaban presentes.

Una señal ruidosa puede tratarse mediante histéresis. Este documento de Texas Instruments presenta una excelente discusión sobre el tema del acondicionamiento de señal con histéresis, muestra cómo el ruido de la señal afecta el rendimiento del comparador y cómo tratar estos problemas. Usé sus esquemas y ecuaciones derivadas (páginas 5 y 7, respectivamente, del documento) para diseñar el comparador asimétrico para este proyecto. La idea general es que un circuito de retroalimentación de la salida cambiará el voltaje en la entrada positiva, lo que significará que el umbral para ir de bajo a alto será diferente al umbral para ir de alto a bajo. Lo que esto significa en el contexto de los pulsos cardíacos es que el comparador se puede configurar para que se dispare en un punto en la fase ascendente y luego en un punto diferente en la fase descendente, preferiblemente después de la muesca dicrótica. De esta manera, Arduino verá un solo pulso cuadrado por cada latido, como se muestra a continuación.

Preparación del fotorresistor

Recomiendo encarecidamente usar algún tipo de cubierta transparente en el fotorresistor, como un termocontraíble transparente. Como mínimo, asegúrese de que los cables estén completamente cubiertos para evitar tocar su piel con ellos. Los voltajes generados por su cuerpo están dentro del rango que crea el fotorresistor cuando detecta su pulso, por lo que el contacto con su piel podría sesgar los resultados.

Sintonización del monitor de frecuencia cardíaca

Para el potenciómetro en el esquema (R7), use un potenciómetro de una sola vuelta y ajústelo para maximizar la ganancia del amplificador operacional sin entrar en saturación. Comience ajustando un lado del potenciómetro a aproximadamente 375Ω y conectando el filtro ("Amp1") a este lado. Esta cantidad de ganancia debería generar un pulso suficiente para que pueda verlo en WaveForms Live. Después de seguir los pasos de la siguiente sección ("Ver pulsos en WaveForms Live") y ver correctamente su pulso, puede cambiar la ganancia si es necesario. Aumente la amplitud del pulso girando el potenciómetro para reducir la resistencia del lado del filtro. Si la amplitud ya es demasiado grande y causa recorte, aumente la resistencia del lado del filtro. Lea los subtítulos de las imágenes que siguen para determinar cómo se ve una señal deseable.

Recomiendo usar potenciómetros de múltiples vueltas para las resistencias R3 y R4 con el fin de establecer con precisión los umbrales para el comparador. La resistencia R5 puede ser cualquier resistencia en el rango de 10-100 kΩ, siempre que se mida con precisión. Puede utilizar la hoja de cálculo en la sección de archivos adjuntos para determinar qué valores establecer R3 y R4 en función del valor medido de R5 y los voltajes de umbral. Los umbrales "Vl" y "Vh" deberán cambiarse según el pulso que verá a través del osciloscopio (consulte la sección titulada "Configuración de los umbrales del comparador").

Las resistencias R8 y R9 se pueden reemplazar por un potenciómetro, con el pin del medio conectado a la entrada positiva del amplificador operacional. De esta manera, la tierra virtual se puede ajustar fácilmente sin tener que encontrar resistencias coincidentes. Utilice un voltímetro o el OpenScope mientras ajusta la salida para que sea de 2,5 V.

Visualización de pulsos en WaveForms Live

Para ver los latidos de su corazón a través de WaveForms Live, deberá cambiar algunas configuraciones en el menú. De forma predeterminada, la salida se estirará y será difícil de interpretar, o la velocidad de actualización será muy lenta y será difícil ajustar el agarre de la fotorresistencia para generar pulsos claros.

Conecte el canal 2 del osciloscopio OpenScope (cable azul) a la salida de "Amp2" y asegúrese de que el cable de tierra esté conectado a tierra en la placa de pruebas. En WaveForms Live, cambie Hora a "1s" y en el Trigger presione el APAGADO botón. Para ambos Osc Ch 1 y Osc Ch2 menús configurados Desplazamiento a 2,5 V y junto a Muestras haga clic en el icono de candado y escriba "1000" en el campo que está disponible. Esto hará que la señal aparezca en una escala de tiempo que sea fácil de interpretar, pero hará que las actualizaciones ocurran con más frecuencia de lo que ocurrirían por defecto. La pantalla debería actualizarse cada 4 segundos aproximadamente. Si todavía es demasiado lento, puede aumentar las Muestras valor, pero a expensas de un fragmento más corto de la señal ("2000" capturará aproximadamente un latido a la vez).

Pulsa EJECUTAR y tome su pulso con el dedo en el fotorresistor. Deberá encontrar la mejor manera de obtener resultados consistentes. El sistema es muy sensible a los cambios de presión, por lo que debe encontrar una manera de mantener el dedo muy quieto. Encontré que el mejor lugar para tomarme el pulso era la primera articulación del dedo índice. Se necesita un poco de tiempo para entrenarse, pero eventualmente encontrará el mejor método. Si sus pulsos parecen demasiado pequeños, ajuste el potenciómetro como se indica en el primer párrafo de la sección anterior ("Ajuste del monitor de frecuencia cardíaca").

Configuración de los umbrales del comparador

Una vez que la señal sea visible en el osciloscopio, deberá establecer los umbrales en los que el comparador se activará y enviará una señal al Arduino. Obtenga una forma de onda representativa y detenga la captura para mantener la forma de onda en la pantalla. En la parte inferior de la pantalla, presione los CURSORES botón. En Tipo seleccione "Voltaje" y configure ambos CursorChannels a "Osc 2". En la pantalla aparecerán dos líneas discontinuas horizontales. Arrastra los triángulos del lado izquierdo para moverlos. Coloque una de las líneas en un punto cerca del pico del pulso y la otra en un punto debajo de la muesca dicrótica. Mire la parte inferior de la pantalla y registre los dos voltajes que se muestran entre paréntesis. Ingrese estos valores como los voltajes umbral "Vl" y "Vh" en la hoja de cálculo adjunta al final. El valor menor será "Vl" y el mayor será "Vh". Con base en estos valores y el valor de la resistencia R5 que eligió, configure los valores del potenciómetro R3 y R4 que calcula la hoja de cálculo.

Una vez configurado el comparador, debería comenzar a emitir una señal similar a la anterior a la sección "Preparación del fotorresistor".

Código Arduino

El código Arduino consta de un contador de frecuencia y un método para calcular la frecuencia cardíaca en latidos por minuto. El contador de frecuencia tiene en cuenta el ancho del pulso proveniente del comparador y rechaza cualquier cosa menor a 200 milisegundos o mayor a 800 milisegundos. Esto evitará que muestre datos falsos cuando el fotoresistor no se esté utilizando para las mediciones y el comparador puede estar alto, bajo o cambiar rápidamente entre los dos estados. El código mantiene un promedio móvil de la frecuencia cardíaca durante los últimos 15 segundos para filtrar los pulsos perdidos debido al ruido de la señal causado por movimientos accidentales.

Mejoras futuras

El principal inconveniente de este proyecto es que es difícil sostener el fotorresistor de tal manera que los pulsos tengan la misma amplitud entre usos. Dado que el sensor depende de la luz ambiental para la detección del pulso, los cambios en los niveles de luz a lo largo del día pueden producir resultados diferentes. Me di cuenta de que en los días nublados mis umbrales de comparación eran demasiado amplios, y en los días con mucha luz, la muesca dicrótica era muy pronunciada y podía causar una falsa detección de pulso. Además, incluso los cambios de luz sutiles causados ​​por el movimiento en la habitación son detectables por el fotorresistor. La cuestión de la coherencia podría abordarse de diferentes formas.

El sistema de sensores podría incluir un LED para proporcionar una luz constante. Esto se parecería a los clips de monitoreo cardíaco que se usan en los consultorios médicos o los monitores de frecuencia cardíaca que se ven en los teléfonos celulares. Intenté sostener un LED rojo contra la parte superior de mi dedo con el fotorresistor en el otro lado. Los resultados fueron alentadores, por lo que esta es probablemente una opción viable si se pudiera hacer un buen cierre.

Por el lado del software, una posible solución sería utilizar un algoritmo de rango automático en Arduino. Detectaría los pulsos y encontraría sus picos y valles. Sin embargo, esto no sería suficiente para realizar una medición de frecuencia cardíaca. Un contador de frecuencia adecuado requiere interrupciones. Sin interrupciones, el procesador de Arduino podría estar haciendo otra cosa además de verificar los pines de entrada y perder un pulso. Dado que las interrupciones solo están disponibles en pines digitales, la mejor manera de implementar el rango automático sería mediante el uso de potenciómetros digitales. El Arduino usaría el pin analógico para encontrar el rango en el que aparece el pulso, determinar cuáles deberían ser los umbrales del comparador, aplicarlos a través de los potenciómetros digitales y luego usar la señal digital del comparador para realizar el recuento de frecuencia.

Código

  • comparador calcs.xlsx
  • Contador de frecuencia cardíaca Arduino
comparador calcs.xlsx Arduino
Esta hoja de cálculo de Excel calculará los valores R3 y R4 para establecer umbrales asimétricos para el comparador. Puede cambiar la columna R5 a un valor de resistencia medido. Vl y Vh deben cambiarse a los umbrales necesarios para obtener un pulso limpio de la frecuencia cardíaca.
 Sin vista previa (solo descarga). 
Contador de frecuencia cardíaca Arduino Arduino
Este código calculará su frecuencia cardíaca en función de los pulsos que le envíe el comparador.
 #define INT0 3float Frequency; long timeCount; int counter; long pulseStart; int inputPin =3; boolean low; float freqAvg; float total; void setup () {attachInterrupt (digitalPinToInterrupt (INT0), intrusión, CAMBIO); contador =0; timeCount =0; frecuencia =0; bajo =falso; Serial.begin (9600); total =15;} bucle vacío () {timeCount =millis (); while (millis () - timeCount <5000) {frecuencia =contador; } if (frecuencia> 3) {total + =frecuencia; total - =freqAvg; freqAvg =total / 3; } showHR (); contador =0;} intrrupción nula () {if (digitalRead (3) ==0) {fallDetect (); bajo =verdadero; } más si (digitalRead (3) ==1) {widthCheck (); }} void fallDetect () {pulseStart =millis ();} void widthCheck () {long pulseEnd =millis (); if ((pulseEnd - pulseStart> 200) &&(pulseEnd - pulseStart <800) &&bajo) {contador ++; bajo =falso; }} void showHR () {Serial.print ("Frecuencia cardíaca ="); Serial.println (freqAvg * 12); } 

Esquemas

hr_monitor_tnffXlVQQV.fzz

Proceso de manufactura

  1. Desfibrilador externo
  2. Corazón artificial
  3. Válvula cardíaca artificial
  4. Máquina de electrocardiograma
  5. Marcapasos
  6. Detectar rayos con una Raspberry Pi
  7. Windows 10 IoT Core:lectura de pulsos de frecuencia cardíaca
  8. Monitor de frecuencia cardíaca remoto
  9. Detección del magnetismo del núcleo de un solo átomo
  10. Sensores integrados en la ropa Monitor de frecuencia cardíaca
  11. La salud del corazón comienza con aire comprimido sin aceite