Está en la página 1de 48

SENSOR DE PULSO CARDÍACO I

ÍNDICE
1 Justificación del Proyecto ...........................................................................................5

2 Introducción .................................................................................................................6

3 Objetivos .....................................................................................................................12

4 Materiales ...................................................................................................................12

5 Desarrollo ...................................................................................................................13

5.1 Diseño.................................................................................................................. 13

5.1.1 Sensor KY-039............................................................................................... 13

5.1.2 Sensor MAX30100 ........................................................................................ 16

5.1.3 Sensor MAX30102 ........................................................................................ 19

5.1.4 Sensor ARD-366 ............................................................................................ 21

5.2 Análisis matemático ............................................................................................ 23

5.2.1 Ley de Bouguer- Lambert-Beer ..................................................................... 23

5.2.2 Filtro paso bajo .............................................................................................. 24

5.3 Simulación........................................................................................................... 25

5.4 Validación experimental ..................................................................................... 28

6 Resultados...................................................................................................................31

7 Conclusiones ...............................................................................................................32

7.1 Pinedo Julia Gabriela .......................................................................................... 32

7.2 Saucedo Ayala Dariana ....................................................................................... 32

7.3 Tapia Montañez Manuel Eduardo ....................................................................... 33

8 Bibliografías ...............................................................................................................33

9 Anexos .........................................................................................................................37

9.1 Datasheet de los sensores .................................................................................... 37

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO II

9.2 Caracterización de los sensores ........................................................................... 39

9.3 Códigos en Arduino ............................................................................................ 40

9.3.1 Código KY-039 .............................................................................................. 40

9.3.2 Código MAX30100 ....................................................................................... 41

9.3.3 Código ARD-366 ........................................................................................... 43

9.4 Código en Visual Studio ..................................................................................... 45

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 5

1 Justificación del Proyecto

La instrumentación electrónica es de suma importancia en la ingeniería debido a que se


encarga de censar y procesar la información proveniente de cualquier variable o magnitud física;
culminando en la implementación de un dispositivo que monitoree estas señales o las haga
partícipes en el control de un proceso.

Otro de los campos -además de la ingeniería- en los cuales interviene la instrumentación


electrónica es la medicina. La gran mayoría de los equipos utilizados en rutinas de diagnóstico (por
ejemplo, ultrasonidos, electrocardiogramas, medidores de presión, radiografías, escáneres, etc.) son
controlados por circuitos electrónicos, por ello, requieren ser operados apropiadamente mediante
verificaciones periódicas, mantenimientos preventivos y una calibración que garantice que el
equipo médico se esté utilizando de forma confiable. Las tecnologías que forman parte de la
industria de la salud permiten una atención óptima de los pacientes, y contribuyen al bienestar de
los mismos.

En particular, uno de los temas de estudio en la medicina que en la actualidad ha


comprendido de “cierto” auge es el seguimiento de la frecuencia cardíaca. Según la OMS
(Organización Mundial de la Salud), las enfermedades cardiovasculares son la principal causa de
muerte en todo el mundo. Se calcula que en el 2015 murieron por esta causa 17.7 millones de
personas, lo que representa un 31% de las muertes registradas en el mundo. El incremento de estas
cifras ha posicionado a la salud cardiovascular como un tema necesario de tratar para el público en
general: personas con enfermedades crónicas, deportistas o inclusive quienes desean llevar un estilo
de vida más saludable.

Por ello, se adicionó a las pulseras cuantificadoras (smartfit bands) y relojes inteligentes
(smartwatch), un pequeño sensor de frecuencia cardiaca; debido a que estas pulseras son
dispositivos muy populares, que incorporan microprocesadores y realizan mediciones de velocidad
y desplazamiento (conteo de pasos) al usuario. Sin embargo, a pesar de su popularidad, muchos de
estos dispositivos cuentan con sensores cuya precisión es dudosa, lo que conduce a la necesidad de

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 6

conocer cómo funcionan y qué cantidad de la información que ofrecen es fiable, ya que la precisión
de esa medición es crítica.

Dado que los autores del presente documento cuentan con al menos una de estas pulseras,
se decidió que el estudio de la precisión de los circuitos detectores de pulso cardíaco sería de amplia
relevancia para el proyecto final de la materia de instrumentación, esto debido a que los circuitos
integrados empleados para tal propósito se apoyan en sensores ópticos (fotodiodos y/o
fototransistores), y un LED, lo que permite el cálculo de la velocidad del flujo de volumen
sanguíneo y así determinar la frecuencia cardíaca de la persona. De esta forma, se evaluarán
diversos módulos que se encuentran en el mercado con base a su precisión-precio, se realizará una
interfaz con un microcontrolador y algún software de desarrollo de entorno visual y además se
analizará el diseño de estos módulos, mediante sus componentes electrónicos (amplificadores,
filtros paso banda, resistencias de carga, etc.) y su funcionamiento.

2 Introducción

La presente investigación analiza el comportamiento de los sensores de pulso cardíaco, los


cuales son dispositivos médicos de medición no invasiva, es decir, no penetran la piel del paciente
y permiten realizar un diagnóstico con base a la información que aporte dicho dispositivo. Partiendo
de tal punto, se identifica principalmente al “pulsioxímetro”; el cual es un dispositivo que ofrece,
tanto las mediciones de manera gráfica y digital del pulso cardíaco en tiempo real, como los datos
de saturación de oxígeno en la sangre (con valores de 0 a 100).

Su modo de uso es poniéndolo como una pinza, de tal forma que se adapte a la morfología
del dedo del paciente. Acto seguido, se pulsa un botón y se muestran los datos en la pantalla digital.
(fig. 1)

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 7

Fig. 1 Pulsioxímetro Nellcor con su probeta de medición de 9 Pines.

Existe una variación del pulsioxímetro, el cual se denomina como “pulsómetro” o


“pulsímetro”, que es un aparato electrónico que mide únicamente las pulsaciones por minuto;
también se le conoce como monitor de frecuencia cardíaca. Se le encuentra en formatos distintos,
como bandas de frecuencia cardíaca elásticas, brazaletes de frecuencia cardíaca y en los relojes,
siendo estos de los más populares debido a que también trabajan con sensores ópticos, lo que les
permite medir las pulsaciones en la muñeca. (Fig. 2)

Fig. 2 Monitor de frecuencia cardíaca como reloj.

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 8

Ambos instrumentos basan su principio de funcionamiento en la fotopletismografía


(también conocida como PPG), que es un método que permite conocer el volumen de un cuerpo,
estableciendo la cantidad de luz que refleja. Esta técnica óptica es ampliamente manejada por
especialistas para la monitorización periférica de la frecuencia cardíaca.

El principio físico de la fotopletismografía se basa en la capacidad de la gama infrarroja de


la energía lumínica, al incidir y reflejarse en el flujo sanguíneo de las arterias y venas subcutáneas.
La fuente emisora de esta energía lumínica de infrarrojos es un diodo emisor de luz y el receptor,
un fototransistor o fotodiodo. La absorción de esta luz se debe a que, cada ciclo cardíaco, el corazón
bombea sangre a la periferia (corporal). Este pulso de presión -a pesar de presentar cierto
amortiguamiento por el tiempo al que llega a la piel- dilata las arterias y arteriolas en el tejido
subcutáneo. Dicho cambio de volumen se detecta en la piel por medio de la luz infrarroja que emite
el diodo LED; posteriormente, se mide la cantidad de luz transmitida o reflejada en el fototransistor
o foto diodo.

En los sensores y sondas correspondientes a la fotopletismografía y pulsioximetría, la


disposición de emisores y detectores con respecto al medio u órgano analizado corresponde a dos
configuraciones: transmisión o reflexión. Los sensores por reflexión pueden ser colocados sobre
cualquier superficie vascular pulsátil, pero su señal es débil. Los sensores por transmisión deben
ser colocados en determinadas partes del cuerpo (por ejemplo, dedos, lóbulo de la oreja, etc.), de
modo que puedan acomodarse emisores y detectores frente a frente. A su vez, la señal de las
variaciones se puede detectar por diferentes técnicas de captura: por trans-iluminado, reflexión de
luz y fibra óptica. Dichas técnicas se describen en la Figura 3.

Fig. 3 Técnicas de captura en fotopletismografía.

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 9

La señal obtenida por cualquiera de las técnicas anteriormente mencionadas se relaciona


directamente con la frecuencia cardíaca, donde cada periodo de la señal corresponde a una
pulsación del corazón. La señal presentará dos picos por cada periodo: el pico mayor representará
la presión sistólica (ventrículos del corazón se contraen) y el segundo pico representará el inicio de
la presión diastólica (ventrículos del corazón se relajan), cuyo valor es el mínimo de la curva. Los
valores de dichos picos indicarán la información sobre el ritmo cardíaco de cada paciente. (Fig. 4)

Fig. 4 Representación de la señal por fotopletismografía.

En todo el cuerpo humano circula sangre que es bombeada por el corazón, lo que produce
un flujo de sangre oxigenada y de sangre desoxigenada; ambas variaciones hacen que en las manos
se produzca el paso de más o menos cantidad de luz, lo cual da la oportunidad de captar dichos
datos. En la medición de variaciones de volumen, el pulso en el extremo de un dedo ofrece la
manera más sencilla y cómoda de detectar y medir la frecuencia o el ritmo cardíaco por medio de
un sensor.

Como se mencionó anteriormente, el sensor de pulso trabajará mediante otros dos sensores,
los cuales son los fototransistores y fotodiodos. Estos transductores electroópticos están
estrechamente relacionados, pues convierten la luz incidente en corriente eléctrica, para
aplicaciones tales como la detección de posición/presencia, medición de intensidad de luz y
detección de pulso óptico de alta velocidad.

1. Sensor fototransistor.

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 10

• Definición de fototransistor:

“El fototransistor es un dispositivo semiconductor que puede detectar los niveles de luz y
alterar la corriente que fluye entre el emisor y el colector de acuerdo con el nivel de luz que recibe.”
(Fig. 5)

Fig. 5 Símbolo de un fototransistor.

• Principio de funcionamiento de un fototransistor:

La salida de un fototransistor se toma de su terminal emisor; de ahí que los rayos de luz
lleguen a la región de la base.

Un fototransistor puede ser un dispositivo de tres o dos terminales según nuestro requisito.
La base del fototransistor se utiliza únicamente con fines de polarización. Para el transistor NPN,
la base se hace + Ve con respecto al terminal emisor, y en un transistor PNP el terminal colector se
hace –Ve con respecto al terminal emisor.

Al principio, el rayo de luz entra en la región de la base de un fototransistor y genera pares


de huecos de electrones. Este proceso ocurre principalmente bajo polarización inversa. La región
activa de este tipo de transistor se utiliza para generar corriente. La región de corte y saturación se
usa para operar el transistor particular como un interruptor.

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 11

Un fototransistor y su funcionamiento depende de muchos factores internos y externos,


como:

✓ La intensidad de la fotocorriente será mayor con una mayor ganancia de corriente


CC.
✓ La sensibilidad luminosa viene dada por la relación entre las corrientes
fotoelectrónicas y los flujos luminosos entrantes.
✓ Si aumenta la longitud de onda, la frecuencia disminuirá.
✓ Si el área de la unión colector-base se ensancha, la amplitud de la fotocorriente
engendrada por el fototransistor será mayor.

2. Sensor fotodiodo.

• Definición de fotodiodo:

“Diodo semiconductor en el cual los rayos luminosos a los que se encuentra sometido
provocan variaciones de la corriente eléctrica.” (Fig. 6)

Fig. 6 Símbolo del fotodiodo.

• Funcionamiento de un sensor fotodiodo:

Para un funcionamiento correcto, el fotodiodo es polarizado inversamente permitiendo de


esta manera el flujo de electrones o el flujo de la corriente en sentido inverso. Estos componentes
tienen un lente que permite concentrar la luz que incide en ellos, por ello, cuando la luz que incide
es de suficiente energía puede excitar un electrón generando movimiento y permitiendo la creación

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 12

de huecos con carga positiva. Por lo tanto, entre mayor sea la intensidad de luz que incida en el
fotodiodo mayor será la corriente que fluye.

3 Objetivos

✓ Analizar el funcionamiento de los sensores ópticos: fototransistores y fotodiodos.


✓ Comparar sus características fotovoltaico, fotoconductor y su nivel de precisión.
✓ Observar la variación en la medición de diversos sensores de pulso cardíaco
comerciales y compararlos con uno real o algún smartwatch.

4 Materiales

Los dispositivos, programas y materiales utilizados en el desarrollo de la presente


investigación se muestran en la siguiente tabla (Tabla 1).

Tabla 1 Recursos utilizados para el desarrollo del presente proyecto.

EQUIPO MATERIALES
✓ Computadora. ✓ LED (Color Rojo).
✓ Arduino UNO. ✓ Resistencia 220 Ω.
✓ Cautín. ✓ Potenciómetro 10 kΩ.

PROGRAMAS ✓ LCD 16x2.


✓ Alambre estañado.
✓ Arduino IDE.
✓ Jumpers.
✓ Visual Studio 2022.
✓ Soldadura de estaño.
✓ Módulo ARD-366.
✓ Módulo MAX30100 y MAX30102.
✓ Módulo KY-039.

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 13

5 Desarrollo
5.1 Diseño
5.1.1 Sensor KY-039

El detector de ritmo cardíaco KY-039 (precio: $29.00 pesos mexicanos) está diseñado para
detectar el pulso cuando se coloca el dedo índice (de preferencia), entre el LED infrarrojo y el
fototransistor. El pulso se representa en el pin de señal de salida analógica. Como se mencionó
anteriormente, el fototransistor es utilizado para obtener el flujo emitido, cuando la presión
sanguínea pulsa -mediante el dedo- y percibe un ligero cambio en la resistencia del fototransistor.
(Fig. 7)

Fig. 7 Pinout del sensor KY-039.

*Ver datasheet en la sección Anexos.


*Ver caracterizacióm en la sección Anexos.

Su diagrama esquemático (o diagrama de conexión interno del sensor) se presenta en la


siguiente Figura (Fig. 8):

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 14

Fig. 8 Diagrama de conexión del sensor KY-039.

Se observa que es un circuito simple, el cual se compone de 2 resistencias (de 10 kΩ y 330


Ω, respectivamente), un fototransistor (receptor) y un LED infrarrojo (emisor). Debido a que es un
circuito relativamente sencillo, se planteó realizar la conexión mediante el microcontrolador
Arduino, adicionando tres monitoreos: uno mediante la conexión de un LCD, el segundo con una
aplicación en Visual Studio y el tercero con un LED indicador, lo que se presenta en la siguiente
figura (Fig. 9):

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 15

Fig. 9 Montaje del sensor, LED y LCD.

Dicho sensor suele realizar lecturas imprecisas debido a que la luz ambiente añade cierto
“ruido” al sensor, culminando en información variable que no concuerda con la que se obtendría
dado un pulso cardiaco normal, por lo que se realizó una calibración por software en Arduino,
añadiendo un filtro paso baja para filtrar el valor obtenido (los cálculos se presentan en la sección
5.2. “Análisis matemático).

La interfaz de la aplicación que realizará el monitoreo por medio de la computadora se


presenta en la Figura 10. El código desarrollado se encuentra adjunto bajo la sección “Anexos”.

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 16

Fig. 10 Interfaz con Visual Studio.

5.1.2 Sensor MAX30100

El sensor MAX30100 (precio: $55 pesos mexicanos) es un circuito integrado de sensor


pulsioxímetro y monitor de frecuencia cardíaca. Es un sensor óptico que obtiene sus lecturas
emitiendo dos longitudes de onda de luz de dos LED, uno rojo (fotodiodo) y uno infrarrojo, y mide
la absorbancia de la sangre pulsante a través de un fotodetector. (Fig. 11)

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 17

Fig. 11 Pinout del sensor MAX30100.

*Ver datasheet en la sección Anexos.


*Ver caracterizacióm en la sección Anexos.

Su diagrama esquemático (o diagrama de conexión interno del sensor) se presenta en la


siguiente Figura (Fig. 12):

Fig. 12 Diagrama de conexión del sensor MAX30100.

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 18

Como se observa en la figura, el sensor se compone de 3 resistencias pull-up de 4.7 kΩ,


además de 3 capacitores de 10 µF y 0.1 µF y un capacitor de 1 µF. Otros componentes importantes
del sensor son los reguladores U2 y U3 (de 3.3 V y 1.8 V respectivamente), los cuales utilizan un
transistor controlado por un amplificador inversor para producir un voltaje específico de salida que
se encuentre estable a pesar de las variaciones de carga en la corriente y voltaje de entrada.

Como el sensor anterior, este dispositivo integra dos LEDs, uno emitiendo una luz roja y el
otro una luz infrarroja. Además de incluir una conexión (SDA y SCL) que permite la comunicación
con el puerto I2C de comunicación serial al microcontrolador, y un convertidor ADC (analógico a
digital) de 16- bits.

A pesar de ser un módulo bastante completo, este presenta un error en su diseño: una de las
resistencias pull-up de 4.7 kΩ se encuentra conectada a U3 (regulador de voltaje). El sensor
MAX30100 puede alimentarse, tanto con 3.3 V como por 5 V, y con esta conexión causa que, si el
sensor se conecta a los 5 V de Arduino, no se va a detectar en el bus del puerto I2C porque los
niveles lógicos serán muy bajos. Aún siendo alimentado por los 3.3 V el puerto I2C trabajaría muy
inestable. Una de las soluciones es cortar la unión de la resistencia con la zona de alimentación de
1.8 V, con el fin de que se lleve a cabo la alimentación correctamente. (Fig. 13)

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 19

Fig. 13 Rediseño del circuito del sensor MAX30100.

Sin embargo, este cambio no es lo único que se requiere para lograr la estabilidad en el
sensor, ya que uno de los reguladores que se tienen en realidad está actuando con un voltaje de
salida de 2.8 V, que al inicio es un voltaje al cual trabaja normalmente el puerto I2C, sin embargo,
para esta placa el voltaje es mucho mayor al rango permisible del sensor. A pesar del corte, se
percibe con el multímetro aún un voltaje mayor a 1.8 V. El regulador recomendado para tal sensor
es el XC620P182MR. Ideal para regular voltajes de 1.2 V a 5 V y cuya tensión de salida se
encuentra alrededor de los 1.8 V según las características del fabricante. Dicho aditamento sería
necesario de aplicar mediante micro soldadura, por lo que se procede a utilizar otro sensor de la
misma familia y con características electrónicas similares: MAX30102.

5.1.3 Sensor MAX30102

El sensor MAX30102 (precio: $64 pesos mexicanos) es un sensor que es parte de la familia
del MAX3010X. Tal como el sensor MAX30100, este dispositivo es capaz de obtener la

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 20

oxigenación y frecuencia cardíaca de una persona, a través de un LED de espectro rojo (fotodiodo)
y uno de infrarrojo. (Fig. 14)

Fig. 14 Pinout del sensor MAX30102.

*Ver datasheet en la sección Anexos.


*Ver caracterizacióm en la sección Anexos.

Su diagrama esquemático (o diagrama de conexión interno del sensor) se presenta en la


siguiente Figura (Fig. 15):

Fig. 15 Diagrama de conexión del sensor MAX30102.

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 21

Se observa que dicho diagrama es similar al que se emplea para el MAX30100, sin
embargo, este sensor utiliza también un módulo bidireccional, para conversión de nivel, siendo
alimentado por los 3.3 V y 1.8 V, respectivamente. Dicho convertidor lógico IIC permite que las
mediciones sean más precisas y el sensor tenga una buena estabilidad, eliminando los errores de
diseño presentados en su predecesor 30100.

La conexión a la LCD (dispositivo que realizará el monitoreo por medio de la programación


en Arduino del sensor) se presenta en la Figura 16.

Fig. 16 Montaje del sensor y LCD.

5.1.4 Sensor ARD-366

El sensor ARD-366 (precio: $266 pesos mexicanos) es también un sensor de pulso como
los anteriormente analizados, con la diferencia que el circuito integrado que posee es específico

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 22

para su conexión con microcontroladores, es decir combina un sensor óptico de pulso cardíaco
con elementos que permiten la amplificación y cancelación de ruido de la señal leída. (Fig. 17)

Fig. 17 Pinout del sensor ARD-366.

Como se observa en la imagen, el sensor cuenta con una salida analógica (S) y una entrada
positiva y negativa que se conectan directamente al microcontrolador. A su vez, utiliza diversos
componentes, mismos que se aprecian en su diagrama esquemático (Figura 18):

Fig. 18 Diagrama de conexión del sensor ARD-366.

El sensor se compone de 6 resistencias: 1 de 470 Ω, 1 de 12 kΩ, 2 de 100 kΩ, 1 de 10 kΩ


y 1 de 3.3 MΩ. A su vez, integra 5 capacitores, de los cuales 3 son de 4.7 µF y 2 de 2.2 µF. Integra

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 23

además un fotodiodo y un Amplificador Operacional de serie MCP6001, que es un amplificador


no inversor y que trabaja a un voltaje de 1.8 V a 6.0 V.

La conexión a la LCD (dispositivo que realizará el monitoreo por medio de la programación


en Arduino del sensor) se presenta en la Figura 19.

Fig. 19 Montaje del sensor y LCD.

5.2 Análisis matemático


5.2.1 Ley de Bouguer- Lambert-Beer

En óptica, esta ley es una relación empírica que relaciona la absorción de luz con las
propiedades del material atravesado. Para determinar las pulsaciones y el grado de oxigenación, se
realizan mediciones en al menos dos longitudes de onda específicas, utilizándose como emisores
diodos LED o diodos láser. En Oximetría, la saturación de oxígeno se deriva tras obtener el valor

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 24

pico a pico de la componente pulsátil (EAC) de los pulsos por minuto con respecto a la
correspondiente componente constante (EDC) de cada una de las dos longitudes de onda especifica
(λ1 y λ2). Estas ecuaciones teóricas asumen la validez de la Ley de Bouguer-Lambert-Beer, que
obtiene la relación entre la saturación de oxigeno (SO2) y las propiedades ópticas de un lecho
vascular pulsátil como (ec. 1):

ec. 1 Saturación de oxígeno.

La atenuación de la radiación por un lecho vascular pulsátil es debida a la absorción de la


RHb (factor de hemoglobina) y la HbO2 (oxihemoglobina) sanguíneas, pero las dispersiones
múltiples en las estructuras tisulares y los glóbulos rojos también contribuyen a esta atenuación.
En una situación real, dicha ecuación es una aproximación.

5.2.2 Filtro paso bajo

Como se mencionó anteriormente, para el sensor 1 (KY-039), se requiere un


acondicionamiento, esto debido a que los datos que se reciben del sensor son variables y no
concuerdan precisamente con las frecuencias cardíacas medidas. Para poder realizar el
acondicionamiento de datos, se utilizará un filtro paso bajo llamado también EMA o Filtro
Exponencial, con el cual se obtendrá un valor filtrado a partir de una medición previamente tomada
(ec. 2):

ec. 2 Filtro paso bajo.

Donde: An es el valor filtrado, α es un factor entre 0 y 1, M es el valor muestreado de la


señal a filtrar y An-1 el valor filtrado anterior.

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 25

El factor α es quien indica la frecuencia de corte de la señal. Esto depende del tiempo de
muestreo del sistema, el cual podría contar con variaciones entre periodos. Un valor Alpha = 1
indica que es una señal sin filtrar, pues se depende de la medición de la señal anterior; mientras que
un valor Alpha = 0 es la salida de un valor filtrado igual a cero, ya que se depende de la medición
actualizada para aportar el nuevo filtrado.

Disminuir el valor de Alpha aumentará el tiempo de respuesta en el sistema, mientras que


aumentarlo suavizará la señal, aunque esto podría provocar que clasifique como “ruido” parte de
las variaciones normales de la señal. Convencionalmente, dicho valor oscila en un rango de 0.6 y
0.75, para efectos de la presente práctica se utilizó Alpha como 0.75, para que el valor filtrado se
conforme del 75% del valor medido anteriormente y 25% del valor leído.

5.3 Simulación

El primer sensor (KY-039) se simuló en el software TinkerCad, siendo este de gran ayuda
para observar las conexiones Arduino-Sensor y Arduino-LCD. Dicho programa no contaba con el
módulo específico a utilizar, sin embargo, por medio de la intervención de un sensor con salida
analógica se pudo llevar a cabo la experimentación del mismo. (Fig. 20)

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 26

Fig. 20 Simulación en TinkerCad del sensor KY-039.

El segundo sensor (MAX30102) se implementó en la plataforma Fritzing, cuya simulación


se observa en la siguiente imagen (Fig. 21).

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 27

Fig. 21 Simulación en Fritzing del sensor MAX30102.

Por último, el tercer sensor (ARD-366) se simuló en Proteus, esto debido a que tal programa
cuenta con librerías de Aruuino, entre las cuales existe la posibilidad de trabajar con dicho sensor.
(Fig. 22)

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 28

Fig. 22 Simulación en Proteus del sensor ARD-366.

5.4 Validación experimental

La validación experimental del presente proyecto se llevó a cabo considerando los


siguientes factores:

I. Tabla de valores de referencia de las pulsaciones en reposo por minuto para


hombre y mujer. Esto para comprobar que los valores obtenidos mediante la
medición del sensor fueran cercanos a los valores de referencia que se esperaría
obtener en un instrumento profesional de medición. (Tabla 2)

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 29

Tabla 2 Valores de referencia.

II. Comparación con un dispositivo real. Los autores de la presente investigación


decidieron hacer una comparativa de los sensores con los que cada uno contaba
mediante dispositivos profesionales de medición, utilizando los tres siguientes
(Tabla 3):

a) Pulsioxímetro con Sensor Nellcor N-2000. Este sistema es utilizado para


monitorear constantemente la saturación de oxígeno arterial, así como la
cantidad de pulso de los pacientes en una cirugía. El rango de saturación
que mide va de los 0-100% SaO2, mientras que la frecuencia del pulso se
tiene en un rango de 20-250 BPM.
b) Apple Watch. Este dispositivo emplea un sensor de oxígeno en la sangre,
un sensor eléctrico de frecuencia cardiaca y un sensor óptico de frecuencia

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 30

cardíaca de tercera generación. No se encuentran datos de rangos de medida


de tal dispositivo.
c) Pulsioxímetro comercial. Son dispositivos pequeños (de dedo) capaces de
realizar un muestreo y una monitorización continua de SpO2 y la frecuencia
del pulso.

Tabla 3 Comparativa de los tres sensores funcionales.

NOMBRE DEL LECTURA DEL DISPOSITIVO


LECTURA DEL SENSOR
SENSOR ESPECIALIZADO

KY-039

MAX30102

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 31

ARD-366

6 Resultados

Después de realizar las mediciones de pulso correspondientes con los 3 sensores


anteriormente descritos, se determinó que con base a su precisión/exactitud y el costo de cada uno
de ellos, el mejor sensor fue el MAX30102, esto debido a su gran estabilidad brindada por los
reguladores de voltaje que tiene integrados. Dicho sensor no necesitó de algún ajuste por software
en su calibración, además, la técnica que utiliza para obtener las mediciones es de reflexión de luz,
probablemente esta técnica culmine en la obtención de una señal débil, pero para este sensor no se
afectó su rendimiento a pesar de las condiciones adversas como el ruido, la luz ambiental, etc.

En segundo lugar se posiciona el KY-039, que es el sensor más barato de los tres en
cuestión, sin embargo, se debe realizar un filtrado específico para que la información sea retenida
adecuadamente. Su técnica de medición es de trans-iluminado, lo que podría aumentar su precisión
colocándolo en el lóbulo de la oreja o simplemente otra parte del cuerpo que se mantenga firme al
sensor; pero no oponga algún esfuerzo de más que pueda dañarlo.

Por último, se tiene el sensor ARD-366, el más caro de los dos antes mencionados. El sensor
arrojaba una medición correcta y bastante acertada con la mostrada por el pulsioxímetro, sin
embargo, es un sensor que se ve ampliamente afectado por el ruido (a pesar de que posee
componentes que lo aíslan) y puede llegar a arrojar valores bastante imprecisos. Se piensa que esto

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 32

depende del fabricante que ofrezca dicho sensor, ya que en la tienda de electrónicos Steren se
comercializa una versión con componentes de menor calidad al original.

7 Conclusiones
7.1 Pinedo Julia Gabriela

Se concluye que el sensor de pulso cardíaco es uno de los sensores en la medicina más
importantes que se han logrado llevar a cabo, esto debido a los principios de sensores ópticos (y
fotopletismografía) que intervienen en su funcionamiento. Además, es una técnica de medición no
invasiva; que aprovecha una ley de la óptica conocida como la ley de Bourguer-Lambert-Beer para
conocer el volumen de la sangre según la cantidad de luz que refleja. Dichos fundamentos de igual
manera se correlacionan con el funcionamiento de los fotodiodos y fototransistores, sensores que
se analizaron a lo largo del curso de Instrumentación Electrónica.

En el presente proyecto, se tuvo la oportunidad de manejar 2 sensores pulsómetros, los


cuales fueron el sensor KY-039 y el MAX30100. Para el primer sensor, se observa que, a pesar de
ser un circuito simple, tuvo una muy buena precisión después de ser mejorado mediante un
acondicionamiento por software. Sin embargo, el segundo sensor presentó una serie de errores en
su diseño, lo cual no hizo posible su implementación física, ya que requería de un cambio de
regulador y, por consiguiente, micro soldadura. A pesar de las dificultades, dicho sensor pudo
utilizarse al menos como una referencia para el análisis de un circuito físicamente.

El objetivo de la presente investigación se cumplió adecuadamente, debido a que se analizó


el comportamiento de los sensores ópticos mediante ecuaciones matemáticas, además se
compararon las características de cada uno de estos sensores y se comparó con dispositivos
especializados en la toma no invasiva de mediciones de pulso.

7.2 Saucedo Ayala Dariana

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 33

El objetivo de esta práctica fue desarrollar un pulsómetro casero con el sensor MAX30102
para medir la frecuencia cardiaca, la principal función de este proyecto es mostrar la frecuencia
cardiaca a través de un LCD 16x2 y el monitor serie y el proceso desde las conexiones hasta la
programación en Arduino, pues en la actualidad hay pocos trabajos que mencionen el uso del sensor
max30102 y su eficiencia al momento de medir la frecuencia cardiaca.

Se llegó a la conclusión de que el sensor MAX30102, tiene un nivel de error muy bajo, ya
que se comparó con un Apple Watch y daban valores muy parecidos o iguales.

7.3 Tapia Montañez Manuel Eduardo

En esta práctica desarrollamos el funcionamiento de un sensor de pulso cardiaco ARD-366


para obtener las pulsaciones cardiacas por minuto mostradas en un LCD, tuvimos que desarrollar
el código de Arduino para que nos midiera las pulsaciones con una librería especial para el sensor
ARD-366 y además nos diera los resultados en el LCD, esto fue para compararlo con un sensor de
reloj inteligente y un pulso de oxímetro, los resultados que obtuvimos fueron casi iguales así que
hay muy poco nivel de error en las mediciones del ARD-366.

8 Bibliografías

A. Aguirre, C. (2021). Detecta tu Ritmo Cardiaco a través del KY-039. UNIT


Electronics. Recuperado mayo de 2022, de
https://blog.uelectronics.com/tarjetas-desarrollo/detecta-tu-ritmo-cardiaco-
a-traves-del-ky-039/
B. Bhattacharya, S. (s. f.). ¿Qué es Photo Transistor? LAMBDA GEEKS.
Recuperado mayo de 2022, de https://es.lambdageeks.com/photo-
transistor/

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 34

C. CARACTERÍSTICAS DEL FOTODIODO: FUNCIONAMIENTO. (2020).


Nota Tecnológica. Recuperado mayo de 2022, de
https://notatecnologica.com/dispositivos/fotodiodo/
D. Cecarini, S. (2021). La instrumentación electrónica y la medicina moderna.
Saludiario. Recuperado mayo de 2022, de https://www.saludiario.com/la-
instrumentacion-electronica-y-la-medicina-moderna-2/
E. Chávez, A., González, A., & García, P. M. (2021). Monitor de pulsos
cardíacos. Revista de la Alta Tecnología y Sociedad, 13(1), 131–133.
https://tatic1.squarespace.com/static/55564587e4b0d1d3fb1eda6b/
F. Fotodiodo. (2019). Electrotec. Recuperado mayo de 2022, de
https://electrotec.pe/blog/fotodiodo
G. Fototransistores: ¿Qué son y cómo funcionan? (2020). Electrónica Fácil
Top. Recuperado mayo de 2022, de
https://www.electronicafacil.top/transistor/fototransistores-que-son-y-
como-funcionan/
H. Ha, J. (2018). From KY-039 To Heart Rate. Arduino Project Hub.
Recuperado mayo de 2022, de
https://create.arduino.cc/projecthub/Johan_Ha/from-ky-039-to-heart-rate-
0abfca
I. INSTRUMENTACIÓN ELECTRÓNICA. (2017). Instrumentación
Electrónica I. Recuperado mayo de 2022, de
https://instrumentacionelectronicai.wordpress.com/tag/instrumentacion/
J. La Instrumentación Electrónica y la Medicina Moderna. (2015). ESPOL.
Recuperado mayo de 2022, de
https://www.fiec.espol.edu.ec/es/instrumelectro-electmed
K. Interfacing MAX30100 Pulse Oximeter and Heart Rate Sensor with
Arduino. (2022). Last Minute Engineers. Recuperado mayo de 2022, de
https://lastminuteengineers.com/max30100-pulse-oximeter-heart-rate-
sensor-arduino-tutorial/
L. Jácome, N. (2020). ¿Cómo controla exactamente un smartwatch la salud
de su corazón? Saludsa. Recuperado mayo de 2022, de

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 35

https://blog.saludsa.com/como-controla-un-smartwatch-la-salud-
cardiovascular/
M. Ley de Beer-Lambert. (2014). Química.es. Recuperado mayo de 2022, de
https://www.quimica.es/enciclopedia/Ley_de_Beer-Lambert.html
N. Llamas, L. (2017). Filtro paso bajo y paso alto exponencial (EMA) en
Arduino. Luis Llamas - Ingeniería, informática y diseño. Recuperado mayo
de 2022, de https://www.luisllamas.es/arduino-paso-bajo-exponencial/
O. López, S. M., Dotor, M. L., & Silveira, J. P. (2009). Fotopletismografía por
reflexión con LEDs infrarrojos para evaluar órganos y tejidos intra-
abdominales: estudio inicial en cerdos. ÓPTICA PURA Y APLICADA, 23–
28. https://www.sedoptica.es/Menu_Volumenes/Pdfs/324.pdf
P. MAX30100 Sensor Datasheet pdf - Heart-Rate Sensor. (2017). Datasheets
PDF. Recuperado 2022, de
https://datasheetspdf.com/pdf/950845/MaximIntegrated/MAX30100/1
Q. OMS. (2021, 11 junio). Enfermedad pulmonar obstructiva crónica (EPOC).
Organización Mundial de la Salud. Recuperado 2022, de
https://www.who.int/es/news-room/fact-sheets/detail/cardiovascular-
diseases-(cvds)
R. Oxímetro: qué es, cómo funciona y para qué sirve. (2021). ABC.
Recuperado mayo de 2022, de https://www.abc.es/sociedad/abci-oximetro-
que-es-como-funciona-para-que-sirve-nsv-202101251252_noticia.html
S. Pakganern, U. (2019). Arduino project: KY-039 and LCD to monitor pulse
rate. Steemit. Recuperado mayo de 2022, de https://steemit.com/utopian-
io/@pakganern/arduino-project-ky-039-and-lcd-to-monitor-pulse-rate
T. Pastor, J. (2016). Cómo de exactos son los medidores de frecuencia
cardiaca de los wearables. Xataka. Recuperado mayo de 2022, de
https://www.xataka.com/wearables/como-de-exactos-son-los-medidores-
de-frecuencia-cardiaca-de-los-wearables
U. Pulse Sensor Arduino. (2020). theoryCIRCUIT - Do It Yourself Electronics
Projects. Recuperado mayo de 2022, de https://theorycircuit.com/pulse-
sensor-arduino/

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 36

V. Pulse Sensor Getting Started Guide. (2015). Generation Robots.


Recuperado mayo de 2022, de
https://www.generationrobots.com/media/DetecteurDePoulsAmplifie/Puls
eSensorAmpedGettingStartedGuide.pdf
W. Pulsioxímetro MAX30100 [descontinuado]. (2019). Naylamp Mechatronics
- Perú. Recuperado mayo de 2022, de
https://naylampmechatronics.com/biomedico/328-pulsioximetro-
max30100.html
X. ¿Qué Es Y Para Qué Sirve La Fotopletismografía? (2022).
PulsómetroSinBanda. Recuperado mayo de 2022, de
https://www.pulsometrosinbanda.com/que-es-para-que-sirve-la-
fotopletismografia/
Y. Quonty. (2017). Pulseras de Actividad ¿Realmente son útiles? Blog de
Informática, Electrónica, Gaming y Tecnología | Quonty. Recuperado mayo
de 2022, de https://www.quonty.com/blog/pulseras-de-actividad-
realmente-son-utiles/
Z. La salud cardiovascular en deportistas. (2021). Neosalus. Recuperado
mayo de 2022, de https://neosalus.com/la-salud-cardiovascular-deportistas/
AA. SENSOR MAX30100 FRECUENCIA CARDIACA Y OXIMETRO –
Grupo Electrostore. (2017). Grupo Electro Store. Recuperado 2022, de
https://grupoelectrostore.com/shop/sensores/senales-bioelectricas/sensor-
max30100-frecuencia-cardiaca-y-oximetro/
BB. The Geek Pub. (2019). Sensor Wiki: KY-039 Heartbeat Sensor.
Recuperado mayo de 2022, de https://www.thegeekpub.com/wiki/sensor-
wiki-ky-039-heartbeat-sensor/
CC. World Famous Electronics llc. (2018). A Library of Examples! Pulse
Sensor.Com. Recuperado mayo de 2022, de
https://pulsesensor.com/pages/installing-our-playground-for-pulsesensor-
arduino
DD. Yatsenkov, V. (2018). Pulse Oximeter MAX30100/MAX30102 – how
to fix wrong board. WordPress.Com. Recuperado mayo de 2022, de

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 37

https://reedpaper.wordpress.com/2018/08/22/pulse-oximeter-max30100-
max30102-how-to-fix-wrong-
board/?fbclid=IwAR1bo1pGASGuWAr06dborc8UEdtel7d4vDDDqfab0_
gxHO7hikLwk7EX6BM

9 Anexos
9.1 Datasheet de los sensores

• Datasheet para el sensor KY-039 (Fig. 23):

Fig. 23 Datasheet KY-039.

• Datasheet para el sensor MAX30100 (Fig. 24):

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 38

Fig. 24 Datasheet MAX30100.

• Datasheet para el sensor MAX30102 (Fig. 25):

Fig. 25 Datasheet MAX30102.

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 39

• Datasheet para el sensor ARD-366 (Fig. 26):

Fig. 26 Datasheet ARD-366.

9.2 Caracterización de los sensores

En la siguiente Tabla (Tabla 4) se observa la caracterización de los cuatro sensores


analizados en el presente documento.

Tabla 4 Caracterización de los sensores anteriormente analizados.

Características KY-039 MAX30100 MAX30102 ARD-366

BPM (Pulsos por BPM (Pulsos por BPM (Pulsos por BPM (Pulsos por
Variable medida
minuto). minuto) y SPO2. minuto) y SPO2. minuto).
Longitud de Longitud de onda Longitud de Longitud de onda
Señal de entrada
onda (nm). (nm). onda (nm). (nm).
Señal de salida Análogo a BPM. Análogo a BPM. Análogo a BPM. Análogo a BPM.
Rango 20-200 BPM. 30-240 BPM. 30-240 BPM. 20-235 BPM.
Alcance 180 BPM. 210 BPM. 210 BPM. 215 BPM.

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 40

Elevación/Supresión
20 BPM 30 BPM 30 BPM 20 BPM
de cero
Resolución 1 BPM 1 BPM 1 BPM 1 BPM

9.3 Códigos en Arduino


9.3.1 Código KY-039

/*---------SENSOR DE PULSO CON ARDUINO----------


-------------MÓDULO: Sensor KY-039--------------
--PROYECTO FINAL INSTRUMENTACIÓN ELECTRÓNICA--*/

/*

Conexiones:
- 5V = 5V
- GND = GND
- S (PIN SENSOR) = A0 (ANALOG PIN 0)

*/

#include <LiquidCrystal.h>
LiquidCrystal lcd (7, 6, 5, 4, 3, 2);
float factor = 0.75; // coeficiente para filtro pasa bajos
float maximo = 0.0; // para almacenar valor maximo
int minimoEntreLatidos = 300; // 300 mseg. de tiempo minimo entre latidos
float valorAnterior = 500; // para almacenar valor previo
int latidos = 0;

void setup() {
// put your setup code here, to run once:

pinMode(13, OUTPUT); // LED incorporado en pin 13 como salida


Serial.begin(9600); // inicializacion de monitor serie a 9600 bps
//Serial.println("Iniciando mediciones"); // texto a mostrar

lcd.begin(16,2);
lcd.clear();
lcd.setCursor(0,0);
}

void loop() {
// put your main code here, to run repeatedly:

static unsigned long tiempoLPM = millis(); // tiempo Latidos Por


Minuto con
// valor actual devuelto por millis()
static unsigned long entreLatidos = millis(); // tiempo entre Latidos con
// valor actual devuelto por millis()

int valorLeido = analogRead(A0); // lectura de entrada analogica A0

float valorFiltrado = factor * valorAnterior + (1 - factor) * valorLeido;


// filtro pasa bajos PINEDO, SAUCEDO, TAPIA
float cambio = valorFiltrado - valorAnterior; // diferencia entre valor
filtrado y
SENSOR DE PULSO CARDÍACO 41

int valorLeido = analogRead(A0); // lectura de entrada analogica A0

float valorFiltrado = factor * valorAnterior + (1 - factor) * valorLeido;


// filtro pasa bajos
float cambio = valorFiltrado - valorAnterior; // diferencia entre valor
filtrado y
// valor anterior
valorAnterior = valorFiltrado; // actualiza valor anterior con valor
filtrado

if ((cambio >= maximo) && (millis() > entreLatidos + minimoEntreLatidos))


{ // si cambio es
// es mayor o igual a maximo y pasaron al menos 300 mseg.
maximo = cambio; // actualiza maximo con valor de cambo
digitalWrite(13, HIGH); // enciende LED incorporado
entreLatidos = millis(); // actualiza variable entreLatidos con
millis()
latidos++; // incrementa latidos en uno
}
else { // condicion falsa del condicional
digitalWrite(13, LOW); // apaga LED incorporado
}

maximo = maximo * 0.97; // carga maximo como el 97 por ciento de su


propio
// valor para dejar decaer y no perder pulsos

if (millis() >= tiempoLPM + 15000) { // si transcurrieron al menos 15


segundos
//Serial.print("Latidos por minuto: ");
lcd.setCursor(0,1);
lcd.print(latidos * 4);// muestra texto
Serial.println(latidos * 4); // muestra variable latidos
multiplicado por 4
latidos = 0; // coloca contador de latidos en cero
tiempoLPM = millis(); // actualiza variable con valor de millis()
}

delay(50); // demora entre lecturas de entrada analogica

9.3.2 Código MAX30100

/*----------SENSOR DE PULSO CON ARDUINO-----------


-------------MÓDULO: Sensor MAX30102--------------
---PROYECTO FINAL INSTRUMENTACIÓN ELECTRÓNICA---*/

/*

Conexiones:
- 5V = 5V
- GND = GND
- SDA = A4 (ANALOG PIN 4)
- SCL = A5 (ANALOG PIN 5)
PINEDO, SAUCEDO, TAPIA
- INT = Sin conexión.

*/
SENSOR DE PULSO CARDÍACO 42

- 5V = 5V
- GND = GND
- SDA = A4 (ANALOG PIN 4)
- SCL = A5 (ANALOG PIN 5)
- INT = Sin conexión.

*/

// Librerías
#include <Wire.h> // Para comunicarse con I2C mediante SDA y SCL
#include "MAX30105.h" // Librería del sensor MAX30105 compatible con
MAX30102
#include "heartRate.h" // Librería que interpreta medición de pulso del
Sensor
#include <LiquidCrystal.h> // Librería LCD

// Variables
const byte RATE_SIZE = 4; // Constante para añadir más precisión al
cálculo.
byte rates[RATE_SIZE]; // Arreglo de pulsos cardiacos detectados
byte rateSpot = 0; // Contador
long lastBeat = 0; // Medir el tiempo del último pulso medido.
float BPM_Value; // Pulsaciones medidas.
int BPM_AVG; // Pulsaciones promedio. Valor mostrado en pantalla.
LiquidCrystal lcd(13, 12, 11, 10, 9, 8); // PINES LCD (RS, E, D4, D5, D6,
D7)

MAX30105 pulseSensor; // Definir objeto 'pulseSensor'

void setup() {

// Inicializar Monitor Serial a 115200 Baudios


Serial.begin(115200);
lcd.begin(16, 2); // Inicializando LCD.
Serial.println("Inicializando Sensor... ");

// Inicializar Sensor
if(!pulseSensor.begin(Wire, I2C_SPEED_FAST)){ // Utilizar puerto I2C por
defecto a 400kHZ
Serial.println("No se encontró el sensor :( "); // Si no se encontró el
objeto, imprimir ese mensaje
while (1);
}
Serial.println("Coloque su dedo índice en el sensor con firmeza"); //
Instrucciones

pulseSensor.setup(); // Configurar el sensor por defecto


pulseSensor.setPulseAmplitudeRed(0x0A); // Mandar un 'bajo' al LED Rojo
para indicar que el sensor está funcionando
pulseSensor.setPulseAmplitudeGreen(0); // Apagar LED Verde

void loop() {

// Recibir valores del Infrarrojo del Sensor


long IR_Value = pulseSensor.getIR();

if (checkForBeat(IR_Value) == true){
PINEDO, // Si TAPIA
SAUCEDO, el infrarrojo detectó un valor

long delta = millis() - lastBeat; // Valor DELTA: tiempo milisegundos


que encendió la placa - tiempo de la última lectura de pulso
SENSOR DE PULSO CARDÍACO 43

long IR_Value = pulseSensor.getIR();

if (checkForBeat(IR_Value) == true){ // Si el infrarrojo detectó un valor

long delta = millis() - lastBeat; // Valor DELTA: tiempo milisegundos


que encendió la placa - tiempo de la última lectura de pulso
lastBeat = millis(); // Conteo del último pulso medido.

BPM_Value = 60 / (delta / 1000.0); // Transforma el valor DELTA de


milisegundos a segundos y cuenta 60 segundos x 1 minuto

if (BPM_Value < 255 && BPM_Value > 20){ // Valor normal de lectura
oscila entre 20 y 255

rates[rateSpot++] = (byte) BPM_Value; // Guardar el valor de lectura


en el arreglo
rateSpot %= RATE_SIZE; // Igualar variables para guardar el valor

// Obtener promedio de las lecturas obtenidas


BPM_AVG = 0;
for (byte i = 0; i < RATE_SIZE ; i++) // Ciclado For
BPM_AVG += rates[i]; // Sumar Valores del arreglo
BPM_AVG /= RATE_SIZE; // Dividir Valor promedio entre valor Real
}

//Serial.print("IR: ");
//Serial.print(IR_Value);
//Serial.print("BPM Real: ");
//Serial.print(BPM_Value);
Serial.print("BPM ♥: ");
Serial.print(BPM_AVG);

if (IR_Value < 50000) // Si el valor es menor a 50000 No se esta


detectando valor alguno
Serial.print(" Coloque el dedo con firmeza");

Serial.println();

lcd.setCursor(0,0); // Colocarse en columna 0, renglón 0.


lcd.print("Su conteo es ");

lcd.setCursor(0,1); // Colocarse en columna 0, renglón 1.


lcd.print("BPM: ");
lcd.print(BPM_AVG); // Impresión de valor calculado

9.3.3 Código ARD-366

PINEDO, SAUCEDO, TAPIA


SENSOR DE PULSO CARDÍACO 44

/*---------SENSOR DE PULSO CON ARDUINO----------


-------------MÓDULO: Sensor ARD-366-------------
--PROYECTO FINAL INSTRUMENTACIÓN ELECTRÓNICA--*/

/*

Conexiones:
- 5V = 5V
- GND = GND
- S (PIN SENSOR) = A0 (ANALOG PIN 0)

*/

// Librerías
#define USE_ARDUINO_INTERRUPTS true // Usar interrupciones de Arduino para
que las mediciones sean más precisas
#include <PulseSensorPlayground.h> // Libreria PulseSensor del Sensor.
#include <LiquidCrystal.h> //--> Includes the LiquidCrystal Library.

LiquidCrystal lcd(8, 9, 4, 5, 6, 7); //--> Initialize LiquidCrystal with


"lcd". lcd(RS,E,D4,D5,D6,D7).

byte newChar[8] = {
B00000,
B01010,
B11111,
B11111,
B01110,
B00100,
B00000,
B00000
};

// Variables
const int PULSESENSOR_PIN = 0; // Entrada 'S' del Sensor de Pulso a ANALOG
PIN 0
const int LED_PIN = 13; // Definimos PIN 13 para encender/apagar un LED y
observar cada cuanto hay un Pulso
int Threshold = 550; // Pico Maximo de la señal enviada por el Sensor

PulseSensorPlayground pulseSensor; // Definir objeto 'pulseSensor'

void setup() {
// Inicializar Monitor Serial a 9600 Baudios
Serial.begin(9600);
lcd.begin(16, 2);

lcd.clear();
lcd.createChar(7, newChar);

// Configurar el Objeto 'pulseSensor' con variables


pulseSensor.analogInput(PULSESENSOR_PIN); // Entrada analógica para
lectura del Sensor
pulseSensor.blinkOnPulse(LED_PIN); // Parpadeo automático del LED a cada
Pulso
pulseSensor.setThreshold(Threshold); // Se define el Pico Maximo de la
señal

// Verificar que el objeto 'pulseSensor'


PINEDO, SAUCEDO,seTAPIA
creó correctamente y comenzar
la medición
if (pulseSensor.begin()){ // Si el objeto inicia correctamente
Serial.println("Inicializando Sensor de Pulso ..."); // Imprimir cuando
SENSOR DE PULSO CARDÍACO 45

señal

// Verificar que el objeto 'pulseSensor' se creó correctamente y comenzar


la medición
if (pulseSensor.begin()){ // Si el objeto inicia correctamente
Serial.println("Inicializando Sensor de Pulso ..."); // Imprimir cuando
se conecta al Arduino o se da un reseteo.
lcd.setCursor(0,0);
lcd.print("Iniciando ...");
}

void loop() {

// Variable para guardar los BPM (latidos por minuto)


int BPM = pulseSensor.getBeatsPerMinute(); // Función que obtiene los BPM
y los envía como variable entera

// Revisar que se esté realizando el conteo de los BPM


if (pulseSensor.sawStartOfBeat()){
Serial.println("Conteo correcto! "); // Si se cumple la condición,
imprimir el mensaje
Serial.print("BPM: ");
Serial.print(BPM);// Imprimir los valores de BPM
Serial.println("♥");

lcd.setCursor(0,0);
lcd.print("Conteo correcto! ");
lcd.setCursor(0,1);
lcd.print("BPM: ");
lcd.print(BPM);
lcd.write(7);
lcd.print(" ");

delay(20); // Retardo

9.4 Código en Visual Studio

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;
PINEDO, SAUCEDO, TAPIA
/*------------------SENSOR DE PULSO CON ARDUINO-------------------
-------------MÓDULO: Sensor ARD-366, MAX30102, KY-039-------------
SENSOR DE PULSO CARDÍACO 46

using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;

/*------------------SENSOR DE PULSO CON ARDUINO-------------------


-------------MÓDULO: Sensor ARD-366, MAX30102, KY-039-------------
-------------PROYECTO FINAL INSTRUMENTACIÓN ELECTRÓNICA---------*/

namespace SP_KY039
{
public partial class Form1 : Form
{

// Variable para datos de lectura Sensor-Arduino


public string lectura;

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)


{
// Boton de "Conectar" Desactivado antes de seleccionar puerto
button2.Enabled = false;
}

private void button1_Click(object sender, EventArgs e)


{
/*Al dar click en "SELECCIONAR PUERTOS" mostrar lista de puertos
detectados por la PC*/
string[] list_of_ports = SerialPort.GetPortNames();

// Limpiar lista de Puertos antes de detectar


comboBox1.Items.Clear();

/* Hacer un string con la lista de puertos conectados


*/
foreach (string port in list_of_ports)
{
comboBox1.Items.Add(port); // Añadir puertos encontrados
}

if (comboBox1.Items.Count > 0) // Si existen puertos disponibles


{
comboBox1.SelectedIndex = 0;
MessageBox.Show("SELECCIONAR PUERTO");
/* Mostrar al usuario que puede seleccionar
el puerto que desee
*/
button2.Enabled = true; // Desbloquear boton de "CONECTAR"

} else
{
MessageBox.Show("NO HAY PUERTOS DETECTADOS");
/* Mostrar al usuario que hay
un error y no se detectan los puertos*/
comboBox1.Items.Clear();
PINEDO,
comboBox1.Text = " SAUCEDO, TAPIA ";
button2.Enabled = false; // No se habilita boton de "CONECTAR"
}
}
SENSOR DE PULSO CARDÍACO 47

/* Mostrar al usuario que hay


un error y no se detectan los puertos*/
comboBox1.Items.Clear();
comboBox1.Text = " ";
button2.Enabled = false; // No se habilita boton de "CONECTAR"
}
}

private void button2_Click(object sender, EventArgs e)


{
try
{
if (button2.Text == "CONECTAR") // Cuando se de click al boton
"CONECTAR"
{
serialPort1.BaudRate = Int32.Parse(comboBox2.Text);
/* Funcion que permite configurar el puerto serial a los
baudios a
* los que esté trabajando el Arduino (o el Sensor)
*/
serialPort1.DataBits = 8;
serialPort1.Parity = Parity.None;
serialPort1.StopBits = StopBits.One;
serialPort1.Handshake = Handshake.None;
// Datos de comunicacion serial
serialPort1.PortName = comboBox1.Text; // Puerto
seleccionado de la lista

try
{
serialPort1.Open(); // Abrir puerto
button2.Text = "DESCONECTAR"; // Activar boton
"DESCONECTAR"
pictureBox1.Image =
SP_KY039.Properties.Resources._2054636_8a72c;

}
catch (Exception exc) // Mensaje que muestre error
{
MessageBox.Show(exc.Message.ToString());
}

} else if (button2.Text == "DESCONECTAR")


{
serialPort1.Close(); // Cerrar puerto
button2.Text = "CONECTAR";
pictureBox1.Image = null;
}
}
catch (Exception exc) // Mensaje que muestre error
{
MessageBox.Show(exc.Message.ToString());
}
}

private void serialPort1_DataReceived(object sender,


SerialDataReceivedEventArgs e)
{
lectura = serialPort1.ReadLine(); // Leer datos de Arduino
this.Invoke(new EventHandler(lecturaTxt));
}
PINEDO, SAUCEDO, TAPIA
private void lecturaTxt(object sender, EventArgs e)
{
textBox1.Text = lectura; // Funcion que convierte los datos de
SENSOR DE PULSO CARDÍACO 48

lectura = serialPort1.ReadLine(); // Leer datos de Arduino


this.Invoke(new EventHandler(lecturaTxt));
}

private void lecturaTxt(object sender, EventArgs e)


{
textBox1.Text = lectura; // Funcion que convierte los datos de
Arduino en Texto
}

}
}

PINEDO, SAUCEDO, TAPIA

También podría gustarte