INGENIERÍA BIOMÉDICA

“DESARROLLO DE UNA INTERFACE GRÁFICA PARA UN ELECTROCARDIÓGRAFO PORTÁTIL”

ALUMNA: MARÍA EUGENIA CALVA ROJAS
ASESOR: DONACIANO JIMÉNEZ VÁZQUEZ

_________________________ Asesor Donaciano Jiménez Vázquez

________________________ Alumna María Eugenia Calva Rojas

Julio de 2008

ÍNDICE

Introducción…………………………………………………………. 1 Antecedentes………………………………………………………… 2 Creando una GUI en Matlab………………………………… 3 Propiedades de los controles………………………………… 3 Tipos de Objetos…………………………………………….. 4 Editor de Menús……………………………………………... 5 Objetivo……………………………………………………………… 6 Descripción de la inteface………………………………………….... 6 Interface Gráfica (ECG Portátil)……………………………….......... 8 Resultados…………………………………………………………... 21 Comentarios……………………………………………………….... 27 Conclusiones………………………………………………………... 28 Anexo A…..……………………………………………………….... 29 Bibliografía…………………………………………………………. 38

2

INTRODUCCIÓN La herramienta Matlab nos proporciona la posibilidad de aprovechar todo su potencial operativo pero con gráficos orientados al usuario. Sin duda esto presenta una ventaja para usuarios que no tienen experiencia en trabajar con Matlab debido a la sencillez de la interface gráfica. Por parte del programador, todas las funciones se pueden implementar en dichos entornos. Las variables o valores se pueden asignar a funciones a través de botones, barras de desplazamiento, checkbox, etc. Y los resultados se pueden mostrar en un cuadro de textos, en una lista de valores o incluso en una gráfica enmarcada de la propia interface. El propósito de este proyecto consiste en desarrollar una interface gráfica para un electrocardiógrafo portátil*. El cual cuenta con las siguientes características: 1. Adquisición de la señal. Mediante una terminal de 3 electrodos conectados al paciente y a la placa mediante un cable trenzado. 2. Etapa de amplificación analógica. Una de las partes más destacadas, puesto que la señal que recibe es muy débil y debe ser amplificada, evitando el ruido. 3. Funcionamiento del microcontrolador PIC18F452. Se ha elaborado un programa escrito en ensamblador para hacer la conversión analógica-digital de la señal del ECG y configurado la USART del PIC para enviar los datos a la PC. 4. Interfaz de comunicación entre el PC y la placa. Se utilizo el protocolo de comunicación RS-232. Dentro de las características indispensables de la interface se encuentran las siguientes: Fácil manejo. Contar con las instrucciones adecuadas en tiempo de ejecución. Amigable para el usuario final. Con esto aseguraremos un manejo óptimo y adecuado del software.

3

ANTECEDENTES MATLAB es un lenguaje de alto desempeño diseñado para realizar cálculos técnicos. MATLAB integra el cálculo, la visualización y la programación en un ambiente fácil de utilizar donde los problemas y las soluciones se expresan en una notación matemática. MATLAB es un sistema interactivo cuyo elemento básico de datos es el arreglo que no requiere de dimensionamiento previo. Esto permite resolver muchos problemas computacionales, específicamente aquellos que involucren vectores y matrices, en un tiempo mucho menor al requerido para escribir un programa en un lenguaje escalar no interactivo tal como C o Fortran. MATLAB se utiliza ampliamente en: Cálculos numéricos Desarrollo de algoritmos Modelado, simulación y prueba de prototipos Análisis de datos, exploración y visualización Graficación de datos con fines científicos o de ingeniería. Desarrollo de aplicaciones que requieran de una interfaz gráfica de usuario (GUI, Graphical User Interface). En el ámbito académico y de investigación, es la herramienta estándar para los cursos introductorios y avanzados de matemáticas, ingeniería e investigación. En la industria MATLAB es la herramienta usada para el análisis, investigación y desarrollo de nuevos productos tecnológicos. La ventaja principal de MATLAB es el uso de familias de comandos de áreas específicas llamadas toolboxes. Lo más importante para los usuarios de MATLAB es que los toolboxes le permiten aprender y aplicar la teoría. Los toolboxes son grupos de comandos de MATLAB (archivos M) que extienden el ambiente de MATLAB para resolver problemas de áreas específicas de la ciencia e ingeniería. Por ejemplo, existen toolboxes para las áreas de Procesamiento Digital de Señales, Sistemas de Control, Redes Neuronales, Lógica Difusa, Wavelets, etc. Acerca de GUIDE Las interfaces gráficas de usuario (GUI-Graphical User Interface en Inglés), es la forma en que el usuario interactúa con el programa o el sistema operativo de una computadora. Una GUI contiene diferentes elementos gráficos tales como botones, campos de texto, menús, gráficos, etc. Existen diferentes lenguajes de programación que permiten crear una GUI tales como: C, Visual Basic, TK, etc., solo por mencionar algunos. Todos ellos permiten usar diferentes controles y maneras de programarlos, Matlab nos permite realizar GUI’s de una manera sencilla usando GUIDE (Graphical User Interface Development Enviroment).

4

5 . Figura 1 Figura 1. es la creación de GUI’s. Un archivo *. Al usar GUIDE obtendremos dos archivos: Un archivo *. Un callback se define como la acción que llevará a cabo un objeto de la GUI cuando el usuario lo active.FIG: Contiene la descripción de los componentes que contiene la interfase.Creando una GUI en Matlab Una de las tantas herramientas con las que cuenta Matlab. La forma de implementar las GUI con Matlab es crear los objetos y definir las acciones que cada uno va a realizar. En la pantalla se aparecerá la un área de diseño similar a la de la Figura 2. a eso se le conoce como la función del callback. Para ejemplificarlo. suponga que en una ventana existe un botón el cual al presionarlo ejecutará una serie de acciones. Seleccionaremos la opción Default GUI.M: Contiene las funciones y los controles del GUI así como el callback. Iniciando GUIDE Para crear una GUI en Matlab tecleemos guide en la ventana de comandos de Matlab.

en la parte izquierda se aprecian los diferentes controles y en la parte central el área de diseño donde pondremos los controles a usar. texto estático. En la parte superior se encuentran los menús y opciones de GUIDE. Callback: La propiedad más importante del control. Propiedades de los controles: Las propiedades varían dependiendo del control a usar. ya que le dice al control que hacer cuando este se active. Figura 3.Figura 2. es el texto que muestra el control. Tag: Otra de las propiedades más importantes ya que con este es posible regresar datos o identificar al control. 6 . cajas de texto. a continuación se explican las más comunes (Figura 3): Background Color: Cambia el color del fondo del control. Enable: Activa o desactiva un control String: En el caso de botones.

Para colocar el nombre de la ventana de adquisición.Tipos de Objetos: Activar Adquisición Procesar ECG Identificar complejos QRS Desplegar FFT Para seleccionar que ventana de gráfico quiero limpiar. Para desplegar el valor calculado de VFC Para visualizar todas las muestras del registro en la ventana. Para enmarcar los objetos con funciones relacionadas. Editor de Menús Nuevo Submenú Nombre que aparece en la interface Nuevo menú Nombre que se maneja en el código de programación 7 . la de ECG o FFT.

* Jiménez Santiago Gonzalo. ejes para desplegar gráficos y cuadros de texto estático para desplegar valores obtenidos del procesamiento.Objetivo: Este proyecto es la continuación de la tesis “Electrocardiógrafo Portátil*”. Mejía González Jaime. Tesis Lic. la cual debe ser confiable. Biomédica UAM-I 2007 8 . Se emplearán botones para activar las funciones. El objetivo es el desarrollo de una interface gráfica en Matlab para este electrocardiógrafo portátil. clara y amigable para el usuario: Descripción de la Interface Invocación de la portada de presentación del ECG Inicia la inteface del ECG portátil Nueva adquisición (Cargar/Guardar) Adquisición Procesar adquisición Inicialización del objeto (puerto) para la adquisición Definición del menú de opciones (Cargar/Guardar) Definición de los objetos para el procesamiento Definición de características: -Tipo de puerto -Nombre del puerto -Modo de adquisición -Tamaño del buffer de entrada Definición de los tipos de archivos que se pueden cargar (Load) y Guardar (Save). Tipo de extensiones y direcciones donde se leerán los archivos en el Load y donde se almacenarán en el Save. Ing. Electrocardiógrafo Portátil.

BMP con la imagen actual en la interface. 9 . o Desplegar la gráfica en pantalla o Procesar la señal como si hubiera sido recién adquirida Guardar archivos o Se guardará en un archivo el registro de la señal como una tabla de números.bmp. o Se podrá guardar la pantalla desplegada en un archivo de imagen con extensión *.Adquirir un nuevo registro o El usuario elegirá el tiempo de adquisición con un tiempo límite de 10 minutos. Procesamiento de la señal o Filtrado de la señal (para eliminar la mayor cantidad de interferencia posible) o Reconocer los complejos QRS a través de un filtro tipo ventana o Graficar la Transformada Rápida de Fourier (FFT) o Calcular la Variabilidad de la Frecuencia Cardiaca (VFC) Con el editor de Menús construimos el que será necesario para llevar a cabo las siguientes funciones: o Load: Carga un archivo que contenga datos que puedan graficarse o procesarse.DAT con los datos adquiridos del ECG Portátil.dat. Datos: Guarda un archivo *. o Save: Pantalla: Guarda un archivo con *. o Salir: Cierra la interfase y regresa a la pantalla principal de Matlab. o Procesar el nuevo registro Cargar un archivo de datos (Registro de ECG) con extensión *.

eventdata.to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % -------------------------------------------------------------------Submenú Pantalla % -------------------------------------------------------------------% --. handles) % hObject handle to Save (see GCBO) % eventdata reserved .to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) print -dbitmap. msgbox(' Imagen en el portapapeles') 10 . eventdata.INTERFACE GRÁFICA (ECG PORTATÍL) % -------------------------------------------------------------------Menú principal Options % -------------------------------------------------------------------% --.Guarda una impresion de la pantalla actual function Screen_Callback(hObject. handles) % hObject handle to Opciones (see GCBO) % eventdata reserved .Codigo del menu principal Options function Options_Callback(hObject.to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % -------------------------------------------------------------------Submenú Save % -------------------------------------------------------------------function Save_Callback(hObject. eventdata. handles) % hObject handle to Screen (see GCBO) % eventdata reserved .

pathname] = uigetfile({'*. axis([0 3000 (min(ECG1)-1) (max(ECG1)+200)]).8). eventdata. grid on.'Fontsize'. % Se habilita el botón para procesar la señal handles. set(handles.'on').'b'). guidata(hObject. [filename.8). ECG1=load(archivo).Procesa. end.axes1) newplot.'File Selector').% -------------------------------------------------------------------Submenú Load % -------------------------------------------------------------------function Load_Callback(hObject.handles).original=ECG1.to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axes(handles.'Fontsize'.dat'}.'enable'. %Permite al usuario elegir el archivo de los datos que desea desplegar en pantalla. 11 .%Carga el archivo de datos a la variable ECG1 plot(ECG1. handles) % hObject handle to Load (see GCBO) % eventdata reserved . xlabel('\bf Muestras'. %prepara el axes1 para una nueva gráfica colordef black. if(filename~=0) archivo=[pathname filename]. % Se etiquetan los ejes y se define el tamaño de la letra ylabel('\bf Amplitud'.

'ecg'.% -------------------------------------------------------------------Submenú Datos % -------------------------------------------------------------------function Datos_Callback(hObject. if(file~=0) nom=[path file]. msgbox(' Archivo Listo!!'. end if(file~=0) save(nom.dat'}.original.Pide al usuario el nombre para el archivo de datos y el path para guardarlo [file.'-ascii').'Save as'). eventdata. % --.'Aviso') end 12 . handles) % hObject handle to Datos (see GCBO) % eventdata reserved .to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) ecg=handles.path] = uiputfile({'*.

clc. eventdata.Executes on button press in Play.la respuesta se almacena en la variable resp % answer = inputdlg({'Tiempo de Adquisición'}).% -------------------------------------------------------------------- Submenú Salir % -------------------------------------------------------------------function Salir_Callback(hObject.close all % -------------------------------------------------------------------- Botón para iniciar adquisición % -------------------------------------------------------------------% --. if strcmp(ans. % % --. % --.Solicita al usuario el tiempo de adquisición en minutos % --. end clear.'No').to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % -.'No') return.'No'.El tiempo en minutos se transforma en numero de muestras 13 .Solicita la confirmación de salida ans=questdlg('¿Desea salir del programa?'.'Si'. handles) % hObject handle to Untitled_1 (see GCBO) % eventdata reserved .'SALIR'. resp = str2num(answer{1}).

y este valor se almacena en la variable tam % numc=resp/0. set(s. while i<numc datos=fread(s).tam). %Deshabilitar el botón PLAY para no interrumpir la adquisición if ~isempty(answer) i=0. if i==1 data=datos.'InputBufferSize'. %vector del mismo tamaño que le buffer fopen(s).'BackgroundColor'.'b').original=senial. %Cambiando el color del botón PLAY % %Cambiando la etiqueta PLAY por ADQUIRIENDO % set(hObject. %tamaño del buffer de entrada tiempo=[0:2999].'enable'.502 0. % Habilitamos el botón set(handles. end 14 .1. %se abre el puerto fprintf(s. % % --.'on').'off').'enable'. set(hObject. set(s.[0. %Limpiamos la variable ‘s’ después de cerrar el puerto handles.'on'). end if i>1 data=cat(2.'String'. i=i+1.99 0 0]).datos).'enable'.'ADQUIRIENDO').data. % % Regresamos el botón PLAY a su color original % set(hObject. %Habilitamos el botón para procesar la señal guidata(hObject. grid on.05. tam=numc*3000. handles.% --.handles). set(hObject.'ReadAsyncMode'.Procesa.753]).Configuración del puerto % s=serial('COM1'). % % Regresamos la etiqueta original PLAY % set(hObject. % Cierra el puerto delete(s). set(hObject.'PLAY'). end end senial=reshape(data.'*IND?').'BackgroundColor'. fclose(s).'String'. set(gcf.3000).[0 0. plot(datos.'doublebuffer'.'on') drawnow. 'continuous').tam=tam.

15 . %Se grafica s1 set(handles. hold on.'g'). handles) % hObject handle to Procesa (see GCBO) % eventdata reserved . handles. function Procesa_Callback(hObject.ECG). A=[1 -2 1].'enable'.axes1) newplot.% -------------------------------------------------------------------- Botón para procesar la señal % -------------------------------------------------------------------% --. B=[1 0 0 0 0 0 -2 0 0 0 0 0 1]. guidata(hObject.'on'). handles.FFT. eventdata.handles).'on').'enable'.to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axes(handles. % Habilita el botón para calcular la frecuencia cardiaca % Habilita el botón para graficar las ventanas que identican los complejos QRS set(handles. ECG1=handles.A.'enable'. N=size(ECG1).ecg=ECG. colordef black.senial=s1.original. % Habilita el botón para graficar el FFT set(handles. ECG=(ECG1-mean(ECG1))/(500). %s1 es la señal resultante del primer filtrado s1=filter(B.QRS. grid on.'on').FC. plot(s1/max(s1).Executes on button press in Procesa.

to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axes(handles.17).A. %s3 es la señal resultante del tercer filtrado %Area bajo la curva QRS %Gráfica para mostrar el área bajo la curva QRS N=30. B(33)=-1.1. %Se grafica la ventana de tiempo hold off. %Se definen el primer y ultimo elemento como 1 y -1 A=[1 -1]. B y C.%Operación para definir el tiempo de duración de la ventana det(1:delay)=[]. s4=filter(B.^2. s2=filter(C. ECG=handles.s1)/32.axes1) newplot.N)/N.s2). B=ones(1.ecg.Executes on button press in QRS. 16 . C(17)=1. %s2 es la señal resultante del segundo filtrado %Filtro Derivador %Definimos las características del filtro derivador. handles) % hObject handle to QRS (see GCBO) % eventdata reserved .s4).1 -0. s1=handles. colordef black. det=s4>(0.2 0.s1)-filter(B. eventdata.2]. s4=s3.1 0 -0. C=zeros(1. function QRS_Callback(hObject.33). s3=filter(B.125*(max(s4)/2)). B=[0. %Se define el retardo para que ocurra una nueva ventana plot(max(ECG)*det.% -------------------------------------------------------------------- Botón para identificar los complejos QRS % -------------------------------------------------------------------% --. %Filtro Pasa-altas %Definimos las características del filtro pasa-bajas %Sabemos que un filtro puede ser definido con un par de %polinomios que caracterizaran %los polos y ceros de este y así definimos A.senial. %Comando para generar una matriz de tamaño 1* 33 B(1)=1. B=zeros(1.%s4 es la señal resultante del segundo filtrado %Filtro Ventana (Duracion del QRS) %En este grafico podemos visualizar a través de ventanas de tiempo la curva QRS.A.1.'m:').delay=30.

segunda. ini=1. R(j)=t0. for i=1:NumInt for n=ini:fin if may<s4(n+1) may=s4(n+1). fin=aint. s4=handles. aint=int16(5000/NumInt).Executes on button press in VFC. if dif==max(s) cuenta=cuenta+1.to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) s=handles. end end NumInt=cuenta. fin=fin+aint. ini=fin. for n=1:5000 dif=s(n+1)-s(n). eventdata. %%%Calcula la variabilidad de la frecuencia cardiaca % Utilizando un algoritmo de detección de ondas R function VFC_Callback(hObject. t0=0. handles) % hObject handle to VFC (see GCBO) % eventdata reserved .ventana.% -------------------------------------------------------------------- Botón para calcular la VFC y desplegarla en el cuadro de texto estático en Lat/min % -------------------------------------------------------------------% --. end end may=s4(1). cuenta=0. may=s4(1). t1=0. t0=n+1. j=1. 17 .

function FFT_Callback(hObject. eventdata.to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % -------------------------------------------------------------------Botón para desplegar gráfico FFT % -------------------------------------------------------------------% --. for i=1:sup-1 FC(l)=60/(double(R(2*i)-R(2*i-1))/500). eventdata.Executes on button press in FFT. 18 . end l=1. l=l+1. % -------------------------------------------------------------------- % -------------------------------------------------------------------% Ventana de Despedida % --.Executes during object deletion. end VFC=median(FC). handles) % hObject handle to CLEAR (see GCBO) % eventdata reserved .VFC).text2.to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) msgbox('Buena Suerte. set(handles.'..'string'.to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axes(handles.axes2) newplot. colordef black.Executes on button press in CLEAR. function CLEAR_Callback(hObject.'Despedida'. before destroying properties. function Pantalla_DeleteFcn(hObject. handles) % hObject handle to Pantalla (see GCBO) % eventdata reserved . sup=int16(NumInt/2). eventdata.'help') % -------------------------------------------------------------------% --.j=j+1. handles) % hObject handle to FFT (see GCBO) % eventdata reserved .

'Min') and get(hObject.'Value') returns position of slider % get(hObject.handles not created until after all CreateFcns called % Hint: slider controls usually have a light gray background. after setting all properties. See ISPC and COMPUTER. function Rango_Callback(hObject.9]). else set(hObject.to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject.power.to be defined in a future version of MATLAB % handles empty .'defaultUicontrolBackgroundColor')). usewhitebg = 1.'c'). % -------------------------------------------------------------------% --.'value'). handles) % hObject handle to Rango (see GCBO) % eventdata reserved . ylabel('\bf Amplitud'.9 .'Max') to determine range of slider value=get(hObject. freq=(1:n/2)/(n/2)*nyquist. handles) % hObject handle to Rango (see GCBO) % eventdata reserved . end % -------------------------------------------------------------------% --.^2.text5.'Fontsize'.senial. nyquist=250. 19 .Executes on slider movement.get(0. change % 'usewhitebg' to 0 to use default. stem(freq. s1=s(1:250).value).8). set(handles. n=length(s1). power=abs(s1(1:floor(n/2))).Executes during object creation.xlabel('\bf Frecuencia'.'BackgroundColor'. title('\bf FFT').8). eventdata. eventdata. function Rango_CreateFcn(hObject.[.'string'.s=handles.9 .'Fontsize'.'BackgroundColor'. if usewhitebg set(hObject.

handles) % hObject handle to RFFT (see GCBO) % eventdata reserved .axes2) %con esto selecciona el eje a utilizar.Executes on radiobutton press in RFFT.ECG. function RFFT_Callback(hObject.'value'.'value'.to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axes(handles. newplot. set(handles. hold off. function ECG_Callback(hObject.'value'.0) 20 . eventdata.RFFT.Executes on radiobutton press in ECG.RFFT.0) %-------------------------------------------------------------------------Limpiar ejes del FFT %-------------------------------------------------------------------------% --.'Value') returns toggle state of ECG axes(handles.1) set(handles. eventdata.ECG.%-------------------------------------------------------------------------- Limpiar ejes del ECG %-------------------------------------------------------------------------% Limpia axes de ECG % --.axes1) %con esto selecciona el eje a utilizar. newplot. hold off.1) set(handles.to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: get(hObject. set(handles.'value'. handles) % hObject handle to ECG (see GCBO) % eventdata reserved .

handles).get(0.1) end set(handles.to be defined in a future version of MATLAB % handles empty . handles. after setting all properties. eventdata. if usewhitebg set(hObject. handles) % hObject handle to slider1 (see GCBO) % eventdata reserved .'BackgroundColor'.slider1==0 handles. handles) % hObject handle to slider1 (see GCBO) % eventdata reserved . else set(hObject.slider1+2000]).'BackgroundColor'.slider1=get(hObject.[handles.handles not created until after all CreateFcns called % Hint: slider controls usually have a light gray background.753]). function slider1_CreateFcn(hObject.slider1= handles. 0.'Value') returns position of slider % get(hObject.'defaultUicontrolBackgroundColor')).'Value') returns toggle state of RFFT %-------------------------------------------------------------------------% --.1. change % 'usewhitebg' to 0 to use default. 21 .to be defined in a future version of MATLAB % Hints: get(hObject.Executes during object creation.slider1 handles.slider1=handles.'Value').%-------------------------------------------------------------------------- Barra de desplazamiento del ECG % Hint: get(hObject. guidata(hObject.original).'Min') and get(hObject.502. % Valor mínimo que puede adquirir el slider (0.slider1. 0. if handles. usewhitebg = 1. handles.slider1*tam.slider1+0.Executes on slider movement.'Xlim'. function slider1_Callback(hObject.'value').[0.axes1.'Max') to determine range of slider %value=get(handles. tam=length(handles. eventdata. end %-------------------------------------------------------------------------% --. See ISPC and COMPUTER.

Nótese que se hizo una breve descripción del funcionamiento y del código de cada elemento en la interface. considerando los elementos más relevantes de la interface. Para obtener finalmente una pantalla como la siguiente: Ejes del ECG Ejes del FFT Interface completa del ECG Portátil 22 .

o Tecleamos el nombre del archivo de bienvenida en este caso fue ‘presentación’.RESULTADOS Para invocar a la interfase tecleemos ECG en la ventana de comandos de Matlab. o En seguida aparecerá la pantalla de la siguiente ventana. Con el botón CONTINUAR ingresaremos a la interfase que se muestra el la siguiente ventana: Muestra todos los botones de la interface activados 23 . Entrar al ECG Portátil Ventana de introducción a la interface del ECG Portátil.

24 .dat que contiene los datos de un individuo corriendo en una bicicleta fija durante un período de 5 minutos.CASO No.1 Cargando un archivo *. Botones Desactivados Como podemos observar al cargar o realizar una nueva adquisición el archivo se grafican los datos y se activa el botón PROCESA para aplicarle los filtros correspondientes a la señal.

El análisis tiempo frecuencia de un ECG refleja segundo a segundo las variaciones en la frecuencia fundamental. calcular la Variabilidad de la Frecuencia Cardiaca (VFC) del individuo y determinar la FFT. calcular su transformada rápida de Fourier (FFT) y la variabilidad de la frecuencia cardiaca (VFC). regularidades. amplitud. 25 . forma de onda y estructura de la señal.Después de procesar la señal se activan los botones restantes para detectar el complejo QRS de la señal. Ventana después de procesar la señal La figura muestra cuales son los resultados obtenidos después de filtrar la señal. pudiéndose detectar rápidamente cambios en la frecuencia.

26 .CASO No.2 En este caso el individuo se encuentra en reposo.

27 .Ruido ECG Original ECG Filtrado Podemos observar claramente como se eliminó de las componentes de ruido en la señal sin alterar la forma de la señal.

4933 lat/min 28 .Tanto el análisis temporal como frecuencial de la variabilidad de la frecuencia cardiaca (VFC) están basados en la medida directa de la duración del intervalo RR (tiempo entre dos ondas R consecutivas en el electrocardiograma. ECG). t1 t2 VFC = 136.364 lat/min t1 t2 VFC = 64.

29 . Estos algoritmos permiten el estudio de las bioseñales en el dominio de la frecuencia y constituyen una herramienta adicional para el diagnóstico médico. Los filtros digitales representan alternativas útiles para el análisis digital del ECG. Se dispone también de las herramientas necesarias para resolver algunos problemas en los que resulta difícil integrar. El sistema y lenguaje MATLAB simplifica los cálculos del álgebra lineal. diferenciar o determinar valores específicos de funciones que requieran aproximaciones numéricas de la solución deseada. El enfoque matricial de su estructura permite diversas maneras de procesamiento de los arreglos de datos.RESPIRATORIA de la UAM Iztapalapa.Comentarios: Los datos de muestra para presentar los resultados fueron facilitados por el departamento de FISIOLOGÍA CARDIOVASCULAR.

En cuanto a la confiabilidad en la medición de la Variabilidad de la Frecuencia Cardiaca (VFC) tenemos que se encuentra en un 99% lo cual es aceptable para el usuario pero los requerimientos en cuanto a la memoria de la PC son considerables utilizando la identificación de las ondas R.Conclusiones: El objetivo de este proyecto fue desarrollar una interface con características específicas como es la precisión en la medición de la Variabilidad de la Frecuencia Cardiaca ya que este valor representa una variable fisiológica de gran importancia para el diagnostico que el médico está realizando. 30 . El sistema que se ha desarrollado destaca por su bajo costo. También es importante que el usuario final encuentre un ambiente amigable en el equipo que está manejando lo cual conlleva a que tenga una mayor confianza en lo que está realizando y reducir así el error en el manejo del equipo y por consiguiente también reducir el error en el diagnóstico. La capacidad de poder visualizar las imágenes desde cualquier PC que opere con el sistema operativo Windows. y portabilidad.

Figura 2. La señal es amplificada y posteriormente registrada en un tira de papel que se mueve a velocidad constante. de este nodo al haz de His. son capaces de descarga espontánea. las vías auriculares internodales. Los impulsos generados en el nodo SA pasan a través del músculo auricular al nodo AV. Las diversas partes del sistema de conducción y. Las partes del corazón normalmente laten en sucesión ordenada: la contracción auricular (sístole auricular) va seguida de la contracción de los ventrículos (sístole ventricular) y durante la diástole las cuatro cámaras están relajadas. Latido cardiaco y la actividad eléctrica del corazón. el nodo auriculoventricular (nodo AV). por el sistema de Purkinje. el nodo SA normalmente descarga de manera más frecuente propagándose la despolarización desde él a las cuatro regiones. en condiciones anormales. Electrocardiógrafo. 31 . El electrocardiógrafo es el equipo que permite registrar la actividad eléctrica del corazón a partir de una serie de terminales o electrodos metálicos de Ag/AgCl (Plata / Cloruro de Plata) conectados en la superficie de cuerpo del paciente. El latido cardiaco se origina en un sistema cardiaco de conducción especializado y se propaga a través de este sistema a todas las partes del miocardio. y a través de las ramas del haz de His. Sin embargo. y el sistema de Purkinje.Apéndice A Electrocardiógrafo. el marcapasos cardiaco y su frecuencia de descarga determina la frecuencia a la que late el corazón. al músculo ventricular. por tanto. Las estructuras que constituyen el sistema de conducción son el nodo sinoauricular (nodo SA). partes del miocardio. El nodo SA es. Estructura física del corazón. el haz de His y sus ramas. antes de que éstas descarguen espontáneamente.

la suma de los potenciales en los vértices en un triángulo equilátero con una fuente de corriente en el centro es cero en todo tiempo. corresponde al retraso fisiológico que sufre el estímulo en el nodo arterioventricular. su duración es menor de 100 ms y su voltaje no excede los 5. Los nombres de las diversas ondas del ECG y su cronología en los seres humanos se muestran a continuación: Onda P: En condiciones normales. apareciendo al final del segmento ST. Estas son tres derivaciones estándar de los miembros que se usan en electrocardiografía.Electrocardiograma. Intervalo PR: Es el período de inactividad eléctrica. Su duración estará comprendida entre los 320 y 400 ms. El ECG puede ser registrado usando un electrodo activo o explorador conectado a un electrodo indiferente de potencial cero (registro unipolar) o entre dos electrodos activos (registro bipolar). Onda T: Corresponde a la repolarización ventricular. Producida por la despolarización de ambas aurículas. En un conductor de volumen. Segmento ST: Desde el final del QRS hasta el inicio de la onda T. las fluctuaciones en el potencial. Figura 3: Sistema de conducción del corazón y su correlación con el ECG 32 . Su duración debe estar comprendida entre 120 y 200 ms. El registro de estas fluctuaciones de los potenciales durante el ciclo cardiaco es el electrocardiograma (ECG). Complejo QRS: Representa la despolarización de ambos ventrículos.5 mV. Intervalo QT: Comprende desde el inicio del QRS hasta el final de la onda T y representa la despolarización ventricular. pueden ser registradas extracelularmente. Puede construirse aproximadamente un triangulo (triángulo de Einthoven) con el corazón en su centro colocando electrodos en ambos brazos y en la pierna izquierda. Su duración debe estar comprendida entre los 80 y 100 ms. es la primera marca reconocible en el ECG. que representan la suma algebraica de los potenciales de acción de las fibras del miocardio. por que el cuerpo es un conductor de volumen). A causa de que los líquidos corporales son buenos conductores (es decir.

12 segundos. siendo la pierna positiva. Triángulo de Einthoven.Derivaciones bipolares. II y III son registros de la diferencias de potencial entre dos miembros. Taquicardia: Se caracteriza por un aumento del ritmo cardiaco por arriba de los 90 lpm.2 milivolts equivalentes a 2mmm y una duración menor de 0. Derivación II: entre pierna izquierda (+) y brazo derecho (-). Derivación I: entre brazo izquierdo (+) y brazo derecho (-). los electrodos están en el brazo derecho y en la pierna izquierda. En la derivación II. Esta derivación es la más adecuada para el análisis de la onda P. La sintomatología puede ser falta de oxigenación. dolor de pecho. para los tres tipos de derivaciones. Arritmias del Nodo SA. No cambia la morfología de ECG. Debido a que la corriente sólo fluye en los líquidos corporales. los electrodos están en el brazo izquierdo y en la pierna izquierda con está positiva. tendrá una amplitud menor a 0. no importa donde se coloquen los electrodos de las extremidades. los registros obtenidos son aquéllos que se obtendrían si los electrodos estuvieran en los puntos de fijación de las extremidades. Las derivaciones estándar de los miembros I. Figura 4. No cambia la morfología del ECG. pulso débil. Algunas arritmias cardiacas. Bradicardia: Se caracteriza por el descenso del ritmo cardiaco por debajo 60 lpm. 33 . Derivación III: entre pierna izquierda (+) y brazo derecho (-). La sintomatología es parecida a la bradicardia. y en la derivación III. se conectan de manera que una desviación hacia arriba sea inscrita cuando el brazo izquierdo se vuelva positivo con respecto al derecho (brazo izquierdo positivo). En la derivación I.

el incremento del tono vagal resultante produce bradicardia sinusal. Se trata de una prolongación de la conducción AV en la que se transmiten todas las ondas P y todos los intervalos PR tienen la misma longitud. Paro o Pausa Sinusal. Bloqueo del Nodo AV. infarto al miocardio de la cara inferior. Bloqueo AV de Primer Grado. Existe depresión intensa de la actividad del nódulo sinusal. Pausa sinusal. esporádicamente un estímulo queda bloqueado. hipotensión arterial sistémica y algunas veces bloqueo cardiaco) o la liberación del potasio y adenosina por las células miocárdicas isquémicas. dando como resultado final una alteración en la formación del impulso nodal senoatrial. cambios degenerativos del nodo AV. ya que existen latidos de escape de la unión durante las pausas excesivas de la actividad SA. El cuarto complejo corresponde a un latido de escape de la unión. fiebre reumática aguda. Bloqueo permanente de la actividad generada en el nodo sinusal. Paro o pausa sinusal. El SSE se produce con mayor frecuencia en el infarto agudo del miocardio inferior (por isquemia del nodo atrioventricular). fibrosis degenerativa. reconociéndose en el ECG por un paro sinusal de duración generalmente doble del ciclo RR precedente. lipotimias y aumento del número de extrasístoles ventriculares. la estimulación de los reflejos de Bezold-Jarisch (cuando la isquemia estimula los nervios aferentes adyacentes al nódulo AV. Interrupción del paso del estímulo generado en el nódulo sinusal hacia el tejido específico auricular de conducción. Tercer grado. El paciente debe ser examinado minuciosamente para descartar la presencia de hipotensión arterial. fármacos depresores del nodo AV. Causas: cardiopatía isquémica. miocarditis.Bloqueo del Nodo SA. ya que estas son las únicas razones para tratar este tipo de arritmia. Falta de formación de un impulso en el nódulo sinusal. Es un síndrome clínico que se caracteriza por una función anormal del nódulo sinusal por alteraciones orgánicas y funcionales de las células que la componen. Síndrome del Seno Enfermo. hiperpotasemia. La ausencia de ondas P y un ritmo de escape funcional ó ventricular sustituirán al marcapasos principal. etc. Figura 5. 34 . Los hay de tres grados: Primer grado. su transmisión y conducción. no se identificable en el ECG convencional. Segundo grado. Las causas pueden ser: infarto del miocardio que afecta el tejido SA. No es muy importante desde el punto de vista clínico. tono vagal excesivo.

Figura 6. En este tipo de bloqueo no todos los impulsos auriculares son conducidos a los ventrículos. Existe patología a nivel del nódulo AV. Bloqueo AV de tercer grado. y sus causas pueden ser: enfermedad grave degenerativa del sistema de conducción. miocarditis y posterior a cirugía cardiaca. Bloqueo AV de Segundo Grado. aumento del tono vagal (deportistas). cardiopatía isquémica (frecuente en la evolución del infarto al miocardio de la cara inferior por isquemia del nodo AV). enfermedad degenerativa del nodo AV. Tanto aurículas como ventrículos laten con ritmos independientes. Figura 8. Bloqueo AV de 2°. tipo Mobitz II. en forma transitoria o definitiva. Se produce cuando el impulso auricular es incapaz de pasar a los ventrículos. Figura 9. Bloqueo AV de primer grado. tipo Mobitz II. En el Mobitz I existe un retraso creciente de la conducción AV hasta que una onda P no es conducida (alargamiento progresivo de los intervalos PR) y sus causas pueden ser: digital. El bloqueo tipo Mobitz II es un retraso de la conducción a nivel de la rama del haz de His (infranodal y dentro del sistema His-Purkinje). Existen dos tipos diferentes: tipo I (Mobitz I o Wenckebach) y tipo II (Mobitz II). haz de His o las ramas del haz. miocarditis. Bloqueo AV de Tercer Grado. 35 . Figura 7. infarto del miocardio de la pared anterior. de tal modo que el impulso auricular no puede pasar. Bloqueo AV de 2°.

sencillo. se puede utilizar como parte inicial de un examen para ayudar al médico a reducir las posibilidades en el proceso de diagnóstico. habitualmente de 300 por minuto. 36 . no doloroso y relativamente barato. La despolarización es tardía. Flútter Auricular. pero no las dos al mismo tiempo. ¿Para qué se hace un ECG? Muchas condiciones de salud pueden causar cambios en el ECG. Se debe a un circuito de reentrada único dentro de la aurícula derecha.Flútter (aleteo) Auricular. Ya no se trasmiten de forma adecuada el impulso eléctrico a través de las ramas del has de his. nodal ó ventricular) que "salta" ante la ausencia de estímulos provenientes del marcapasos natural (nódulo sinusal). Los ECG también se hacen como exploraciones físicas de rutina para poder compararlos con ECG anteriores y determinar si una enfermedad oculta o no detectada puede causar los cambios en el ECG. Se refiere al complejo electrocardiográfico (auricular. Trastornos de conducción: Disfunción del sistema de conducción eléctrica del corazón. Escape. Figura 10. El bloqueo puede estar antes de la bifurcación en cualquiera de los dos fascículos. Bloqueo bifacicular: Consiste en el bloqueo de la rama derecha y cualquiera de los fascículos de la rama izquierda. Dado que el ECG es un examen rápido. Ritmo auricular rápido y regular. Bloqueo trifacicular: Consiste en el bloqueo de la rama derecha y ambos fascículos. Bloqueo de la rama derecha del has de his: No hay transmisión del impulso eléctrico a través de la rama derecha pero si en la rama izquierda y debido a una contracción reflejo vuelve a haber transmisión en la rama derecha después de un intervalo de tiempo (ms) Bloqueo de la rama izquierda del has de his: La rama izquierda esta sin conducir el impulso eléctrico. menos frecuente en la insuficiencia cardiaca congestiva. que puede hacer que los latidos sean demasiado rápidos o demasiado lentos o que tengan una velocidad irregular. Ataque al corazón (también llamado infarto de miocardio): Lesión del músculo cardiaco debida a un suministro insuficiente de sangre. Causas: cualquier forma de cardiopatía (más común en la fiebre reumática. Las condiciones que pueden causar cambios en el patrón del ECG pueden incluir. Bloqueos troncales. en la tromboembolia pulmonar y miocarditis. pero no se limitan a las siguientes: Isquemia: Disminución del flujo de sangre oxigenada a un órgano debido a la obstrucción de una arteria. como tiene dos fascículos se cae en un hemibloqueo sea anterior o posterior.

100 DC . Frecuencia (Hz) 0.1 . etc. es prácticamente inevitable. Enfermedad valvular cardiaca: Una o más de las cuatro válvulas del corazón está defectuosa o tiene una malformación congénita.0 0. Tipos de Electrocardiógrafos.02 . puede ser debida a diversos factores. Electrocardiograma de esfuerzo Utiliza los parámetros hermodinámicos. Holter La historia comenzó en 1961. duración del ejercicio y capacidad aerodinámica (máximo consumo de oxígeno).150 DC . y las causas que lo propician. Adquisición señales bioeléctricas. motores. En la actualidad. Pericarditis: Inflamación de la bolsa (revestimiento fino) que rodea al corazón. y aparatos como luces. El principal objetivo. En primer lugar.10000 Tabla Señales Bioeléctricas 37 . como los trastornos de las válvulas. que se define como una señal ajena a la señal de estudio. ha pasado a un soporte sólido. citamos el concepto de ruido.5.5.0002 . fluorescentes.0. como cuando el conductor se golpea contra el volante en un accidente automovilístico. la insuficiencia cardiaca congestiva. Traumatismos en el pecho: Traumatismo directo en el pecho. Dilatación cardiaca: Condición en la que el corazón es mucho más grande de lo normal. es conseguir un sistema con muy poco ruido. Destacamos. para referirse a las señales externas a nuestro sistema. o sustancias químicas de la sangre. Podemos destacar: la red eléctrica. provocando errores en el sistema de medición. la presión alta de la sangre. tales como el potasio. Bicicleta ergométrica y la cinta sin fin: subir y bajar escalones. Electrocardiografía transteléfonica.Trastornos electrolíticos: Desequilibrio en los niveles de electrolitos. El termino interferencia. El físico Norma Holter inventó un electrocardiógrafo que permitía un registro continúo del ECG aunque era una cinta magnética. El conocimiento acerca del ruido. el problema que conlleva la amplitud tan pequeña de las señales bioeléctricas. los trastornos de conducción. Señal ECG EEG EMG Amplitud Rango (mV) 0. el magnesio o el calcio. Los potenciales bioeléctricos del ser humano son magnitudes que varían con el tiempo. Los parámetros biomédicos pueden ser transferidos en señales capaces de ser transmitidas por un canal de comunicación. también es utilizado en este documento. o propias del sistema. ayudarán al procesado y eliminación de éste. La presencia de ruido en el registro de este tipo de señales.05 . para la adquisición de la señal electrocardiográfica. Los valores de dichos potenciales pueden variar entre distintos individuos por diversos factores. Ya sea por causas ajenas.3 0. que pueden seguir una evolución temporal en el tiempo y espacio.

También podemos citar otros motivos como la red o cargas electrostáticas entre otros.Ruido en la etapa de amplificación. La principal a destacar es producida por el contacto entre el electrodo y la piel del paciente. y entre los conductores y el equipo. Debido al bajo nivel de la señal. Causadas por la fuente de alimentación y los propios componentes eléctricos. Potenciales de contacto El hecho de colocar un electrodo en contacto con la piel a través de un electrolito conlleva a una distribución de cargas entre el interfaz electrodo-electrolito dando lugar a la aparición de un potencial. y que el paciente se encuentre en un perfecto estado de reposo. como puede ser la respiración. e incluso el ruido generado por los propios componentes electrónicos. Citaremos los siguientes: Ruido provocado por el exterior. En el momento en que la posición del electrodo se mueve respecto al electrolito producirá una alteración en la distribución de la carga alterando la señal del ECG. Causadas por la circulación sanguínea. las capacitivas como son el acoplamiento con el paciente. es preciso amplificarla. Cargas electrostáticas. de la masa muscular. etc. a) Fuente de alimentación. limpiar la superficie con alcohol. También se pueden descartar. 3. La solución sería fijar bien los electrodos. Fuentes internas de ruido. La transmisión de la parte digital añade ruido a la parte analógica. Este problema surge por el movimiento del sujeto en estudio. Añadiremos las inductivas. Respiración. puede llegar a generar hasta 50Hz. las baterías reducen el ruido además de aumentar la seguridad del paciente. Para ello debemos respetar los siguientes puntos: Reposo y relajación del paciente en ambiente adecuado para estas dos condiciones. 5. Interferencias (Ruido). 1. provocan alteraciones en la línea e incluso saturaciones en los amplificadores. otros aspectos bioeléctricos o fisiológicos. 38 . La red. 4. movimiento del paciente. siendo responsable de las alteraciones del equipo. Provoca cambios de amplitud que alteran el registro del ECG. incluyendo. Ruido provocado por el interior. 2. Potenciales bioeléctricos. pero para conseguirlo de manera correcta para futuros tratamientos de dicha señal es preciso tener en cuenta distintos factores que pueden dar lugar a señales de ruido que interfieren con la señal deseada. etc. Para solventar este problema se deberían utilizar componentes de calidad debido al limitado ancho de banda del sistema.

Variabilidad de la superficie a zonas interiores.Características eléctricas del paciente. pues a superiores a estos podrían provocar contracciones involuntarias de los músculos. asfixia. La corriente que circula por el cuerpo humano depende de los siguientes factores: Magnitud de la corriente que circula. Duración del paso de la corriente. etc. Los valores de dichas corrientes deben estar entre los estándares (entre 0. 39 .5-10mA). Frecuencia.

Depto. Electrocardiógrafo Portátil. Universidad de Alcala. -Matlab e Interfaces Gráficas CONATEC 2002 M. Manuel Mazo. http://www. de Electrónica.Facultad de Cs.Bibliografía: -Jiménez Santiago M. Jorge E.uvmnet.asp 40 . Tesis Lic. David Provencio Dpto. de Ingeniería Eléctrica . Luciano Boquete. Mejía González Jaime. Biomédica UAM-I 2007. Sira Palazuelos. . Ing.edu/investigacion/episteme/numero1-05/reportes/a_diseno. -Estudio de la Transformada de Fourier y La Transformada Wavelet como Herramienta de Análisis y Clasificación De Señales EEG José L. Unidad Tijuana -Análisis Espectral del Electrocardiograma Agretti. Hernán G. Exactas y Naturales y Agrimensura UNNE. Escuela Politécnica. Gonzalo. José Jaime Esqueda Elizondo Universidad Autónoma de Baja California.Monzón. Martín. C.

Sign up to vote on this title
UsefulNot useful