Está en la página 1de 13

Pulsioxímetro Basado en Arduino Uno

Aguilar Casquino Eddylson Kevin; De la Cruz Flores Patrick Gilbert; Lazo Ayala Daniel Agustín; Sammillan
Yupanqui Kevin Antony
Curso: Procesamiento Digital de Señales. Grupo: 4
Escuela Profesional de Ingeniería Electrónica
Universidad Nacional de San Agustín de Arequipa
Arequipa, Perú

Resumen​: El siguiente trabajo tiene la finalidad de simular C. Antecedentes


el funcionamiento de un pulsioxímetro, mediante el
programa Proteus. Para esto hacemos uso de una base de Karl Matthes en el año de 1935, fue la primera
datos, la cual contiene los datos necesarios que se tendrán persona que desarrolló un dispositivo de longitud de onda
que almacenar en nuestro microcontrolador, Arduino capaz de medir la saturación de oxígeno en sangre,
UNO, para luego poder calcular la saturación de oxígeno y utilizando luz roja y verde, para posteriormente cambiar a
displayarlo en una pantalla LCD. Dicha base de datos se luz roja e infrarroja.
logra visualizar mediante el programa Matlab, lo que nos
ayuda a entender la naturaleza de la señal a analizar. En el año 1949 Wood introdujo un sistema a
presión para exprimir la sangre fuera de la oreja y
Palabras clave: Pulso oxímetria, infrarrojo, saturación,
comprobar la saturación de oxígeno cuando la sangre era
oxígeno, SpO2, pulsaciones.
otra vez devuelta a su estado normal (sin presión), este
Abstract: ​The following work has the purpose of método resultó ineficiente porque las fotoceldas y fuentes
simulating the operation of a pulse oximeter, using the de luz eran inestables, nunca llegó a usarse en clínicas.
Proteus program. For this we make use of a database, Más tarde en 1964 Shaw utilizó 8 longitudes de onda, su
which contains the necessary data that will have to be uso estaba limitado a funciones pulmonares, tenía un gran
stored in our microcontroller, Arduino UNO, to then be tamaño y un gran coste de adquisición.
able to calculate the oxygen saturation and display it on an
LCD screen. This database can be viewed using the En el año 1974, Takuo Aoyagi y Michio Kishi
Matlab program, which helps us understand the nature of desarrollaron la pulsioximetría, utilizaban la relación de
the signal to be analyzed. absorción de la longitud de onda infrarroja y la longitud de
onda roja. Este dispositivo fue comercializado por Biox en
1981 y Nellcor en 1983, rivalizaron por el mercado de los
quirófanos en esta época.
I. INTRODUCCIÓN
La presente investigación está enfocada en el Este descubrimiento supuso un gran avance ya
diseño y simulación por software de un pulsioxímetro que hasta esa fecha el método para medir el oxígeno en
utilizando el microcontrolador de Arduino ATMEGA 328. sangre consistía en la medida por medio de gases en la
sangre de las arterias en un único punto de medición. (la
A. Objetivos ausencia de oxigenación los daños cerebrales comienzan a
partir de los 5 minutos, produciendo muerte cerebral entre
● Elaborar el diseño de un pulsioxímetro con el los 10 y los 15 minutos siguientes). Con el descubrimiento
microcontrolador ATMEGA 328. de la pulsioximetría fue posible la medida no invasiva y
● Crear el programa para el microcontrolador continua de la oxigenación del paciente, mejorando mucho
ATMEGA 328. las prácticas de anestesia y la seguridad en el paciente. [1]
● Simular el diseño en el programa Proteus 8.7
● Analizar los resultados obtenidos en la simulación Finalmente, en el año 2009 fue desarrollado el
y obtener finalmente las conclusiones. primer dispositivo para la pulsioximetría que utilizaba la
yema del dedo con conectividad bluetooth, permitiendo así
B. Justificación monitorizar el pulso y los niveles de saturación en los
pacientes. Este dispositivo permite que las personas
Debido a los acontecimientos presentados a
puedan comprobar su estado a través de registros online y
principios de este año, como es la pandemia del Covid19,
uso de sistemas de telemedicina para el hogar. [2]
todo aspecto relacionado con la salud ha adquirido gran
importancia, por lo que, aparatos médicos tan usados como
D. Marco Teórico
el pulsioxímetro podrían llegar a escasear en zonas
alejadas. Pulsioximetro
Así, el presente trabajo aportará al desarrollo de Un pulsioxímetro u oxímetro de dedo es un
aparatos médicos de maneras alternativas utilizando el aparato médico que consigue monitorizar el nivel de
microcontrolador ATMEGA 328. concentración de oxígeno que tenemos en la sangre de una
manera no intrusiva. También indica la frecuencia cardíaca La hemoglobina oxigenada y la hemoglobina reducida
y el pulso del paciente. absorben la luz a distintas longitudes de onda y tienen
Este aparato se coloca en zonas del cuerpo distintas características de absorción según la longitud de
relativamente translúcidas como los dedos de la mano o onda.
del pie, la frente, los lóbulos de las orejas o el puente de la
nariz, ya que es donde se produce un buen flujo sanguíneo. El sensor mide la cantidad de luz infrarroja y roja que
El método se basa en la emisión alterna de dos atraviesa los tejidos para determinar cuánta cantidad de luz
longitudes de onda diferentes (luz roja e infrarroja) que se ha absorbido por la hemoglobina oxigenada y por la
son transmitidas por un emisor hasta un fotodetector a hemoglobina reducida. Calculando la proporción entre la
través de una de las zonas citadas anteriormente del cantidad absorbida de luz roja y luz infrarroja se puede
paciente. Medimos la absorbancia de cada longitud de determinar la saturación de oxígeno en sangre.
onda causada sólo por la sangre arterial, haciendo caso
omiso a la sangre venosa, por medio de este procedimiento Medida pulsátil
se consigue obtener el porcentaje de saturación de oxígeno A la hora de estimar la saturación arterial de la
en sangre y la pulsación cardíaca. hemoglobina en tejidos vivos, hay dos tipos de problemas
que impiden llevar a cabo este cálculo.
Ley de Beer-Lambert
La oximetría de pulso es la técnica utilizada para ● El primer problema es que existen otra parte de los
calcular el nivel de saturación de oxígeno en sangre tejidos que también absorben luz, además de la
utilizando la absorción de la luz. Cuando se introduce el hemoglobina.
dedo entre el emisor y el fotorreceptor, la luz emitida debe ● El segundo es que, junto a la sangre arterial,
atravesar los distintos tejidos, es entonces cuando un también están la sangre venosa, piel, hueso, etc.
porcentaje de luz será absorbida por el dedo y el resto por
el fotorreceptor. La cantidad de luz que el dedo absorbe Se debe analizar el tipo de sangre que nos interesa sin
depende principalmente de tres parámetros: tener en cuenta los elementos citados anteriormente. Ya
que la sangre arterial es el único elemento pulsátil (AC), y
● La concentración de sangre que absorbe la luz; a el resto de elementos son no pulsátiles o constantes (DC).
mayor concentración mayor absorbancia.
● La longitud del camino que recorre la luz al atravesar La señal pulsátil señal alterna cuya amplitud máxima
la sangre que la absorbe. constituye una pequeña parte del total, supone entre el 1%
● La composición del absorbente, la hemoglobina o el 2% de la señal total. Es sólo esta componente la que
reducida y la oxihemoglobina absorben la luz en transporta la información que interesa analizar a través del
distinta forma. dispositivo médico.

Cálculo de la saturación de oxígeno


Se sabe que la componente pulsátil de la luz
recibida en cada longitud de onda está directamente
relacionada con la sangre arterial, y que se pueden
descartar los diferentes efectos de la sangre venosa, piel,
huesos, etc. Primero se debe calcular para cada longitud de
onda la diferencia entre la luz emitida y la recibida, de este
modo se determinará la sangre pulsátil que ha sido
absorbida [3], con ello se evaluará la ratio de
oxihemoglobina y hemoglobina reducida.
Figura 1. Absorción en función de la concentración log(Iac)λ1
R′ = log(Iac)λ2
Esta ley nos quiere decir que la cantidad de luz que es
absorbida está directamente relacionada con la
concentración de sustancia que absorbe la luz. A partir de esta ecuación y utilizando métodos empíricos,
se puede hacer una aproximación de la saturación de
oxígeno mediante la siguiente fórmula:

HbO2
S aO2 = HbO2 +Hb x100

II. DISEÑO DEL HARDWARE

Para el diseño del pulsioxímetro se consideró un


sensor como elemento de entrada, el acondicionamiento de
las señales y por último la visualización de la salida.
El sensor está conformado por un optoacoplador,
Figura 2. Absorción en función de la concentración el cual va a simular la señal que genera el fototransistor al
recibir la luz proveniente del led rojo y el infrarrojo. El diseño se implementó con una placa Arduino
También cuenta con dos potenciómetros para ajustar la UNO el cual es el encargado de realizar las formas de
intensidad de emisión de los diodos, con el fin de simular muestras para cada señal generada por cada diodo, se
la variación de la oxigenación en la sangre. Cada diodo implementó un total de 100 muestras para cada uno,que
tiene una señal de control enviada por el microcontrolador, son almacenadas en arreglos y posteriormente para obtener
el cual alterna el funcionamiento de cada uno al momento los valores máximos y mínimos de la señal generada por
de realizar las mediciones. cada diodo. El Arduino también es el encargado de
El acondicionamiento se basa en dos etapas; la controlar la pantalla LCD para mostrar el valor de la SpO​2
primera es un conversor corriente a voltaje, y la segunda es o concentración de oxígeno en la sangre.
un amplificador. La señal recibida es del optoacoplador y
la salida es enviada al canal analógico del G. Diagrama Esquemático
microcontrolador para ser procesada digitalmente.
Para visualizar la salida hacemos uso de una El Arduino controla la señal de disparo para cada
pantalla LCD para mostrar el valor de la concentración de led primero el proceso para el LED rojo habilitando y
oxígeno en la sangre. También se almacenarán las tomando 100 muestras que son almacenadas en un arreglo
muestras con ayuda del microcontrolador. para luego buscar el valor mayor y menor respectivamente,
luego se repite el proceso con el LED infrarrojo
E. Selección del microcontrolador obteniendo también los valores máximo y mínimo de las
muestras tomadas.
Se pueden usar los siguientes microcontroladores Luego se calcula el parámetro R de absorbancia,
para realizar la simulación del pulsioxímetro y son: que se obtiene del cociente de la diferencia de los valores
del Led rojo y la diferencia de los valores del led
● Microcontrolador Arduino Pro Mini Infrarrojo.
● Microcontrolador Arduino Uno rmáx − rmín
● Microcontrolador PIC 12F,14F,16F u otros Rabsor = irmáx − irmín
● Microcontroladores de la familia MPS430x4xx
del fabricante Texas Instruments. Luego con el valor de R se puede determinar el
valor de SpO​2 mediante la siguiente curva de datos
Hemos optado por la utilización de Arduino empíricos.
UNO, debido a que pertenece a una de las comunidades
más grandes del mundo de código libre, lo que
proporciona una gran cantidad de herramientas, utilidades
que pueden ser de gran ayuda para el desarrollo del
dispositivo, así como para que pueda seguir
desarrollándose y evolucionando con ayuda de la
comunidad.
La placa Arduino UNO está basada en el
microcontrolador ATmega328P.

F. Selección de componentes

Diseño del Sensor:


El sensor está compuesto por un optoacoplador Figura 3. Curva de datos empíricos
4N26, que simula la señal que genera el fototransistor de la
luz del diodo led rojo y el infrarrojo. III. ELABORACIÓN DEL SOFTWARE
Para el diseño se trabajó con un generador de
pulso ajustado a una frecuencia de 250 Hz y 2 A. Algoritmos de Procesamiento de Señales
potenciómetros para ajustar las intensidades de emisión de
los diodos. El código que usaremos para el proyecto puede
Cada diodo tiene una señal de control enviada por ser sintetizado de manera resumida en las siguientes
el Arduino que hace alternar el funcionamiento de ellos partes, tal y como se puede observar en la siguiente figura.
para realizar las respectivas mediciones.

Diseño de acondicionamiento de señales :


El acondicionamiento se diseñó basado en el
amplificador operacional referencia LM324,se crearon 2
etapas, una que es el convertidor contiene a Voltaje y la
segunda es un amplificador.
La señal que recibe el circuito proviene del
fototransistor y la salida es enviada al canal analógico A0
del Arduino para ser procesada digitalmente.

Diseño de salida (visualización) :


El siguiente Dataset está conformado por datos
referentes a las respiraciones de pacientes en estado crítico
durante la atención hospitalaria en el Beth Israel
Deaconess Medical Centre (Boston, MA, EE. UU.).
Uno de estos datos es el nivel de saturación de
oxígeno en sangre (SpO2), que se muestrean a 1 Hz. Este
Dataset tiene los siguientes formatos:
● WFDB (WaveForm DataBase)
● Formato CSV (valor separado por comas)
● Formato Matlab (r)
En este caso, el Formato Matlab nos será de
mucha ayuda para poder visualizarlos.

C. Simulación de los algoritmos en Matlab

La simulación representa la señal de entrada en


nuestro microcontrolador. Esta señal se consigue mediante
el fototransistor del sensor, que se encarga de tomar las
lecturas de la luz absorbida en la sangre.
Nuestro programa de Matlab se encargará
primero de graficar dichos datos. Una vez corroborada la
gráfica se procede a convertir dichos datos en una señal de
audio WAV, ya que de esta manera se facilita la
simulación de la señal en el programa Proteus.

D. Programa en lenguaje C para el


microcontrolador

Figura 4. Diseño de la salida. Los datos y variables usados fueron:


sensor1 y ​sensor2​: Estos valores corresponden a
La primera parte consta del muestreo de las los pines analógicos donde entrarán las señales del pulso.
señales provenientes del sensor, habiendo sido estas val y ​val1​: Estas variables corresponden a los
debidamente condicionadas por el circuito de valores tomados de la lectura de las señales de entrada
acondicionamiento, esto es necesario para poder trabajar provenientes de los sensores.
correctamente con las señales. rojo e ​infra (arrays): Son los arrays donde irán los
Para el cálculo de la frecuencia cardíaca valores muestreados de las señales de entrada (rojo e
mediremos el tiempo entre cada cruce por cero para así infrarrojo).
poder cuantificar el valor de esta. Rmayor y ​Rmenor​: Corresponden a los valores
Para el cálculo de la saturación de oxígeno máximo y mínimo de las señal proveniente del sensor de
usaremos un método indirecto basado en el luz roja.
funcionamiento de los oxímetros de pulso, siendo el Imayor y ​Imenor:​ Corresponden a los valores
proyecto en sí la simulación de uno de estos. El método máximo y mínimo de las señal proveniente del sensor de
consiste en calcular la saturación de oxígeno a partir de los luz infrarroja.
valores máximo y mínimo obtenidos en el muestreo. Es así R:​ Es la variable en la que se guardará el
que, siguiendo la siguiente fórmula, podemos hallar la resultado de la operación ya mencionada anteriormente.
saturación de oxígeno (SpO2). Sop2​: Es la variable donde el resultado de la
saturación de oxígeno se guardará.
(CA luz R − CE luz R)
(CA luz IR − CE luz IR) * a = S pO2 manera:
El programa en C se dividió de la siguiente

● Establecer librería para gestión del display LCD


Siendo R e IR las señales medidas a partir de las
(línea 1).
luces roja e infrarroja. Además, los valores
● Asignar pin analogico para entrada de datos
correspondientes a CA y CE se refieren a los componentes
además de cada una de las variables (línea 5 hasta
arterial y estático de las mediciones, los cuales
la línea 17).
corresponden a los valores máximo y mínimo. El valor ​a
● Indicar los pines de salida infrarroja y rojo y la
es una constante que se debe calibrar de acuerdo a la tabla
inicialización de la LCD (línea 19 - línea 30).
de datos empíricos antes mencionada.
● Los ciclos para detectar los mayores y menores en
Una vez se haya calculado los valores de la
el caso del Infrarrojo como del rojo.(línea 33 -
frecuencia cardíaca y la saturación de oxígeno en sangre
línea 71)
estas serán mostradas en el panel LCD conectado
● El empleo de ecuaciones para los resultados (linea
directamente al Arduino.
73 -línea 75).
● Finalmente las impresiones de dichos datos en
B. Descripción del Dataset
una LCD (linea 77 - línea 80).
● Reiniciar los valores de las variables utilizadas VI. CONCLUSIONES
(línea 82 - línea 87).
Se ha conseguido el diseño e implementación de
un pulsioxímetro utilizando Arduino Uno, capaz de
IV. EXPERIMENTOS REALIZADOS reproducir valores reales y poco tolerantes a fallos.

Para el proceso de simulación se usó el software Se procedió a realizar ajustes en la programación


Proteus (versión 8.9). Es necesario contar con los circuitos en Arduino para valores más cercanos al de un equipo
armados (Anexo E). Una vez empecemos la simulación comercial, dotando al trabajo de veracidad y precisión.
veremos el display LCD encenderse y luego empezará a
poder visualizarse el valor de la saturación en sangre VII. BIBLIOGRAFÍA
(Sop2) en porcentaje.
[1] John W. Severinghaus, MD, and Yoshiyuki Honda,
V. EVALUACIÓN DE LOS RESULTADOS MD “HISTORY OF BLOOD GAS ANALYSIS. VII.
PULSE OXIMETRY”. Disponible en:
A través de la simulación se pudo observar que https://link.springer.com/article/10.1007/BF00858362
los resultados obtenidos del experimento dependen
[2] Thomas Lee, Tekne Awards Announced. Star Tribune.
directamente de las señales de entrada simuladas y la
[Online] [recuperado 01/12/2020] Disponible en:
variación que estas tuvieron, siendo la principal variable la
amplitud del pulso simulado. La amplitud puede ser https://www.startribune.com/tekne-awards-announced/657
controlada a través de los potenciómetros colocados en las 75732/
bases de los transistores y es así como se logró obtener [3] Kennedy, S. M. An introduction to pulse oximeters:
resultados algo más cercanos a la realidad. Es importante equations and theory. ECE/BME 462 - Biomedical
recordar que mientras más oxígeno (oxihemoglobina) haya Instrumentation. Disponible en :
en la sangre se obtendrán menores lecturas en la señal https://www.semanticscholar.org/paper/AN-INTRODUCT
proveniente del sensor infrarrojo, esto debido a que la
ION-TO-PULSE-OXIMETERS-%3A-EQUATIONS-AN
oxihemoglobina suele absorber mayor luz infrarroja que
D-Kennedy-Kennedy/8ef8af4de10708fe48e4cfb8d1dda75
roja, por lo tanto, mientras mayor sea la diferencia entre
los valores de la amplitud de las señales mayor será el e48c22d28
nivel de oxígeno en sangre. Cabe recalcar que, ya que los
potenciómetros son resistencias variables, mientras mayor [4] Sixto Reinoso V, Marco Pilatasig, Luis Mena y Jorge
sea el porcentaje de estos en la simulación significa que la Sánchez. Programación de microcontroladores PIC con
corriente será menor, o sea, la amplitud de la señal de Lenguaje C, Tomo I. 2018. Disponible en:
entrada simulada es inversamente proporcional al http://repositorio.espe.edu.ec/bitstream/21000/15406/1/Pro
porcentaje utilizado del potenciómetro. gramaci%c3%b3n%20de%20microcontralores%20tomo%
201.pdf
TABLA 1. Medición del valor del SpO2
[5] Eduardo García Breijo. Compilador C CCS y
Simulador Proteus para Microcontroladores PIC.
Diferencia entre los
valores de los
Valor de SpO2 Alfaomega. 2009. Disponible en:
obtenido (%) http://148.204.232.249/libros/Compilador%20C%20CCS
potenciómetros (%)
%20y%20simulador%20Proteus%20para%20microcontrol
0 100 adores%20PIC-FREELIBROS.ORG.pdf

15 85 [6] Héctor Mejía Salas y Mayra Mejia Suarez. Oximetría


de pulso. Rev. bol. ped. [online]. 2012, vol.51, n.2 [citado
35 65 2020-11-25], pp. 149-155. Disponible en:
http://www.scielo.org.bo/scielo.php?script=sci_arttext&pi
50 50 d=S1024-06752012000200011&lng=es&nrm=iso.

65 35 [7] Patricia López-Herranz. Oximetría de pulso: A la


vanguardia en la monitorización no invasiva de la
80 20 oxigenación. ​Rev. Med. Hosp. Gen. Mex. 2003, vol.66,
n.3, pp. 160-169. Disponible en:
90 10 https://www.medigraphic.com/pdfs/h-gral/hg-2003/hg033
h.pdf
100 0
ANEXOS

A) Datos principales de los componentes usados

Optoacoplador 4N26:

Descripción:
​El 4N26 es un acoplador óptico de 1 canal salida del fototransistor con conexión a la base. Se compone de LED
infrarrojo de arseniuro de galio y un fototransistor NPN de silicio. Un optoacoplador, también llamado optoaislador o
aislador acoplado ópticamente, es un dispositivo de emisión y recepción que funciona como un interruptor activado
mediante la luz emitida por un diodo LED que satura un componente optoelectrónico, normalmente en forma de
fototransistor o fototriac.

Especificación:
● Tipo salida del optoacoplador: Fototransistor.
● Número de canales: 1.
● Voltaje de colector-emisor V(br)ceo: 80 V.
● Voltaje de aislamiento: 5 kV.
● Corriente directa máxima If: 60 mA.
● CTR mínimo: 20 %.
● Encapsulado: DIP.
● Número de pines: 6.

Amplificador Operacional LM324:

Descripción:
Amplificador operacional cuádruple de propósito general de alta ganancia, funciona con una fuente de poder sencilla
bajo un amplio rango de voltaje. Bajo consumo de energía​.

Especificación:
● Rango de voltaje de operación: 3V a 32VDC. (Fuente sencilla).
● Rango de voltaje de operación: ±1.5V a ±16VDC. (Fuente dual).
● Bajo Voltaje Offset de entrada: 2 mV.
● Ancho de banda: 1 MHz.
● Encapsulado: DIP14.
● Rango de temperatura de operación: 0°C hasta 70°C.
Transistor NPN 2N3904:

Descripción:
​Transistor 2N3904 de pequeña señal. El 2N3904 es un transistor de conmutación rápida, corta apague y baja tensión
de saturación, adecuado para la conmutación y amplificación.El transistor es un ​dispositivo electrónico ​semiconductor
utilizado para entregar una señal de salida en respuesta a una señal de entrada.

Especificación:
● Transistor bipolar NPN, 40 V, TO-92.
● Polaridad del transistor: NPN.
● Voltaje V (br) ceo: 40 V.
● Transición de frecuencia ft: 300 MHz.
● Disipación de potencia Pd: 625 mW.
● DC Corriente del colector: 200 mA.
● Ganancia de corriente continua hFE: 100.
● Rango de temperatura de funcionamiento en el empalme de -55 ° C a 150 ° C.
● Colector emisor tensión de saturación es inferior a 300 mV en Ic = 10 mA.
● DC ganancia de corriente es mayor que 30 en Ic = 100 mA.
● Encapsulado TO-92.
● 3 pines

Arduino UNO:

Descripción:
​Arduino Uno es una placa de microcontrolador basada en un microcontrolador ATmega328P de 8 bits. Junto con
ATmega328P, consta de otros componentes como oscilador de cristal, comunicación en serie, regulador de voltaje, etc.
para soportar el microcontrolador. Arduino Uno tiene 14 pines de entrada / salida digitales (de los cuales 6 se pueden usar
como salidas PWM), 6 pines de entrada analógica, una conexión USB, un conector de barril de alimentación, un
encabezado ICSP y un botón de reinicio.

Especificación:
● Microcontrolador: ATmega328 .
● Voltaje de operación: 5V.
● Entrada de voltaje (recomendada) :7-12V .
● Entrada de voltaje (limites): 6-20V .
● Pines digitales I/O : 14 (​de los cuales 6 proporcionan salida PWM​).
● Pines de entrada analógica: 6.
● Corriente DC por pin I/O: 40 mA.
● Corriente DC para pin de 3.3V:​ Pin 50 mA.
● Memoria Flash: 32 KB (ATmega328) ​de los cuales 0,5 KB utilizados por el gestor de arranque
● SRAM :2 KB (ATmega328) .
● EEPROM :1 KB (ATmega328) .
● Velocidad de reloj : 16 MHz.

Pantalla LCD LM016L:

Descripción:
Las pantallas LCD son más fáciles de usar que las pantallas de siete segmentos. 16 * 2 LCD son LCD alfanuméricos que
pueden mostrar alfabetos, números y algunos caracteres especiales. Se manejan fácilmente mediante comandos que son valores
hexadecimales. Estos comandos en arduino se pueden proporcionar usando los códigos.​16 caracteres x 2 líneas

Características:
● 16 caracteres x 2 líneas.
● Caracteres de 5x8 puntos.
● Tamaño de carácter: 5.23 x 3 mm.
● Puede mostrar letras, números, caracteres especiales, y hasta 8 caracteres creados por el usuario.
● Backlight de LED color azul.
● Caracteres color blanco.
● Interfaz paralela. Puede operar en modo de 8 bits, o de 4 bits para ahorrar pines del microcontrolador.
● Posee controlador KS0066U o equivalente on-board (compatible Hitachi HD44780).
● Voltaje de alimentación: 5 V.
B) Diagrama Esquemático en Proteus

Circuito con pulsos cuadrados constantes

Circuito con pulsos simulados


C) Programa en Matlab y Resultados de la Simulación en Matlab

01 close​ ​all​;​ ​clear​ ​all​;


02 load​(​'Datos.mat'​)
03 Signal​ ​=​ ​(​val​-​0​)/​200​;
04 Fs​=​ ​360​;
05 t​ ​=​ ​(​0​:​length​(​Signal​)-​1​)/​Fs​;
06 plot​(​t​,​Signal​)
07 grid​ ​on
08
09 x​=​dlmread​(​'Datos.txt'​);
10 x​=​x​';
11 x1​=​x​(​1​,:);
12 x1max​=​max​(​x1​);
13 audiowrite(​'Signal.wav'​,x1/x1max,​1000​);

Simulación del programa Matlab

D) Programa en lenguaje C

01 #include <LiquidCrystal.h>
02
03 LiquidCrystal lcd​(​12​,​11​,​5​,​4​,​3​,​2​);
04
05 int​ sensor1 ​= ​A0​;
06 int​ sensor2 ​= ​A1​;
07 int​ val ​= ​0​;
08 int​ muestras ​= ​100​;
09 int​ rojo​[​100​];
10 int​ infra​[​100​];
11 float​ Rmayor ​= ​0​;
12 float​ Imayor ​= ​0​;
13 int​ vall ​= ​0​;
14 float​ Rmenor ​= ​0​;
15 float​ Imenor ​= ​0​;
16 float​ R ​= ​0​;
17 float​ Spo2 ​= ​0​;
18
19 void​ setup​(){
20 pinMode​(​8​,​OUTPUT​);
21 pinMode​(​9​,​OUTPUT​);
22 digitalWrite​(​8​,​LOW​);
23 digitalWrite​(​9​,​LOW​);
24 lcd​.​begin​(​16​,​2​);
25 lcd​.​clear​();
26 lcd​.​setCursor​(​5​,​0​);
27 lcd​.​print​(​"Spo2"​);
28 lcd​.​setCursor​(​12​,​1​);
29 lcd​.​print​(​"%"​);
30 }
31
32 void​ loop​(){
33 digitalWrite​(​8​,​HIGH​);
34 delay​(​3​);
35 ​for​(​int​ i​=​0​; i
​ ​<=​muestras​; ​i​++){
36 val ​= ​analogRead​(​analogPin​);
37 rojo​[​i​] = ​val​;
38 ​}
39 digitalWrite​(​8​,​HIGH​);
40
41 ​for​(​int​ i​=​0​; i
​ ​<=​muestras​; ​i​++){
42 ​if​(​Rmayor ​< ​rojo​[​i​]){
43 Rmayor ​= r ​ ojo​[​i​];
44 ​}
45 ​ }
46
47 ​for​(​int​ i​=​0​; i
​ ​<=​muestras​; ​i​++){
48 ​if​(​Rmenor ​> ​rojo​[​i​]){
49 Rmenor ​= r ​ ojo​[​i​];
50 ​}
51 ​ }
52
53 digitalWrite​(​9​,​HIGH​);
54 delay​(​3​);
55 ​for​(​int​ i​=​0​; i
​ ​<=​muestras​; ​i​++){
56 vall ​= ​analogRead​(​analogPin​);
57 infra​[​i​] = ​vall​;
58 ​}
59 digitalWrite​(​8​,​HIGH​);
60
61 ​for​(​int​ i​=​0​; i
​ ​<=​muestras​; ​i​++){
62 ​if​(​Imayor ​< ​infra​[​i​]){
63 Imayor ​= i ​ nfra​[​i​];
64 ​}
65 ​ }
66
67 ​for​(​int​ i​=​0​; i
​ ​<=​muestras​; ​i​++){
68 ​if​(​Imenor ​> ​infra​[​i​]){
69 Imenor ​= i ​ nfra​[​i​];
70 ​}
71 ​ }
72
73 R ​= (​Rmayor​-​Rmenor​)/(​Imayor​-​Imenor​);
74 Spo2 ​= -​33.156​*​R​;
75 Spo2 ​= ​Spo2​+​113.21​;
76
77 lcd​.​setCursor​(​5​,​1​);
78 lcd​.​print​(​" "​);
79 lcd​.​setCursor​(​5​,​1​);
80 lcd​.​print​(​Spo2​);
81
82 Rmayor ​= ​0​;
83 Rmenor ​= ​0​;
84 Imayor ​= ​0​;
85 Imenor ​= ​0​;
86 Spo2 ​= ​0​;
87 R ​= ​0​;
88 delay​(​100​);
89 }

E) Imágenes de la simulación del circuito basado en microcontrolador

Simulación del porcentaje de SpO2


Señal del osciloscopio en Proteus

También podría gustarte