Adquisición y Análisis de Señales Bioeléctricas. con la Consola XBOX 360. por José Eduardo Flores Mora Presentado a la academia de Sistemas Digitales y Comunicaciones del Instituto de Ingeniería y Tecnología de La Universidad Autónoma de Ciudad Juárez para su evaluación LA UNIVERSIDAD AUTÓNOMA DE CIUDAD JUÁREZ Marzo del 2010 Adquisición y Análisis de Señales Bioeléctricas con la Consola XBOX 360. MC. Alejandra Mendoza ___________________________________________ Presidente de la academia Ing. Iván J. Muñoz Cano ___________________________________________ Asesor José Eduardo Flores Mora Alumno ___________________________________________ Adquisición y Análisis de Señales Bioeléctricas. con la Consola XBOX 360. Introducción. Existen infinidad de equipos con gran poder de procesamiento de datos, que nos brindan soluciones a determinados problemas. Sus fabricantes buscan unir estas soluciones en dispositivos Multitarea, hasta llegar al punto que se ha rebasado la satisfacción de algunas necesidades básicas actuales, como la comunicación, organización, etc., cubriendo también otras no tan básicas como el entretenimiento; los ordenadores, los celulares y una gran diversidad de dispositivos cada vez son más accesibles y satisfacen estos requisitos. Sin embargo, algunos equipos electrónicos podrían resultar una solución a un campo más específico por su alto poder de procesamiento, como es el caso del Xbox 360 para adquirir una señal bioeléctrica. Este equipo se lanzó en el año 2005 y es una consola de videojuegos, desarrollada por la empresa Microsoft con colaboración de IBM y ATI. Fue la primera de su generación en salir al mercado, y aún así se ha logrado mantener a la vanguardia durante casi 5 años con más de 21 millones de equipos posicionados en el continente Americano, y más de 39 millones vendidos en todo el mundo. El campo de la Medicina, en el que se basa este proyecto se ha explotado ampliamente, sin embargo, esta investigación propone una forma diferente de utilizar el Xbox 360 que según la empresa CIU (Competitive Intelligence Unit), en México ha obtenido el 61% del mercado [5], y como revela otro de sus estudios, el 59% de los mexicanos están dispuestos a gastar entre dos mil y cuatro mil pesos para la compra de una consola de videojuegos [6]. Es por esto que en el documento presente se fundan las bases del proyecto de titulación propuesto, demostrando como con una consola, un control inalámbrico, el entorno de desarrollo C# con la API de Microsoft XNA, las conexiones electrónicas pertinentes, y los conocimientos adquiridos a lo largo de la carrera; se puede desarrollar un sistema capaz de registrar señales bioeléctricas y representarlas en pantalla, y el procesamiento digital de dichas señales, comprobando así una utilidad en el campo de la medicina y abriendo las puertas a futuros proyectos que aprovechen las características del Xbox 360. Antecedentes. En el año 2001 en Venezuela, en el artículo presentado por M. Hernández y C. Ramírez, se describe el desarrollo de un programa basado en la técnica de programación multitareas, y utilizando objetos de sincronización entre procesos bajo el sistema operativo Windows98, que nos brinda un punto de partida en mediciones de señales bioeléctricas con un sistema operativo con una antigüedad mayor a diez años [3]. En el 2009 Simon Scarle del Reino Unido, propone el desarrollo de una herramienta de análisis de arritmias cardiacas, como una solución a la detección de paros cardiacos, en ese trabajo se planteó una simulación de cómo actúan distintas células comparadas como compuertas lógicas, en la consola de videojuegos Xbox 360 programada en lenguaje C++ para ayudar en la identificación de dicho problema. El decidió aprovechar esta arquitectura basado en el uso del GPU como procesador principal para desarrollar tal proyecto, comprobando que con este hardware se pueden realizar simulaciones de señales cardiacas [1]. En ese mismo año un equipo de estudiantes mexicanos presentan un prototipo de juego para niños con problemas motrices en las piernas, en el que utilizando una silla de ruedas modificada, un circuito electrónico y un juego realizado en la plataforma XNA, se les puede dar un entretenimiento ameno a dichos niños. En el documento se muestra el circuito recomendado, y capturas de pantalla del software realizado para Computadora. Con ese proyecto se presentaron en el concurso de Imagine Cup realizado por Microsoft cada año desde el 2008 a la fecha, posicionándose en la final de Egipto sede de la competencia mundial en el 2009[2]. Marco teórico. Una de las características más determinantes de la selección de este producto ante una computadora regular es la comparativa de costo contra poder de procesamiento. Un equipo de cómputo con características similares, puede llegar a costar cerca del triple del precio de la versión “Arcade” de esta máquina de videojuegos, esto sin contar con un periférico de conexión inalámbrica, que en el Xbox 360 es un control inalámbrico que viene incluido en el paquete. Su arquitectura posee un procesador de 3 núcleos cada uno con un reloj de 3.2 GHZ. y dos hilos, lo que nos permite el manejo de 6 hilos de procesos en total, con 1MB de memoria Cache compartida L2. Sin embargo también hay que considerar que el uso del GPU permite transferencias de procesos de hasta 250GB/seg[4], ambos procesadores pueden utilizarse con el Sistema Operativo (S.O.) incluido. El bus de transferencia es de 128 bits a la GDDR3 RAM[4], la cual es mucho más rápida que las memorias RAM de computadoras personales de su generación, por lo que su S.O. solo requiere el uso de 32MB para ejecutarse correctamente, teniendo a nuestra disposición 480MB, que si bien no son una capacidad asombrosa en la actualidad, cuando se utiliza con su ancho de bus, podremos realizar mayor cantidad de procesos que equipos de computo actuales, que tienen un hardware de hasta 64 bits de transferencia en el área comercial y con un costo mayor. Otro factor decisivo para optar por este equipo, definitivamente es el manejo de una de las plataformas mas compatibles con programación orientada a objetos, manejo de clases, etc. en la actualidad, en un Ambiente de Desarrollo Integrado (IDE) de manejo cotidiano “C#” ya que el XNA es una Interfaz de Desarrollo de Aplicaciones (API) para programar videojuegos, diseñada para programadores que manejen el Visual Studio .NET (2005, 2008, 2010, etc.). El Xbox 360 aún se encuentra como un dispositivo con un potencial de procesamiento que no se ha explotado completamente, así nace una inquietud por desarrollar proyectos que no solo sean una simulación, sino también obtención de señales reales. En este caso aprovecharemos los sensores usados en un electroencefalograma (EEG) para adquirir las señales cerebrales, procesarlas con wavelets y representarlas gráficamente [7]. El desarrollo del proyecto comienza con la familiarización con el entorno de programación C# y la Interfaz de Programación de Aplicaciones(API) XNA, que es la herramienta creada por Microsoft, dirigido a creadores de videojuegos, la cual en esta ocasión funcionará como intérprete del procesamiento de la señal ; Comprensión de la señal a adquirir, investigar en el mercado circuitos de medición actuales, costos y utilidad; Diseño del circuito de acoplamiento, comparar necesidades de los sensores con las capacidades de adquisición del control inalámbrico; Captura de señal, al tener el circuito, almacenar las señales en la memoria del Xbox 360; Procesamiento, aplicar las ecuaciones matemáticas correspondientes, para analizar irregularidades; Visualizar resultados, es la etapa en que se obtiene gráficamente los valores obtenidos; y durante cada etapa se considera implícito el estudio y solución de errores y documentación. Para el desarrollo de la primera etapa que es el Software, se realizaran pruebas con XNA y el mando de la consola. Se deben obtener los límites para representar en pantalla los datos leídos en el control de manera clara y organizada. La segunda etapa será investigar los circuitos que leen y despliegan señales bioeléctricas tales como presión arterial, temperatura corporal, flujo sanguíneo, etc. para conocer cuales sensores se pueden integrar al control del Xbox 360. Es importante comprender los métodos antiguos y actuales para la solución del problema presentado. La tercera parte es un análisis del control, para saber cómo puede afectar una conexión externa a este. En esta etapa se deben realizar mediciones digitales y el diseño de un circuito electrónico y/o conexiones digitales y análogas calculadas, para funcionar como interfaz entre el mando y el(los) sensor(es) utilizado(s). Se continuara con el almacenamiento en memoria de la señal adquirida, esta etapa pretende investigar las clases y métodos para guardar información en un Xbox 360, y analizar si es posible exportar los resultados para ser visualizados en otros dispositivos (Computadoras, PDA’s, Celulares). En el procesamiento se desea conocer hasta qué punto es posible analizar la información obtenida y emitir un juicio acerca del status del paciente, por ejemplo: Si los latidos del corazón son menores a 120 por minuto y mayores a 60 por minuto, el paciente se encuentra estable. Una vez concluida la etapa del procesamiento, se buscara representar de manera didáctica la información, con el fin de que la comprenda un usuario domestico y pueda enviar esta información a una persona calificada, y sea una opción accesible para pacientes que requieran un monitoreo continuo en casa. Metodología. Se obtendrán los datos de señales bioeléctricas por medio de sensores, en este caso se proveerá una señal de tipo electroencefalograma (EEG). La señal obtenida por estos sensores (EEG) pasará por un circuito de acoplamiento hacia el control del Xbox 360 modificado, se enviará a la consola y los datos se almacenarán en memoria para ser procesados mediante wavelets, para después generar las graficas en la pantalla. El mando será el dispositivo de enlace entre los sensores bioeléctricos y la consola. En la investigación se obtendrá el método de conexión entre el mando y los sensores, así mismo el diseño del circuito pertinente. Objetivo general: Adquirir y analizar señales bioeléctricas en un equipo de entretenimiento. Etapa de Investigación. Objetivo específico: Investigación de entorno de desarrollo señales y sensores. Meta 1: Obtener y comprender el Software Acción 1.1.1.-Obtener e instalar C# y pago de licencia de XNA Acción 1.1.2.- Realizar programas de prueba utilizando las librerías de XNA. Acción 1.1.3.-Obtener señales del mando y mostrarlas en pantalla Meta 2: Conocer las señales a manejar Acción 1.2.1.- Investigar en libros, revistas e internet, órganos del cuerpo humano que emitan señales y métodos de obtención de las mismas. Acción 1.2.2.- Realizar visitas a Unidades Medicas para solicitar información Meta 3: Conseguir circuitos y/o sensores que registran Señales bioeléctricas Acción 1.3.1.- Buscar los sensores utilizados. Acción 1.3.2.- Estudiar los errores que pueden surgir al adquirir una señal bioeléctrica. Acción 1.3.3.- Obtener sensores y/o circuitos. Etapa de Diseño y pruebas. Objetivo específico: Obtención correcta de la señal. Meta 1: Diseño de la Interfaz de conexión del sensor al mando. Acción 2.1.1.-Revisar especificaciones electrónicas del Mando (Control). Acción 2.1.2.-Evaluar si se requiere un circuito adicional, y de ser así diseñarlo. Meta 2: Adquirir y almacenar la señal Acción 2.2.1.-Generar métodos con los resultados de los programas de prueba. Acción 2.2.2.-Agregar el método de almacenamiento de datos en arreglos. Meta 3: Pruebas preliminares Acción 2.3.1.- Confirmar que los datos obtenidos sean los valores deseados. Etapa de procesamiento y representación de la señal. Objetivo específico: Procesamiento, representación y almacenamiento correcto de la información. Meta 1: Procesamiento de datos. Acción 3.1.1.- Selección del algoritmo para tratamiento de la señal. Acción 3.1.2.- Programación del algoritmo. Acción 3.1.3.- Aplicación del algoritmo a la señal. Meta 2: Visualizar la señal en pantalla. Acción 3.2.1.- Programar función para generar grafica. Meta 3: Importar/Exportar resultados Acción 3.3.1.- Investigar formatos para exportar y compatibilidad con el entorno de desarrollo utilizado. Acción 3.3.2.- Programar funciones para importar y exportar. Etapa de comprobación. Objetivo específico: Evaluar de manera fiel los resultados obtenidos. Meta 1: Corroborar la señal de salida del Xbox 360 simulando los datos en Matlab. Acción 4.1.1.- Analizar los datos obtenidos y generar una función en el entorno de desarrollo Matemático Matlab. Acción 4.1.2.- De manera visual comprobar los resultados. Cronograma Etapa de Investigación Semestre enero-junio 2010 Actividades Enero Febrero Marzo Abril Mayo 1.1.1 1.1.2 1.1.3 1.2.1 1.2.2 1.3.1 1.3.2 1.3.3 Etapa de Diseño y Pruebas. Verano 2010 Actividades 2.1.1 2.1.2 2.2.1 2.2.2 2.3.1 Mayo Junio Etapa de Procesamiento y Representación Semestre agosto-diciembre 2010 Actividades Junio Julio Agosto Septiembre 3.1.1 3.1.2 3.1.3 3.2.1 3.3.1 3.3.2 Semestre agosto-diciembre 2010 Actividades 4.1.1 4.1.2 Septiembre Octubre Referencias. [1] Simon Scarle, “Implications of the Turing Completeness of Reaction-Diffusion Models, informed by GPGPU simulations on an XBox 360: Cardiac Arrhythmias, Reentry and the Halting Problem”, http://research.microsoft.com/pubs/79271/turing.pdf, 2009. [2] Hernández S M, Ramírez R C., “Adquisición y presentación de señales biomédicas utilizando objetos de sincronización entre procesos bajo Windows 98”, http://www.hab2001.sld.cu/arrepdf/00217.pdf [3]http://imaginecup.com/MyStuff/MyTeam.aspx?TeamId=15722 [Consulta 9 marzo 2010] [4] Jeff Andrews, Nick Baker, “XBOX 360 SYSTEM ARCHITECTURE”, http://www.cis.upenn.edu/~milom/cis501-Fall08/papers/xbox-system.pdf [5]http://oxm.com.mx/noticias/el-xbox-360-conduce-la-mayoria-del-mercado-enmexico/ [Consulta 9 de marzo 2010] [6]http://www.publimetro.com.mx/noticias/videojuegos-retan-a-larecesion/pigw!NhmXnIcfXY61nHCuOPpww/ [Consulta 9 de marzo 2010] [7] PROSPECTS OF BRAIN-MACHINE INTERFACES FOR SPACE SYSTEM CONTROL, ww.sciencedirect.com, C. Menonetal/Acta Astronautica64(2009)448 – 456 Adquisición y Análisis de Señales Bioeléctricas. con la Consola XBOX 360. Por José Eduardo Flores Mora Presentado a la Academia de Sistemas Digitales y Comunicaciones Del Instituto de Ingeniería y Tecnología de La Universidad Autónoma de Ciudad Juárez Para obtener el título de INGENIERO EN SISTEMAS DIGITALES Y COMUNICACIONES LA UNIVERSIDAD AUTÓNOMA DE CIUDAD JUÁREZ Noviembre del 2010 UNIVERSIDAD AUTÓNOMA DE CIUDAD JUÁREZ Instituto de Ingeniería y Tecnología EVALUACIÓN DE EXAMEN PROFESIONAL INTRACURRICULAR NIVEL: UCENClATURA TEMA: Fecho: 25 de Noviembre del 2010 Horario: 09:00 - 11 :00 HRS. "Adquisición y Análisis de Señales Bioelécfricas con la Consola XBOX 360 " La evaluación del examen profesional intracurricular consta de 4 partes: (Desarrollado en 1 hora) 1°._ 2°._ 3°._ 4°._ Exposición por parte de los alumnos (máximo 20 minutos). Réplica por parte del jurado. Comentarios y/o recomendaciones. Entrega de resultados. Nombre del alumno: José Eduardo Flores Mora Calificación Maestro de la materia (30%) 3l Calificación Director de Trabajo (40%) Calificación del Jurado (30%) TOTAL Se recomienda que el documento se deposite para consulta en la BIBLIOTECA Si D NoD Director de Trabajo Ora Nelly Gordillo Caslillo Jurado Coordinador de la Materia "Proyecto de Titulación" Dr. Humberto Ochoa Dominguez Dr Vicio, Manuel Hínostroza Zubía • UA' FIRMADO EN ORIGINAL DEPAR AMEt O DE INGENIE lA ELÉCTRICA Y COMPUTACION ii Declaración de originalidad: Yo José Eduardo Flores Mora, Declaro que el material contenido en este documento es original y no ha sido copiado de ninguna otra fuente, ni ha sido usado pata obtener otro título o reconocimiento en otra institución de educación superior. _________________________ José Eduardo Flores Mora iii AGRADECIMIENTOS Agradezco a mis asesores y al maestro titular de la materia, por todo el apoyo brindado, el tiempo que me dedicaron para la elaboración de este proyecto, a los miembros del comité revisor, a mi familia por confiar en mí, y sobre todo a Dios por brindarme la oportunidad de aprender cada día algo nuevo. Gracias. iv DEDICATORIAS A toda mi familia, amigos, mi novia, siempre están cuando los necesito, siempre que me necesiten cuenten conmigo. A mis asesores Ing. Iván Javier Muñoz Cano y la Dra. Nelly Gordillo, me han ayudado a reforzar mi aprendizaje y al Dr. Hinostroza por su atención y su ayuda. v Resumen. En el presente documento, se presentan las bases y fundamentos del desarrollo, de un prototipo funcional para la adquisición de señales bioeléctricas con una consola de videojuegos. De igual manera, la teoría aplicada en el diseño del circuito generado, así como la estructura de la programación, para permitir darle continuidad a trabajos futuros basados en éste proyecto. El proyecto, consta de un sistema de adquisición de datos análogos, para propósitos prácticos, en este caso medición de biorritmo o señales bioeléctricas. La resolución de la tarjeta de adquisición es de 8 bits, y la frecuencia de muestreo de la señal en el Xbox 360 se limita a 62.5 Hz. por software; sin embargo, para este propósito resulta suficiente. El software utilizado XNA framework, es proporcionado por Microsoft para el desarrollo de Videojuegos, también se realizaron comprobaciones con LabView y Matlab, ya que sus operaciones de procesamiento y filtrado son de gran fiabilidad. vi Lista de figuras y tablas Figura 1: Filtro sinc de orden 12 en LabView..................................................7 Figura 2: Convolución de dos señales cuadradas, resultante señal triangular…………………………………………………………………………….8 Figura 3: Explorador de soluciones C# XNA..................................................9 Figura 4: Compilador de plataformas (PC, XBOX, ZUNE)...........................10 Figura 5: Pantalla de inicio...........................................................................10 Figura 6: Descarga de juegos.......................................................................10 Figura 7: XNA Creators Club........................................................................11 Figura 8: Conexión al ordenador..................................................................11 Figura 9: Selección de Solución o juego......................................................12 Figura 10: Diagrama de bloques..................................................................13 Figura 11: Conexiones del circuito...............................................................14 Figura 12: Función de transferencia pasa bajas orden 2..…......................17 Figura 13: OPAMP LM358...........................................................................18 Figura 14: Amplificador de Instrumentación INA122....................................19 Figura 15: Amplificador de Instrumentacion.................................................19 Figura 16: Electrodo AgCl.............................................................................19 Figura 17: Amplificador de Instrumentación.................................................20 Figura 18: LabView, diseño de interfaz del control.......................................23 Figura 19: Voltaje total..................................................................................24 Figura 20: Voltaje en estado neutral.............................................................24 Figura 21: 0 Volts eje a la izquierda.............................................................24 Figura 22: 3.29 Volts eje a la derecha..........................................................24 Figura 23: Colocación de conector...............................................................25 Figura 24: Conector montado en el control..................................................25 Figura 25: Circuito de Acoplamiento.............................................................25 Figura 26: Graficación del filtro sinc en XNA, MatLab y LabView................26 vii Figura 27: Respuesta a la frecuencia filtro sinc MatLab………….………...26 Tabla 1. Amplitud y frecuencia de señales bioeléctricas……………………….6 Tabla 2. Comparación Xbox360 con equipo de cómputo comercial…..........16 Tabla 3: Valores obtenidos con filtro sinc......................................................26 viii Contenido: DECLARACIÓN DE ORIGINALIDAD.……...……………………….…………iii AGRADECIMIENTOS…...………………………………………………..…….iv DEDICATORIAS……………….………………………………………………....v RESUMEN…………………...…….……….…………………………………….vi LISTA DE FIGURAS Y TABLAS…………..………………………………......vii CAPITULO 1. INTRODUCCIÓN……………….…………….….…………......1 CAPITULO 2. FUNDAMENTOS SEÑALES BIOELÉCTRICAS………….…3 2.1 Tipos de señales bioeléctricas…………..………………………..........3 2.1.1 Electrocardiograma ECG…………………………………….……3 2.1.2 Electromiografía EMG…………..………………………...............4 2.1.3 Electroencefalograma EEG……………………………….……….5 2.1.4 Electrooculograma EOG………………………………….………..6 CAPITULO 3 HERRAMIENTAS DE PROGRAMACIÓN…………………….7 3.1 Fundamentos de LabView………………….…………………………..7 3.2 Fundamentos de MatLab…………………...…………………………..7 3.3 Programación de Xbox 360 XNA…………...………………………….6 CAPITULO 4. DESCRIPCIÓN DEL PROTOTIPO.…..…………………….13 4.1 Diagrama de bloques…...…………………………………………..13 4.1.1 Arquitectura Xbox 360………………………………………14 4.1.2 Señales y filtrado …………………………………………...16 4.1.2.1 Filtros……………………………………………….17 4.1.2.2 Filtro Sinc…………………………………………..18 4.1.3 Circuito de acoplamiento……………………..…………….18 4.1.3.1 Amplificadores……………………….…………….18 4.1.3.2 Amplificadores de instrumentación…………….20 CAPÍTULO 5. PRUEBAS Y RESULTADOS…………….……...................22 5.1 Pruebas………………………………………..…………..……….22 ix 5.1.1 Pruebas XNA ……………………………………………22 5.1.2 Pruebas LabView………..……………….……..………23 5.1.2 Pruebas MatLab………………………………………...24 5.2 Pruebas físicas con el control………………………………..24 5.3 Resultados………………………………………………………25 CAPÍTULO 6. CONCLUSIONES Y RECOMENDACIONES………..27 REFERENCIAS………………………………………………….……………….29 APÉNDICES……………………………………………………………………...32 x ADQUISICIÓN Y ANÁLISIS DE SEÑALES BIOELÉCTRICAS. CON LA CONSOLA XBOX 360. CAPITULO 1. INTRODUCCIÓN. El Xbox 360 posee una arquitectura de procesamiento, comparable con la de una supercomputadora. El objetivo general del proyecto es obtener una adquisición de señales bioeléctricas, amplificadas para su análisis en esta consola. Existe gran diversidad de circuitos electrónicos, con la capacidad de captar señales eléctricas del cuerpo humano, se amplifican sus potenciales eléctricos para poder ser analizados y descubrir problemas que la medicina moderna pueda corregir. También, en la actualidad, se le ha dado otro uso a esta información corporal; las interfases cerebro máquina son el medio de comunicación entre un usuario y su entorno, existen invasivas y no invasivas, algunas de las invasivas tienen la capacidad de ayudar en el tratamiento de algunas discapacidades, como la visual. Esta investigación comprueba que en el Xbox 360, se pueden realizar adquisiciones análogas, con una frecuencia de muestreo menor a 62.5 Hz, para contemplar, entre otros, una interfaz cerebro máquina, en trabajos a futuro. El programa se realizó en XNA, tratando de cumplir con algunos estándares establecidos de diseño de software. Las funciones se trabajaron de manera independiente, para el diseño de sus clases e implementación. 1 El circuito de acoplamiento utilizado, consta de un divisor de voltaje y un amplificador operacional para obtener la referencia y un amplificador de instrumentación como comparador de las señales. 2 CAPITULO 2. FUNDAMENTOS SEÑALES BIOELÉCTRICAS. Las señales bioeléctricas del cuerpo humano, son producidas debido al desplazamiento de iones en disolución (portadores de carga en los fluidos orgánicos), especialmente son correspondientes al Sodio (Na+), Potasio (K+) y Cloro(Cl-). El desplazamiento de iones se produce por la concentración de fluidos orgánicos que son: el líquido extracelular, el intersticial y el intracelular. El movimiento de estas partículas con carga eléctrica se llama difusión y se realiza generalmente de las zonas más concentradas a las más diluidas. Los electrodos tienen la capacidad de recibir el voltaje generado por las reacciones mencionadas y transmitirlo, sin embargo los niveles de voltaje se encuentran en el orden de los microvolts hasta los milivolts. 2.1 Tipos de señales bioeléctricas Las señales bioeléctricas se pueden obtener con distintos fines, para ello existen clasificaciones de graficación de las mismas, para poder tener un mejor control de las necesidades de amplificación y filtrado para cada caso. Las más utilizadas son: electrocardiograma (ECG/EKG), electromiografía (EMG), electroencefalograma (EEG) y electrooculograma (EOG). 2.1.1 Electrocardiograma ECG El electrocardiograma (ECG/EKG, del alemán Elektrokardiogramm) es la representación gráfica de la actividad eléctrica del corazón, sirve para conocer el 3 ciclo cardiaco y estudiar algunas deficiencias del corazón, como defectos del miocardio, agrandamiento del corazón, defectos congénitos, enfermedades de válvula cardíaca, arritmias, taquicardia o bradicardia (frecuencia cardíaca demasiado rápida o demasiada lenta), enfermedades de la arteria coronaria, cambios en la cantidad de electrolitos (químicos en la sangre), etc. El corazón es un tejido de fibras musculares llamado miocardio y sus tejidos son los responsables de la contracción. Produce potenciales de acción con una frecuencia desde 1 Hz (un latido por segundo), que se propagan a las aurículas provocando su contracción. Estos potenciales también se propagan hacia los ventrículos a través de las vías internodales hasta alcanzar el nodo aurículoventricular (A-V) donde las aurículas se contraen para que la sangre que todavía permanece en ellas pase a los ventrículos, proceso llamado sístole auricular. El espectro de señal se extiende desde 0.01 Hz hasta los 150 Hz. Y la amplitud típica en QRS es de 1 mili volt (mv). 2.1.2 Electromiografía EMG La electromiografía se especializa en el análisis de señales provenientes de las reacciones musculares, engloba también a la electroneurografía (ENMG). Las unidades motoras simples SMU (single motor units) forman los músculos, conectadas a axones neuronales motores (motor neuron axons), que a su vez se conectan con las fibras que reciben los comandos por el sistema nervioso central CNS (central nervous system) y se produce un intercambio de neurotransmisores acetilcolina (ACh). Al haber un potencial de acción neuronal motor, los canales de iones se dilatan permitiendo que los iones de Na+ pasen hacia el centro de la membrana, pero los iones de Cl- son rechazados por las cargas negativas a la entrada del canal, por lo que la membrana se despolariza por la corriente de sodio. Una vez la membrana se despolariza, se genera un 4 potencial de acción muscular que se propaga a lo largo de las fibras musculares. Luego de esto viene la relajación muscular el cual es otro proceso activo. El rango de frecuencia de estas señales es mayor que las ECG y EEG, van de 100 HZ a 10 kHZ, y de más alta amplitud. El filtrado supera en gran medida problemas de interferencia. Un filtrado por encima de 20 Hz puede reducir los potenciales de la piel y señales de otros movimientos. 2.1.3 Electroencefalograma EEG Las señales EEG conocidas por sus amplitudes extremadamente pequeñas. Son difíciles de interpretar ya que representan la actividad comprendida de billones de neuronas transmitidas por las membranas del cerebro, fluidos y el cuero cabelludo. Son señales entre los 4 a 20 Hz con una amplitud mínima de 5 micro volts de una fuente de aproximadamente 10 – 20 kilo ohms de impedancia. Las señales eléctricas del cerebro que actualmente se pueden monitorear e identificar se clasifican en: Alpha: Para una persona despierta y en estado de relajación. Describe una actividad eléctrica de 8-12 Hz, típicamente de 20 a 50 micro volts. Beta: Cuando una persona está pensando o respondiendo a algún estímulo. De 14 a 25 Hz, de más baja amplitud. Theta: Cuando la persona está dormida. De 4 a 8 Hz, pueden ser de más de 20 micro volts. Delta: En estado profundo de sueño. De 0.5 a 4 Hz. 5 2.1.4 Electrooculograma EOG: Las señales EOG son recibidas de la diferencia de potencial generada como resultado del movimiento de los ojos entre el flujo conductivo del cráneo, de aproximadamente de 0,4 a 5 mV entre la córnea y la membrana de Bruch situada en la parte posterior del ojo. Es una amplitud pequeña (10 a 100 mili volts) y tiene frecuencias bajas (dc a 10 Hz), por este motivo el amplificador debe tener alta ganancia y buena respuesta en frecuencia baja, o incluso dc. Tabla 1. Amplitud y frecuencia de señales bioeléctricas. 6 CAPITULO 3.- HERRAMIENTAS DE PROGRAMACIÓN Para la realización del proyecto se realizaron pruebas con la información, filtros y datos adquiridos, con dos programas especializados para el tratamiento de señales: LabView y Matlab, para comprobar que los resultados obtenidos en el Xbox 360 tendrían un correcto procesamiento. 3.1 Fundamentos de LabView La estructura de los programas se desarrolla en dos ventanas: el panel frontal y el diagrama de bloques (Izquierda y derecha respectivamente en la Figura 1). En el panel frontal se prepara la interfaz de usuario, formularios, botones, indicadores, etc. El diagrama de bloques permite controlar el comportamiento de cada elemento en el panel frontal, es decir la programación de las funciones de los elementos presentados al usuario. Figura 1: Filtro sinc de orden 12 en LabView 7 3.2 Fundamentos de MatLab Su nombre deriva de las siglas MATrix LABoratory, y es un Entorno de Desarrollo Integrado (IDE) para el lenguaje de programación propio de éste (lenguaje M). Fue creado en 1984 para emplear subrutinas de Fortran en los cursos de álgebra lineal y análisis numérico sin necesidad de programar en dicho lenguaje. Al igual que LabView, sus paquetes de funciones, permiten una amplia funcionalidad reduciendo considerablemente las líneas de código empleadas. La generación de gráficas es mucho más sencilla con este programa, las variables no requieren una previa declaración, y la sintaxis es muy similar a lenguaje C. Incluye palabras reservadas para operaciones matemáticas y graficación. Figura 2: Convolución de dos señales cuadradas, resultante señal triangular. 8 3.3 Programación de Xbox 360 XNA XNA es una plataforma de desarrollo soportada en Visual C# que contiene su propio estándar o framework, en el que se facilita el desarrollo de videojuegos para computadora, Xbox 360, Zune, y actualmente Windows 7 Phone. Cabe aclarar que para la programación en el Xbox 360 con el XNA se requiere una licencia cuyo costo es de $49 USD. por 4 meses y de $100 USD. pero al momento del lanzamiento de un videojuego en la red de Microsoft (Xbox Live), este costo se puede recuperar al vender el juego por internet. Cuenta con sus propias librerías, optimizadas para el desarrollo de videojuegos, pero para este proyecto sólo se tomará el enfoque de las librerías para resolver problemas o funciones matemáticas. La estructura de las soluciones desarrolladas en XNA es muy similar a la de una solución de C#, sin embargo las soluciones no cuentan con una interfaz gráfica basada en formularios. El desarrollo de interfases de usuario es distinto, los formularios no existen como tal, ya que XNA es una plataforma de desarrollo comprimida. La primer parte es un explorador de soluciones donde se agregan todos los elementos del programa, propiedades, referencias, contenido visual y letras. 9 Figura 3: Explorador de soluciones C# XNA Luego se realiza el código en la clase Game.cs donde se encuentran el nombre de la solución, los métodos de acceso al dibujado (Draw), actualizar las lecturas (Update), inicializar los datos (Initialize), cargar contenido gráfico (LoadContent) y eliminar datos de memoria (UnLoadContent). Para poder generar una conexión al Xbox es necesario registrarse con una sesión que tenga registrada una licencia activa del XNA para desarrolladores, misma que genera un código para introducir a la computadora y generar la comunicación. Después el programa se depura en la computadora, en el Xbox, o en ambos: Figura 4: Compilador de plataformas (PC, XBOX, ZUNE) El primer paso en el Xbox 360 es dirigirse al bazar de juegos para descargar la aplicación. 10 Figura 5: Pantalla de inicio Figura 6: Descarga de juegos Al solicitar la descarga pide un código de compra, que puede ser adquirido si se cuenta con una tarjeta de crédito ligada a la cuenta de Xbox Live, o en otro caso mediante la compra a través de la página oficial de XNA Membership. Figura 7: XNA Creators Club Una vez realizada la compra e introducida la clave, el programa se pone en modo de espera de la compilación. 11 Figura 8: Conexión al ordenador Cada vez que se requiera generar una solución en el Xbox, se deberá acceder al programa XNA Creators Club, y cuando se desee revisar el contenido de la solución, buscarla en la biblioteca de juegos independientes con el nombre asignado. Figura 9: Selección de Solución o juego 12 CAPITULO 4. DESCRIPCIÓN DEL PROTOTIPO. El prototipo propuesto es un sistema de adquisición de datos, que amplificará la señal producida por los electrodos conectados al cuerpo, luego, a través del control se enviarán dichas señales al Xbox 360 y se procesarán mediante un filtrado. Los componentes físicos requeridos son: sensores AgCl, circuito amplificador, control, consola Xbox 360 y una pantalla. La pantalla de inicio del programa es un menú como el de cualquier videojuego, donde la primer opción es la de adquirir las señales. 4.1 Diagrama de bloques Figura 10: Diagrama de bloques. En la Figura 10 se observan las etapas de desarrollo del proyecto, primeramente del hardware utilizado para realizar la adquisición. Se inicia con los sensores, que se conectan al circuito amplificador, el amplificador al control y por último el control se comunica con el Xbox 360. 13 Circuito de acoplamiento. Control Xbox360 Figura 11: Conexiones del circuito Como se observa en la Figura 11, se utilizan sensores de cloruro de plata conectados a un circuito de acoplamiento, que es el encargado de elevar la amplitud, para transmitir información valida al control. En la etapa de software el primer paso es la adquisición, luego se almacenan los datos y se procesan. 4.1.1 Arquitectura Xbox 360 Su arquitectura posee un procesador de 3 núcleos cada uno con un reloj de 3.2 GHZ. y dos hilos, lo que permite el manejo de 6 hilos de procesos en total, con 1MB de memoria Cache compartida L2. Sin embargo también hay que considerar que el uso del GPU permite transferencias de procesos de hasta 250GB/seg, ambos procesadores pueden utilizarse con el Sistema Operativo (S.O.) incluido. 14 El bus de transferencia es de 128 bits a la GDDR3 RAM, la cual es mucho más rápida que las memorias RAM de computadoras personales de su generación, por lo que su S.O. solo requiere el uso de 32MB para ejecutarse correctamente, dejando a disposición del usuario 480MB, que si bien no son una capacidad asombrosa en la actualidad, cuando se utiliza con su ancho de bus, se puede realizar una mayor cantidad de procesos que equipos de cómputo actuales, que tienen un hardware de hasta 64 bits de transferencia en el área comercial y con un costo mayor. Un equipo de cómputo con características similares, puede llegar a costar cerca del triple del precio de la versión “Arcade” de esta máquina de videojuegos, esto sin contar con un periférico de conexión inalámbrica, que en el Xbox 360 es un control inalámbrico que viene incluido en el paquete. Tomando entonces en cuenta el software de diseño, el precio de una computadora se incrementaría mucho más. El control alámbrico o inalámbrico de la consola, tiene la capacidad de recibir seis señales análogas simultáneas, lo que brinda seis canales activos para la adquisición de señales. También cuenta con dos salidas análogas con las que controla la vibración de dos motores; así también quedan a disposición del usuario, más de 10 botones para el control de los programas. 15 En la tabla 1 se compara una computadora comercial de la marca HP modelo Pavilion S5300, con la consola Xbox 360. Xbox 360 HP Pavilion S5300 Xenon(Tres Powerpc) 3.2 Intel Pentium Dual Core 2.8 Procesador Ghz. Ghz. Memoria Ram 512MB 2 GB. Procesador de video Xenos 500 Mhz Intel USB 3 Puertos 2.0 6 puertos 2.0 Mando(Control) N/A Conexiones inalámbricas Tabla 2. Comparación Xbox360 con equipo de cómputo comercial. 4.1.2 Señales y filtrado Las señales son variables físicas observables y medibles, para la adquisición de las señales eléctricas se debe realizar una transducción en primera instancia, que es la transformación y envío de la señal. El procesamiento de la señal, busca obtener información útil a partir de la misma, sin perder información, pero dándole un formato que facilite su comprensión, o adecuando su manejo electrónico. Un filtro ideal permite el paso de ciertas frecuencias sin modificarlas y elimina completamente otras; esto en la realidad no se puede lograr con exactitud ya que no existen componentes tan precisos en el mercado razón por lo que se tienen aproximaciones. El intervalo de frecuencias que deja pasar el filtro se le denomina banda de paso y todas las frecuencias que elimina se le llama banda de supresión. 16 4.1.2.1 Filtros. Los filtros, en el tratamiento de señales, sirven para rechazar o permitir una frecuencia o una gama de frecuencias o amplitudes, con el fin de recibir solo la información necesaria para el tratamiento de un problema específico, comúnmente se eliminan frecuencias donde se produce ruido no deseado. La función de transferencia es la manera en la que se comporta el filtro, se puede determinar, cuando se pasa una señal a través del filtro, observando el comportamiento de su amplitud y frecuencia. Figura 12: Función de transferencia pasa bajas orden 2 Existen filtros de Respuesta Finita al Impulso (FIR) y de Respuesta Infinita al Impulso (IIR). Los filtros FIR reciben una señal impulso y a la salida dan un número finito de valores no nulos, son estables y normalmente presentan simetría en sus coeficientes. Los filtros IIR nunca regresan al estado de reposo una vez introducida la señal, sus salidas tienden a un valor regularmente, sin embargo los valores resultantes son infinitos, pueden llegar a ser inestables. 17 4.1.2.2 Filtro Sinc. También se le conoce como filtro ideal, elimina todas las frecuencias encima de un ancho de banda dado. En el dominio de las frecuencias se comporta como una función rectangular y en el dominio del tiempo su función respuesta es determinada por la inversa de la Transformada de Fourier. Ecuación: Transformada Inversa de Fourier (Filtro Sinc). 4.1.3 Circuito de acoplamiento. El control del Xbox, cuenta con 6 potenciómetros que regulan el voltaje de la señal de entrada, por lo que para este proyecto se desmontará un potenciómetro, para introducir la señal obtenida de los sensores y amplificarla dentro de los valores permitidos por el mando. Para realizar este procedimiento es necesario conocer el comportamiento de los amplificadores y los voltajes que circulan en el control. 4.1.3.1 Amplificadores. Los amplificadores operacionales (OPAMP) son circuitos integrados con la capacidad de realizar distintas acciones a una señal de entrada dada. Figura 13: OpAmp 18 En la figura 13, se muestra un amplificador operacional, donde V+ y V- son las entradas de la señal, VS+ es la alimentación de la fuente positiva, VS- la alimentación negativa, y Vout la salida de la señal amplificada. El propósito de las pruebas realizadas con estos circuitos, es la obtención de una señal con una amplitud más perceptible y la reducción del ruido. Los amplificadores utilizados son un ina122 (amplificador de instrumentación) y un amplificador lm358 (amplificador operacional). Figura 14: OPAMP LM358 Figura 15: Amplificador de Instrumentación INA122 Los electrodos utilizados, son de cloruro de plata (AgCl) compuesto que produce una reacción eléctrica al hacer contacto con la superficie de la piel, de manera más específica, con el potasio (K). Dependiendo la colocación del electrodo, se puede obtener una señal que se encuentra en el orden de los micro volts (µ), o en el rango de los mili volts (m), y son utilizados en ECG, EMG y EOG. Figura 16: Electrodo AgCl 19 4.1.3.2 Amplificadores de instrumentación. Puede formarse de la conexión de 3 amplificadores operacionales. Está diseñado para tener una alta impedancia de entrada y un alto rechazo al modo común (CMRR). También existen encapsulados listos para configurar su ganancia por la resistencia RG. Su utilidad principal es la reducción del ruido y amplificación de la señal. Funciona restando sus dos entradas y multiplicándolas por el valor de la ganancia. Figura 17: Amplificador de Instrumentación. En la figura 17 se muestra la formación de un amplificador de instrumentación por medio de tres amplificadores operacionales, donde V1 y V2 son las entradas de la señal, y Vout la salida de la señal amplificada, RG determina la ganancia del circuito de acuerdo a su relación con R1, R2 y R3. Las señales bioeléctricas se caracterizan por un bajo nivel de amplitud. Para garantizar su adecuado funcionamiento de acuerdo con normas internacionales, el amplificador de instrumentación debe reunir las siguientes características: 20 Alta Relación de Rechazo en modo común Alta impedancia de entrada Respuesta en frecuencia Bajo Voltaje Offset Bajas corrientes de polarización de entrada Circuito de protección contra sobre voltajes El fabricante lo recomienda para aplicaciones biomédicas 21 CAPÍTULO 5. PRUEBAS Y RESULTADOS Se realizaron pruebas en distintos lenguajes de programación, para después revisar los resultados con la finalidad de comprobar el correcto funcionamiento del sistema, y conocer la fiabilidad de la información procesada por el Xbox 360. 5.1 Pruebas. La etapa de pruebas se divide fundamentalmente en dos áreas; pruebas de software y las pruebas físicas. Las primeras pruebas de programación fueron sobre XNA, ya que resultaba una plataforma desconocida, y las posibilidades de desarrollo eran inciertas. Para LabView, se obtuvo un programa de la página oficial donde se explicaba el manejo del control, e incluía algunos controles gráficos, útiles para la revisión del correcto funcionamiento del mando. Todo el código desarrollado se comprobó en MatLab. 5.1.1 Pruebas XNA. En XNA el primer programa se desarrollo para leer los valores del botón análogo con la propiedad de GamePad.GetState(PlayerIndex.One).Thumbstick, se movió la posición de un texto en pantalla incrementando los valores de la señal de acuerdo a la fuerza con que fuera presionado el botón. Se almacenaron datos en vectores y en disco duro, se prosiguió insertando imágenes en fondos de pantalla por medio de rectángulos, para luego generar 22 un menú de acceso. Posteriormente se analizaron las librerías de dibujado de puntos y líneas, para poder graficar los valores obtenidos en un vector. Por último se ideo la forma de generar el filtro matemático, se diseño un algoritmo para realizar la convolución del filtro y una señal de valores dados. En el apéndice se pueden revisar los programas generados. 5.1.2 Pruebas LabView. En LabView, se programaron funciones de adquisición de los datos del control, cuenta con librerías de acceso a los controladores del sistema, por lo que un dispositivo de interfaz humana (HID), como lo es el control del Xbox 360, puede ser fácilmente reconocido en este programa. Se pudo comprobar que: una de las limitantes principales en la frecuencia en XNA, es característica de las funciones para tomar lecturas del control en el y no una limitante física del control, para ello se conectó el control y se realizó la misma adquisición que en el Xbox (1 Hz. 1 Vpp.), observando que la tabla de valores generada por LabView tenía una mejor resolución. Figura 18: LabView, diseño de interfaz del control. 23 5.1.3 Pruebas MatLab. Matlab fue aplicado en la programación de algoritmos matemáticos para el diseño y aplicación de filtros a la señal, se pudo observar que los filtros tienen una mejor respuesta incrementando el orden, sin embargo el programa incrementa el tiempo de proceso mientras mayor sea el orden. 5.2 Pruebas físicas del control. Las primeras pruebas del control, se realizaron revisando los voltajes que circulaban en los potenciómetros, para luego poder introducir los valores normales de trabajo desde un circuito de acoplamiento. Figura 19: Voltaje total Figura 21: 0 Volts eje a la izquierda Figura 20: Voltaje en estado neutral Figura 22: 3.29 Volts eje a la derecha Para conocer el voltaje en el potenciómetro, se toman lecturas del valor de voltaje del punto de tierra al máximo permitido como entrada análoga. 24 Figura 23: Colocación de conector Figura 24: Conector montado en el control Se procedió a colocar un conector dentro del control para administrar fácilmente las conexiones. Figura 25: Circuito de Acoplamiento Por último se conectó el control al circuito de acoplamiento para revisar las señales obtenidas por los sensores. 5.3 Resultados. La información obtenida en las pruebas, se utilizó para obtener las funciones a las que accedería el programa principal; se programó con éxito el algoritmo de la convolución, el filtro sinc, y la adquisición de datos en XNA. 25 Se utilizó el mismo algoritmo, para desarrollar el filtro sinc en MatLab y LabView, luego se aplicó al Xbox 360 a través de XNA, y se obtuvieron los siguientes resultados: (tabla 3 y Figura 26) Tabla 3: Valores obtenidos con filtro sinc Figura 26: Graficación del filtro sinc en XNA, MatLab y LabView. Figura 27: Respuesta a la frecuencia filtro sinc MatLab. 26 CAPÍTULO 6. Conclusiones y recomendaciones Aún siendo Microsoft XNA (XNA's Not Acronymed, XNA no es un acrónimo) una herramienta con poco más de dos años en el mercado, es un conjunto de herramientas y librerías para Microsoft Visual C#, que permite a los desarrolladores de videojuegos, una programación más sencilla para la generación de estos programas de entretenimiento; sin embargo, esto no delimita su uso, aunque en el Xbox 360 el conjunto de librerías comprimidas (compact framework) no permite todas las funciones utilizadas en una interfaz grafica de usuario(GUI); existen otras maneras de generar las funciones utilizadas en C#, ya que como está basado en Visual Studio, se cuenta con el respaldo de la documentación de MSDN Library. Al momento de conectar el Xbox 360 en la red de la Universidad, había problemas para realizar la conexión a Xbox Live, por lo tanto también para programar. Para dar solución a este conflicto, se solicito una orden en la que se liberaron los puertos de red 53, 80, 88 y 3074. Se puede considerar, que los problemas de red que existieron al momento de conectar la consola dentro de una red protegida, pueden ser una ventaja más que una limitante, ya que a diferencia de la computadora, el Xbox solo mantiene abiertos los puertos necesarios, además se requiere una autentificación dentro de Xbox Live, lo que brinda una mayor seguridad contra la piratería y los derechos de autor, ya que por este medio, y con una licencia de desarrollador pagada de XNA, se pueden obtener ingresos cuando se genera la solución final y el juego es aprobado y clasificado dentro del bazar, que estará disponible para todo aquel que tenga una cuenta registrada de Xbox Live. 27 Se realizaron las pruebas con un control de la marca “After Glow” mismo que sufrió averías en las pistas por el exceso de calor, por lo que se recomienda utilizar un cautín con regulador de temperatura. Se obtuvieron resultados favorables al desarrollar un filtro pasabajas, conocido como sinc, para el procesamiento de la señal. La aplicación tuvo sus limitantes de adquisición, por el desarrollo en XNA, sin embargo su uso no se descarta totalmente para otras aplicaciones que no requieran una gran velocidad de muestreo. Para el trabajo con los núcleos del procesador y las pipelines de la GPU, se recomienda una previa noción de graficación. La investigación se continuó para el fitrado de señales por Wavelet, sin embargo, su implementación queda contemplada en trabajos a futuro, así como la comparación de velocidades de muestreo, de otros dispositivos periféricos que soporta actualmente el Xbox 360. En trabajos a futuro, se considera documentar y compartir las librerías de los filtros en internet, así como utilizar XNA 4.0 ya que cuenta con librerías para el uso de micrófonos, y probablemente su frecuencia de muestreo sea mucho mejor que la del control. 28 Referencias. [1] Simon Scarle, “Implications of the Turing Completeness of Reaction-Diffusion Models, informed by GPGPU simulations on an XBox 360: Cardiac Arrhythmias, Re-entry and the Halting Problem”, 2009. http://research.microsoft.com/pubs/79271/turing.pdf, [2] Hernández S M, Ramírez R C., “Adquisición y presentación de señales biomédicas utilizando objetos de sincronización entre procesos bajo Windows 98”, http://www.hab2001.sld.cu/arrepdf/00217.pdf [3]http://imaginecup.com/MyStuff/MyTeam.aspx?TeamId=15722 [Consulta 9 marzo 2010] [4] Jeff Andrews, Nick Baker, “XBOX 360 SYSTEM ARCHITECTURE”, http://www.cis.upenn.edu/~milom/cis501-Fall08/papers/xbox-system.pdf [5]http://oxm.com.mx/noticias/el-xbox-360-conduce-la-mayoria-del-mercado-enmexico/ [Consulta 9 de marzo 2010] [6]http://www.publimetro.com.mx/noticias/videojuegos-retan-a-larecesion/pigw!NhmXnIcfXY61nHCuOPpww/ [Consulta 9 de marzo 2010] [7] PROSPECTS OF BRAIN-MACHINE INTERFACES FOR SPACE SYSTEM CONTROL,ww.sciencedirect.com,C.Menonetal/ActaAstronautica64(2009)448– 456 [8] Metin Akay, TIME FREQUENCY AND WAVELETS IN BIOMEDICAL SIGNAL PROCESSING 29 Wiley-IEEE Press (24 de Octubre, 1997). [9] BOYLESTAD, Robert. Fundamentos de electrónica. México. Editorial Prentice-Hall Hispanoamericana, 1997. 624p. [10] BRONZINO, Joseph. The biomedical engineering: handbook. Boca Raton. Editorial CRC Press, 2000. 1975p. [11] COGDELL, J. R. Fundamentos de electrónica. México. Editorial Pearson, 2000.420p. [12] COUGHLIN, Robert F. Amplificadores operacionales y circuitos integrados lineales. México. Editorial Prentice Hall Hispanoamericana, 1993. 538p. [13] DORF, Richard C. Circuitos eléctricos: introducción al análisis y diseño. México. Editorial Alfaomega, 2000. 998p. [14] HERNÁNDEZ SAMPIERI, Roberto. Metodología de la investigación. México. Editorial McGraw-Hill, 2003. 705p. [15] HOUSSAY, Bernardo A. Fisiología humana. Buenos Aires. Editorial El Ateneo, 1971. 1318p. [16] JOHNSON, David E. Análisis básico de circuitos eléctricos. México. Editorial Prentice-Hall Hispanoamericana, 1996. 752p. 30 [17] WEBSTER, John. Medical instrumentation: application and design. New York. Editorial John Wiley & Sons, 1998. 691p. [18] Luis Enrique Avendaño M. Sc. Fundamentos de Instrumentación. UNIVERSIDAD TECNOLÓGICA DE PEREIRA 31 Apéndices. Filtro sinc MatLab %En este programa se convoluciona el filtro sinc con una frecuencia de corte a 32 Hz. Y una %senal generada como a^2. clear all; orden=12; %Definir el orden del filtro indice0=1; %El indice 0 en Matlab es 1 vector3=zeros(indice0,(orden*2)+1); %El arreglo resultante se llena con 0's %El tamano de este arreglo debe ser el doble del tamano del orden+1 Fs=62.5; fc = 32/Fs; a=0; %Frecuencia de muestreo %Frecuencia de Corte %variable de incremento para el filtro for b=-orden:orden if(b==1) fsinc(a)=fc/2; %Filtro Ideal o sinc senal(a)=a*a; %Una señal a^2 end a=a+1; senal(a)=a*a; atmp(a)=b; fsinc(a) = (sin(pi*fc*atmp(a))/(2*pi*atmp(a))); end %Algoritmo para la convolución for i=indice0:1:orden %Ciclo exterior, del indice cero al tamano del orden for j=indice0:1:i %Ciclo interior, del indice cero al tamano del indice del %ciclo exterior vector3(i)=vector3(i)+senal(j)*fsinc(i-j+1); %El vector resultante es igual 32 %al valor actual de su posicion, sumado a la multiplicacion del vector1 en %su indice interior, por el vector2 en la resta de los valores de sus %indices mas 1. end end figure(1) plot(senal); figure(2) plot(fsinc); figure(3) plot(vector3) Filtro sinc XNA //En la clase se colocan las variables static float Fs = 62.5f; float frecCorte = 32f / Fs; //Frecuencia de muestreo //Frecuencia de Corte float[] fsinc = new float[(orden*2)+1]; //Filtro Sinc float[] atemp = new float[(orden*2)+1]; float[] senal = new float[(orden*2)+1]; //Arreglo temporal //senal x^2 float pi = (float)MathHelper.Pi; float sin(double valor) { return (float)Math.Sin(valor); } En la inicializacion se colocan las operaciones. int a = 0; for (int b = -orden; b <= orden; b++) { atemp[a] = b; 33 fsinc[a] = 1000*((sin(frecCotre * pi * atemp[a])) / (2 * pi * atemp[a])) / (frecCorte); if (b == 0) { fsinc[a] = 1000*( frecCorte /2); //Se multiplica *1000 para obtener la escala del dibujado } Console.WriteLine("fsinc[" + a + "]= " + fsinc[a]/1000); a ++;//Se divide entre 1000 para obtener los valores reales } Respuesta a la frecuencia en MatLab [H1,F1]=freqz(fsinc,1,1000,2); plot( F1,abs(H1) );Title('Respuesta a la frecuencia');grid on; 34