Está en la página 1de 14

DEPARTAMENTO DE ELÉCTRICA Y ELECTRÓNICA

INGENIERÍA EN ELECTRÓNICA Y AUTOMATIZACIÓN

ELECTRÓNICA MÉDICA

TEMA:
INFORME PRÁCTICA DE LABORATORIO N°1
DOCENTE:
DR. ANDRÉS ARCENTALES
ESTUDIANTES:
AYALA PICO JAIME
LÓPEZ BRIAN
ORTEGA DIEGO
NRC:
9822
SANGOLQUÍ-ECUADOR
17/01/2022
1. Tema de la Práctica

DISEÑO E IMPLEMENTACIÓN DE UN CIRCUITO PARA LA ADQUISICIÓN DE ECG UNA DERIVACIÓN

2. Objetivo
 Implementar un circuito para la adquisición de un ECG una derivación, basado en el circuito
integrado AD620.

3. Materiales Empleados
 Integrado AD620 para la etapa de preamplificación.
 Amplificador operacional TL084 para las etapas de filtrado y amplificación.
 Resistencias y Capacitores.
 Arduino Uno para conversión A-D de la señal.
4. Circuito Implementado

Figura 1: Etapa de protección y amplificación del circuito desarrollado.

Figura 2: Etapa de filtrado y amplificación de salida del circuito desarrollado.


Figura 3: Etapa de variación de nivel DC del circuito desarrollado.

Figura 4: Etapa de conversión análogo-digital.

En la Figuras 1, 2, 3 y 4 se muestra el circuito diseñado que fue simulado e implementado en protoboard


para la adquisición de la señal PPG. Para la visualización de la señal se utiliza Serial Plotter, herramienta
que ofrece Arduino IDE. La misma que será enviada a Matlab para realizar los análisis respectivos.
5. Actividades Desarrolladas
5.1. Realizar 2 registros de un mismo alumno del grupo. El registro se debe realizar durante 60
s, respetando el Teorema de Nyquist.
5.1.1. El primer registro se debe realizar en estado basal.
5.1.2. El segundo registro se debe realizar después de realizar una actividad física.
5.1.3. Presentar las gráficas del ECG en el software Matlab.

Para realizar el muestreo, se ha tomado como referencia una frecuencia máxima de 150 Hz, ya
que se trata de un ECG. Por ende:
𝐹 = 150 𝐻𝑧 (1)

Siguiendo el teorema de Nyquist.

𝐹 >= 2𝐹 (2)

𝐹 >= 300 𝐻𝑧 (3)

𝐹 = 330 𝐻𝑧 (4)

Obteniendo el período de muestreo:


1
𝑇 = (5)
330

𝑇 = 3 𝑚𝑠 (6)

Se tomaron los respectivos registros, y se los exportó al entorno de Matlab. En la Figura 5 y 6 se


pueden observar las gráficas de cada registro.

Figura 5: Registro estado basal.


Figura 6: Registro después de la actividad física.

Sin embargo, las Figuras 5 y 6 no logran mostrar con claridad la señal ECG obtenida debido a que se
están registrando 60 segundos, por lo que, en las Figuras 7 y 8 se muestra un registro de ambos
estados en un lapso más corto de tiempo, con la finalidad de tener una mejor apreciación de las
señales.

Figura 7: Registro estado basal lapso corto de tiempo.


Figura 8: Registro después de la actividad física corto lapso de tiempo.

5.2. Marcar los complejos QRS de los 2 registros y estimar la frecuencia cardíaca en BPM de cada
uno de los registros. Para esto, implementar alguno de los algoritmos de detección de
complejos QRS discutidos en clase. Presentar la gráfica del ECG marcado los puntos R.

Se ha implementado el algoritmo de Pan-Tompkins con la finalidad de estimar el valor de la


frecuencia cardíaca en cada caso.

Registro estado basal:


En la Figura 9 se pueden observar las gráficas características de las distintas etapas del
algoritmo de Pan-Tompkins en el registro en estado basal.
Figura 9: Registro estado basal.

Luego, en la Figura 10 se muestran los puntos R marcados en la señal ECG procesada.

Figura 10: Puntos R marcados en la señal ECG.


Donde se encuentran un total de:

Lo que indica que el valor de BPM estimado es de 95 latidos por minuto, lo cual concuerda
con lo esperado ya que el valor de BPM normal de una persona está entre 60 y 100 BPM.

Registro después de la actividad física:


En la Figura 11 se pueden observar las gráficas características de las distintas etapas del algoritmo
de Pan-Tompkins en el registro tomado tras la realización de la actividad física.

Figura 11: Registro tras actividad física.

Luego, en la Figura 12 se observan los picos R marcados en la señal ECG procesada.


Figura 12: Picos R encontrados señal ECG.

Donde se encuentran un total de:

Lo que indica que el valor de BPM estimado es de 164 latidos por minuto, lo cual concuerda
con lo esperado, ya que se realizó actividad física y el corazón bombea más sangre, por lo
tanto, se contrae y relaja más seguido.

5.3. Presentar el código usado para la digitalización de las señales, el código de Matlab usado
para graficar las señales, y el código para la detección automática de los complejos QRS.
Todos los códigos deben estar comentados.

El código empleado para la digitalización de las señales ha sido implementado en la interfaz


de programación de Arduino, y se puede apreciar en la Figura 13. Es importante recalcar que
se ha empleado el valor del período de muestreo calculado en la Ecuación 6.

Figura 13: Código empleado para la digitalización de la señal.


Luego, para graficar las señales en Matlab se ha empleado el siguiente código.

%************************************************************************
%En este código se realiza el llamado a una funcón de lectura de arduino
%donde se envía como dato el # de muestras a ser tomado, que en este caso
%son 20000 debido a que se desea tomar la señal en un lapso de 60[s] y
%según la frecuencia de muestreo colocada en el arduino de tiene 300 [Hz]
%que equivaldria a 3.33 [ms], donde al multiplicar
%T=muestras*t=20000*3.33x10^(-3)se obteiene T=20000*3.33x10^(-3)[ms]=60 [s]
%que es el tiempo que buscamos realizar la medida de la señal.
%Además se realiza su graficación en voltaje vs tiempo para comprobar
%que se está obteniendo datos adecuados los cuales se guardan para ser
%procesados posteriormente.
%************************************************************************
ECG_Signal=EADC_Serial(20000); %Esta función retorna los valores de voltaje
%y grafica la señal encontrada con el
%voltaje en el eje x, muestras eje y.

t=(1:1:20000)*0.003; %Se genera el vector temporal acorde a


%las muestras para graficar en tiempo
%y guardar los datos para su posterior
%procesamiento.
%************************************************************************
%Graficación de la señal para comprobar

title('GRAFICA ECG'); %Titulo de la grafica.


xlabel('Tiempo [s]'); %Leyenda o titulo del eje x.
ylabel('Voltaje (V)'); %Leyenda o titulo en el eje y.

plot(t,ECG_signal) %Graficación en tiempo (60s) de la señal


%para comprobación
%A continuación, se guarda las variables para su posterior procesamiento
%con algoritmo de detección de complejo QRS desarrollado.

ECG_Basal=[t, ECG_signal]'; %Se guarda en el formato que utiliza el


%algoritmo de detección.
%************************************************************************

La función EDC_Serial() empleada en el código previamente descrito se detalla a


continuación.

%************************************************************************
%Esta función retorna los valores de voltaje y grafica la señal
%encontrada con el voltaje en el eje x, muestras eje y.
function voltaje=EADC_Serial(muestras)
close all;clc;
voltaje=0; %Declaraciòn e variable en la cual se van a guardar los valores.

%Comunicación arduino
%Borra datos que se encuentren previos y vuelve a declarar el puerto
delete(instrfind({'port'},{'COM6'})); %Borrar cualquier puerto serial
%abierto en el puerto a utilizar.

puerto=serial('COM6'); %Se declara la variable puerto donde se especifica


%la dirección donde se conectó el arduino.
puerto.BaudRate=9600; %Se establece la velocidad de transmisión en baudios

fopen(puerto); %Se abre el puerto a utilizar.

contador=1; %Variable a se utilziada para el conteo de cuantos


%Datos se tomaran

%Ciclo para capturando valores


while contador<=muestras
valorADC=fscanf(puerto,'%d%d');%Escanea el valor recibido por el puerto
%y lo guarda en la variable.
voltaje(contador)=valorADC(1)*5/1023;%Se realiza la conversión de
%Voltaje tomando en cuenta que
%arduino tiene una resolución de
%10 bits= valores de 0-1023.

contador=contador+1; %Aumento de contador para ciclo


%de captura
end

%Configura la ventana donde se va a mostrar la grafica


figure
title('Señal de ECG');
xlabel('Numero de Muestras');
ylabel('Voltaje (V)');
grid on;
%Se genera vector que va a representar el numero de muestra en el eje X
vectorM=(1:1:muestras);
plot(vectorM,voltaje1) %Grafica la señal de voltaje(eje y) y número
%de muestras (eje x).
%Finaliza la comunicación cerrando y borrando el puerto utilizado.
fclose(puerto);
delete(puerto);
end
%************************************************************************

Por último, para la detección de los complejos QRS se ha implementado el algoritmo de Pan-
Tompkins en Matlab, con sus distintas etapas. Este código se detalla a continuación.

ALGORITMO PAN TOMPKINS


close all
clear all
% CARGA DE DATOS
load('ECG_AF1.mat')
% DIVISION DE DATOS
ECG=ECG_AF(:,2);
Ts=0.003; % Se establece el valor del periodo de muestreo de 3 ms.
Fs=1/Ts; % Se calcula la frecuencia de muestreo.
t=ECG_AF(:,1); %Se toma el arreglo correspondiente al tiempo

Etapa de filtrado (5-15 Hz)


x=ECG-mean(ECG); % Se resta el valor de la señal con su promedio para evitar un
desplazamiento en el eje Y.
%Diseño del filtro
f1=5; % Frecuencia de corte inferior
f2=15; % Frecuencia de corte superior
Wn=[f1 f2]*2/Fs;
N = 4; %Orden filtro
[a,b] = butter(N,Wn); % Diseño filtro pasabanda
y = filtfilt(a,b,x); % Señal filtrada
delay=4;
plot(t,x)
title 'Señal ECG original'
xlabel 'Tiempo [s]'
ylabel 'Amplitud [V]'
figure
plot(t,y)
title 'Señal ECG Filtrada'
xlabel 'Tiempo [s]'
ylabel 'Amplitud [V]'

Etapa de derivación
derivada=zeros(1,length(x)); % Se crea un vector con ceros de iguales dimensiones que
la señal original.
derivada(2:end)=diff(y); % Se procede a derivar la señal, ingresando un valor de
0 al inicio del vector para evitar errores de dimensión.
figure
plot(t,derivada)
title 'Señal ECG Derivada'
xlabel 'Tiempo [s]'

Etapa de transformación no lineal (elevada al cuadrado)


x2=derivada.^2; % Se eleva al cuadrado la señal previamente derivada.
figure
plot(t,x2)
title 'Señal ECG Elevada al cuadrado'
xlabel 'Tiempo [s]'

Ventana de integración móvil


N=0.2*Fs; % Se establece el ancho de la ventana.
x_int=movmean(x2,N); % Se aplica la función de ventana de integración móvil de
Matlab.
x_int=x_int/max(x_int); % Normalización de la señal.
figure
plot(t,x_int)
title 'Señal ECG aplicada la ventana de integración móvil'
xlabel 'Tiempo [s]'

Etapa de decisión
[PKS,LOCS] = findpeaks(x_int,'MINPEAKDISTANCE',round(0.2*Fs)); % Se emplea la
función findpeaks de Matlab para obtener los valores pico de la señal procesada.
% Se ha utilizado la especifiación 'MINPEAKDISTANCE' con la intención de
% obviar falsos picos. Adicionalmente, se le ha especificado el valor de la
% frecuencia de muestreo escalada para una mayor precisión.
SPKI=max(x_int(1000:20000)); %Se establece el valor de la variable SPKI
tomando los primeros 2 segundos de señal.
NPKI=SPKI*1/3; %Se calcula la variable NPKI según la
bibliografía revisada.
Umbral_snl=NPKI+1/4*(SPKI-NPKI); %Se calcula el valor umbral inicial según la
bibliografía revisada.
picosR=0; %Se inicializa una variable que contará el número
de picos R.
valorPICOSR=zeros(length(PKS));
tiempoPICOSR=zeros(length(LOCS));
for i=1:length(PKS)
if(PKS(i)>Umbral_snl)
picosR=picosR+1; %Si el valor del pico actual supera el umbral
de señal, se lo toma como pico R.
SPKI=1/8*PKS(i)+7/8*SPKI; %Se actualiza el valor de SPKI según la
bibliografía revisada.
valorPICOSR(picosR)=PKS(i);
tiempoPICOSR(picosR)=LOCS(i);
end
if(PKS(i)<=Umbral_snl)
NPKI=1/8*PKS(i)+7/8*NPKI; %Si el valor del pico no supera el valor
umbral de señal, se lo descarta y se actualiza el valor de NPKI según la
bibliografía.
end
Umbral_snl=NPKI+1/4*(SPKI-NPKI); %Se calcula el nuevo valor umbral.
end
valorPICOSR=valorPICOSR(1:picosR); %Se recorta el vector para eliminar valores
nulos.
tiempoPICOSR=tiempoPICOSR(1:picosR);
picosR
plot(x_int)
title 'Picos encontrados'
xlabel 'Tiempo [s]'
hold on
plot(tiempoPICOSR,valorPICOSR,'or') %Se grafican los puntos de los picos R
hallados.
tiempoPICOSR=tiempoPICOSR.*0.003; %Se realiza el escalamiento del tiempo.
6. Conclusiones
 Se ha logrado implementar con efectividad un circuito de adquisición de un ECG basado en el
circuito integrado AD620 (ver Figuras 1, 2, 3 y 4), donde se tiene las etapas de circuito de
protección, circuito de pre amplificación, circuito de filtrado, circuito de amplificación, circuito de
control de nivel DC y finalmente la etapa de conversión análogo-digital.
 Se ha logrado estimar la frecuencia cardíaca en BPM utilizando un algoritmo de detección de
complejo QRS creado basado en el algoritmo de Pan-Tompkins, la estimación fue realizada tanto
en el registro tomado en estado basal, como en el registro tomado tras la actividad física, teniendo
como resultado un valor de 95 BPM en estado basal, y un valor de 164 BPM después de la
actividad física, lo cual concuerda con los valores esperados a ser obtenidos ya que durante el
estado basal la persona se encuentra relativamente relajada y el corazón no tiene la necesidad de
bombear sangre de una manera rápida, en cambio durante la actividad física el corazón bombea
sangre más rápido y por ende , es de esperarse obtener más latidos por minuto y una mayor
concentración de picos dentro de la gráfica el ECG.
 Matlab fue una herramienta fundamental para poder realizar una comunicación con arduino con
la finalidad del registro y procesamiento de señales.
 Se concluye que el circuito integrado AD620 presenta características óptimas para su aplicación
en el campo de la electrónica médica como un amplio rango de amplificación, bajo nivel de
alimentación, bajo nivel de ruido, buenas características de CMR, entre otras.

7. Recomendaciones
 Se recomienda tener a disposición algunos electrodos adicionales debido a que, por el uso, estos
se desgastan, perdiendo efectividad y afectando a la señal obtenida.
 Se recomienda esperar un lapso de tiempo una vez se hayan conectado los electrodos para
realizar el registro, con el fin de estabilizar la señal y evitar errores innecesarios.
 Se recomienda evitar realizar movimientos bruscos mientras se adquiere la señal, ya que esto
podría ingresar ruido que afectará la validez de los datos adquiridos.
 Se recomienda implementar el circuito de protección entre el circuito de adquisición y el paciente.
 Utilizar potenciómetros y resistencias de precisión en lo posible para el circuito, de igual manera,
utilizar capacitores cerámicos.

8. Referencias
 ANALOG DEVICES (2011). Low Cost Low Power Instrumentation Amplifier AD620 Datasheet.
Recuperado de: https://www.analog.com/media/en/technical-documentation/data-
sheets/ad620.pdf

También podría gustarte