Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PFC - Luis Manuel Moreno - 2015 PDF
PFC - Luis Manuel Moreno - 2015 PDF
Autor:
Luis Manuel Moreno Moruno
Tutor:
Laura M. Roa Romero
Catedrática de Universidad
iii
Proyecto
Fin
de
Carrera:
Diseño
e
Implementación
de
un
Dispositivo
para
la
Detección
de
la
Oxigenación
en
Sangre
Autor:
Luis
Manuel
Moreno
Moruno
Tutor:
Laura
M.
Roa
Romero
El
tribunal
nombrado
para
juzgar
el
Proyecto
arriba
indicado,
compuesto
por
los
siguientes
miembros:
Presidente:
Vocales:
Secretario:
Acuerdan
otorgarle
la
calificación
de:
Sevilla,
2015
El
Secretario
del
Tribunal
v
Agradecimientos
Combinar
la
realización
de
este
proyecto
y
la
presente
memoria
con
un
trabajo
a
jornada
completa
que
requiere
mucha
dedicación
ha
sido
una
complicada
tarea
que
no
podría
haber
llevado
a
cabo
si
no
fuese
por
las
personas
que
de
forma
directa
o
indirecta
han
colaborado
conmigo.
Por
esta
razón,
me
gustaría
aprovechar
para
mostrar
mi
gratitud
a
estas
personas
que
de
alguna
forma
me
han
ayudado
en
este
proceso.
En
especial
al
que
ha
sido
mi
tutor,
David
Naranjo,
por
todo
su
apoyo,
su
ayuda
y,
sobretodo,
por
el
tiempo
de
su
trabajo
que
ha
dedicado
en
atender
al
mío,
que
no
ha
sido
poco.
Agradecerle
también
por
todo
lo
que
he
aprendido
en
este
tiempo.
También
a
la
Profesora
Laura
M.
Roa
Romero,
por
haberme
dado
la
oportunidad
de
realizar
este
proyecto.
Quisiera
dedicar
este
proyecto
a
toda
mi
familia.
A
mis
padres,
Mariano
y
Paqui,
a
quienes
en
gran
parte
les
debo
haber
conseguido
ser
lo
que
soy
hoy
en
día,
y
por
su
incondicional
apoyo,
comprensión
,
esfuerzo
y
cariño.
A
Lucía,
por
haber
sido
mi
confidente
en
muchas
ocasiones,
por
reírme
las
gracias
y
por
ser
como
es.
A
Nacho,
por
estar
siempre
ahí,
por
su
ánimo,
por
su
paciencia
y
por
su
increíble
capacidad
para
sacar
tiempo
de
su
agitada
vida
para
ayudarme
siempre
que
lo
he
necesitado.
Por
último,
y
aunque
no
sean
personas,
sería
injusto
no
mencionar
a
mis
gatos,
Neus
y
Richard,
que
siempre
me
acompañan
y
que,
con
lo
aburrido
que
debe
resultarles,
no
se
han
separado
de
mi
mientras
escribía
esta
memoria.
Gracias
también
al
resto
de
mi
familia
y
a
mis
amigos,
que
me
ofrecen
los
momentos
de
desconexión
y
diversión.
A
todos
vosotros,
mi
mayor
gratitud.
vii
Resumen
Los signos vitales son mediciones de las funciones más básicas del cuerpo. Constituyen
una herramienta de gran valor como indicadores del estado funcional de una persona,
reflejando el estado fisiológico de los órganos vitales y expresando de forma inmediata
los cambios funcionales en el organismo. Dos de los signos vitales más importantes son
la frecuencia cardíaca y el nivel de oxigenación de la sangre. El propósito y objetivo de
este proyecto es conseguir realizar una medición no invasiva y en tiempo real de estos
signos vitales.
Este primer prototipo ha sido validado en primer lugar desde el punto de vista técnico,
analizando la adecuación de las diferentes señales que conforman el proceso de
detección respecto a los resultados esperados. También ha sido validado de forma
funcional comparando los resultados obtenidos respecto a un dispositivo comercial
estándar para la medida de la saturación de oxígeno en sangre y la frecuencia cardíaca,
lo que pone de manifiesto la viabilidad del método y la técnica empleada.
ix
Índice
xi
Índice de Figuras
xiv
xv
Índice de Tablas
xvii
1
Introducción
1 Introducción
La pulsioximetría es la medición de la saturación de oxígeno en sangre de forma no
invasiva (1). Este método permite detectar hipoxemia arterial (disminución de la presión
de oxígeno arterial). Estos dispositivos se utilizan generalmente para el diagnóstico de
la apnea del sueño y enfermedades respiratorias tales como la neumonía, asma,
enfermedad pulmonar obstructiva crónica (EPOC), bronquitis crónica, enfisema
pulmonar, insuficiencia cardíaca congestiva y edema pulmonar (2). Tradicionalmente se
ha utilizado la oximetría de pulso durante la anestesia general y se recomienda como
una herramienta importante para recién nacidos y para el control de pacientes que estén
siendo sometidos a cirugía (3). También para la detección de la hipoxemia inducida por
el ejercicio en los atletas para evaluar el grado de desaturación arterial de oxígeno (4).
2
Introducción
representan un grave problema de salud pública debido a que van en aumento
principalmente a causa de un mayor consumo del tabaco. En 1990 la EPOC era la sexta
causa de muerte y se prevé que sea la cuarta en 2030 (10).
En este sentido, los sistemas de eSalud junto a los dispositivos sensores inteligentes que
permiten la supervisión en tiempo real de parámetros clínicos relevantes se consideran
como un enfoque prometedor para la prevención y tratamiento de las enfermedades
respiratorias (14), motivando a los pacientes a adoptar habilidades para su
autotratamiento, mejorando así su calidad de vida y, por lo tanto, minimizando los
costes en salud pública (15). Estudios demuestran que cuando los pacientes con
enfermedades respiratorias como la EPOC son monitorizados de forma remota, los
ingresos hospitalarios decrecen hasta en un 50% y los costes de hospitalización
disminuyen un 17%, incluso incluyendo en éstos los costes asociados a la
monitorización (16).
Los sensores pueden operar bien de forma individualizada, o bien como redes de
sensores, pudiendo un solo sensor obtener múltiples parámetros incluso de forma
simultánea. La parametrización de estos indicadores permite que cuando estén fuera del
3
Introducción
rango considerado normal puedan desencadenar actuaciones de alarma y demanda de
intervención médica asistencial.
Los dispositivos médicos portátiles deben ser capaces de vigilar de forma continuada
los signos vitales de una persona en tiempo real. Este tipo de dispositivos se vuelven
más importantes debido a que la población mundial está envejeciéndose y requiere que
sus condiciones de salud sean evaluadas de forma constante o permanente (19). Las tres
cuartas partes de las muertes por enfermedades crónicas cardiovasculares o pulmonares,
se producen en personas mayores de 60 años, esto unido al envejecimiento cada vez
mayor de la población, obliga a desarrollar dispositivos que sean de pequeño tamaño,
fáciles de utilizar y con un consumo energético eficiente para ser utilizados en la vida
diaria normal. Sin embargo, el problema actual que encontramos en estos dispositivos
es su elevado coste, que en muchas ocasiones lo hace inaccesible para los pacientes o
incluso para los sistemas de salud pública. Si además se hace necesario que el
dispositivo posea capacidades de comunicación para telemonitorización, el precio del
mismo se dispara. Por este motivo, se hace necesaria la investigación para conseguir
desarrollar dispositivos con capacidades de comunicación de bajo coste, motivando de
esta forma a los sistemas de salud pública y a los propios pacientes a implantarlos.
Existe una creciente demanda de dispositivos de pequeño tamaño y bajo coste para ser
utilizados, por ejemplo, para el monitoreo de atención domiciliaria para pacientes de
avanzada edad o con enfermedades crónicas, por lo que se está convirtiendo en una
buena alternativa a la costosa supervisión médica en los hospitales y centros de salud.
También se les está buscando otro tipo de utilidades a estos sensores, como por ejemplo
en el ámbito militar para la supervisión remota de la salud de los soldados, control de
atletas y deportistas, etc. La reducción del consumo de estos sensores así como el
tamaño y el coste son factores críticos. De modo que este tipo de dispositivos ofrecen
un nuevo grado de independencia para aquellos que necesitan vigilancia frecuente de la
salud (21).
Los pulsioxímetros son dispositivos capaces de ofrecer información acerca del estado en
cada momento de dos importantes parámetros para la salud: el pulso o frecuencia
cardíaca y la saturación de oxígeno en sangre. La pulsioximetría es un método rápido y
no invasivo para monitorizar la saturación de oxígeno en la sangre de un paciente.
Actualmente, se considera éste como uno de los signos vitales más importantes del
cuerpo junto a la frecuencia cardíaca. Los oxímetros de pulso proporcionan información
anticipada sobre problemas en los sistemas respiratorio y circulatorio (20).
4
Introducción
• Monitorización continua durante traslados a hospitales de pacientes inestables
por su situación respiratoria y/o hemodinámica.
• En la atención domiciliaria de pacientes neumológicos.
• Es útil para valorar la severidad de una crisis asmática y permitir la
monitorización continua.
Los dispositivos actuales son muy fiables para valores comprendidos entre el 80% y el
100%, pero su fiabilidad disminuye por debajo de estas cifras. El punto crítico que debe
dar la señal de alarma es el de saturaciones por debajo del 95% (inferiores al 90% ó
92% cuando existe patología pulmonar crónica previa). Estos pacientes deben recibir
tratamiento de forma inmediata, lo que pone de relevancia la utilidad de un sistema de
monitorización de pulsioximetría en tiempo real dentro del ámbito de la eSalud. Sin
embargo, los dispositivos de mercado carecen de funciones de gestión de los datos,
aspecto normalmente limitado por el tamaño y consumo de energía. El envío
inalámbrico de la información es otra de las premisas para el desarrollo de un sistema de
monitorización en tiempo real, sin embargo, en el mercado existe un número muy
limitado de dispositivos capaces de ofrecer estas prestaciones. Además, su implantación
práctica en un sistema de salud pública resulta inviable como consecuencia de sus
elevados costes.
1.1 Objetivos
5
Introducción
1.2 Estructura del proyecto
Este proyecto está constituido por los siguientes capítulos:
6
Fundamentos
Médicos
del
Proyecto
2.1 HISTORIA
La gasometría requiere tomar una serie de precauciones para obtener unos valores
fiables: reposo del paciente de al menos 10 minutos, prohibición de tomar algunos
medicamentos o fumar el día de la prueba, realizar la prueba a temperatura conocida y
ambiental, etc. Además, los resultados de la gasometría pueden tardar varios minutos,
tiempo que puede ser crítico en casos graves de falta de oxigenación.
7
Fundamentos
Médicos
del
Proyecto
• Los enfermos críticos suelen tener mala perfusión periférica.
En 1949 Wood utilizó una cápsula a presión para exprimir la sangre fuera de la oreja y
así obtener la saturación absoluta de oxígeno cuando la sangre era readmitida. Este
dispositivo no llegó a ser usado clínicamente.
La pulsioximetría fue desarrollada en 1974, por Takuo Aoyagi y Michio Kishi, usando
la relación de absorción de luz roja a infrarroja de componentes pulsantes en el sitio de
medición. Este dispositivo fue comercializado por Biox en 1981.
Es un tipo de tejido conjuntivo especializado, con una matriz coloidal líquida y una
constitución compleja. Tiene una fase sólida (elementos formes), que incluye a los
eritrocitos (o glóbulos rojos), los leucocitos (o glóbulos blancos) y las plaquetas, y una
fase líquida, representada por el plasma sanguíneo.
8
Fundamentos
Médicos
del
Proyecto
La sangre se compone de células y componentes extracelulares. Estas dos fracciones
tisulares vienen representadas por:
• Los elementos formes: son elementos semisólidos y corpúsculos representados
por células y componentes derivados de células.
• El plasma sanguíneo: un fluido traslúcido y amarillento que representa la matriz
extracelular líquida en la que están suspendidos los elementos formes. Este
representa un medio isotónico para las células sanguíneas.
9
Fundamentos
Médicos
del
Proyecto
Debido a este impulso, la sangre se comporta como un fluido pulsátil, lo que nos
permite realizar la medida utilizando el pulsioxímetro.
10
Fundamentos
Médicos
del
Proyecto
2.2.5 Oxigenación tisular
El transporte de oxígeno es vital para los órganos vivos, continuamente se necesita
oxígeno para las reacciones metabólicas que liberan energía a partir de moléculas de
nutrientes. Las células morirán en ausencia de suministro de oxígeno. Para entender
cómo el oxígeno llega a las células, primero revisaremos cómo se transporta el oxígeno
a los tejidos a través de los sistemas circulatorio y respiratorio (28).
La oxigenación de los tejidos puede ser descrita como un proceso en el que los sistemas
respiratorio y cardiovascular cooperan para suministrar oxígeno (O2) y eliminar el
dióxido de carbono (CO2) en el cuerpo por etapas. En el proceso de oxigenación de los
tejidos presentado en la Ilustración 2.3, el sistema respiratorio se encarga del
intercambio de gases en el cuerpo (respiración), mientras que el sistema cardiovascular
porta el oxígeno y dióxido de carbono en la sangre.
2.2.6 Intercambio de oxígeno y dióxido de carbono
En el proceso de oxigenación de los tejidos, la ventilación pulmonar (respiración)
mueve el aire dentro y fuera de los alvéolos de los pulmones a través de una serie de
cavidades y tubos del sistema respiratorio. El aire fluye entre la atmósfera y los
pulmones debido a la alternancia de las diferencias de presión creadas por los músculos
respiratorios (29). La tasa de ventilación está controlada por las neuronas respiratorias
que obtienen retroalimentación de muchos receptores mecánicos y químicos. Por
ejemplo, la tasa de ventilación se acelera durante el ejercicio debido a la mayor
concentración de dióxido de carbono en la sangre.
11
Fundamentos
Médicos
del
Proyecto
La sangre desoxigenada entra en la circulación pulmonar del lado derecho del corazón.
La respiración externa se ocupa de la difusión de oxígeno y dióxido de carbono entre los
alvéolos y la sangre en los capilares pulmonares. Los gases se disuelven y reaccionan de
acuerdo con su presión parcial, P, que se define como la presión que el gas tendría si
fuera el único gas presente en el volumen. La diferencia en las presiones parciales entre
dos regiones inicia la difusión del flujo de moléculas de gas a partir de una región de
mayor presión parcial a una región de menor presión parcial. Mientras que el aire
inspirado en los alvéolos tenga mayor presión parcial de oxígeno que en el capilar
pulmonar, el oxígeno se difunde a través de la membrana alveolocapilar a la sangre
desoxigenada hasta que se alcanza el equilibrio de las presiones parciales. Al mismo
tiempo, el dióxido de carbono se difunde en la dirección opuesta para alcanzar el
equilibrio. La tasa de cambio de gas depende de la diferencia de presión parcial, área
superficial, la distancia de difusión y la solubilidad y el peso molecular de los gases.
12
Fundamentos
Médicos
del
Proyecto
La curva de disociación de oxígeno se muestra en la Ilustración 2.4 y presenta el nivel
de saturación de oxígeno de la hemoglobina como una función de la presión parcial de
oxígeno (PO2) o, en otras palabras, la afinidad del oxígeno para la hemoglobina. La
forma de la curva tiene ventajas fisiológicas. La parte superior plana significa que, a
pesar de cambios relativamente altos en PO2 en la respiración externa el nivel de
saturación será alto. Normalmente el nivel de PO2 de la sangre oxigenada en las arterias
es de unos 100 mmHg. La parte inferior empinada significa que grandes cantidades de
oxígeno pueden ser liberadas sin una gran caída en PO2 capilar durante la respiración
interna. El PO2 de la sangre desoxigenada en venas es de aproximadamente 40 mmHg.
Durante el ejercicio o la mayor actividad metabólica, la presión parcial puede disminuir
a cerca de 20 mmHg.
13
Fundamentos
Médicos
del
Proyecto
El oxígeno y la hemoglobina se combinan en una reacción fácilmente reversible para
formar oxihemoglobina (HbO2). Después de que la primera molécula de oxígeno se une
a un hemo de la molécula de hemoglobina, es más fácil para otras moléculas de oxígeno
unirse a los otros hemos. Esto es cierto también para la reacción inversa.

𝑅𝐻𝑏 ℎ𝑒𝑚𝑜𝑔𝑙𝑜𝑏𝑖𝑛𝑎 𝑟𝑒𝑑𝑢𝑐𝑖𝑑𝑎 + 𝑂! 𝑜𝑥í𝑔𝑒𝑛𝑜 ↔ 𝐻𝑏𝑂! (𝑜𝑥𝑖ℎ𝑒𝑚𝑜𝑔𝑙𝑜𝑏𝑖𝑛𝑎)
14
Fundamentos
Científicos
y
Tecnológicos
del
Proyecto
3 Fundamentos Científicos y
Tecnológicos del Proyecto
La pulsioximetría se basa fundamentalmente en dos principios: el primero de ellos
corresponde a que la oxihemoglobina y la hemoglobina reducida presentan un nivel de
absorción de luz roja e infrarroja diferente (espectrofotometría), y el otro es que el
volumen de sangre arterial, y por tanto la absorción de luz por dicha sangre, varían con
el pulso arterial (pletismografía).
Para poder determinar la saturación de oxígeno se hace pasar luz roja e infrarroja a
través de un tejido arterial midiendo las variaciones de la absorción de luz durante el
ciclo pulsátil. Normalmente, el pulsioxímetro se coloca en un dedo de la mano o en el
lóbulo de la oreja. Esto conlleva a que la luz tiene que atravesar, además de la sangre
oxigenada y la reducida, otros tejidos como huesos, uñas y piel, como se muestra en la
Ilustración 3.1 (27).
15
Fundamentos
Científicos
y
Tecnológicos
del
Proyecto
3.1 LEY DE BEER-LAMBERT
En la oximetría de pulso se calcula el porcentaje de saturación de oxígeno utilizando la
absorción de luz. La luz que emiten los dos diodos LED atraviesa el sensor y es recibida
por el fotodetector.
Cuando introducimos el dedo entre los emisores y el receptor, la luz tendrá que
atravesarlo para alcanzar al detector. Una parte de la luz será absorbida por el dedo y
otra parte llegará al fotodetector. La cantidad de luz que es absorbida por el dedo
depende de tres propiedades:
o La concentración de la sustancia que absorbe la luz
o La longitud de la trayectoria en la sustancia que absorbe la luz
o La hemoglobina reducida y la oxihemoglobina absorben luz roja e infrarroja
de forma diferente
En la Ilustración 3.2 los vasos sanguíneos de los dedos tienen el mismo diámetro, pero
uno de ellos tiene una baja concentración de hemoglobina y el otro tiene alta
concentración. Cada molécula de hemoglobina absorbe parte de la luz, por lo que a más
hemoglobina por unidad de superficie, mayor será la luz absorbida. Esa propiedad se
describe en una ley física:
Al medir la cantidad de luz que llega al fotodetector, el pulsioxímetro estima cuánta luz
ha sido absorbida.
16
Fundamentos
Científicos
y
Tecnológicos
del
Proyecto
* La cantidad de luz absorbida es proporcional a la longitud de la trayectoria de la luz
La luz de los emisores tiene que atravesar la arteria. La luz realiza un camino más corto
en la arteria más estrecha y un camino más largo en la más ancha. Aunque la
concentración de hemoglobina por unidad de superficie es la misma en ambas arterias,
la luz se encuentra con más hemoglobina en la arteria más ancha, ya que viaja un
recorrido más largo. Por tanto, cuanto más largo sea el camino a recorrer, mayor
cantidad de luz se absorbe. Esta propiedad se describe en otra ley física:
El sensor del pulsioxímetro emite luz en dos longitudes de onda. De acuerdo a los LEDs
emisores mostrados en el apartado anterior, tendremos luz roja de 660 nm de longitud
de onda y luz infrarroja de 940 nm.
17
Fundamentos
Científicos
y
Tecnológicos
del
Proyecto
El fotodetector mida la cantidad de luz roja e infrarroja que pasa a través de los tejidos
para determinar la cantidad de luz absorbida por la hemoglobina oxigenada y por la
hemoglobina reducida. Cuando la proporción de HbO2 aumenta en sangre, la absorción
de luz roja disminuye mientras que la absorción de luz infrarroja aumenta. Como se ha
explicado en el Capítulo 2, se calcula la proporción entre la absorción de la luz roja y la
de la luz infrarroja (relación de absorción). Usando esta relación, se puede calcular la
saturación de oxígeno.
El pulsioxímetro debe analizar la sangre arterial sin tener en cuenta la absorción de luz
debida a los demás tejidos. En los casos en que el dedo sea delgado, los tejidos absorben
poca luz, sin embargo con un dedo más grueso, la absorción de luz será mayor.
El oxímetro de pulso será capaz de analizar sólo la sangre arterial, ya que es lo único
pulsátil o variable en el dedo (AC). El resto es no pulsátil o constante (DC):
18
Fundamentos
Científicos
y
Tecnológicos
del
Proyecto
Ilustración 3.5 Absorción de luz debida a la sangre arterial pulsátil y a los tejidos circundantes
La señal pulsátil es, en realidad, muy pequeña comparada con la parte constante. Es del
orden del 1% o del 2% de la señal total (30). De toda la luz que pasa a través del dedo,
es esta pequeña parte pulsátil la única que analiza el oxímetro de pulso.
A partir de esta razón, utilizando métodos empíricos, puede realizarse una estimación de
la saturación de oxígeno mediante la siguiente fórmula:
𝐻𝑏𝑂!
𝑆𝑎𝑂! = ∙ 100
𝐻𝑏𝑂! + 𝐻𝑏
19
Fundamentos
Científicos
y
Tecnológicos
del
Proyecto
𝐼 = 𝐼! 𝑒 !!! !"
!!!,! !! !
𝐼 = 𝐼! 𝑒 ! = 𝐼! 𝑒 !!
La absorbancia a cierta longitud de onda (A) se define como el negativo del logaritmo
neperiano de la fracción de luz que pasa a través de la muestra, denominada transmisión
T. Combinando esto con la ecuación anterior, la absorbancia puede escribirse como:
𝐼
𝐴! = − ln 𝑇 = −𝑙𝑛 = 𝜀!,! 𝑐! 𝑙!
𝐼!
!
20
Fundamentos
Científicos
y
Tecnológicos
del
Proyecto
donde a representa todos los componentes del tejido como sangre arterial, sangre
venosa, piel y huesos.
𝑑(𝐴! ) 𝑑𝑙!"#
𝑑𝐴! = ∙ ∆𝑡 = ∙ 𝜀!,!"# ∙ 𝑐!"# ∙ ∆𝑡
𝑑𝑡 𝑑𝑡
Por otro lado, la absorción puede ser evaluada a través de la intensidad transmitida a
través de la sangre arterial:
𝐼(𝑡)
𝑑 −𝑙𝑛 𝐼! 𝐼! 𝑡 𝐴𝐶! 𝐼!"# − 𝐼!"#
𝑑𝐴! = ∙ ∆𝑡 = ∙ ∆𝑡 ≅ =
𝑑𝑡 𝐼 𝑡 𝐷𝐶! 𝐼!"#
21
Fundamentos
Científicos
y
Tecnológicos
del
Proyecto
Durante un pulso, la derivada de la absorción puede ser calculada mediante la
intensidad de la componente de continua (DCλ) y la intensidad de la componente de
alterna (ACλ), las cuales pueden ser calculadas desde el mínimo de transmisión en la
sístole (Imin) y el máximo en la diástole (Imax).
Los oxímetros de pulso convencionales usan LEDs con longitudes de onda de 660 nm
(luz roja) y de 940 nm (luz infrarroja) y un fotodetector para obtener la señal
pletismográfica de una extremidad, normalmente el dedo. Para obtener la saturación de
oxígeno SaO2, necesitamos calcular la razón entre las absorciones de dos longitudes de
onda diferentes (R). R se puede calcular utilizando la siguiente fórmula:
El espesor que añade la sangre arterial en el latido, Δl, supondremos que es igual para
ambas longitudes de onda. Además, supondremos que los dos tipos de hemoglobina
suman el total de la hemoglobina en sangre: cRHb+cHbO2= tHb. Con estas suposiciones,
podemos reescribir la fórmula anterior:
𝜀!"#!"#" − 𝑅 ∙ 𝜀!"#!"#$#
𝑆𝑎𝑂! = −
𝜀!"!! !"#" − 𝜀!"#!"#" − 𝑅 ∙ 𝜀!"!! !"#$# − 𝜀!"#!"#$#
22
Fundamentos
Científicos
y
Tecnológicos
del
Proyecto
En el primero de los métodos, que se muestra en la Ilustración 3.9, se reconocen los
picos y valles de cada ciclo cardíaco y se calcula R mediante la siguiente ecuación:
𝐼! − 𝐼!!!
𝑑𝐴! =
𝐼! + 𝐼!!! 2
Como se verá más adelante, el método que se va a escoger para el cálculo del ratio R va
a ser éste último, ya que va a requerir de menos cálculos y será más sencillo de
implementar en el microcontrolador. Sin embargo, también podría utilizarse el primero
de los métodos, buscando un algoritmo que permita reconocer los picos y los valles en
la señal.
23
Fundamentos
Científicos
y
Tecnológicos
del
Proyecto
𝑆𝑎𝑂! % = 𝑏 − 𝑎 ∙ 𝑅
Con los datos del párrafo anterior y resolviendo las dos ecuaciones con dos incógnitas
llegamos a la ecuación que utilizaremos para calcular el porcentaje de saturación de
oxígeno en función de R:
24
Materiales
y
Métodos
4 Materiales y Métodos
Debido a que el dispositivo debe ser utilizado por cualquier tipo de persona, de forma
independiente a sus condiciones físicas y mentales, la sencillez en su uso es algo
esencial, así como que el coste del dispositivo sea reducido, para que sea accesible a
todo el mundo y motive a los sistemas de salud pública a implantar este tipo de
dispositivos a sus pacientes. También se hace importante el objetivo de que el
dispositivo realice las mediciones en tiempo real sobre todo para casos de pacientes
crónicos, pacientes de riesgo o en estado grave de su enfermedad. El diseño hardware y
software propuesto en este proyecto permitirá realizar medidas en tiempo real sin
necesidad de almacenar datos en el dispositivo. También conseguirá reducir el consumo
al no tener que enviar gran cantidad de datos a una plataforma externa de cálculo, pues
el propio dispositivo realizará los cálculos necesarios, reduciendo en gran medida el
envío de datos al no tener que transmitir las señales pulsátiles. Esto es importante para
los casos en los que el dispositivo tenga que estar funcionando de forma continuada, ya
que el gasto energético de comunicación de los dispositivos en caso de existir, suele ser
del 60%. Esta reducción del consumo permitirá disminuir el número de cargas o
sustituciones de las baterías, consiguiendo un dispositivo menos obstructivo para la vida
del paciente. Dotar de comunicaciones al dispositivo será importante para la transmisión
en tiempo real de los parámetros, pero se reducirá el envío de datos gracias a que no se
enviarán las señales, tan sólo los parámetros ya calculados.
Uno de los objetivos como mejora respecto a los dispositivos de mercado es abaratar el
coste empleando pocos recursos hardware y software, se realizará un diseño basado en
hardware y software libre que además permitirá modularidad, posibilidades de
expansión y mejoras. Los dispositivos de mercado carecen de funciones de gestión de
los datos, normalmente limitado por el tamaño y el consumo de energía. Por esto podría
ser útil, por ejemplo, poder enviar los datos de forma inalámbrica. Utilizar una
plataforma de hardware libre para el diseño, nos permitirá decidir e implementar de
forma sencilla si necesitamos un dispositivo que muestre los valores de forma autónoma
en una pantalla, o si se necesita reducir aún más el tamaño eliminando la pantalla, se
pueda sustituir ésta por un módulo inalámbrico para transmisión de los parámetros hacia
aplicaciones de gestión de los datos. No obstante, como se ha dicho anteriormente, el
envío de datos estaría limitado al envío de los valores calculados por el propio sensor de
forma autónoma, reduciendo el consumo en comunicaciones enormemente.
25
Materiales
y
Métodos
Durante el desarrollo del proyecto, se han utilizado los materiales y métodos descritos a
continuación.
Del estudio de los fundamentos médicos y técnicos se derivan una serie de requisitos
que debe cumplir el dispositivo: 1) que sea portable; 2) autónomo; 3) económico; 4) no
invasivo y sencillo de utilizar.
Para el diseño del hardware del prototipo se ha empleado una metodología iterativa,
diseñando el circuito de cada etapa en un ciclo espiral de diseño y desarrollo, aplicando
correcciones y probando el funcionamiento de cada etapa. Para el diseño de los circuitos
se ha hecho uso del programa informático ORCAD CAPTURE, y para el layout se ha
utilizado ORCAD LAYOUT. La implementación de los circuitos se ha realizado
mediante el uso de una fresadora PCB ProtoMat S62 de LPKF, soldando los
componentes de manera manual. Para el microcontrolador, se ha optado por uno de
plataforma hardware y software abierta, Arduino. La elección de esta plataforma se
debe en gran medida a dos motivos. Uno de ellos es que dispone de un modelo, Arduino
Nano, que se adapta a las especificaciones de tamaño. El otro motivo principal es que al
tratarse de una plataforma de hardware abierta, existen diversos fabricantes por lo que
es posible conseguirlo a bajo coste. Otra ventaja de esta plataforma es la versatilidad y
26
Materiales
y
Métodos
modularidad que ofrece, así como la sencillez de programación y la compatibilidad con
todos los sistemas operativos.
27
Resultados
5 Resultados
En este capítulo se van a mostrar los resultados obtenidos. En una primera parte de este
capítulo se detalla el diseño y la implementación del prototipo de pulsioxímetro
dividiéndolo en tres bloques principales: sensor óptico, microcontrolador y circuito
acondicionador de la señal.
En la segunda parte de este capítulo se muestran las señales y los resultados obtenidos,
realizando las pruebas de validación técnica del dispositivo. Primeramente, se muestran
los resultados obtenidos en el laboratorio, utilizando el osciloscopio se valida el
funcionamiento del circuito etapa a etapa. Posteriormente, se muestran las señales
capturadas y digitalizadas por el microcontrolador. Se describen los códigos
programados en el microcontrolador que realizan el cálculo de la frecuencia cardíaca y
de la saturación de oxígeno y finalmente se valida el funcionamiento del dispositivo
completo comparando los resultados con los de un dispositivo de mercado.
Todos los componentes anteriores influirán en el coste total del dispositivo, así como en
el tamaño y en el consumo energético del mismo, factores importantes en el diseño.
En el sensor del pulsioxímetro los LEDs emisores se montan de forma que su emisión
está dirigida perpendicularmente a través del dedo al fotodetector, tal como se muestra
en la Ilustración 5.2.
Los emisores LED utilizados para el pulsioxímetro son del fabricante Farnell y tienen
las siguientes características:
29
Resultados
LED EMISOR ROJO (LUMEX SSL-LXA228SRC-TR11)
LER ROJO
Tamaño de bulbo 1,9 mm
Corriente directa 20 mA
Tensión directa 1,7 V
Color Rojo
Longitud de onda 660 nm
Ángulo de visión 25°
LER INFRARROJO
Tamaño de bulbo 1,5 mm
Corriente directa 20 mA
Tensión directa 1,2 V
Color Infrarrojo
Longitud de onda 940 nm
Ángulo de visión 10°
5.1.1.2 Fotodetector
Para detectar la intensidad luminosa que llegará de forma alterna proveniente de los dos
emisores LED, utilizaremos un único fotorreceptor. Éste estará posicionado de forma
perpendicular y opuesta a los emisores, de forma que el dedo quede en medio, entre los
LEDs y el fotodetector. El receptor debe situarse en el mismo plano que los LEDs y a
una pequeña distancia de ellos.
El montaje debe estar protegido de luces externas, en especial de luces con longitudes
de onda dentro del rango al cual sea sensible el fotodetector.
FOTODETECTOR
Longitud de onda de sensibilidad pico 850 nm
Rango espectral 400 - 1100 nm
Corriente oscura 2 nA
Tensión directa 1,3 V
Ángulo de sensibilidad 60°
30
Resultados
5.1.2 Microcontrolador
El diseño del hardware que se propone en este proyecto tiene como objetivo minimizar
tanto el precio del dispositivo como el tamaño. El elemento de hardware más importante
y que más afecta a las dos características anteriores es el microcontrolador. Además, se
buscaba un controlador que fuese sencillo de manejar y programar y que fuese flexible a
la hora de realizar mejoras o ampliación de funciones del dispositivo. Estas
características las ofrece una plataforma abierta, de hardware y software libre como
Arduino.
Arduino puede tomar información del entorno a través de sus entradas analógicas y
digitales conectadas a toda una gama de sensores y puede afectar a aquello que le rodea
controlando luces, motores y otros actuadores.
Las placas pueden ser hechas a mano o bien compradas montadas de fábrica. El
software se puede descargar de forma gratuita y es compatible con los sistemas
operativos Windows, Mac OS y Linux. Los ficheros de diseño de referencia (CAD)
están disponibles bajo una licencia abierta para que cada uno pueda adaptarlo a sus
necesidades.
31
Resultados
Actualmente Arduino dispone de más de 20 placas diferentes, cada una con sus propias
características en cuanto a tamaño, número de entradas y salidas, funcionalidades y
precio. Para el diseño del pulsioxímetro, se ha elegido la placa Arduino Nano 3.0,
debido a que cubre las necesidades que el proyecto requiere siendo a su vez una de las
placas de menor tamaño y también de menor coste.
5.1.3 Circuito acondicionador de la señal
Como se describió anteriormente necesitamos un emisor de luz (diodos LED) para
emitir luz a través de la zona de interés (dedo) y un fotodetector con el fin de convertir
esta luz incidente transmitida en una señal eléctrica. También se discutió anteriormente
que esta señal eléctrica será una corriente que corresponde a la intensidad de luz (a
mayor intensidad de luz, más alto valor de corriente). Sin embargo, puesto que
queremos trabajar con tensiones, tendremos que convertir esta corriente en una tensión.
Esto se puede lograr fácilmente a través de un convertidor de corriente a voltaje. Este
diseño nos puede dar una señal de salida que corresponde a una señal pulsátil que
podemos utilizar para extraer la lectura de la saturación de oxígeno.
El circuito del fotodetector detecta la luz transmitida a través del dedo y realiza la
conversión de la corriente en una tensión. La luz incidente transmitida a través del dedo
incide en el fotodiodo provocando que la corriente fluya. Esta corriente fluye entonces a
través de una resistencia con un alto valor y crea una tensión en el pin de entrada
analógico A2 del microcontrolador (mirar Anexo F).
32
Resultados
Para obtener esta señal, se ha configurado el Arduino de forma que tome una muestra de
la señal recibida por el fotodetector cada 10 ms. Se han tomado 500 muestras por lo que
la gráfica muestra la señal recibida durante 5 segundos.
33
Resultados
Ilustración 5.6 Señal recibida del LED rojo con el dedo interpuesto entre
emisor y fotodetector
La única ventaja de usar este sistema inicial (mostrado en la Ilustración 5.4) es que es
muy simple y requiere pocos componentes. Nos ahorraría espacio y sería fácil de
implementar. Pero en la señal que estamos obteniendo, es totalmente imposible leer la
señal pulsátil de la que tenemos que obtener los datos.
En primer lugar, sabemos que en la señal pulsátil tenemos una componente de continua
mucho mayor (unas 100 veces) que la componente pulsátil. Si de por sí el valor DC
obtenido es inferior a 10 mV, la componente AC es muy pequeña, entre 0,1 mV y 0,2
mV. Además, el Arduino digitaliza la señal utilizando 10 bits, esto es, un total de 1024
valores. Configurando como tensión de referencia 1,1 V (la más baja que permite
Arduino), tenemos que la componente AC ocupa menos de 1 valor de los 1024 posibles.
Incluso la componente DC ocupa menos de 10 valores. Como se comprueba en la
Ilustración 5.6, la componente AC es tan pequeña que se hace indetectable. Es
necesario amplificar la señal recibida por el fotodetector.
Para evitar estos problemas, procesaremos la señal haciéndola pasar por un circuito
acondicionador previo a transmitir la señal a la placa Arduino.
34
Resultados
5.1.3.1 Conversor de corriente a voltaje
Como se ha descrito en apartados anteriores, será necesario disponer de un emisor de
luz LED, el cual emitirá la luz a través del dedo del paciente, y de un fotodetector para
poder convertir la luz incidente en una señal eléctrica. Esta señal eléctrica será
proporcional a la intensidad de la luz incidente en el fotodetector. Sin embargo, dado
que queremos trabajar con tensiones en lugar de corrientes, es necesario convertir esa
corriente a voltaje. Para ello, utilizaremos un conversor de corriente a voltaje, con el que
obtendremos una señal pulsátil que podremos usar para calcular la saturación de
oxígeno. A continuación se muestran los esquemáticos de los circuitos involucrados en
la transmisión de luz a través del dedo. Tendremos dos circuitos idénticos, uno por cada
LED: rojo e infrarrojo (33).
El primer esquemático muestra el circuito para la emisión de la luz LED que atravesará
el dedo. La fuente de alimentación será la proporcionada por el PIN de 5 voltios del
Arduino, que provocará un flujo de corriente a través de la resistencia y del LED
emisor. Esta corriente alimentará el LED y provocará la producción de luz. La
resistencia de 100 Ω se utiliza para regular la corriente a través del LED y se ha
ajustado para la corriente típica del diodo LED de unos 50 mA.
35
Resultados
El conversor de corriente a tensión también se conoce como amplificador de
transimpedancia. Con la resistencia R como factor de proporcionalidad, la relación entre
la intensidad de entrada y el voltaje de salida es:
𝑉!"#$%" = −𝑅 ∙ 𝐼!"#$%&%
1
𝑓!"#$% !"#$%& =
2𝜋𝑅𝐶
Siguiendo la fórmula anterior, también obtenemos la frecuencia de corte del filtro paso
alto. Combinando una resistencia de 25 KΩ y un condensador de 10 µF, conseguimos
una frecuencia de corte de 0,6 Hz aproximadamente.
36
Resultados
Se ha introducido un seguidor de tensión entre el filtro paso bajo y el filtro paso alto
para eliminar los efectos de carga. La tensión a la salida del seguidor es la misma que la
tensión a la entrada del mismo.
La amplitud actual de la señal es del orden de mV. Puesto que el ruido también está en
el rango de los mV, la relación señal a ruido (SNR) es muy baja. En este caso, las
medidas obtenidas no son fiables. Amplificando la señal, conseguimos aumentar la
relación señal a ruido, por lo que disminuirá el error en las mediciones (33).
𝑅!
𝑉!"#$%" = 𝑉!"#$%&% 1 +
𝑅!
37
Resultados
Con la etapa amplificadora, se ha completado el circuito acondicionador de la señal
pulsátil. A continuación, se muestra el circuito completo, no sin antes recordar que
tendremos dos circuitos idénticos, uno para procesar cada tipo de señal: la del LED rojo
y la del LED infrarrojo:
5.1.3.4 Circuito “Sample & Hold”
En el apartado anterior se ha realizado el diseño del circuito acondicionador para cada
una de las señales pulsátiles (señal de luz roja y señal de luz infrarroja). Para ello, se
había tenido en cuenta que cada LED emisor estaría encendido de forma constante, por
lo que el fotodetector habría estado recibiendo continuamente la mezcla de las señales
roja e infrarroja transmitidas a través del dedo.
Debido a que es necesario que las muestras que se tomen de ambas señales se haga en el
mismo instante de tiempo, hay que buscar la forma de hacerlo sin tener ambos LED
emisores encendidos a la vez.
Esto nos plantea un problema, pues no podemos tener ambos LED emisores encendidos
al mismo tiempo, pues las señales se mezclarían y al recibirlas con el fotodetector no
podríamos separar la parte roja de la infrarroja. Por tanto, esto nos obliga a encender los
LED emisores de forma alterna, mientras uno de ellos está encendido, el otro tiene que
estar necesariamente apagado.
Dado que tenemos que tomar muestras en el mismo instante de tiempo de ambos tipos
de señales, lo que haremos será reducir al máximo el tiempo de separación entre el
encendido de cada LED. Además, el período de encendido y apagado de cada LED será
lo suficientemente pequeño como para tomar el suficiente número de muestras para
poder representar la señal correctamente.
38
Resultados
Vemos que tanto el LED rojo como el infrarrojo se encienden una vez cada
milisegundo, por lo que podemos tomar una muestra de cada tipo de señal en cada
milisegundo, lo que nos permitiría obtener 1000 muestras de la señal en cada segundo.
El tiempo de separación entre el encendido del LED rojo y el encendido del LED
infrarrojo es de 500 microsegundos, por lo que podemos considerar que las muestras de
cada tipo de señal se han obtenido en el mismo instante de tiempo y que la señal no ha
variado entre la toma de la muestra roja y la toma de la muestra infrarroja. Por último, el
tiempo que pasa encendido cada LED en el ejemplo anterior es de 50 microsegundos.
El hecho de tener que ir alternando entre luz roja y luz infrarroja, nos plantea otro
problema a tener en cuenta: el tiempo de carga del circuito desde que se enciende el
LED y hasta que podemos tomar una muestra fiable, antes de apagar el LED y encender
el otro. Y es que ocurre que, cuando apagamos uno de los LED, el circuito y sus
condensadores, empiezan a descargarse, hasta que se enciende el LED contrario, con
otra intensidad de luz diferente. Esto hace imposible tomar muestras de la señal roja e
infrarroja lo suficientemente cercanas en el tiempo como para considerar que se han
tomado en el mismo instante.
El problema anterior nos obliga a dos cosas: por un lado, tenemos que crear dos
circuitos iguales, uno para tratar la señal roja y otro para la infrarroja (como se
comentaba en el apartado 3, en el diseño del circuito acondicionador). Por otro lado, en
cada uno de los dos circuitos, tenemos que conseguir mantener la señal de cada luz
durante los períodos en los que el LED emisor se encuentra apagado, para evitar la
descarga de los condensadores.
39
Resultados
El circuito más habitual de muestreo y retención almacena la carga eléctrica en un
condensador. Además, contiene un interruptor y dos amplificadores operacionales:
Para muestrear la señal de entrada se cierra el interruptor, por lo que queda conectado el
condensador a la salida del amplificador operacional de entrada. La salida de este
amplificador carga o descarga el condensador, según la señal de entrada analógica. Para
mantener la señal se abre el interruptor, desconectando el condensador del amplificador
operacional de entrada. Aunque el condensador presenta corrientes de fuga, la pérdida
de voltaje es mínima dado que es muy poco el tiempo que se mantiene abierto el
interruptor. El tiempo en el que se mantenga abierto el interruptor será el tiempo que
esté apagado el LED de interés más el tiempo que esté encendido el LED contrario. Por
tanto, sólo cerraremos el interruptor cuando esté encendido el LED de interés, momento
en el cual tomaremos una muestra.
El valor del condensador de este circuito, debe ser lo suficientemente pequeño como
para que se cargue rápido y sea capaz de seguir a la señal de entrada, y a su vez, lo
suficientemente grande como para mantener la tensión durante el tiempo en el que el
interruptor está abierto. Para nuestro caso concreto, hemos elegido un valor de 10 uF.
40
Resultados
De este modo, el circuito definitivo queda de la siguiente manera:
Por un lado, se realizaron dos placas para el sensor óptico, una de ellas para los LEDs
emisores y la otra para el fotodetector:
Ilustración 5.15 Placas de circuito impreso
para el sensor óptico
Estas dos placas se montaron enfrentadas la una frente a la otra dentro de una caja
donde poder introducir el dedo entre medio de ellas.
41
Resultados
Por otro lado, se construyó una placa con el circuito analógico acondicionador de la
señal para cada longitud de onda. Se muestra a continuación una de las placas:
42
Resultados
5.1.4 Procesado software de las señales
En los apartados anteriores, hemos implementado los circuitos para emisión de luz roja
e infrarroja, el fotodetector y el circuito para acondicionar la señal de forma que sea
apta para el cálculo del pulso cardíaco y de la saturación de oxígeno en sangre.
Para realizar la lectura del valor de la señal analógica, se utiliza la función analogRead
(pin), la cual lee el valor de tensión en el pin analógico especificado. El conversor
analógico a digital, al ser de 10 bits, convertirá las tensiones entre 0 y 5 voltios a un
número entero entre 0 y 1023. La resolución en la lectura es: 5 voltios/1024 unidades, es
decir, 4.9 mV por unidad. El parámetro de la función analogRead (pin) es el número del
pin de la entrada analógica que queremos leer (0 a 7 para el Arduino Nano).
43
Resultados
El siguiente código en Arduino mantiene encendido el LED emisor de forma constante
(en este caso el rojo, para el infrarrojo sería equivalente) a la vez que va capturando y
enviando por el puerto serie la señal digitalizada (captura una muestra de la señal y la
envía cada 20 milisegundos):
int
LED_R
=
12;
//
LED
ROJO
conectado
en
el
P IN
12
int
LED_IR
=
11;
//
LED
IR
conectado
en
el
PIN
11
int
SENSOR
=
2;
//
SENSOR
conectado
en
el
PIN
analógico
2
int
SENSOR_VALOR_R
=
0;
//
Lectura
del
sensor
para
luz
roja
encendida
int
SENSOR_VALOR_IR
=
0;
//
Lectura
del
sensor
para
luz
infrarroja
encendida
void
setup()
{
pinMode
(LED_R,
OUTPUT);
//
Configuración
del
P IN
LED_R
como
salida
pinMode
(LED_IR,
OUTPUT);
//
Configuración
del
P IN
LED_IR
como
salida
pinMode
(SENSOR,
INPUT);
//
Configuración
del
P IN
SENSOR
como
entrada
analogReference
(DEFAULT);
//
Configuración
de
la
tensión
de
referencia
por
defecto
(5
V)
Serial.begin(9600);
//
Configuración
para
la
transmisión
de
los
datos
por
el
puerto
serie
}
void
loop()
{
digitalWrite
(LED_R,
HIGH);
//
Encendido
del
LED
rojo
SENSOR_VALOR_R
=
analogRead
(SENSOR);
//
Lectura
del
pin
analógico
del
sensor
Serial.println
(SENSOR_VALOR_R);
//
Envío
del
valor
por
el
puerto
serie
delay
(20);
//
Espera
de
20
mseg
antes
de
tomar
la
siguiente
muestra
de
la
señal
}
Además de las funciones explicadas anteriormente, se han utilizado estas otras:
-‐ pinMode (pin, modo): configura el pin especificado para que se comporte como una
entrada (INPUT) o como una salida (OUTPUT).
-‐ digitalWrite (pin, valor): escribe un valor alto (HIGH) o bajo (LOW) en el pin
digital indicado. Si el pin ha sido configurado como salida, el voltaje del valor
HIGH es de 5 voltios y el del valor LOW es de 0 voltios.
-‐ delay (ms): pausa el programa durante el tiempo (en milisegundos) especificado en
el parámetro.
-‐ Serial.begin (rate): abre el puerto serie y fija la velocidad en baudios para la
transmisión de datos en serie. El valor típico para comunicarse con el ordenador es
9600 baudios.
-‐ Serial.println (datos): imprime los datos en el puerto serie, seguido por un retorno
de carro y salto de línea.
El circuito anterior nos va a permitir representar las dos señales pulsátiles de ambas
longitudes de onda, de forma simultánea. Para ello, habrá que modificar el código
introducido en Arduino en el apartado 4.1, de forma que no mantenga encendido de
forma continua sólo uno de los LED emisores, si no que vaya encendiendo y apagando
de forma alterna cada uno de ellos de la forma que se ha explicado en el apartado
anterior.
De esta forma, mientras tenemos el interruptor de uno de los circuitos abierto, estamos
aislando al circuito del resto, y manteniendo la señal que recibía mientras estaba cerrado
gracias al condensador. Así, al tenerlo aislado, no se ve afectado por el encendido del
LED opuesto o por la ausencia de luz en el caso que ambos LEDs estén apagados.
45
Resultados
Para controlar la apertura y el cierre de los interruptores, utilizamos dos pines digitales
del Arduino, configurados como salida (PIN 10 para el interruptor del circuito de la
señal roja y PIN 9 para el de la señal infrarroja). Por otro lado, se han configurado los
pines 6 y 7 como entrada analógica para recibir la señal roja y la señal infrarroja
respectivamente. El código implementado en Arduino puede consultarse en el Anexo A.
Ahora que se han digitalizado las dos señales pulsátiles con la calidad suficiente,
estamos en condiciones de poder calcular tanto el pulso cardíaco como el porcentaje de
saturación de oxígeno. Realizar estos cálculos va a requerir de un procesamiento de la
señal que realizará el propio microcontrolador, para encontrar y medir los puntos claves
de la señal y el instante en el que ocurren, y así disponer de los datos necesarios para
calcular dichos parámetros.
5.1.4.3 Cálculo del pulso cardíaco
Como definimos en el capítulo primero, el pulso cardíaco es el número de contracciones
o pulsaciones del músculo cardíaco por unidad de tiempo. En nuestro caso, utilizaremos
como unidad de tiempo el minuto, por tanto, mediremos el pulso cardíaco como el
número de pulsaciones por minuto.
Es sencillo ver cómo el pulso cardíaco está relacionado con el período de la señal
pulsátil que hemos obtenido en el capítulo anterior. Un período completo de la señal
pulsátil se corresponde con una pulsación del corazón. Midiendo el tiempo que dura un
período, podemos conocer el número de pulsaciones por minuto.
Ilustración 5.18 Duración de un pulso cardíaco
Para calcular el tiempo que dura una pulsación, podemos hacerlo de diferentes formas:
46
Resultados
Encontrar los máximos y mínimos de esta señal puede ser una tarea complicada y que
implique más líneas de código en Arduino, lo que conlleva también más complejidad y
un mayor tiempo de procesado. Sin embargo, si a la hora de calcular el porcentaje de
saturación de oxígeno nos decantásemos por el método de picos y valles para el cálculo
del ratio, entonces podríamos utilizar los máximos y mínimos encontrados para calcular
el pulso cardíaco. No va a ser el caso, pues como veremos en el próximo apartado,
utilizaremos el método de absorción delta para el cálculo del ratio.
Visto esto, evitaremos por tanto buscar máximos y mínimos en la señal y calcularemos
el pulso cardíaco buscando los pasos por cero de la señal. En concreto, como nuestra
señal no está centrada en cero, será necesario calcular la media de la señal y buscar los
puntos en los que la señal corta el valor medio.
Para encontrar un período completo, buscaremos los momentos en los que la señal pase
de estar por encima de la media a estar por debajo de la misma. Si se quisiera, también
valdría buscar los puntos contrarios, es decir, los puntos en los que la señal pase de
estar por debajo de la media a estar por encima de ella:
Ilustración 5.19 Medición de período de la señal roja
Necesitaremos una sola de las dos señales pulsátiles para realizar el cálculo de la
frecuencia cardíaca, se ha elegido la señal roja.
Debemos implementar en Arduino un código que sea capaz de realizar, por un lado, el
cálculo de la media de la señal y, por otro lado, encuentre los momentos en que la señal
pasa de estar por encima de la media a estar por debajo. Será capaz de medir el tiempo
transcurrido entre dos de estos instantes que sean consecutivos. Arduino medirá este
tiempo en milisegundos, por lo que la fórmula final para obtener la frecuencia cardíaca
en pulsaciones por minuto será:
47
Resultados
segundo milisegundo se hará lo mismo con el LED infrarrojo. Esto se hará de manera
continuada, sin embargo, no obtendremos una muestra de cada señal pulsátil cada ciclo,
si no que esperaremos 100 ciclos entre cada muestra de las señales. Por tanto,
tendremos una muestra de cada señal cada 200 milisegundos. El código implementado
en Arduino para esto se muestra a continuación:
//
Ciclos
de
encendido
y
apagado
alterno
de
los
LEDs
emisores
//
Cada
ciclo
tiene
una
duración
total
de
2
milisegundos
(100
ciclos
=
200
milisegundos)
for
(CICLOS
=
0;
CICLOS
<=
100;
CICLOS++)
{
digitalWrite
(LED_R,
HIGH);
//
Encendido
del
LED
rojo
delayMicroseconds
(10);
//
Espera
para
encendido
completo
del
LED
digitalWrite
(INTERRUPTOR_R,
HIGH);
//
Cierre
del
interruptor
rojo
delayMicroseconds
(960);
//
Espera
para
estabilización
de
señal
SENSOR_VALOR_R
=
analogRead
(SENSOR_R);
//
Lectura
del
pin
analógico
del
sensor
rojo
digitalWrite
(INTERRUPTOR_R,
LOW);
//
Apertura
del
interruptor
rojo
delayMicroseconds
(10);
//
Espera
para
apertura
completa
del
interruptor
digitalWrite
(LED_R,
LOW);
//
Apagado
del
LED
rojo
delayMicroseconds
(20);
digitalWrite
(LED_IR,
HIGH);
//
Encendido
del
LED
infrarrojo
delayMicroseconds
(10);
//
Espera
para
encendido
completo
del
LED
digitalWrite
(INTERRUPTOR_IR,
HIGH);
//
Cierre
del
interruptor
infrarrojo
delayMicroseconds
(960);
//
Espera
para
estabilización
de
señal
SENSOR_VALOR_IR
=
analogRead
(SENSOR_IR);
//
Lectura
del
pin
analógico
del
sensor
IR
digitalWrite
(INTERRUPTOR_IR,
LOW);
//
Apertura
del
interruptor
infrarrojo
delayMicroseconds
(10);
//
Espera
para
apertura
completa
del
interruptor
digitalWrite
(LED_IR,
LOW);
//
Apagado
del
LED
infrarrojo
delayMicroseconds
(20);
}
CICLOS
=
0;
NUM_MUESTRAS
=
NUM_MUESTRAS+1;
//
Se
coge
una
muestra
cada
200
milisegundos
48
Resultados
media de todo los períodos. Éste valor medio será el que utilicemos finalmente para el
cálculo de las pulsaciones por minuto.
El código en Arduino que hemos creado para encontrar los cruces y calcular la
frecuencia cardíaca es el siguiente:
//
El
valor
del
pulso
se
calcula
y
se
m uestra
cada
7
segundos
if
(NUM_MUESTRAS
<=
35)
{
MEDIA
=
(MEDIA*(NUM_MUESTRAS-‐1)
+
SENSOR_VALOR_R)/NUM_MUESTRAS;
//
Durante
los
primeros
3
segundos
sólo
se
ha
calculado
la
media
de
la
señal
roja
//
Si
han
pasado
los
3
primeros
segundos,
empezamos
a
buscar
los
cruces
if
(NUM_MUESTRAS
>
15)
{
if
(SENSOR_VALOR_R_ANT
>
MEDIA
&&
SENSOR_VALOR_R
<
MEDIA)
{
//
Se
detecta
un
cruce
TIEMPO_INI_PULSO
=
millis();
//
Se
captura
el
tiempo
en
el
que
se
produce
el
cruce
if
(NUM_CRUCES
==
0)
{
//
Si
es
el
primer
cruce
encontrado
TIEMPO_INI_PULSO_ANT
=
TIEMPO_INI_PULSO;
}
if
(NUM_CRUCES
>=
1)
{
//
A
partir
del
segundo
cruce
encontrado
//
Se
calcula
el
período
entre
este
cruce
y
el
anterior
PERIODO
=
TIEMPO_INI_PULSO
-‐
TIEMPO_INI_PULSO_ANT;
TIEMPO_INI_PULSO_ANT
=
TIEMPO_INI_PULSO;
//
Se
calcula
una
media
entre
los
períodos
encontrados
hasta
el
momento
MEDIA_PERIODOS
=
(MEDIA_PERIODOS*(NUM_CRUCES-‐1)
+
PERIODO)/NUM_CRUCES;
}
NUM_CRUCES
=
NUM_CRUCES+1;
}
}
}
else
{
//
Calculamos
y
mostramos
el
valor
del
pulso
cardíaco
PULSO_CARD
=
60000/MEDIA_PERIODOS;
Serial.print
("Pulso
cardiaco
=
");
Serial.println
(PULSO_CARD);
}
49
Resultados
Este ratio se podía calcular por varios métodos, el más usual es el de picos y valles. Sin
embargo, nos vamos a decantar por el método de absorción delta, pues es más sencillo
de implementar en el microcontrolador y además requiere de menos carga
computacional. Aprovechando que, como hemos dicho en la sección anterior,
obtenemos una muestra de cada tipo de señal cada 200 milisegundos, tan sólo
tendremos que ir almacenando la muestra anterior y la muestra actual para poder
calcular la absorción delta de cada longitud de onda mediante la siguiente fórmula:
𝐼! − 𝐼!!!
𝑑𝐴! =
𝐼! + 𝐼!!! 2
Por tanto, cada 200 milisegundos, con cada muestra, iremos calculando un ratio. De esta
forma, durante los 4 segundos que dura el proceso de cálculo, obtendremos muchos
ratios, por lo que calcularemos la media de todos ellos y será esta media la que
usaremos para el cálculo del porcentaje de saturación de oxígeno:
Las líneas de código que serán cargadas en Arduino para realizar estos cálculos son las
siguientes:
//
El
valor
de
la
saturación
de
oxígeno
se
calcula
y
se
muestra
cada
7
segundos
if
(NUM_MUESTRAS
<=
35)
{
//
Si
han
pasado
los
3
primeros
segundos,
empezamos
a
buscar
los
cruces
if
(NUM_MUESTRAS
>
15)
{
//
Utilizamos
el
método
de
absorción
delta
para
el
cálculo
del
ratio
dA_R
=
(SENSOR_VALOR_R-‐SENSOR_VALOR_R_ANT)*2/(SENSOR_VALOR_R+SENSOR_VALOR_R_ANT);
dA_IR
=
(SENSOR_VALOR_IR-‐SENSOR_VALOR_IR_ANT)*2/(SENSOR_VALOR_IR+SENSOR_VALOR_IR_ANT);
RATIO_PROV
=
dA_IR/dA_R;
//
Si
el
ratio
provisional
sale
infinito,
no
se
tiene
en
cuenta
y
se
usa
el
ratio
anterior
para
la
media
if
(RATIO_PROV
!=
INFINITY)
{
RATIO
=
R ATIO_PROV;
}
//
Se
calcula
una
media
entre
los
ratios
calculados
hasta
el
momento
MEDIA_RATIO
=
(MEDIA_RATIO*(NUM_MUESTRAS-‐16)+RATIO)/(NUM_MUESTRAS-‐15);
SENSOR_VALOR_R_ANT
=
SENSOR_VALOR_R;
SENSOR_VALOR_IR_ANT
=
SENSOR_VALOR_IR;
}
}
else
{
//
Calculamos
y
mostramos
el
valor
del
porcentaje
de
saturación
de
oxígeno
SAO2
=
115-‐(30*MEDIA_RATIO);
Serial.print
("Saturacion
de
oxigeno
=
");
Serial.println
(SAO2);
}
50
Resultados
también se desarrolló un programa utilizando el método de picos y valles. Pasamos a
explicarlo brevemente y se puede consultar el código en el Anexo A.
Tendremos dos variables auxiliares, cuando una de ellas está a 1, la otra estará a 0. Van
a indicar si estamos buscando un máximo o si estamos buscando un mínimo, según cuál
esté a 1 y cuál a 0. Si detectamos un cruce y pasamos de estar por encima de la media a
estar por debajo, y está activa la variable que indica que buscamos un máximo,
almacenamos como máximo definitivo el último valor de máximo provisional.
Hacemos lo mismo para guardar un mínimo, cuando detectemos que la señal cruza de
estar por debajo de la media a estar por encima y la variable de buscar mínimo está
activa.
Una vez encontrados los máximos y mínimos, y habiendo almacenado los instantes en
que ocurren, podemos calcular el período de igual forma que hemos visto para el
método de absorción delta, midiendo la distancia temporal entre ellos. Con esto
obtenemos el pulso cardíaco.
Para la saturación de oxígeno, al tener los máximos y los mínimos, podemos calcular
fácilmente el valor de las amplitudes de las señales roja e infrarroja, dividirlas entre sí
para obtener el ratio y con éste, calcular la saturación de oxígeno.
51
Resultados
En el siguiente esquemático mostramos de nuevo la primera etapa del circuito, que
consiste en la conversión de corriente a voltaje:
52
Resultados
Como podemos comprobar, la señal pulsátil se superpone a una componente de
continua que es aproximadamente 200 veces mayor que la amplitud de la señal alterna.
Esto supone un problema a la hora de amplificar la señal, pues también se amplificaría
el nivel de continua, saturando rápidamente el amplificador operacional. Es necesario
eliminar el nivel de continua antes de realizar la amplificación y transmisión de la señal.
Además, existe gran cantidad de ruido, que puede atribuirse a varias fuentes: ruido de la
línea de energía, movimiento del dedo, ruidos por fuentes de luz del entorno, etc. Por
tanto, para evitar que el ruido corrompa la señal, y para evitar amplificarlo, será
necesario eliminarlo antes de las etapas de amplificación y transmisión.
Para realizar esto, recordamos la etapa de filtrado paso de banda diseñada en el capítulo
anterior:
53
Resultados
Se puede comprobar cómo el filtro paso bajo está eliminando el ruido, obteniendo una
señal mucho más limpia en la que se aprecia perfectamente la componente pulsátil (se
están eliminando todas las frecuencias por encima de 5 Hz).
Antes de pasar a ver la señal obtenida tras el filtro paso alto, vamos a indicar que la
tensión de referencia que hemos utilizado en todo momento para este circuito no ha sido
tierra, si no 3.3 voltios. Esta tensión la obtenemos de un PIN del microcontrolador
Arduino, que nos da directamente este valor. La razón para utilizar esta tensión de
referencia en lugar de tierra es que nos sitúa la señal de interés alrededor de 3.3 V en
todo momento, en lugar de alrededor de 0 V, tras eliminar el offset. Como estamos
alimentando los amplificadores operacionales con una tensión de +5 V, la tensión
máxima que son capaces de sacar ronda los 4.5 V, y la mínima de unos 2 V, por tanto, si
eliminamos la componente de continua y la señal de interés se mueve alrededor de 0 V,
la señal no se amplifica. Esta es la razón de centrar la señal en el punto medio entre el
valor máximo y mínimo que son capaces de sacar los amplificadores operacionales,
eligiendo el valor 3.3 V porque podemos obtenerlo fácilmente directamente de un PIN
del Arduino. Esto nos permite una amplitud pico a pico máxima de la señal de interés de
2 V aproximadamente, suficiente para realizar lecturas correctas, teniendo en cuenta que
la entrada analógica del Arduino digitaliza en 1024 valores (10 bits) una señal de
entrada entre 0 y 5 voltios, una señal de 2 V de amplitud tiene una resolución de unos
410 valores (cada valor representa 4,8 mV).
Una vez aclarado esto, pasamos a mostrar la señal obtenida en el osciloscopio tras
aplicar el filtrado paso alto:
54
Resultados
El resultado del filtrado es el mismo, independientemente de la tensión que se utilice
como referencia, con la única diferencia que la señal de salida estará centrada en el
valor que se esté utilizando como referencia (con algún desplazamiento provocado por
lo propios componentes del circuito y por los amplificadores operacionales). Se ha
optado por utilizar la de 3.3 V por dos motivos ya explicados: se puede obtener
fácilmente de un PIN del Arduino y además es la tensión media entre las tensiones
máxima y mínima que soportan los amplificadores operacionales con una alimentación
de 5V, lo que permite que podamos amplificar lo máximo posible antes de que se llegue
a saturar por arriba o por abajo.
Por último, podemos comprobar que la amplitud de la señal a la salida del filtro paso
banda sigue siendo pequeña, en torno a 9 o 10 mV, por lo que será necesario añadir una
etapa amplificadora.
55
Resultados
Podemos comprobar que hemos pasado a obtener una amplitud pico a pico de la señal
de unos 1.20 V. Tras esta etapa, ya disponemos de una señal pulsátil con calidad
suficiente como para poder realizar los cálculos del pulso cardíaco y de la saturación de
oxígeno.
5.2.2 Validación técnica en Arduino
Las señales mostradas hasta el momento, han sido obtenidas en el laboratorio con el
osciloscopio, midiendo directamente a las salidas de los diferentes bloques que forman
el circuito acondicionador.
Ilustración 5.27 Señal pulsátil digitalizada por Arduino (LED rojo encendido)
56
Resultados
La señal pulsátil obtenida encendiendo el LED infrarrojo es la siguiente:
Ilustración 5.28 Señal pulsátil digitalizada por Arduino (LED infrarrojo encendido)
Con sólo una de estas señales ya digitalizada, podríamos calcular sin problemas el pulso
cardíaco. Sin embargo, para calcular la saturación de oxígeno tenemos que introducir la
segunda señal, y además es necesario que las muestras que se tomen de ambas señales
se haga en el mismo instante de tiempo.
Ilustración 5.29 Señales pulsátiles roja e infrarroja digitalizadas por Arduino
Ahora que se han obtenido las dos señales pulsátiles con la calidad suficiente, estamos
en condiciones de poder calcular tanto el pulso cardíaco como el porcentaje de
saturación de oxígeno. Realizar estos cálculos va a requerir de un procesamiento de la
57
Resultados
señal que realizará el propio microcontrolador y que han sido explicados en los
apartados 5.1.4.3 y 5.1.4.4, para encontrar y medir los puntos claves de la señal y el
instante en el que ocurren, y así disponer de los datos necesarios para calcular dichos
parámetros.
58
Resultados
Podemos ver que los valores habituales de saturación de oxígeno en sangre para
personas sin afecciones pulmonares suele estar alrededor del 99%. A continuación,
mostramos los valores obtenidos en las pruebas con el segundo individuo:
Ilustración 5.31 Valores obtenidos de pulso cardíaco y porcentaje saturación de oxígeno
individuo 2
Si comparamos los valores obtenidos con el prototipo diseñado en ambas pruebas con
los valores que se obtienen del dispositivo comercial CMS50DL de la marca Quirumed,
observamos que los valores obtenidos son prácticamente los mismos:
Individuo
1
Individuo
2
Dispositivo
Dispositivo
Prototipo
diseñado
Prototipo
diseñado
comercial
comercial
Pulso
SaO2
(%)
Pulso
SaO2
(%)
Pulso
SaO2
(%)
Pulso
SaO2
(%)
85
99
86,43
99,79
73
99
72,01
99,48
84
99
86,43
98,43
68
98
69,14
97,80
86
99
86,43
99,65
65
99
64,82
98,91
92
99
92,59
99,62
64
99
64,82
99,41
59
Resultados
PRECIO
COMPONENTE MODELO UNIDADES PRECIO
UNITARIO
LED EMISOR ROJO LUMEX SSL-LXA228SRC-TR11 1 0,29 € 0,29 €
OXYM6000USB USB 80 €
60 Conclusiones
6 Conclusiones
El objetivo del presente proyecto ha sido el diseño e implementación de un dispositivo
portable para medir el porcentaje de saturación de oxígeno y poder detectar alteraciones
en el nivel de oxígeno en sangre del paciente. Se buscaba que este dispositivo, además
de portable, fuese sencillo de manejar y sobretodo de bajo coste. Por tanto, se
seleccionó una plataforma de hardware y software libre, Arduino, lo que ha permitido
que el dispositivo que se ha diseñado sea completamente autónomo y modular. El
diseño de este primer prototipo está formado por tres módulos principales: el sensor
óptico que produce las señales pulsátiles, el circuito analógico acondicionador para
mejorar la calidad de las señales y el microcontrolador para realizar el procesado
software y el cálculo de los parámetros.
Por una parte, la utilización del circuito Sample & Hold permite reducir el consumo
energético ya que los LEDs pueden ser encendidos durante espacios más breves de
tiempo, pudiéndolos mantener apagados la mayor parte del tiempo. Por otro lado, y
teniendo en cuenta que el dispositivo está ideado para su uso en un sistema de
monitorización en tiempo real, se consigue un importante ahorro energético evitando
tener que enviar las señales oximétricas para calcular los parámetros en unidades de
procesamiento externas, enviando tan sólo los parámetros ya calculados cada cierto
tiempo en caso necesario, aprovechando la inteligencia de la que hemos dotado al
dispositivo. Teniendo en cuenta que el consumo de energía en comunicaciones puede
suponer un 60% del total, el ahorro energético que conseguimos es importante.
61 Conclusiones
el método genérico para el cálculo de la saturación de oxígeno, se consigue un menor
tiempo de procesado software y se posibilita el procesado en tiempo real.
Finalmente, lo más importante es que se ha conseguido una gran reducción del coste
gracias a lo explicado en párrafos anteriores. Además, el componente que suele
encarecer más este tipo de dispositivos es el microcontrolador utilizado, que en este
caso, al tratarse de hardware libre, lo implementan muchos fabricantes a costes muy
competitivos, entre 6 y 7 Euros aproximadamente para el Arduino Nano. Para el resto
de componentes (resistencias, condensadores, amplificadores operacionales, diodos y
fotodetector) se han empleado componentes genéricos de bajo coste. De este modo
aseguramos la sostenibilidad económica del dispositivo desarrollado y una
diferenciación importante en coste respecto a los dispositivos actuales de mercado.
Incluso dotándole de comunicaciones inalámbricas, el coste del prototipo diseñado está
muy por debajo del precio de otros dispositivos, aproximadamente 50 € para nuestro
prototipo (incluyendo costes de fabricación y distribución) frente a 500 € para los de
mercado.
Por otro lado, se propone también añadir un módulo para transmisión inalámbrica de los
dos parámetros calculados. Éste podría ser un módulo WIFI o bien Bluetooth. De esta
forma, además de consultar los parámetros en el display del pulsioxímetro, se podrían
enviar los datos a un ordenador, a un centro médico o a una aplicación de móvil por
ejemplo. Así el paciente podría llevar un seguimiento o bien se podría alertar al médico
en caso de que se detectasen niveles anormales en el nivel de oxígeno.
Además, el hecho de haber optado por una plataforma de hardware y software libre,
ofrece muchas posibilidades de mejoras y ampliación, pues existen diferentes módulos
para conectar a Arduino como los comentados anteriormente.
62 Conclusiones
El prototipo diseñado posee las mismas limitaciones que los dispositivos de mercado,
como pueden ser:
-‐ Anemia severa: niveles de hemoglobina inferiores a 5 mg/dl pueden causar lecturas
falsas.
-‐ Interferencias con otros aparatos electrónicos.
-‐ Los movimientos del dispositivo, que se suele colocar en un dedo de la mano,
afectan a la fiabilidad.
-‐ Contrastes intravenosos.
-‐ Luz ambiental intensa.
-‐ Mala perfusión periférica debida a frío ambiental, hipotensión, vasoconstricción,
etc.
-‐ Obstáculos a la absorción de la luz: lacas de uñas, pigmentación de la piel.
-‐ Dishemoglobinemias: la carboxihemoglobina (intoxicación por monóxido de
carbono) y la metahemoglobina absorben longitudes de onda similares a la
oxihemoglobina.
Sin embargo, no entra dentro de los objetivos del proyecto ofrecer un manual de
utilización del dispositivo.
Bibliografía
[1] Ateş, G., & Polat, K. (2012). Measuring of Oxygen Saturation Using Pulse Oximeter Based
on Fuzzy Logic.
[3] Di, G., Tang, X., & Liu, W. (2007). A Reflectance Pulse Oximeter Design Using the
MSP430OF149. IEEE/ICME International Conference on Complex Medical Engineering.
[4] JH, W., SK, P., & MK, S. (1986). Hemo- globin desaturation in highly trained athletes
during heavy exercise. Med Sci Sports Exerc .
[5] Shah, A., & Shelley, K. H. (2013). Is pulse oximetry an essential tool or just another
distraction? The role of the pulse oximeter in modern anesthesia care. Springer
Science+Business Media New York .
[6] Marini, J. (1987). Respiratory Medicine for the House Oficer. Williams & Wilkins
[7] Mengelkoch, L. J., Lawler, J., & Martin, D. (1994). A Review of the Principles of Pulse
Oximetry and Accuracy of Pulse Oxitneter Estimates During Exercise. Journal of the American
Physical Therapy Association .
[8] Lu, Z., & Chen, X. (2015). A Prototype of Reflection Pulse Oximeter Designed for Mobile
Healthcare. IEEE Journal of Biomedical and Health Informatics .
[9] Organización Mundial de la Salud. (2010). Informe sobre la situación mundial de las
enfermedades no transmisibles.
[10] Mathers, C., & Loncar, D. (2006). Projections of global mortality and burden of disease
from 2002 to 2030. PLoS Med .
[12] Bai, Y.-W., Li, W.-T., & Chen, Y.-W. (2010). Design and implementation of an embedded
monitor system for detection of a patient's breath by double Webcams. IEEE International
Workshop on Medical Measurements and Applications Proceedings , 171 (6).
[13] Patel, S., Mancinelli, C., & Bonato, P. (2009). Using Wearable Sensors to Monitor
Physical Activities of Patients with COPD: A Comparison of Classifier Performance. Sixth
International Workshop on Wearable and Implantable Body Sensor Networks , 234 (9).
[14] Dinesen, B., Grann, O., & Nielsen, C. (2011). elerehabilitation across sectors: The
experiences of chronic obstructive pulmonary disease (COPD) patients and healthcare
professionals. Proc 2nd International Conference on Wireless Communication, Vehicular
Technology, Information Theory and Aerospace & Electronic Systems Technology.
[15] Cao, Z., Zhu, R., & Que, R.-Y. (2012). A Wireless Portable System With Microsensors for
Monitoring Respiratory Diseases. IEEE Trans Biomed Eng , 59 (11).
[16] Hebert, M. A., Korabek, B., & Scott, R. E. (2006). A Decision Framework for Integrating
Home Telehealth into Chronic Illness Care. International Journal of Medical Informatics , 75
(786).
[18] Barriuso, J. (2010). Análisis y evolución de los servicios de Atención Primaria, en los
tiempos de la e-Salud.
[19] Yan, Y.-S., & Zhang, Y.-T. (2008). An Efficient Motion-Resistant Method for Wearable
Pulse Oximeter. IEEE Transactions on Information Technology in Biomedicine , 12.
[20] Tavakoli, M., Turicchia, L., & Sarpeshkar, R. (2010). An Ultra-Low-Power Pulse
Oximeter Implemented With an Energy-Efficient Transimpedance Amplifier. IEEE
Transactions on Biomedical Circuits and Systems , 4 (1).
[21] Li, K., Warren, S., & Natarajan, B. (2012). Onboard Tagging for Real-Time Quality
Assessment of Photoplethysmograms Acquired by a Wireless Reflectance Pulse Oximeter.
IEEE Transactions on Information Technology in Biomedicine , 6 (1).
[22] Li, K., & Warren, S. (2012). A Wireless Reflectance Pulse Oximeter With Digital Baseline
Control for Unfiltered Photoplethysmograms. IEEE Transactions on Information Technology in
Biomedicine , 6 (3).
[23] Venema, B., Gehring, H., Michelsen, I., Blanik, N., Blazek, V., & Leonhardt, S. (2013).
Robustness, Specificity and Reliability of an In-ear Pulse Oximetric Sensor in Surgical Patients.
IEEE Journal of Biomedical and Health Informatics .
[25] Agustino, AM., Piqueras, R., Pérez, M. (2002). Recuento de plaquetas y vloumen
plaquetario medio en una población sana. Rev Diagn Biol.
[26] Gómez Vizcaíno, S., & Suntasig Soria, F. (2011). Diseño y construcción de un prototipo de
oxímetro de pulso. Proyecto Fin de Carrera .
[27] Ventosinos Alonso, S. (2010). Sistema óptico autónomo para la medida de parámetros
biomédicos. Trabajo Final de Carrera .
[28] Millán Lozano, A. (2014). Sistema inalámbrico de monitorización de constantes vitales con
plataforma Arduino y visualización en aplicación móvil. Proyecto Final de Carrera .
[31] Kennedy, S. M. An introduction to pulse oximeters: equations and theory. ECE/BME 462 -
Biomedical Instrumentation .
[33] Qureshi, H. (Abril de 2009). Design of a Wireless Pulse Oximeter for use in a Clinical
Diagnostic System. EE 4BI6 Electrical Engineering Biomedical .
Anexos
void setup() {
void loop() {
void setup() {
Serial.begin (9600); // Configuración para la transmisión de los datos por el puerto serie
void loop() {
delayMicroseconds (20);
delayMicroseconds (20);
// El ciclo completo anterior tarta 1 milisegundo, cada 20 milisegundos enviamos las muestras
void setup() {
Serial.begin (9600); // Configuración para la transmisión de los datos por el puerto serie
}
void loop() {
delayMicroseconds (20);
delayMicroseconds (20);
// Los valores del pulso y de la saturación de oxígeno se calculan y se muestran cada 7 segundos
else {
NUM_MUESTRAS = 0;
MEDIA = 0;
SENSOR_VALOR_R_ANT = 0;
SENSOR_VALOR_IR_ANT = 0;
TIEMPO_INI_PULSO = 0;
TIEMPO_INI_PULSO_ANT = 0;
NUM_CRUCES = 0;
MEDIA_PERIODOS = 0;
PERIODO = 0;
MEDIA_RATIO = 0;
RATIO = 0;
RATIO_PROV = 0;
}
}
void setup() {
Serial.begin (9600); // Configuración para la transmisión de los datos por el puerto serie
void loop() {
delayMicroseconds (20);
delayMicroseconds (20);
// Los valores del pulso y de la saturación de oxígeno se calculan y se muestran cada 7 segundos
NUM_MAXIMOS = NUM_MAXIMOS+1;
BUSCA_MINIMO = 1; // Pasamos a buscar un mínimo
BUSCA_MAXIMO = 0; // Dejamos de buscar un máximo
}
// Se detecta un cruce por la media de abajo a arriba y se estaba buscando un mínimo
if (SENSOR_VALOR_R_ANT < MEDIA && SENSOR_VALOR_R > MEDIA && BUSCA_MINIMO == 1) {
MINIMO_R = MINIMO_R_PROV; // Almacenamos el valor del mínimo encontrado
MINIMO_R_PROV = MEDIA; // Reiniciamos el mínimo provisional al valor de la media
MINIMO_IR = SENSOR_VALOR_IR; // Almacenamos el valor del mínimo infrarrojo (se produce a la vez que el mínimo
rojo)
BUSCA_MAXIMO = 1; // Pasamos a buscar un máximo
BUSCA_MINIMO = 0; // Dejamos de buscar un mínimo
// Al encontrar un mínimo, calculamos las amplitudes siempre que previamente hayamos encontrado algún máximo
if (NUM_MAXIMOS >= 1) {
AMPLITUD_R = MAXIMO_R - MINIMO_R; // Cálculo de amplitud roja
AMPLITUD_IR = MAXIMO_IR - MINIMO_IR; // Cálculo de amplitud infrarroja
// Cáclulo de las medias de las amplitudes encontradas hasta el momento
MEDIA_AMPLITUD_R = (MEDIA_AMPLITUD_R*(NUM_MAXIMOS-1)+AMPLITUD_R)/NUM_MAXIMOS;
MEDIA_AMPLITUD_IR = (MEDIA_AMPLITUD_IR*(NUM_MAXIMOS-1)+AMPLITUD_IR)/NUM_MAXIMOS;
}
}
}
}
else {
//Calculamos y mostramos por pantalla los valores de pulso y saturación de oxígeno
PULSO_CARD = 60000/MEDIA_PERIODOS;
MEDIA_RATIO = MEDIA_AMPLITUD_IR/MEDIA_AMPLITUD_R;
SAO2 = 115-(30*MEDIA_RATIO);
NUM_MUESTRAS = 0;
MEDIA = 0;
SENSOR_VALOR_R_ANT = 0;
MAXIMO_R_PROV = 0;
MINIMO_R_PROV = 0;
MAXIMO_R = 0;
MAXIMO_IR = 0;
MINIMO_R = 0;
MINIMO_IR = 0;
TIEMPO_INI_PULSO_PROV = 0;
TIEMPO_INI_PULSO = 0;
TIEMPO_INI_PULSO_ANT = 0;
NUM_MAXIMOS = 0;
MEDIA_PERIODOS = 0;
AMPLITUD_R = 0;
AMPLITUD_IR = 0;
MEDIA_AMPLITUD_R = 0;
MEDIA_AMPLITUD_IR = 0;
PERIODO = 0;
BUSCA_MAXIMO = 1;
BUSCA_MINIMO = 1;
MEDIA_RATIO = 0;
RATIO = 0;
RATIO_PROV = 0;
SAO2 = 0;
}
}
El chip FTDI FT232RL que posee el Arduino Nano sólo es alimentado si la placa está
siendo alimentada usando el cable USB. Cuando se utiliza una fuente externa (no USB),
la salida de 3,3 V (la cual es proporcionada por el chip FTDI) no está disponible y los
pines 1 y 0 parpadearán si los pones digitales 0 ó 1 están a nivel alto.
§ Arduino Nano 3.0: Memoria
El ATmega328 posee 32 KB de memoria flash para almacenar el código (de los cuales
2 KB son utilizados por el bootloader). Además, tiene 2 KB de SRAM y 1 KB de
EEPROM (la cual puede ser leída y escrita con la librería EEPROM).
§ Arduino Nano 3.0: Entrada y Salida
Cada uno de los 14 pines digitales del Arduino Nano puede ser usado como entrada o
salida, utilizando para ellos funciones como pinMode ( ), digitalWrite ( ) y
digitalRead ( ).
Todos operan a 5 V y cada pin puede proveer o recibir un máximo de 40 mA. Poseen
una resistencia de pull-up (desconectada por defecto) de 20 a 50 kOhms. Algunos pines
poseen funciones especializadas:
• Serial: 0 (RX) y 1 (TX). (RX) usado para recibir y (TX) usado para transmitir datos
TTL vía serie. Estos pines están conectados a los pines correspondientes del chip
USB a TTL de FTDI.
• Interrupciones Externas: pines 2 y 3. Estos pines pueden ser configurados para
activar una interrupción por paso a nivel bajo, por flanco de bajada o flanco de
subida, o por un cambio de valor.
• PWM: pines 3, 5, 6, 9, 10, y 11. Proveen de una salida PWM de 8 bits cuando se
usa la función analogWrite ( ).
• SPI: pines 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Estos pines soportan la
comunicación SPI, la cual, a pesar de poseer el hardware, no está actualmente
soportada en el lenguaje Arduino.
• LED: Pin 13. Existe un LED conectado al pin digital 13. Cuando el pin se
encuentra en nivel alto, el LED está encendido, cuando el pin está a nivel bajo, el
LED estará apagado.
El Arduino Nano posee 8 entradas analógicas, cada unas de ellas provee de 10 bits de
resolución (1024 valores diferentes). Por defecto miden entre 5 voltios y masa, sin
embargo, es posible cambiar el rango superior usando la función analogReference( ).
También, algunos de estos pines poseen funciones especiales:
• I2C: Pines 4 (SDA) y 5 (SCL). Soporta comunicación I2C (TWI) usando la librería
Wire.
Hay algunos otros pines en la placa:
• AREF: Tensión de referencia por las entradas analógicas. Se configura con la
función analogReference ( ).
NÚM. PIN NOMBRE TIPO DESCRIPCIÓN
1-2, 5-16 D0-D13 I/O Entrada/salida digital (puertos 0 al 13)
3, 28 RESET Entrada Reset
4, 29 GND PWR Tierra
17 3V3 Salida Salida +3,3 V (del FTDI)
18 AREF Entrada Tensión de referencia
19-26 A7-A0 Entrada Entradas analógicas (canales del 0 al 7)
+5V de salida (desde el regulador de la
Entrada o
27 +5V placa)
Salida
+5V (entrada de alimentación externa)
30 VIN PWR Tensión de alimentación
§ Arduino Nano 3.0: Comunicación
El Arduino Nano tiene algunos métodos para la comunicación con un PC, con otro
Arduino u otros microcontroladores. El ATmega328 posee un módulo UART que
funciona con TTL (5 V) que permite una comunicación vía serie, la cual está disponible
a través de USB para la comunicación serial y los controladores FTDI (incluidos en el
software de Arduino) provee al PC de un puerto COM virtual para el software en el PC.