cenidet ® Centro Nacional de Investigación y Desarrollo Tecnológico Departamento de Mecatrónica TESIS DE MAESTRÍA EN CIENCIAS Modelado, Diseño, Construcción y Pruebas de un Ratón de Computadora para Personas con Tremor en Manos. presentada por Omar Alejandro Ruiz González Ing. en Electricidad el I. T. de Veracruz. como requisito para la obtención del grado de: Maestría en Ciencias en Ingeniería Mecatrónica Director de tesis: M.C. José Luis González Rubio Sandoval. Co-Director de tesis: Dr. Andrés Blanco Ortega. Jurado: Dr. Luis Gerardo Vela Valdés – Presidente M.C. José Martín Gómez López – Secretario M.C. José Luis González Rubio Sandoval – Vocal Dr. Andrés Blanco Ortega – Vocal Suplente Cuernavaca, Morelos, México. 21 de Julio de 2011 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” DEDICATORIA Dedico este trabajo a mis papás, por contar siempre con su apoyo aún en momentos difíciles y por haberme brindado la oportunidad de cumplir una de mis tantas metas. También lo dedico a mis hermanos, porque son una parte importante en mi vida, porque sin palabras nos recordamos que debemos luchar siempre para alcanzar nuestros sueños, sin importar los obstáculos que se presentan. A mis amigos, ya que sé que cuento con ellos, por el apoyo, cariño y respeto que nos hemos brindado durante todos estos años, y porque su amistad, a lo largo de toda mi vida, es y será un regalo invaluable para mí. Por último y no menos importante, este trabajo está dedicado a mi Taken que por siempre será mi eterna inspiración, a Minka porque siempre fuiste la más fiel en la familia... las quiero y las extraño mucho. Y a Zeus y Hera porque ustedes ya son parte de la familia y por tanto de mi corazón. i “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” ii “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” AGRADECIMIENTOS Agradezco primeramente a la Sra. Silvia López Aranda, ya que su meritoria participación en la validación de esta investigación fue fundamental porque permitió concluir el desarrollo de la misma. También a la Sria. María del Rocío Salazar Ruiz ya que fue el vínculo necesario para avanzar en la investigación. A mis asesores el M.C. José Luis González Rubio Sandoval y el Dr. Andrés Blanco Ortega, por la paciencia y apoyo que me brindaron en los momentos difíciles de mis estudios. A mis revisores el Dr. Luís Gerardo Vela Valdés y el M.C. José Martín Gómez López, porque las observaciones que realizaron a mi tesis fueron de gran apoyo para que este alcanzara la calidad que merece. Al Centro Nacional de Investigación y Desarrollo Tecnológico, porque creyó en mi capacidad y las ganas de triunfar que tengo y me permitió cumplir una de mis metas personales. A Dirección General de Estudios Superiores Tecnológicos, por haberme apoyado con una beca durante mi estancia en CENIDET. A doña Georgina y don Alfredo, porque me abrieron las puertas de su hogar durante mis estudios de maestría y estuvieron pendientes de mi bienestar, siendo una segunda familia para mí. A todas aquellas personas con las que conviví y de las que he podido aprender, con sus ejemplos y actitudes he podido tomar las cosas buenas, desechar las malas y saber día a día lo que quiero y lo que no quiero ser en la vida. iii “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” iv “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” "No temas a la sabiduría, teme a la mediocridad; no temas soñar en grande, teme el nunca haber soñado; no temas caer, teme al conformismo de vivir en suelo; no temas creer en ti, teme el nunca haber creído en nada". Omar A. Ruiz González (2011). v “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” vi “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” RESUMEN Esta tesis de investigación contiene información sobre el desarrollo de un dispositivo computacional que consiste en un ratón genérico USB para computadora, útil para personas con temblor en manos. El ratón adquiere los desplazamientos de sí mismo, e implementa un proceso el cual aplica un filtro digital que identifica la señal de oscilación característica del temblor y la elimina, enviando a la computadora solamente la señal de desplazamiento del cursor deseado por el usuario, así como el estado de los botones. Se incluye el análisis del desempeño del ratón y la comparación con dos programas computacionales cuyo objetivo es el mismo. Palabras clave: Temblor, Parkinson, Laplace, Frecuencia, Filtro digital, Ratón, USB, dispositivo computacional, programa computacional. vii “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” viii “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” ABSTRACT This research thesis contains information about development of a hardware that consists in a computer USB generic mouse, useful for people with hand tremor. The mouse acquires its own displacement, and implements a process that apply a digital filter that identify the characteristic vibration signal of tremor and eliminate it, sending to the computer only the cursor displacement signal wished by the user, as the buttons state. It includes performance analysis of mouse and the comparison with two software applications whose goal is the same. Key words: Tremor, Parkinson, Laplace, Frequency, Digital Filter, Mouse, USB, Hardware, Software. ix “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” x “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Contenido LISTA DE FIGURAS ..................................................................................................................................... XV LISTA DE TABLAS ....................................................................................................................................... XIX SIMBOLOGÍA UTILIZADA. ......................................................................................................................... XXI ABREVIATURAS Y GLOSARIO DE TÉRMINOS. ................................................................................. XXIII ESTRUCTURA DEL DOCUMENTO ....................................................................................................... XXVII CAPÍTULO 1 .............................................................................................................................................. 1 1.1 ANTECEDENTES ....................................................................................................................................... 1 1.2 PLANTEAMIENTO DEL PROBLEMA ............................................................................................................ 3 1.3 ESTADO DEL ARTE ................................................................................................................................... 4 1.3.1 Aplicaciones desarrolladas para el análisis de temblores humanos. .....................................4 1.3.2 Aplicaciones para eliminar el temblor en la mano y/o brazo. ..................................................4 1.3.3 Aplicaciones para manipular el cursor por medios distintos a un ratón computacional. ...............................................................................................................................7 1.3.4 Aplicaciones para eliminar la oscilación en la señal adquirida por el ratón computacional. ...............................................................................................................................8 1.4 INTERÉS DEL PROBLEMA ......................................................................................................................... 9 1.5 UBICACIÓN DEL PROBLEMA ................................................................................................................... 10 1.6 OBJETIVOS............................................................................................................................................. 10 1.6.1 Objetivo General: .........................................................................................................................10 1.6.2 Objetivos Particulares: ................................................................................................................11 1.7 HIPÓTESIS ............................................................................................................................................. 11 1.8 PROPUESTA DE SOLUCIÓN .................................................................................................................... 11 1.9 JUSTIFICACIÓN....................................................................................................................................... 12 1.10 METAS ................................................................................................................................................. 12 1.11 ALCANCES Y LIMITACIONES ................................................................................................................. 12 CAPÍTULO 2 ............................................................................................................................................ 15 2.1 INTRODUCCIÓN ...................................................................................................................................... 15 2.2 MODELO MATEMÁTICO DEL TE EN MANOS ............................................................................................ 15 2.3 ANÁLISIS DE SISTEMAS. ......................................................................................................................... 18 2.3.1 Series de Fourier..........................................................................................................................18 2.3.2 Transformada de Laplace. ..........................................................................................................19 2.3.3 Análisis en el dominio de la frecuencia del modelo matemático de la mano. .....................23 2.4 FILTROS DE FRECUENCIA ...................................................................................................................... 24 2.5 DISEÑO DEL FILTRO ............................................................................................................................... 27 2.6 DESARROLLO DEL FILTRO DE FRECUENCIA........................................................................................... 28 2.6.1 Cálculo de un filtro Chebyshev analógico. ...............................................................................30 2.6.2 Digitalización de un filtro a partir de un diseño analógico. .....................................................32 2.6.3 Diseño del filtro Chebyshev utilizado. .......................................................................................34 2.6.4 Análisis del desempeño del filtro. ..............................................................................................36 2.6.5 Digitalización del filtro por medio de la transformación bilineal (tustin). ..............................39 2.6.6 Desarrollo de la etapa 2 del filtro. ..............................................................................................41 2.7 FUNCIONAMIENTO DE UN RATÓN PARA COMPUTADORA. ...................................................................... 42 2.7.1 Ratón de bola. ..............................................................................................................................42 2.7.2 Ratón óptico. .................................................................................................................................43 2.7.3 Ratón Laser. .................................................................................................................................44 2.8 PROTOCOLO DE ENVÍO DE DATOS DE UN RATÓN USB COMPATIBLE CON HID. ................................... 45 xi “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” CAPÍTULO 3 ............................................................................................................................................ 53 3.1 INTRODUCCIÓN ...................................................................................................................................... 53 3.2 DESARROLLO DEL DISPOSITIVO COMPUTACIONAL: RATÓN USB. ......................................................... 54 3.2.1 Investigación y análisis de los componentes internos de un ratón USB compatible con HID. ....................................................................................................................54 3.2.2 Diseño del módulo electrónico ...................................................................................................56 3.2.3 Adquisición de componentes para el desarrollo del módulo electrónico. ............................56 3.2.4 Desarrollo del circuito electrónico..............................................................................................56 3.2.5 Montaje y pruebas del módulo desarrollado. ...........................................................................58 3.3 ADQUISICIÓN Y TRATAMIENTO DE LAS SEÑALES ELÉCTRICAS EN REODA-MX. .................................. 62 3.3.1 Botón derecho, medio e izquierdo. ............................................................................................62 3.3.2 Palanca. .........................................................................................................................................63 3.3.3 Interruptor de programación. ......................................................................................................64 3.4 LÓGICA DIGITAL DEL FILTRO DESARROLLADO. ...................................................................................... 64 3.4.1 Función: "Inicializar microcontrolador". .....................................................................................65 3.4.2 Función: "Inicializar puerto USB". ..............................................................................................66 3.4.3 Función: "Inicializar sensor de movimiento". ...........................................................................80 3.4.4 Función: "Detectar estado del giro de la rueda media". .........................................................81 3.4.5 Función: "Leer desplazamiento en el eje X". ...........................................................................82 3.4.6 Función: "Leer desplazamiento en el eje Y". ...........................................................................82 3.4.7 Función: "Filtro de movimiento para el eje X". .........................................................................82 3.4.8 Función: "Filtro de movimiento para el eje Y". .........................................................................87 3.4.9 Función: "Detectar estado de los botones". .............................................................................87 3.4.10 Función: "Habilitar puerto USB e interrupciones". ................................................................88 3.4.11 Función: "Enviar datos con protocolo de ratón USB compatible con HID". ......................89 3.4.12 Función: "Esperar 8 ms" ...........................................................................................................91 CAPÍTULO 4 ............................................................................................................................................ 93 4.1 INTRODUCCIÓN. ..................................................................................................................................... 93 4.2 DISEÑO E IMPLEMENTACIÓN DE LA PRUEBAS PARA LA EVALUACIÓN DE REODA-MX. ....................... 93 4.3 COMPARACIÓN DEL DESEMPEÑO DE REODA-MX............................................................................... 95 4.3.1 Steady Mouse. ..............................................................................................................................97 4.3.2 Mouse Cage. ..............................................................................................................................101 4.3.2 REODA-MX .................................................................................................................................105 4.4 ANÁLISIS DE RESULTADOS. ................................................................................................................. 109 CAPÍTULO 5 .......................................................................................................................................... 113 5.1 CONCLUSIONES. .................................................................................................................................. 113 5.2 APORTACIONES. .................................................................................................................................. 115 5.3 TRABAJOS FUTUROS. .......................................................................................................................... 115 BIBLIOGRAFÍA ..................................................................................................................................... 117 ANEXOS ANEXO 1. ELECCIÓN DEL FILTRO IMPLEMENTADO EN REODA-MX. ........................................................ 121 ANEXO 2. ENTRADA UTILIZADA PARA VALIDAR LOS FILTROS. ................................................................... 131 ANEXO 3. HOJA DE DATOS DEL SENSOR ADNS-2610. ............................................................................ 139 ANEXO 4. CIRCUITO ORIGINAL DEL RATÓN MARCA ATIVA MODELO LYNX-L7R. ................................... 140 ANEXO 5. CIRCUITO ELÉCTRICO DEL MÓDULO DESARROLLADO PARA EL RATÓN MARCA ATIVA MODELO LYNX-L7R. ................................................................................................... 141 ANEXO 6. HOJA DE DATOS DEL MICROCONTROLADOR 18F2550. ............................................................ 142 ANEXO 7. DISPOSICIÓN FÍSICA DEL MÓDULO DESARROLLADO PARA LA APLICACIÓN REODA_MX. ........................................................................................................................... 143 xii “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” ANEXO 8. LISTA DE MATERIALES USADOS PARA EL DESARROLLAR EL MÓDULO ADHERIDO AL CIRCUITO ORIGINAL DEL RATÓN MARCA ATIVA MODELO LYNX-L7R. .................................. 144 ANEXO 9. DIAGRAMA ELÉCTRICO DE REODA-MX. ................................................................................. 145 ANEXO 10. CÓDIGO IMPLEMENTADO EN REODA-MX. ............................................................................ 146 ANEXO 11. DOCUMENTO DE PRUEBAS PARA VALIDACIÓN DE REODA-MX. ........................................... 155 11.1. Introducción ................................................................................................................................155 11.2. Explicación a los usuarios sobre funcionamiento de un ratón de computadora...............................................................................................................................155 Prueba 1.- Adaptación al funcionamiento de un ratón de computadora estándar. ....................158 Prueba 2.- Estabilidad del cursor en un punto fijo. .........................................................................161 Prueba 3.- Velocidad de movimiento del cursor respecto a la velocidad del ratón. ..................163 Prueba 4.- Manipulación del botón secundario del ratón. .............................................................166 Prueba 5.- Manipulación del botón primario del ratón. ..................................................................168 Prueba 6.- Manejo del cursor a través de rutas en el escritorio para ejecutar un programa............................................................................................................................170 Prueba 7.- Dibujo de una espiral en pantalla por medio del ratón. ..............................................173 Prueba 8.- Manipulación de iconos pequeños en aplicaciones. ...................................................175 xiii “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” xiv “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Lista de Figuras 1.- Esquema general de funcionamiento de la propuesta de tesis. ....................................... 11 2.- Movimiento del TE en manos. ................................................................................................ 16 3.- Amplitudes del punto de referencia de la mano. ................................................................. 16 4.- Triángulo resultante para conocer el valor de la magnitud B. ........................................... 17 5.- Clasificación general de filtros analógicos. ........................................................................... 25 6.- Clasificación general de filtros digitales. ............................................................................... 26 7.- Parámetros a tomar en cuenta en el diseño de un filtro analógico. ................................. 28 8.- Respuesta de un filtro ideal y un filtro real............................................................................ 29 9.- Relación entre la frecuencia de corte y la frecuencia de paro. ......................................... 29 10.- Respuesta general de un filtro Chebyshev pasa-bajas. ...................................................30 11.- Respuesta en amplitud y fase de un filtro Chebyshev inverso. ......................................32 12.- Transformación del plano S al plano Z. ..............................................................................33 13.- Diagrama de bloques de un filtro IIR. ..................................................................................34 14.- Respuesta del filtro ante una entrada escalón más una señal seno de 4 Hz y 50 pixeles de amplitud. .................................................................................................37 15.- Respuesta del filtro ante una entrada rampa en suma con una señal seno de 4 Hz. de 50 pixeles de amplitud. ....................................................................................38 16.- Modo adquisición de desplazamiento de un “ratón de bola”. ..........................................42 17.- Modo de adquisición de desplazamiento de un ratón óptico de 1ra generación...............................................................................................................................43 18.- Modo de adquisición de desplazamiento de un ratón óptico de 2da generación...............................................................................................................................44 19.- Secuencia de imágenes que el sensor de un ratón óptico de 2da generación...............................................................................................................................44 20.- Modo de adquisición de desplazamiento de un ratón laser. ...........................................44 21.- Interfaz del programa computacional WinDriver. ..............................................................46 22.- Adquisición de la señal que envía un ratón estándar bajo el protocolo USB. .........................................................................................................................................47 23.- Adaptador para analizar la comunicación USB entre el ratón y la computadora. ..........................................................................................................................48 24.- Captura instantánea del osciloscopio durante la transmisión de datos. ........................49 25.- Captura instantánea del osciloscopio durante la transmisión de datos 2. ....................50 26.- Trama de datos en síncronos en binario y codificación NRZI. ........................................50 27.- Diagrama de bloques general del sistema propuesto. .....................................................53 28.- Ratones USB para computadora, utilizados para conocer su circuitería. .....................54 29.- Sensor elegido para detectar el movimiento del ratón. ....................................................55 30.- Circuito original del ratón marca Ativa, sustituyendo el sensor por unos postes.......................................................................................................................................57 31.- Placa diseñada para montaje sobre la placa original. ......................................................57 32.- Diagrama de las señales contenidas en el sistema de un ratón USB compatible con HID enlazadas al módulo electrónico desarrollado. .............................58 33.- a) Vista superior, b) Vista lateral del circuito final del prototipo de ratón USB. .........................................................................................................................................58 34.- Programación de microcontrolador del prototipo de ratón . a) prototipo de ratón listo para programación. b) Módulo de programación Pickit2. ..............................59 xv “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” 35.- Interfaz para programación del microcontrolador 18f2550 con Pickit2. .........................59 36.- Sistema de censado para emular el giro de la rueda media del ratón...........................60 37.- Palanca adherida a la carcasa del ratón. ...........................................................................60 38.- Vista del circuito final para el ratón: a) desmontado; b) montado en la carcasa. ...................................................................................................................................61 39.- REODA-MX. ............................................................................................................................62 40.- Resistencia de tensión positiva (Pull-Up). ..........................................................................63 41.- Resistencia de tensión negativa (Pull-Down). ...................................................................63 42.- Diagrama de bloques de las funciones realizadas por el microcontrolador. .................65 43.- Diagrama de bloques de las subfunciones de la función "Inicializar microcontrolador". ..................................................................................................................66 44.- Diagrama de bloques de las subfunciones de la función "Inicializar puerto USB". ........................................................................................................................................66 45.- Captura de transferencia de datos del ratón de marca Microsoft. ..................................71 46.- Captura de transferencia de datos del ratón de marca Genius. .....................................76 47.- Diagrama de flujo de la función "Detectar el estado de giro de la rueda media". .....................................................................................................................................81 48.- Diagrama de bloques de la función "Filtro de movimiento para el eje X". .....................83 49.- Diagrama de flujo de la función "Filtro de movimiento para el eje X". ...........................84 50.- Estructura de la rutina "PromedioX". ...................................................................................85 51.- Diagrama de flujo de la subfunción "RegresoX". ...............................................................86 52.- Diagrama de flujo de la función "Detectar estado de los botones".................................88 53.- Diagrama de flujo de la función " Enviar datos con protocolo de ratón USB compatible con HID ". ...................................................................................................89 54.- Secuencia de envío de datos del estado de un ratón USB compatible con HID............................................................................................................................................90 55.- Firma del usuario que participó en la validación de REODA-MX. ..................................94 56.- Zonas de la pantalla evaluadas durante la realización de la prueba 3. .........................96 57.- Trayectoria del cursor del punto B al punto C durante la prueba 3 con el programa computacional Steady Mouse. ...........................................................................97 58.- Zonas de convergencia entre el eje X y el eje Y en la zona B y C utilizando el programa computacional Steady Mouse. .....................................................98 59.- Ruta de trayectoria del cursor para posicionarlo en el punto D durante la prueba 3 con el programa computacional Steady Mouse. ..............................................99 60.- Zona de convergencia entre el eje X y el eje Y en la zona D. .......................................100 61.- Trayectoria del cursor del punto B al punto C durante la prueba 3 con el programa computacional Mouse Cage. ............................................................................101 62.- Zona de convergencia entre el eje X y el eje Y en la zona B y C utilizando el programa computacional Mouse Cage.......................................................102 63.- Ruta de trayectoria del cursor para posicionarlo en el punto D durante la prueba 3 con el programa computacional Mouse Cage. ...............................................103 64.- Zona de convergencia entre el eje X y el eje Y en la zona D. .......................................104 65.- Trayectoria del cursor del punto B al punto C durante la prueba 3 con REODA-MX. ..........................................................................................................................105 66.- Zona de convergencia entre el eje X y el eje Y en la zona B y C utilizando REODA-MX. ..........................................................................................................................106 67.- Ruta de trayectoria del cursor para posicionarlo en el punto D durante la prueba 3 con REODA-MX. .................................................................................................107 68.- Zona de convergencia entre el eje X y el eje Y en la zona D. .......................................108 xvi “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” A1.- Interfaz de FDATOOL para el diseño de filtros digitales. ..............................................121 A2.- Respuesta del filtro Rectangular. ......................................................................................128 A3.- Respuesta del filtro Butterworth.........................................................................................128 A4.- Respuesta del filtro Chebyshev I. ......................................................................................128 A5.- Respuesta de filtro Chebyshev II.......................................................................................128 A6.- Respuesta del filtro Rectangular. ......................................................................................129 A7.- Entrada utilizada para evaluar los filtros analizados. .....................................................131 A8.- Diagrama eléctrico original del ratón marca ATIVA modelo LYNX-L7R. ....................140 A9.- Diagrama eléctrico de REODA-MX.. .................................................................................141 A10.- Vista PCB (layout) del módulo desarrollado para REODA-MX. .................................143 A11.- Vista PCB de los componentes montados en los lados: a) superior; b) inferior. .................................................................................................................................143 A12.- Diagrama eléctrico de REODA-MX.................................................................................145 A13.- Fondo de pantalla utilizado para desarrollar la prueba 1. ...........................................160 A14.- Fondo de pantalla utilizado para desarrollar la prueba 2. ...........................................162 A15.- Fondo de pantalla utilizado para desarrollar la prueba 3. ...........................................164 A16.- Fondo de pantalla utilizado para desarrollar la prueba 4. ...........................................167 A17.- Fondo de pantalla utilizado para desarrollar la prueba 5. ...........................................169 A18.- Fondo de pantalla utilizado para desarrollar la prueba 6. ...........................................171 A19.- Fondo de pantalla utilizado para desarrollar la prueba 7. ...........................................173 A20.- Fondo de pantalla utilizado para desarrollar la prueba 8. ...........................................178 xvii “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” xviii “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Lista de tablas 1.- Número de usuarios de algún equipo de cómputo entre el año 2001-2010. .................... 3 2.- Dispositivos y sistemas desarrollados para la atenuación del temblor en manos........................................................................................................................................... 5 3.- Dispositivos para posicionar el cursor en la pantalla sin el uso de las manos........................................................................................................................................... 7 4.- Sistemas y dispositivos desarrollados para filtrar oscilaciones de la señal adquirida por un ratón manipulado por una persona con TE en manos. .......................... 9 5.- Datos que contiene cada byte que envía el ratón a la PC. ................................................ 45 6.- Datos del protocolo correspondiente a la primer línea de la figura 22. ............................ 47 7.- Componentes internos dentro de los ratones adquiridos. .................................................. 55 8.- Componentes adquiridos para el desarrollo del ratón USB. .............................................. 56 9.- Descriptor de reporte HID para un ratón USB compatible con HID. ................................ 69 10.- Configuración total del dispositivo del ejemplo 1. ............................................................. 72 11.- Descriptor del dispositivo del ejemplo 1. ............................................................................ 73 12.- Descriptor del fabricante del ejemplo 1............................................................................... 74 13.- Descriptor del reporte HID del ejemplo 1. .......................................................................... 74 14.- Descriptor de marca del producto del ejemplo 1. .............................................................. 75 15.- Configuración total del dispositivo del ejemplo 2. ............................................................. 77 16.- Descriptor del dispositivo del ejemplo 2. ............................................................................ 78 17.- Descriptor del fabricante del ejemplo 2............................................................................... 79 18.- Descriptor del reporte HID del ejemplo 2. .......................................................................... 79 19.- Descriptor de marca del producto del ejemplo 2. .............................................................. 80 20.- Tiempo transcurrido durante el desarrollo de la prueba. ............................................... 109 21.- Parámetros evaluados durante la realización de la prueba 3. ...................................... 109 A1.- Comparación del tiempo de establecimiento al 5% y 2% de los filtros evaluados ante una entrada tipo escalón unitario. ......................................................... 124 A2.- Comparación del tiempo de retardo entre la señal de entrada y la señal de los filtros evaluados en modo de funcionamiento común. ....................................... 125 A3.- Comparación de la variación absoluta de la respuesta de cada filtro evaluado ante una entrada constante de tipo senoidal de 4Hz a 12 Hz con incrementos de 1 Hz y amplitud 50 pixeles (100 pico a pico). .............................. 126 A4.- Calificación final de cada filtro evaluado. ......................................................................... 127 A5.- Tiempo de retardo imperceptible y tolerable entre el movimiento del ratón-cursor. .......................................................................................................................... 130 A6.- Lista de materiales necesarios para el módulo de REODA-MX ................................... 144 A7.- Funciones de los botones de un ratón para computadora. ........................................... 156 A8.- Parámetros evaluados durante la aplicación de las pruebas. ...................................... 179 xix “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” xx “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Simbología utilizada. Símbolo Descripción α Magnitud, en decibelios, de la atenuación de un filtro. 𝜀 Constante de ajuste en el denominador de la respuesta en magnitud de un filtro Chebyshev I. θ Ángulo de giro de una mano. 𝑘𝑑 Parámetro de discriminación para el diseño de un filtro Chebyshev I. 𝑘𝑠 Parámetro de selectividad para el diseño de un filtro Chebyshev I. 𝜎𝑘 Parte real de la raíz K del denominador de un filtro Chebyshev I. t Variable del tiempo. ω Frecuencia angular de una oscilación. 𝜔𝑘 Parte compleja de la raíz K del denominador de un filtro Chebyshev I. 𝜔𝑃 Frecuencia angular de corte de un filtro Chebyshev I. 𝜔𝑆 Frecuencia angular de paro (stop) de un filtro Chebyshev I. A Amplitud de desplazamiento lineal de un punto de la mano en el eje X. 𝐴𝑚𝑖𝑛 Valor mínimo en decibelios de atenuación en la banda de rechazo. 𝐴𝑚𝑎𝑥 Valor máximo en decibelios de atenuación en la banda de paso. B Amplitud de desplazamiento lineal de un punto de la mano en el eje Y. D Distancia entre el origen del movimiento de la mano y un punto de la misma donde se desea conocer la amplitud de la misma. 𝐹𝑠𝑡𝑜𝑝 Frecuencia de paro (stop). 𝐹𝑐𝑜𝑟𝑡𝑒 Frecuencia de corte. K Constante de proporcionalidad usada en la transformada de Laplace. mx Ruido blanco de la mano en el eje X producido por contracciones de músculos. my Ruido blanco de la mano en el eje Y producido por contracciones de músculos. xxi “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” S Variable compleja usada en la transformada de Laplace. x Posición deseada de un punto de la mano en el eje X. Xm(t) Posición en el eje X de un punto en la mano con TE y movimiento deseado. XTm(t) Posición en el eje X de un punto de la mano con TE. y Posición deseada de un punto de la mano en el eje Y. Ym(t) Posición en el eje Y de un punto en la mano con TE y movimiento deseado. YTm(t) Posición en el eje Y de un punto en la mano con TE. xxii “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Abreviaturas y glosario de términos. Acelerómetro.- Es cualquier dispositivo que mide la aceleración a la que está siendo sometido. Actígrafo.- Es un dispositivo electrónico pequeño, para uso personal. Este graba y reporta los niveles de actividad así como las calorías consumidas, movimientos de los miembros, niveles del sueño y muchos datos más. Proveen información objetiva de la actividad diaria para la determinación, por ejemplo, de estados patológicos relacionados con el movimiento, ya sea un trastorno de hiperactividad, inactividad en ancianos, trastornos de sueño, etc. Discinesia.- Término usado para designar los movimientos anormales e involuntarios en las enfermedades nerviosas. Distonía.- Trastorno del movimiento donde las contracciones sostenidas del músculo causan torceduras y movimientos repetitivos o posturas anormales. Estos movimientos, que son involuntarios y a veces dolorosos, pueden afectar a un solo músculo, a un grupo de músculos tales como los de los brazos, piernas o cuello, o al cuerpo entero. Encoder.- Es un codificador rotatorio, también llamado codificador del eje o generador de pulsos, el cual suele ser un dispositivo electromecánico usado para convertir la posición angular de un eje a un código digital. Esclerosis múltiple.- Es una enfermedad consistente en la aparición de lesiones desmielinizantes, neurodegenerativas y crónicas del sistema nervioso central. Puede tener como consecuencia una movilidad reducida e invalidez en los casos más severos. Filtro Chebyshev.- Es un tipo de filtro diseñado por el matemático Pafnuti Chebyshev; tiene la característica de presentar una caída de la respuesta en frecuencia más pronunciada en frecuencias bajas debido a que permiten rizado en alguna de sus bandas (paso o rechazo) ya que los polos de este filtro se presentan sobre una elipse y sus ceros se encuentran en el eje imaginario. xxiii “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Frecuencia angular.- Es la frecuencia del movimiento senoidal. Se define como el ángulo girado por unidad de tiempo, expresado en radianes por segundo. Frecuencia neperiana.- También llamado coeficiente de amortiguamiento exponencial, es una medida de la rapidez con la que decae o se amortigua la respuesta natural hacia su estado final permanente Función Escalón.- Es una función matemática que tiene como característica el tener un valor de 0 para todos los valores negativos de su argumento y un número real para todos los valores positivos de su argumento. Función Signo.- También conocida como función Heavyside; es una función matemática especial que obtiene el signo de cualquier número real que se tome por entrada. Giroscopio.- Es un objeto esférico, o en forma de disco, montado en un soporte cardánico, de forma que puedan girar libremente en cualquier dirección. Es utilizado para medir la orientación o para mantenerla, al estar basado su funcionamiento en el principio de conservación del momento angular. HID.- Human Interface Device (Dispositivo de Interfaz Humana); son todos aquellos dispositivos computacionales con los que el ser humano tiene un uso de ellos directamente, ya sea para enviar o recibir datos; ejemplos de estos son el ratón, el teclado, trackball, tapete táctil, tableta gráfica, joystick, dispositivos simuladores de manejo y de vuelo, nintendo power globe, tapete de danza y WII Remote. ICSP.- In Circuit Serial Programming. Es una técnica de programación en circuito implementada en los microcontroladores de la marca Microchip que permite programarlos en la propia placa de aplicación mediante una señal síncrona de datos serie y una señal de reloj. LED.- Light Emissor Diode (Diodo emisor de luz); es un dispositivo semiconductor (diodo) que emite luz cuando se polariza de forma directa la unión PN del mismo y circula por él una corriente eléctrica. xxiv “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Músculos antagonistas.- Es una clasificación utilizada para describir un conjunto de músculos que actúan en oposición a la fuerza y movimiento que genera otro músculo. PCB Placa de Circuito Impreso (Printed Circuit Board). Es una placa desarrollada para brindar soporte mecánico a componentes eléctricos y electrónicos y así poder realizar las conexiones eléctricas, comúnmente aplicando soldadura a las terminales de estos, a través caminos o pistas conductores hechos de cobre laminado montado sobre una superficie no conductora. Ruido Blanco.- Es una señal aleatoria (proceso estocástico) que se caracteriza por el hecho de que sus valores de señal en dos tiempos diferentes no guardan correlación estadística. Como consecuencia de ello, su densidad espectral de potencia (psd, siglas en inglés de power spectral density) es una constante, es decir, su gráfica es plana.1 esto significa que la señal contiene todas las frecuencias y todas ellas muestran la misma potencia. TE.- Temblor esencial. Es una enfermedad que genera trastornos de movimiento en distintas partes del cuerpo, siendo estos movimientos rítmicos constantes con una frecuencia de oscilación encontrada entre 4 y 12 Hz. Track-ball Tipo de ratón computacional donde se hace girar una rueda con los dedos para desplazar el cursor eliminando así el desplazamiento del dispositivo para el mismo fin. Temblor Cinético.- Estos temblores ocurren al final de un movimiento intencional (intencionado), como escribir, presionar un botón o alcanzar un objeto. El temblor generalmente desaparecerá mientras la parte del cuerpo afectada esté en reposo. Temblor de reposo o estáticos: Estos temblores se presentan cuando los músculos están en reposo. El temblor puede desaparecer o hacerse menos notorio cuando se mueven los músculos involucrados. Temblor por enfermedad de Parkinson Es una enfermedad neurológica que se asocia a rigidez muscular, dificultades para andar, temblor en reposo entre 4 y 6 Hz, alteraciones e inestabilidad en la coordinación de movimientos y postura, y pérdida de reflejos, entre otros. xxv “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Temblor Postural.- Es un temblor que ocurre cuando se está sosteniendo la mano o la pierna en una posición durante un período de tiempo en contra de la gravedad. Esto puede suceder cuando uno está escribiendo, extendiendo los brazos o al pararse erguido. USB.- Universal Serial Bus (Bus de Serie Universal). Es un puerto que sirve para conectar periféricos a un ordenador. xxvi “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Estructura del documento Este documento de investigación presenta una estructura de temas y subtemas ordenados de acuerdo a la secuencia de actividades que fueron requeridas para la culminación del mismo. En el capítulo 1 se plantea la problemática a la que se enfrentan las personas con TE en manos al momento de utilizar el ratón de un equipo de cómputo para posicionar el cursor de la pantalla. Posteriormente se enuncian algunas de las aplicaciones desarrolladas para la solución de problemas similares y se plantea la propuesta de solución, así como también los alcances que tendrá, las limitaciones que conlleva y los objetivos que se requieren alcanzar. En el capítulo 2 se aborda la teoría requerida para desarrollar la investigación. Se realiza una recopilación de información acerca de los sistemas utilizados para identificación y eliminación de señales y se plantea el diseño del mismo, de acuerdo a las condiciones demandadas por el padecimiento a atacar. Se incluye el modelo matemático del sistema analizado y el sistema desarrollado. También se incluye la teoría sobre el funcionamiento de un ratón para computadora. En el capítulo 3 se explica con detalle el proceso para el desarrollo del ratón USB para personas con TE en manos; se describe el proceso del sistema desarrollado y su implementación en un ratón USB genérico. En el capítulo 4 se presentan las evaluaciones obtenidas tras aplicar una serie de pruebas al prototipo desarrollado. Se genera una lista de las características de la aplicación y se identifican las ventajas y desventajas. Se dan a conocer las observaciones correspondientes al diseño final del prototipo. En el capítulo 5 se presentan los resultados obtenidos así como las conclusiones derivadas de esta investigación. También, se mencionan las aportaciones del trabajo realizado sobre el ratón desarrollado para personas con xxvii “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” TE y se dan algunas recomendaciones como trabajos futuros para continuar afrontando el problema de la eliminación de las oscilaciones producidas por el TE en el uso de una PC. Al final del documento se enlistan los documentos que se utilizaron para el desarrollo de la misma, referenciados en la sección de anexos. xxviii “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” CAPÍTULO 1 Introducción 1.1 Antecedentes "El Temblor es una discinesia caracterizada por oscilaciones rítmicas, producidas por contracciones involuntarias de músculos antagonistas inervados recíprocamente, las cuales pueden ser síncronas o alternantes" [1]. El temblor esencial (TE), en forma similar a los temblores y en particular al temblor originado por la enfermedad de Parkinson, tiene tendencia a la simetría y a la generalización [2]. Es el más frecuente de todos los temblores, presente hasta el 22% de la población mayor a 65 años, con prevalencia 5 a 20 veces mayor a la enfermedad de Parkinson. Tiene variabilidad racial e incidencia estimada en 18 por 100,000 habitantes [3]. En México, casi 500,000 habitantes padecen la enfermedad de Parkinson, en Europa 1.475.000, en Estados Unidos más de un millón y en Japón 729.000 habitantes tienen la enfermedad de Parkinson [4]. El TE es típicamente una combinación de temblor postural y temblor cinético, aunque también puede ocurrir de forma aislada. El TE casi siempre afecta las manos (≈95% de los afectados), pero también afecta la cabeza (~34%), cara (≈5%), la voz (≈12%), el tronco (≈5%), y extremidades bajas (≈20%). La condición del TE es que tiene una frecuencia de 4 a 12 Hz [5]. En las formas infantil y juvenil su frecuencia oscila en 8 Hz; en el adulto el promedio es de 10 Hz, y vuelve a frecuencias menores desde la quinta década alcanzando los valores más bajos en la séptima década: 5 a 6 Hz [2]. La frecuencia del TE en manos oscila en 5-7 Hz, siendo el promedio más habitual registrado de 6-6.5 Hz [1]. 1 INTRODUCCIÓN La incapacidad laboral es poco frecuente, apareciendo una cifra inferior al 5% de los afectados por TE. Las personas que padecen esta enfermedad tienen dificultad para escribir, tomar los alimentos y realizar actividades que dependan directamente del uso de las manos, como ejemplo la manipulación adecuada de un ratón para computadora, debido a que se tiene muy poco o nulo control sobre dicho dispositivo para trasladar y mantener el cursor de la pantalla en una posición deseada, representando un problema serio en el uso de esta tecnología que se ha convertido en una herramienta fundamental en la vida cotidiana. Las computadoras son el motor fundamental de la comunicación a nivel mundial, haciendo uso de ella para actividades sencillas como elaborar un documento de texto escolar o comprar cosas por internet, o bien destinadas a realizar actividades complejas como transmitir información de acontecimientos en distintas partes del mundo, controlar grandes procesos industriales e incluso desarrollar procesos matemáticos complicados y a velocidades que el ser humano simplemente no podría desarrollar. Las primeras computadoras, aparecidas en 1947 (ENIAC), eran complejas y difíciles de manipular; la aparición del primer ratón de computadora en 1968, llamado por su patente “X-Y Position Indicator for a Display System”, logró ser un intermediario directo entre una persona y la computadora, facilitando el uso de la computadora e iniciando así la aplicación de entornos gráficos con el sistema de ventanas, que luego adoptarían prácticamente la totalidad de los sistemas operativos modernos [6]. De tal modo que hoy en día es indispensable el ratón de computadora para la manipulación de la misma. De acuerdo a las cifras que el INEGI obtuvo con el censo que realizó titulado “Encuesta Nacional sobre Disponibilidad y Uso de las Tecnologías de la Información en los Hogares”, en el año 2010 alrededor del 40.1% de la población en México utiliza algún equipo de cómputo [7], esto es alrededor de 39 millones de habitantes mayores de 6 años (ver tabla 1). 2 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Tabla 1.- Número de usuarios de algún equipo de cómputo entre el año 2001-2010. 1.2 Planteamiento del problema Al analizar los párrafos anteriores, se encuentra un problema principal, el cual radica en que una persona con TE en manos puede presentar un grado de complicación al realizar actividades en equipos de cómputo utilizando un ratón para computadora, ya que dependiendo de la severidad del TE, puede llegar al grado de no ser capaz de posicionar y mantener el cursor de la pantalla en un punto deseado, utilizando dicho dispositivo. 3 INTRODUCCIÓN 1.3 Estado del arte El temblor humano ha sido el centro de diversas investigaciones con el propósito de atacar dificultades que se derivan del mismo. Para esto es necesario conocer completamente las características del temblor y así contrarrestar los efectos que repercuten en el objeto de estudio. De este modo, se han desarrollado distintas aplicaciones que permiten el análisis de estos temblores. 1.3.1 Aplicaciones desarrolladas para el análisis de temblores humanos. "La frecuencia del temblor únicamente puede ser determinada instrumentalmente" [1], por lo que se han diseñado diversas aplicaciones para analizarlo; los principios de funcionamiento varían, utilizando acelerómetros [8], actígrafos [9] y giroscopios [10] entre otros; se han hecho evaluaciones para comparar las características de estas mediciones [11]. Por otra parte, se han implementado técnicas para analizar las señales obtenidas de las mediciones, algunas utilizan filtros como el Kalman [12], [13], redes neuronales [14] y realizar comparaciones de las mediciones obtenidas [15]. Posteriormente se evalúan y clasifican estas mediciones en diversos tipos de temblores, como el originado por la enfermedad de Parkinson, TE y Distonía [16], [17], [18], [19]. 1.3.2 Aplicaciones para eliminar el temblor en la mano y/o brazo. Con el objetivo de eliminar el temblor en la zona afectada, se han desarrollado distintas aplicaciones que permiten atenuar o eliminar el temblor en la zona afectada. La tabla 2 contiene algunas de estas aplicaciones: 4 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Tabla 2.- Dispositivos y sistemas desarrollados para la atenuación del temblor en manos. Estabilizador ajustable y regulable para temblor en manos [20]. Método para el tratamiento de temblores [21]. Aplicación que utiliza un giroscopio para atenuar el temblor en manos. Aplicación que utiliza una pulsera que ejerce presión a tendones y músculos de la mano para atenuar el temblor en manos. Dispositivo para el control de temblor [22]. Aplicación montada a una silla de ruedas que solo permite desplazar la mano en un eje perpendicular al del brazo. Dispositivo de uso para la supresión del temblor esencial [24]. Aplicación que utiliza un amortiguador viscoso para absorber el temblor de la mano. Órtesis portable para la supresión del temblor [23]. Aplicación que utiliza un amortiguador para atenuar el temblor en manos. Dispositivo Ortésico Dinámico para la monitorización, diagnóstico y supresión del temblor patológico [25]. Aplicación que utiliza un giroscopio, un motor y sensores para contrarrestar los movimientos de temblor del brazo y mano. 5 INTRODUCCIÓN Método y dispositivo biomecánico de cancelación de temblor patológico [26]. Método y dispositivo electrónico e informático de supresión y valoración de temblor y movimiento espástico en periféricos de entrada y de mando [27]. Aplicación que utiliza sensores para reconocer temblores y por medio de un actuador contrarrestar estos. Aplicación que adquiere la señal de movimiento de la mano a través de un joystick y digitalmente eliminar la señal de temblor. Abrazadera para el control del temblor / Órtesis para amortiguación de temblor [28]. Diseño desarrollo y validación de dispositivo robótico para la supresión del temblor patológico [29], [30]. Aplicación que utiliza algún sensor para identificar el temblor y por medio de un actuador cancelar el movimiento involuntario. Aplicación que utiliza sensores y actuadores que evitan movimientos involuntarios por la acción del temblor del usuario. Control activo de temblor para desordenes de movimiento humano [31]. Aplicación que utiliza sensores para identificar movimientos involuntarios y por medio de actuadores contrarrestar estos movimientos. 6 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” 1.3.3 Aplicaciones para manipular el cursor por medios distintos a un ratón computacional. Se han desarrollado diversas aplicaciones para posicionar el cursor en la pantalla que, en lugar de utilizar la mano, utilizan otra parte del cuerpo, tal como la cara, la voz o los pies. Tabla 3.- Dispositivos para posicionar el cursor en la pantalla sin el uso de las manos. Headdev [32]. Head Mouse [33]. Programa computacional que detecta movimientos y gestos de la cara para controlar la posición del cursor y las pulsaciones de botones del ratón, utilizando una cámara web. Programa computacional que detecta movimientos y gestos de la cara para controlar la posición del cursor y las pulsaciones de botones del ratón, utilizando una cámara web. Smart Nav [34]. Eye Point [35]. Equipo computacional que detecta movimientos de cabeza para controlar la posición del cursor. Equipo computacional que detecta la reflexión de la retina del ojo para controlar la posición del cursor. 7 INTRODUCCIÓN Mouse Vision [36]. Vocal Joystick [37]. Equipo computacional que detecta la reflexión de la retina del ojo para controlar la posición del cursor. Programa computacional que detecta el tono de la voz y así controlar la posición del cursor y las pulsaciones de los botones un ratón. Foot Mouse [38]. Equipo computacional que detecta el movimiento de un pie para posicionar el cursor y detectar las pulsaciones de los botones con el otro pie. 1.3.4 Aplicaciones para eliminar la oscilación en la señal adquirida por el ratón computacional. Otras aplicaciones se han enfocado en atenuar las oscilaciones adquiridas por el ratón de la computadora, permitiendo al usuario continuar utilizando la mano para maniobrar el ratón y posicionar el cursor de pantalla. La tabla 4 contiene algunas de estas aplicaciones. 8 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Tabla 4.- Sistemas y dispositivos desarrollados para filtrar oscilaciones de la señal adquirida por un ratón manipulado por una persona con TE en manos. Mouse Cage [39]. Steady Mouse [40]. Programa computacional que adquiere los incrementos del ratón y aplica un algoritmo de filtración para posicionar el cursor. Costo comercial USD $39.95 Programa computacional que adquiere los incrementos del ratón y aplica un algoritmo de filtración para posicionar el cursor. Costo comercial: Gratuito. IBM Mouse Smoothing Software - Assistive Mouse Adapter [41]. TechFilter [42]. Equipo computacional que adquiere los incrementos del ratón y aplica un algoritmo de filtración para posicionar el cursor. Costo comercial UK = £113.00 - in USA/Canada/Rest of world = US$184.00 - in Europe = €174.00. Equipo computacional que adquiere los incrementos del ratón y aplica un algoritmo de filtración para posicionar el cursor. Costo comercial: Desconocido. En el capítulo 4, Pruebas y Resultados, se realiza una comparación del prototipo del ratón desarrollado en esta investigación con los programas computacionales Mouse Cage y Steady Mouse, con el fin de contrastar el desempeño de las tres aplicaciones. 1.4 Interés del problema Se requiere analizar y comprender la enfermedad del TE en manos para realizar un modelo del comportamiento de dicho padecimiento, y utilizarlo para desarrollar 9 INTRODUCCIÓN un equipo computacional que pueda ser operado por cualquier usuario con TE en manos, para manipular el cursor de pantalla de una computadora, incorporando al usuario a la utilización de esta herramienta indispensable. Un reto particular al que se enfrenta esta tesis de investigación es que ya existen diversas aplicaciones que intentan solucionar el problema mencionado, sin lograr un desempeño satisfactorio, de tal modo que se pretende resolver el problema con una nueva aplicación que tenga un mejor desempeño que las aplicaciones ya desarrolladas. 1.5 Ubicación del problema La situación de la problemática social que abarca el tema de esta investigación lleva a pensar en la posibilidad de alcanzar 2 objetivos fundamentales: La integración de las personas que padecen TE en manos al uso de las tecnologías de la información; en concreto, al uso de un equipo de cómputo. Mejora de la calidad de vida de estas personas ya que lograrán desarrollar actividades computacionales como cualquier usuario común, ya sea con fines personales, escolares o profesionales. 1.6 Objetivos 1.6.1 Objetivo General: Implementar un sistema que permita a las personas con TE en manos poder trasladar y posicionar de forma adecuada el cursor de pantalla de un equipo de cómputo. 10 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” 1.6.2 Objetivos Particulares: Diseñar, construir y validar un prototipo de ratón que permita trasladar y posicionar adecuadamente el cursor de la pantalla de una computadora, manipulado por una persona con TE en manos. Comparar el prototipo final con otras aplicaciones desarrolladas para objetivos similares. 1.7 Hipótesis “ Es posible atenuar o eliminar la señal de temblor adherida al movimiento deseado de un ratón de computadora, manipulado por una persona con TE en manos, por medio de un ratón de computadora, con el fin de posicionar el cursor de pantalla en la zona deseada ". 1.8 Propuesta de solución De las diferentes aplicaciones que se han desarrollado, se puede establecer una propuesta de solución al problema (ver figura 1) utilizando un filtro en el ratón para computadora que permita atenuar o eliminar la oscilación adquirida por el TE. Figura 1.- Esquema general de funcionamiento de la propuesta de tesis. Es viable desarrollar un sistema basado en un ratón de computadora que integre, a la lógica de procesamiento de datos, una etapa de tratamiento digital de señales que permita reducir o eliminar la oscilación inyectada por un usuario con 11 INTRODUCCIÓN TE en manos y así enviar la información correspondiente al movimiento deseado por el usuario para el posicionamiento del cursor de pantalla. 1.9 Justificación Los puntos que justifican el desarrollo de este proyecto son: La contribución hacia las personas que padecen TE en manos y necesitan utilizar un equipo de cómputo. La creación de un producto que, al integrarlo a un sistema computacional, ofrezca mayores prestaciones. Sentar las bases para el desarrollo de investigaciones futuras que aborden problemas similares al de esta investigación. 1.10 Metas La meta es atenuar al menos un 90% de las oscilaciones transmitidas al cursor de pantalla, producto de la manipulación de un ratón de computadora operado por una persona con TE en manos. El criterio utilizado para evaluar el desempeño del ratón propuesto se describe en el anexo 1. 1.11 Alcances y limitaciones La investigación se limita a eliminar la oscilación en la señal adquirida por el movimiento del ratón, producida por el TE en manos del usuario. Este acotamiento deja fuera otros problemas de señales vibratorias producidas por otras enfermedades u otros factores físicos (superficie de desplazamiento irregular, defectos en el sensor de movimiento, diseño físico del ratón), así como también deja fuera la eliminación del problema desde el origen, es decir, eliminar el temblor en la mano. 12 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” El alcance principal del sistema desarrollado consiste en que lo puede utilizar cualquier persona con TE en manos, ya que el filtro permite identificar y eliminar las oscilaciones incluidas en todo el rango de frecuencia del TE que es entre 4 y 12 Hz. Otro alcance del sistema desarrollado es que se puede utilizar con cualquier sistema operativo ya que solo se necesita el controlador genérico (que generalmente incluyen todos los sistemas operativos) para un ratón compatible con HID. Una limitación es que el sistema desarrollado probablemente no funcione de forma adecuada para otros problemas similares como lo son la enfermedad de Parkinson, Esclerosis Múltiple o Distonía, entre otros, así como tampoco tenga un desempeño adecuado con un grado de temblor que impida mantener el ratón siempre en contacto con la superficie de desplazamiento por que se pueden producir errores en la adquisición de desplazamiento. 13 INTRODUCCIÓN 14 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” CAPÍTULO 2 Marco Teórico 2.1 Introducción Todos los sistemas que nos rodean tienen un comportamiento que depende de las variables con las que interactúa. Estos comportamientos pueden ser traducidos como señales y pueden proporcionar información del sistema, misma que es posible representar con modelos matemáticos. Para el caso de estudio, se requiere identificar el comportamiento que tiene la mano de un usuario con TE en manos, con el fin de diseñar una solución adecuada la problemática planteada. 2.2 Modelo matemático del TE en manos El TE tiene una trayectoria en el tiempo que puede aproximarse a una señal sinusoidal [43]; el modelo matemático del TE en manos utiliza como referencia un plano de coordenadas en dos ejes, donde el movimiento en cada eje se puede aproximar a una función seno [44]; dependiendo de la distancia que existe entre el eje de origen del movimiento y el punto de la mano donde se desea medir el desplazamiento, está función puede adoptar la siguiente forma: 𝑋𝑇𝑚(𝑡) = 𝐴 ∗ sin 𝜔𝑡 (1) 𝑌𝑇𝑚(𝑡) = 𝐵 ∗ sin 𝜔𝑡 (2) 15 MARCO TEÓRICO donde "XTm(t)" es la posición de un punto de la mano en el eje "X" donde se desea medir el desplazamiento de la misma; "YTm(t)" es la posición del mismo punto de la mano en el eje "Y ". "A" y "B" son las amplitudes de los movimientos en sus respectivos ejes; "ω" es la frecuencia angular del movimiento de la mano. Para ejemplificar las ecuaciones anteriores, se recurre a la figura 2. Eje Y Punto de referencia de la mano para conocer la amplitud de movimiento. 2A 2B Distancia entre la referencia y el origen del movimiento. D Origen del movimiento de la mano. Eje X Figura 2.- Movimiento del TE en manos. El movimiento del temblor se origina aproximadamente en la articulación de la muñeca; el desplazamiento en el eje "X" y en el eje "Y" que tiene el punto de referencia en la mano depende de la amplitud del movimiento en cada eje. Estas amplitudes, A y B, se pueden calcular a través del triángulo formado por el desplazamiento angular de la mano, la distancia entre el origen del movimiento de la mano y el punto de referencia en la misma, como se muestra en la figura 3. Eje Y 2A 2B D D D θ Eje X Figura 3.- Amplitudes del punto de referencia de la mano. Conociendo el ángulo de movimiento de la mano (theta) y la distancia (D) entre el origen del movimiento y el punto de referencia en la mano, se pueden conocer las amplitudes A y B. En la figura anterior se puede identificar un triángulo 16 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” isósceles formado por las 2 aristas externas, que forman el ángulo theta, cuya magnitud es D, y por la arista 2A; el valor A se puede conocer aplicando la ley de cosenos. Para conocer en valor B, solo se utiliza la mitad del triángulo formado anteriormente, como lo muestra la figura 4; se forma un triángulo rectángulo y aplicando el teorema de Pitágoras se puede conocer el valor de D'. Eje Y 2B D' A D Eje X Figura 4.- Triángulo resultante para conocer el valor de la magnitud B. El valor 2B es igual al valor D menos el valor de D' (figura 4). De esta forma se conocen las amplitudes A y B. Por otro lado, el modelo matemático de la mano de una persona con TE en manos se puede representar con las ecuaciones (3) y (4): 𝑋𝑚 𝑡 = 𝐴 ∗ sin 𝜔𝑡 + 𝑥 + 𝑚𝑥 (3) 𝑌𝑚 𝑡 = 𝐵 ∗ sin 𝜔𝑡 + 𝑦 + 𝑚𝑦 (4) donde "x" y "y" son las posiciones deseadas de la mano en cada eje, y "mx" y "my" son el ruido blanco producido por movimientos naturales de los músculos de la mano. "Xm(t)" y "Ym(t)" es la posición de un punto en la mano donde se desea medir el desplazamiento de la misma. El movimiento de la mano se transmite completamente al ratón y el sensor de este adquiere todo el movimiento de esta [45], lo que resulta que la ecuación de movimiento del ratón sea similar a la ecuación de la mano; sin embargo, el ruido blanco producido por los movimientos naturales de la mano contiene magnitudes imperceptibles por el sensor del ratón, simplificando las ecuaciones (3) y (4), resultan en (5) y (6): 17 MARCO TEÓRICO 𝑅𝑋 𝑡 = 𝐴 ∗ sin 𝜔𝑡 + 𝑥 (5) 𝑅𝑌 𝑡 = 𝐵 ∗ sin 𝜔𝑡 + 𝑦 (6) La posición de la mano en ambos ejes depende de acoplamientos biomecánicos, como la posición de brazos, hombro y cuerpo; para el modelo matemático representado por las ecuaciones (5) y (6) del movimiento se despreciarán estos acoplamientos y se analizará cada eje por separado, por simplicidad del sistema y análisis del mismo. Una vez obtenido el modelo matemático se procede a convertir éste a su representación en el dominio complejo, ya que se requiere para un análisis posterior en el dominio de la frecuencia, debido a que la teoría utilizada para el diseño de filtros se basa en este dominio. 2.3 Análisis de sistemas. En ocasiones es conveniente representar, en diversos lenguajes, las funciones matemáticas que describen un sistema, con el fin de entenderlos, analizarlos y manipularlos como convenga. Para el caso de representaciones de funciones matemáticas, la transformada de Fourier es como un segundo lenguaje para describir estas funciones; su representación tiene algunas ventajas para el análisis de sistemas. 2.3.1 Series de Fourier. El físico francés, Joseph Fourier (1768-1830), desarrolló una representación de funciones basada en la frecuencia. Esta teoría propone que mediante la suma de señales coseno/sinusoidales de diferentes amplitudes, frecuencias y fases, es posible construir casi cualquier función arbitraria. Dentro de este conjunto de 18 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” señales puede existir una con frecuencia cero, que es un término constante, a menudo referido como la componente continua (DC). De este modo se puede decir que la transformada de Fourier es una representación en el dominio de la frecuencia de una función. Sin embargo, existen funciones del tiempo que al querer encontrar su equivalente en Fourier, se encuentra una expresión indeterminada al sustituir los límites de integración. Algunas de estas funciones son el escalón, signo, etc. Aunque su equivalente de Fourier si exista y se obtenga a partir de ciertos resultados básicos, existen ciertas funciones como la exponencial creciente, señales aleatorias, y otras que no son absolutamente integrales. Además las técnicas de Fourier no permiten analizar los sistemas a partir de las condiciones iniciales que éste presenta. Estas dos objeciones se superan al usar la transformada de Laplace, que además tiene una nomenclatura más sencilla y una mayor facilidad de manejo. 2.3.2 Transformada de Laplace. Se dice que cualquier función que puede escribirse en la forma 𝑥 𝑡 = 𝐾𝑒 𝑠𝑡 , donde k y s son constantes complejas (independientes del tiempo), está caracterizada por la frecuencia compleja s [46]. Para conocer la frecuencia compleja de una función dada por inspección, es necesario escribirla de la forma anterior. Considérese la siguiente función sinusoidal exponencialmente amortiguada (7): 𝑓 𝑡 = 𝑉𝑚 𝑒 𝜎𝑡 𝑐𝑜𝑠 𝜔𝑡 + 𝜃 (7) donde se sustituye la identidad trigonométrica (8) en (7), resultando en (9): 𝑒 𝑗 Ө + 𝑒 −𝑗 Ө 𝑐𝑜𝑠 Ө = 2 (8) 19 MARCO TEÓRICO 1 𝑓 𝑡 = 𝑉𝑚 𝑒 𝑗𝜃 𝑒 2 𝜎 +𝑗𝜔 𝑡 1 + 𝑉𝑚 𝑒 −𝑗𝜃 𝑒 2 𝜎−𝑗𝜔 𝑡 (9) donde: 𝐾1 = 1 𝑉𝑚 𝑒 𝑗𝜃 2 (10) 𝐾2 = 1 𝑉 𝑒 −𝑗𝜃 2 𝑚 (11) 𝐾1 = 𝐾2 ∗ (12) 𝑆1 = 𝜎 + 𝑗𝜔 (13) 𝑆2 = 𝜎 − 𝑗𝜔 (14) ⇒ 𝑆1 = 𝑆2 ∗ (15) La parte real de s está asociada con la variación exponencial; si es negativa, la función decrece conforme t aumenta, si es positiva aumenta, y si es cero, la amplitud de la sinusoidal es constante. Mientras mayor sea la magnitud de la parte real de s, mayor será la rapidez del aumento o disminución exponencial. La parte imaginaria de s describe la variación sinusoidal; específicamente, representa la frecuencia angular. Una magnitud grande de la parte imaginaria indica una variación más rápida respecto al tiempo. Por lo tanto, valores mayores de la magnitud de s indican una variación más rápida respecto al tiempo. Se denota por σ a la parte real, y por ω a la parte imaginaria, ecuación (16): 𝑆 = 𝜎 + 𝑗𝜔 (16) donde s es la frecuencia compleja, σ es la frecuencia neperiana y ω es la frecuencia angular. 20 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” La transformada de Laplace se presenta como un desarrollo o evolución de la transformada de Fourier, aunque se podría definir directamente. El objetivo es hacer que la variación en el tiempo sea de la forma (17): 𝜎 +𝑗𝜔 𝑡 𝑒 (17) Para lograrlo, se considerará la transformada de Fourier de 𝑒 −𝜎𝑡 𝑓 𝑡 en vez de 𝑓 𝑡 , haciendo entonces 𝑔 𝑡 = 𝑒 −𝜎𝑡 𝑓 𝑡 y su respectiva transformada de Fourier (18): ∞ ∞ 𝑒 −𝑗𝜔𝑡 𝑒 −𝜎𝑡 𝑓 𝑡 𝑑𝑡 = 𝐺 𝑗𝜔 = 𝐹 𝜎 + 𝑗𝜔 = −∞ 𝑒 − 𝜎+𝑗𝜔 𝑡 𝑓 𝑡 𝑑𝑡 (18) −∞ Aplicando la transformada inversa de Fourier a (18), se obtiene (21): 1 𝑔 𝑡 = 2𝜋 ∞ −∞ 1 𝑒 𝑗𝜔𝑡 𝐺 𝑗𝜔 𝑑𝜔 = 2𝜋 1 𝑔 𝑡 = 2𝜋 1 𝑓 𝑡 = 2𝜋 ∞ 𝑒 𝑗𝜔𝑡 𝐹 𝜎 + 𝑗𝜔 𝑑𝜔 (19) −∞ ∞ 𝑒 𝑗𝜔𝑡 𝐹 𝜎 + 𝑗𝜔 𝑑𝜔 (20) −∞ ∞ 𝑒 𝜎 +𝑗𝜔 𝑡 𝐹 𝜎 + 𝑗𝜔 𝑑𝜔 (21) −∞ Ahora se sustituye 𝜎 + 𝑗𝜔 por la variable compleja s, y como σ es constante, 𝑑𝑠 = 𝑗𝑑𝜔, resultando en (22): 1 𝑓 𝑡 = 2𝜋𝑗 𝜎0 +𝑗 ∞ 𝑒 𝑠𝑡 𝐹 𝑠 𝑑𝑠 (22) 𝜎0 −𝑗 ∞ donde la constante real 𝜎0 se incluye en los límites para garantizar la convergencia de la integral impropia. En términos de s se tiene (23): 21 MARCO TEÓRICO ∞ 𝑒 −𝑠𝑡 𝑓 𝑡 𝑑𝑡 𝐹 𝑠 = (23) −∞ La ecuación (23) define el par de la transformada bilateral de Laplace. Puede pensarse que la transformada bilateral de Laplace expresa a f (t ) como la sumatoria (integral) un número infinito de términos infinitesimalmente pequeños cuya frecuencia compleja es 𝑆 = 𝜎 + 𝑗𝜔. La transformada de Laplace que se toma con límite inferior 𝑡 = 0− define la transformada unilateral de Laplace, la transforma inversa sigue inalterada, pero sólo es válida para t > 0, ecuación (24). ∞ 𝑒 −𝑠𝑡 𝑓 𝑡 𝑑𝑡 𝐹 𝑠 = (24) 0− También se puede usar el símbolo para indicar la transformada directa o inversa de Laplace: 𝐹 𝑠 = 𝑓 𝑡 = 𝑓(𝑡) −1 𝐹(𝑠) (25) (26) 2.3.2.1 Características de la transformada de Laplace. Una de las ventajas más significativas radica en que la integración y derivación se convierten en multiplicación y división. Esto transforma las ecuaciones diferenciales e integrales en ecuaciones polinómicas, mucho más fáciles de resolver [46]. Debido al exponente negativo en la integral de la Transformada de Laplace su convergencia es mucho más fuerte que en el caso de Fourier. La Transformada de Laplace es mejor para resolver problemas de valor inicial (t=0), La Transformada de Fourier para resolver problemas con condiciones en 22 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” la frontera, en especial cuando se quiere que la solución decaiga a cero a grandes distancias. Aunque 𝐹 𝑠 = regularmente ∞ −𝑠𝑡 𝑒 𝑓 0− la definición de Transformada de Laplace es 𝑡 𝑑𝑡 con límites de cero a más infinito, no es su única definición, ésta es considerada la Transformada de Laplace Unilateral. Existe otra definición que va de menos infinito a más infinito y es llamada Transformada Bilateral de Laplace. Tomando en cuenta esta última, la Transformada de Fourier es un caso específico de la Transformada de Laplace Bilateral cuando s está restringido al eje imaginario. Debido a esto la Transformada de Laplace puede manejar muchas más funciones que la de Fourier (si hay polos en el eje imaginario su transformada diverge, cosa que no sucede con Laplace. Laplace es unidimensional, Fourier es multidimensional. La función de la transformada de Laplace vive en todo el espacio complejo, la función transformada por Fourier vive en el espacio real. La Transformada Bilateral de Laplace sirve para modelar sistemas no causales [47]. 2.3.3 Análisis en el dominio de la frecuencia del modelo matemático de la mano. El modelo matemático del movimiento de una mano con TE, para la dirección X, se puede expresar en el dominio de la frecuencia aplicando la transformada de Laplace a la ecuación (5), resultando en (27); ∞ ∞ sin 𝜔𝑡 𝑒 −𝑠𝑡 𝑑𝑡 + 𝑋 𝐹 𝑠 =𝐴 0 𝑒 −𝑠𝑡 𝑑𝑡 (27) 0 Parte 1 Parte 2 23 MARCO TEÓRICO Para desarrollar la parte 1 de la ecuación se recurre a la siguiente sustitución (28), de acuerdo a la fórmula de Euler, la cual es: sin 𝑥 = 1 𝑗𝑥 (𝑒 − 𝑒 −𝑗𝑥 ) 2𝑗 (28) Sustituyendo x por 𝜔𝑡 en (28), se obtiene (29): sin 𝜔𝑡 = 1 𝑗𝜔𝑡 (𝑒 − 𝑒 −𝑗𝜔𝑡 ) 2𝑗 (29) De esta forma la parte 1 de la ecuación (27) resulta en (30): 𝐹 𝑠 =𝐴∗ 1 2𝑗 ∞ (𝑒 −(𝑠−𝑗𝜔 )𝑡 − 𝑒 −(𝑠+𝑗𝜔 )𝑡 ) 𝑑𝑡 (30) 0 Se desarrolla el proceso de integración y se obtiene la ecuación (31): 𝐹1 𝑠 = 𝐴 ∗ 𝑠2 𝜔 + 𝜔2 (31) Para la parte 2 de la ecuación (27), se desarrolla de forma similar, resultando en (32): 𝐹2 𝑠 = 𝑋 ∗ 1 𝑠 (32) Así se tiene que la ecuación del movimiento de la mano para ambos ejes coordenados, en función del plano complejo, es la suma de la ecuación (31) y (32), resultando (33): 𝐹 𝑠 =𝐴∗ 𝑠2 𝜔 1 +𝑋∗ 2 +𝜔 𝑠 (33) 2.4 Filtros de frecuencia El movimiento de la mano de un usuario con TE en manos está compuesta por 2 señales fundamentales, una correspondiente al movimiento del temblor y la 24 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” otra al movimiento deseado por el usuario. Se requiere eliminar la señal del temblor que adquiere un ratón de computadora, con el objetivo utilizar solo la señal de movimiento deseado del usuario para posicionar el cursor. Esto se puede lograr por medio de algunos sistemas basados en técnicas de descomposición de señales llamados filtros de frecuencia; éstos se diseñan de acuerdo a las características de las señales que componen la señal original. Su función radica en desarticular la señal de entrada en sus distintas componentes. Existen diversos filtros de frecuencia; estos presentan características particulares de acuerdo a diversas clasificaciones. Una forma de catalogarlos consiste en el procesamiento de señales respecto al tiempo, pudiendo ser de forma continua o discreta, conocidos como filtros analógicos y digitales, respectivamente. Las figuras 5 y 6 muestran una clasificación general de estos filtros. Figura 5.- Clasificación general de filtros analógicos. 25 MARCO TEÓRICO Figura 6.- Clasificación general de filtros digitales. 26 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Existen variantes de estos filtros que son diseñados para usos específicos; en el caso de la eliminación de oscilaciones en la mano, se han desarrollado filtros con distintos objetivos de operación, como escribir en un equipo de cómputo con un joystick [48], [49], con una pluma digital [50], [51], y micro-cirugías a nivel médico [52], [53]. 2.5 Diseño del filtro El movimiento que adquiere un ratón de computadora manipulado por una persona con TE en manos contiene las señales del movimiento de temblor y el movimiento deseado por el usuario; se requiere eliminar la señal del temblor (4 12 Hz) y utilizar solamente la señal del movimiento deseado para posicionar adecuadamente el cursor de pantalla de una computadora. Por lo tanto se requiere un filtro de tipo Pasa-bajos, adquiere las señales cuyas frecuencias sean menores de una frecuencia elegida, y atenúa o elimina las señales con frecuencias mayores a la elegida. Las señales que adquiere un ratón de computadora son digitalizadas por el sensor de movimiento, por lo que se utilizó un filtro digital, el cual se programó en un microcontrolador el cual se comunica con el sensor de movimiento, procesa los datos adquiridos y envía la información del ratón a la computadora utilizando el protocolo para este tipo de dispositivos. Existen diversos métodos para diseñar filtros pasa-bajas. La elección del filtro a utilizar se basó en la simulación de una señal de entrada adquirida por el ratón; se evaluaron diversos filtros que fueron generados por la herramienta FDATOOL de Matlab [54]. El filtro que obtuvo un equilibrio entre una respuesta con menor tiempo retardo entre la entrada y la salida, y una atenuación menor al 10% de la oscilación es el que se implementó en el ratón (ver anexo 1). El filtro elegido fue del tipo Chebyshev I. Para posicionar el cursor de pantalla se dividió el proceso anterior en 2 etapas. 27 MARCO TEÓRICO ETAPA 1.- Esta etapa consiste en aplicar un filtro de frecuencia inicial a la señal adquirida por el sensor del ratón. Las respuestas todos los filtros evaluados aun contienen pequeñas oscilaciones, directamente esta respuesta por lo que no es conveniente utilizar para posicionar el consiste en cursor, recurriendo necesariamente a una segunda etapa. ETAPA 2.- La segunda etapa aplicar un segundo procesamiento de datos que permite identificar y eliminar datos correspondientes a "falsos" movimientos obtenidos de la primer etapa, así como desplazar el cursor con una velocidad lenta o rápida de acuerdo a lo que requiera el usuario. 2.6 Desarrollo del filtro de frecuencia. Para diseñar un filtro de frecuencia, se deben establecer ciertos criterios del comportamiento que se requiere en el sistema; pueden ser especificaciones de amplitud 𝐻(𝜔) y de atenuación α(ω) de la señal a procesar. La relación entre atenuación y amplitud está dada por (34): 𝛼 𝜔 = 10𝐿𝑜𝑔 1 𝐻(𝜔) 2 = −20𝐿𝑜𝑔 𝐻(𝜔) (34) Se requiere un filtro pasa-bajas, por lo que se deben plantear las especificaciones de diseño, mostradas en las figuras 7 y 8. 𝐻(𝜔) Hc Hs Banda de paso Banda de transición Hp: Mínima ganancia en la banda de corte. Banda atenuada Hs: Máxima ganancia en la banda de rechazo ωc: Máxima frecuencia de la banda de corte. ωs: Mínima frecuencia de la banda de rechazo. ωc ωs ω Figura 7.- Parámetros a tomar en cuenta en el diseño de un filtro analógico. 28 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” 𝐻(𝜔) Filtro ideal Hc Ha Filtro real ωc ωs ω Figura 8.- Respuesta de un filtro ideal y un filtro real. Parámetro de discriminación (Kd) (35) : 𝐾𝑑 = 1 −1 𝐻𝑐 2 = 1 2−1 𝐻𝑠 𝛼𝑐 1010 − 1 𝛼𝑠 1010 (35) −1 Parámetro de Selectividad (Ks) (36): 𝐾𝑠 = 𝜔𝑐 (≤ 1 𝑝𝑎𝑟𝑎 𝑝𝑎𝑠𝑜 𝑏𝑎𝑗𝑜) 𝜔𝑠 (36) Nota: Si el factor Kd es pequeño, el filtro pasa-bajas es de alta calidad. Si el factor Ks tiende a 1, el filtro pasa-bajas es casi ideal [55]. |H(ω)| Hc Ha ωc ωs ω Figura 9.- Relación entre la frecuencia de corte y la frecuencia de paro. 29 MARCO TEÓRICO 𝐻(𝜔) = 1 1 + 𝐹(𝜔 2 ) ⇒ 𝛼 𝜔 = 10𝐿𝑜𝑔 1 + 𝐹 𝜔2 (37) 2.6.1 Cálculo de un filtro Chebyshev analógico. Una aproximación Chebyshev presenta particularmente rizos en la banda de paso y una disminución pronunciada de la magnitud a partir de la frecuencia de corte, como lo muestra la figura 10; no tiene ceros, solamente polos [56]. Magnitud dB Diagrama de Bode en magnitud Frecuencia en rad/s. Figura 10.- Respuesta general de un filtro Chebyshev pasa-bajas. Se establecen los parámetros de diseño: 𝐴𝑚𝑖𝑛 = 𝑉𝑎𝑙𝑜𝑟 𝑚í𝑛𝑖𝑚𝑜 𝑒𝑛 𝑑𝐵 𝑑𝑒 𝑎𝑡𝑒𝑛𝑢𝑎𝑐𝑖𝑜𝑛 𝑒𝑛 𝑙𝑎 𝑏𝑎𝑛𝑑𝑎 𝑑𝑒 𝑟𝑒𝑐𝑎𝑧𝑜 𝐴𝑚𝑎𝑥 = 𝑉𝑎𝑙𝑜𝑟 𝑚á𝑥𝑖𝑚𝑜 𝑒𝑛 𝑑𝐵 𝑑𝑒 𝑎𝑡𝑒𝑛𝑢𝑎𝑐𝑖𝑜𝑛 𝑒𝑛 𝑙𝑎 𝑏𝑎𝑛𝑑𝑎 𝑑𝑒 𝑝𝑎𝑠𝑜 𝐹𝑠𝑡𝑜𝑝 = 𝐹𝑟𝑒𝑐𝑢𝑒𝑛𝑐𝑖𝑎 𝑑𝑒 𝑟𝑒𝑐𝑎𝑧𝑜 𝐹𝑐𝑜𝑟𝑡𝑒 = 𝐹𝑟𝑒𝑐𝑢𝑒𝑛𝑐𝑖𝑎 𝑑𝑒 𝑐𝑜𝑟𝑡𝑒 30 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Para calcular el valor en dB, se recurre a la formula (38): (38) 𝐴𝑑𝐵 = 20𝐿𝑜𝑔10 (𝐴) Para obtener el orden de esta aproximación, se aplica la fórmula (39) [57]: 10𝐴𝑚𝑖𝑛 10 − 1 10 𝐴𝑚𝑎𝑥 /10 − 1 𝜔𝑠𝑡𝑜𝑝 𝑎𝑟𝑐𝑐𝑜𝑠 𝜔𝑐𝑜𝑟𝑡𝑒 𝑎𝑟𝑐𝑐𝑜𝑠 𝑛≥ (39) El orden del filtro será el número entero inmediato superior al arrojado por la ecuación anterior. Para obtener los polos y ceros que definirán la función de transferencia, se ocupan las ecuaciones (40) a (43): Polos: 𝜀= 100.1∗𝐴𝑚𝑎𝑥 − 1 (40) 𝑠𝑘 = 𝜎𝑘 + 𝑗𝜔𝑘 (41) 𝜎𝑘 = −𝜔𝑠𝑡𝑜𝑝 𝑠𝑒𝑛 1 1 𝑎𝑟𝑐𝑠𝑒𝑛 𝑁 𝜀 𝑠𝑒𝑛 𝜔𝑘 = 𝜔𝑠𝑡𝑜𝑝 𝑐𝑜𝑠 1 1 𝑎𝑟𝑐𝑠𝑒𝑛 𝑁 𝜀 𝑐𝑜𝑠 𝜋 (2𝑘 − 1) 2𝑁 𝜋 (2𝑘 − 1) 2𝑁 (42) (43) Una vez obtenida la función de transferencia del filtro, se procede a calcular su ganancia igualándola a 1 y haciendo S= 𝑗𝜔 y 𝜔=0; Hay que resaltar que para el mismo orden, hay un compromiso entre la amplitud de las oscilaciones en la banda de paso y la selectividad y la linealidad de la fase [58], como se muestra en la figura 11: Si 𝐴𝑚𝑎𝑥 aumenta/disminuye, la atenuación es más/menos rápida. Si 𝐴𝑚𝑎𝑥 aumenta/disminuye, la fase es menos/más lineal. 31 MARCO TEÓRICO Figura 11.- Respuesta en amplitud y fase de un filtro Chebyshev inverso. 2.6.2 Digitalización de un filtro a partir de un diseño analógico. Para poder implementar el filtro en algún sistema digital, se requiere una transformación de un modelo de sistema continuo a un modelo de sistema discreto, ya que los sistemas digitales operan bajo este criterio. Para esto se requiere transformar, al dominio del tiempo discreto, la función de transferencia del filtro de frecuencia, aplicando una conversión analógicodigital. Existen técnicas que permiten hacer este cambio; algunas de estas son la transformada invariante al impulso, la transformada invariante al escalón y la transformación bilineal. 2.6.2.1 Transformación bilineal. Las fórmulas de respuesta a la frecuencia lineal H(m) pueden ser convertidas en un equivalente digital usando el impulso invariante, el escalón invariante o la transformación bilineal. Solo la transformación bilineal brinda una función de conversión de propósito general de implementación sencilla, que puede ser usada en respuestas para filtros pasa-bajas, pasa-altas, pasa-banda y parabanda. Las funciones de conversión impulso invariante y el escalón invariante son muy complejas de aplicar ya que utiliza la representación en fracciones parciales y 32 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” una transformación individual en Z de cada fracción parcial; estas funciones de conversión no pueden ser usadas para respuestas de filtros pasa-altas o parabanda [59]. Por esta razón solo la transformación bilineal se considera para el desarrollo del filtro digital requerido. La transformación bilineal es usada para convertir la respuesta en frecuencia analógica en una respuesta en dominio digital. La ventaja de la transformación bilineal es que cualquier respuesta puede ser convertida. La transformación desde un plano S analógico en un plano Z digital es muy simple de visualizar en la figura 12. El eje ω, que es la frecuencia del plano S, está envuelta alrededor de sí misma en el plano Z en forma de círculo. De un lado del círculo es el punto de frecuencia cero el cual es el origen en el diagrama del plano S. El otro lado del círculo es donde los puntos de infinito y menos infinito se encuentran. Figura 12.- Transformación del plano S al plano Z. La transformación bilineal es un proceso matemático simple. Comenzando con una respuesta analógica en frecuencia, H(s), la transformación bilineal produce H(z) cuando se lleva a cabo la sustitución de la variable S por el operador 𝑧−1 𝑧+1 al diseño analógico del filtro des-normalizado; sin embargo se debe agregar un factor que incluye el tiempo de muestreo que tendrá el filtro digital, el cual es (44): 𝑠≈ 2 𝑧−1 ∗ 𝑇 𝑧+1 (44) 33 MARCO TEÓRICO Así, el filtro queda representado en función de la variable Z. Posteriormente se simplifica la ecuación, resultando el término de mayor orden del denominador en la unidad. La forma canónica del filtro se debe mostrar cómo (45): 𝐻 𝑧 = 𝑌(𝑧) 𝑏0 + 𝑏1 𝑍 −1 + 𝑏2 𝑍 −2 + ⋯ + 𝑏𝑁 𝑍 −𝑁 = 𝑋(𝑧) 1 + 𝑎1 𝑍 −1 + 𝑎2 𝑍 −2 + ⋯ + 𝑎𝑁 𝑍 −𝑁 (45) Se Iguala Y(z) con X(z) y se despeja la salida actual Y(z), resultando (46): 𝑌 𝑧 = 𝑋 𝑧 𝑏0 + 𝑏1 𝑍 −1 + 𝑏2 𝑍 −2 + ⋯ + 𝑏𝑁 𝑍 −𝑁 − 𝑌 𝑧 𝑎1 𝑍 −1 + 𝑎2 𝑍 −2 + ⋯ + 𝑎𝑁 𝑍 −𝑁 (46) Finalmente los coeficientes A y B son los que se utilizan para implementar el filtro en el sistema digital, recurriendo a entradas presentes y pasadas y salidas pasadas, como lo indica la figura 13: Figura 13.- Diagrama de bloques de un filtro IIR. 2.6.3 Diseño del filtro Chebyshev utilizado. De acuerdo a las ecuaciones anteriores, se establecen los parámetros de diseño. Para calcular el valor en dB de las magnitudes de diseño, se recurre a (47): 𝐴𝑑𝐵 = 20𝐿𝑜𝑔10 (𝐴) (47) Por experimentación, se observó que la magnitud de la oscilación a baja frecuencia (4 Hz) que se debe atenuar es aproximadamente de 25 pixeles; 34 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” utilizando la fórmula 40, resulta una magnitud alrededor de 28 dB, sin embargo por cuestiones de simplicidad en el diseño del filtro se eligió una magnitud de 16 dB para la banda de rechazo con el fin de que el orden del filtro fuera menor, siempre y cuando su desempeño fuera adecuado. Mientras menor sea el rizo en la banda de paso, las oscilaciones resultantes en la respuesta del filtro tendrán magnitudes pequeñas; por esto se eligió una magnitud de 1 dB. Los parámetros de diseño son los siguientes: 𝐴𝑚𝑖𝑛 = 16 𝑑𝐵 𝐴𝑚𝑎𝑥 = 1 𝑑𝐵 𝐹𝑠𝑡𝑜𝑝 = 3.7 𝐻𝑧 𝐹𝑐𝑜𝑟𝑡𝑒 = 0.3 𝐻𝑧 Para obtener el orden de esta aproximación, se sustituyen los valores anteriores en la ecuación (39), siendo el orden del filtro el número entero inmediato superior: 𝑛 = 0.9977 𝑛= 1 Para obtener los polos y ceros que definirán la función de transferencia, se ocupan las ecuaciones 40, 41, 42 y 43 y se sustituyen los parámetros de diseño: 𝜀= 100.1∗1 − 1 = 0.50884713 Polos: Para K=1 𝜎1 = −3.704365 𝜔1 = 0 La función de transferencia resulta de la siguiente manera: 35 MARCO TEÓRICO 𝐺 𝑠 = 𝐻0 𝑆 + 3.704365 Una vez obtenida la función de transferencia del filtro, se calcula su ganancia. 𝐻0 =1 𝑆 + 3.704365 (48) Como S= 𝑗𝜔 y 𝜔=0, entonces: 𝐻0 = 3.704365 Donde la función de transferencia el filtro es: 𝐹𝑖𝑙𝑡𝑟𝑜 𝑠 = 3.704365 𝑆 + 3.704365 (49) 2.6.4 Análisis del desempeño del filtro. F(s) mano 𝐴∗ 𝑆𝑎𝑙𝑖𝑑𝑎 𝑠 = 𝑠2 𝜔 𝑥 + 2 +𝜔 𝑠 * F(s) filtro = F(s) salida 3.7043 = 𝑆𝑎𝑙𝑖𝑑𝑎(𝑠) 𝑠 + 3.7043 𝑆 3 3.7043 + 𝑥 + 𝑆 2 𝐴𝜔 + 3.7043 𝑥 + 3.7043 ∗ 𝑆 𝑥 + 𝐴𝜔 + 1 + 3.7043𝑥𝜔2 𝑆 4 + 𝑆 3 3.7043 + 𝑆 2 𝜔 2 + 𝑆(3.7043𝜔 2 ) (50) donde: 𝑥 = 𝑝𝑜𝑠𝑖𝑐𝑖ó𝑛 𝑑𝑒𝑠𝑒𝑎𝑑𝑎 𝑑𝑒 𝑙𝑎 𝑚𝑎𝑛𝑜 𝐴 = 𝑎𝑚𝑝𝑙𝑖𝑡𝑢𝑑 𝑑𝑒𝑙 𝑡𝑒𝑚𝑏𝑙𝑜𝑟 𝑑𝑒 𝑙𝑎 𝑚𝑎𝑛𝑜 𝜔 = 𝑓𝑟𝑒𝑐𝑢𝑒𝑛𝑐𝑖𝑎 𝑎𝑛𝑔𝑢𝑙𝑎𝑟 𝑑𝑒𝑙 𝑡𝑒𝑚𝑏𝑙𝑜𝑟 𝑑𝑒 𝑙𝑎 𝑚𝑎𝑛𝑜 = 2 ∗ 𝑝𝑖 ∗ 𝑓𝑟𝑒𝑐𝑢𝑒𝑛𝑐𝑖𝑎 𝐻𝑧 Para comprobar el desempeño del filtro, se propone evaluarlo con una función seno (simulación del temblor) en suma con una función escalón de magnitud 100 (posición fija deseada). A continuación se muestran los comandos utilizados: 36 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” % se declara el tiempo de simulación en segundos t=0:0.01:5; % se declara la función seno con amplitud 25 y frecuencia 4Hz seno=25*sin(4*2*pi*t); % se declara la entrada constante mov=100; % se declara la entrada completa para el filtro entrada=seno+mov; % se declara el numerador del filtro numfiltro=[3.7043]; % se declara el denominador del filtro denfiltro = [1 3.7043]; % se inyecta la entrada diseñada y se simula el comportamiento del sistema lsim(numfiltro, denfiltro, entrada, t) La respuesta se muestra en la figura 14: Linear Simulation Results 140 120 100 Pixel Amplitude 80 60 40 20 0 -20 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 Time (sec) Tiempo (s) Figura 14.- Respuesta del filtro ante una entrada escalón más una señal seno de 4 Hz y 50 pixeles de amplitud. 37 MARCO TEÓRICO También se evaluó con una función seno en suma con una función rampa cuya respuesta se muestra en la figura 15. A continuación el código utilizado: % se declara el tiempo de simulación en segundos t=0:0.01:5; % se declara la función seno con amplitud 25 y frecuencia 4Hz seno=25*sin(4*2*pi*t); % se declara la entrada rampa mov=10*t; % se declara la entrada completa para el filtro entrada=seno+mov; % se declara el numerador del filtro numfiltro=[3.7043]; % se declara el denominador del filtro denfiltro = [1 3.7043]; % se inyecta la entrada diseñada y se simula el comportamiento del sistema lsim(numfiltro, denfiltro, entrada, t) Linear Simulation Results 80 60 Pixel Amplitude 40 20 0 -20 -40 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 Time (sec) Tiempo (s) Figura 15.- Respuesta del filtro ante una entrada rampa en suma con una señal seno de 4 Hz. de 50 pixeles de amplitud. 38 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” 2.6.5 Digitalización del filtro por medio de la transformación bilineal (tustin). El único paso consiste en realizar la siguiente sustitución: 𝑠= 2 𝑧−1 ∗ 𝑇 𝑧+1 (51) Así se tiene la sustitución de (51) en (49): 𝐹𝑖𝑙𝑡𝑟𝑜(𝑧) = 3.7043 2 𝑧−1 ∗ + 3.7043 𝑇 𝑧+1 Desarrollando la ecuación y agrupando en términos de Z, se tiene: 𝐹𝑖𝑙𝑡𝑟𝑜(𝑧) = 𝑧 3.7043 𝑇 + 3.7043 𝑇 𝑧 2 + 3.7043 𝑇 + 3.7043𝑇 − 2 El periodo de muestreo es de T=0.008s (envío de datos un ratón USB): 𝐹𝑖𝑙𝑡𝑟𝑜(𝑧) = 𝑧 0.0296349 + 0.0296349 𝑧 2.0296349 + −1.9703651 Se establece la magnitud del denominador de mayor orden en la unidad. 𝐹𝑖𝑙𝑡𝑟𝑜(𝑧) = 0.0147 + 0.0147 𝑧 −1 1 − 0.9707 𝑧 −1 Donde al comparar con la forma canónica de una función de transferencia en Z (52), se obtienen los coeficientes del filtro: 𝑌(𝑧) 𝑏0 + 𝑏1 𝑍 −1 + 𝑏2 𝑍 −2 + ⋯ + 𝑏𝑁 𝑍 −𝑁 𝐻 𝑧 = = 𝑋(𝑧) 1 + 𝑎1 𝑍 −1 + 𝑎2 𝑍 −2 + ⋯ + 𝑎𝑁 𝑍 −𝑁 (52) 𝑏0 = 0.0147 𝑏1 = 0.0147 𝑎1 = −0.9707 39 MARCO TEÓRICO Para efectos de simplicidad, se utilizó el comando: [b,a]=cheby1(N,Rs,Fnyquist) El Teorema de Nyquist establece: “Para poder replicar con aproximada exactitud la forma de una onda, es necesario que la frecuencia de muestreo sea superior al doble de la máxima frecuencia a muestrear.” De esta forma, para transformar a la frecuencia de Nyquist la frecuencia de paro, es necesario que se cumpla la condición (53): 𝐹𝑁𝑦𝑞𝑢𝑖𝑠𝑡 = 2 ∗ 𝐹𝑠𝑡𝑜𝑝 ≤1 𝐹𝑚𝑢𝑒𝑠𝑡𝑟𝑒𝑜 (53) Si al sustituir los valores de Frecuencia stop y Frecuencia de muestreo, la frecuencia de Nyquist es menor o igual a 1, entonces se puede aplicar el comando en Matlab: [b,a]=cheby1(1,16,0.0592) Obteniendo así los coeficientes en Z del filtro digital. b= 0.0147 0.0147 a= 1.0000 -0.9708 Estos coeficientes son: 𝑏0 = 0.0146 𝑏1 = 0.0146 𝑎1 − 0.9705 40 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” 2.6.6 Desarrollo de la etapa 2 del filtro. Debido a que la respuesta del filtro Chebyshev aun presentaba oscilaciones no deseadas, este comportamiento impediría al usuario con temblor en manos utilizar eficientemente un ratón para computadora. Por tal motivo se implementó una segunda etapa de acondicionamiento de la señal que consiste en reconocer estos "falsos" movimientos y omitirlos, así como también permitir el posicionamiento fino del cursor. El ratón manipulado por una persona con TE en manos no siempre tiene la misma magnitud de oscilación debido a diversos factores como fricción no constante entre el ratón y la superficie de desplazamiento, así como movimientos bruscos aleatorios en la mano, por lo que estas variaciones provocan que el filtro Chebyshev genere en la respuesta señales identificadas como "falsos" movimientos. Se comprobó que estos movimientos no deseados no superan una suma de pixeles en determinada cantidad de eventos de movimiento, por lo que si esta sumatoria supera la cantidad de pixeles preestablecidos, entonces el movimiento se identificará como deseado. Por otra parte, el usuario puede iniciar el movimiento del cursor de forma lenta o bien puede hacerlo rápidamente. La segunda etapa identifica la moda de los primeros eventos de movimiento; si estos no fueron mayores a cierta cantidad de pixeles, al cursor se le asignarán incrementos cortos e intermitentes con un comportamiento en el tiempo de tipo exponencial. De lo contrario, si la segunda etapa identifica que la moda de las primeras muestras contiene incrementos mayores, el posicionamiento del cursor será continuo y con una magnitud similar a la del desplazamiento del ratón. Este proceso anterior aplica para ambos ejes de movimiento. Con esta etapa se permite desplazar incluso a 1 pixel de forma sencilla, y permite el desplazamiento rápido sin tener que esperar una etapa previa de posicionamiento lento. 41 MARCO TEÓRICO 2.7 Funcionamiento de un ratón para computadora. De acuerdo a la tecnología que emplean los ratones para computadora, existen 3 tipos de ratones; estos son: 2.7.1 Ratón de bola. Este ratón posee, como su nombre lo indica, una bola que se mueve internamente al desplazar el ratón, y esta mueve dos discos dentados llamados discos codificadores (Encoder) sobre las cuales se hace incidir dos haces de luz por medio de dos diodos emisores de luz (LED's) [60]. Los dientes de los discos del ratón permiten que el haz de luz del LED incida intermitentemente en un fototransistor que está al otro lado del disco, de tal modo que, cuando el haz de luz pasa por un “hueco” del disco dentado, el fototransistor recibirá la luz del LED interpretándolo como un estado lógico alto, y cuando el haz de luz incide sobre un diente del disco, el fototransistor no recibirá señal alguna, emitiendo un estado lógico bajo. El funcionamiento general para la detección de movimiento se muestra en la figura 16. Figura 16.- Modo adquisición de desplazamiento de un “ratón de bola”. El controlador de ratón, que es normalmente un microcontrolador de uso especifico, usa el número y secuencia de pulsos de los fototransistores para determinar la rapidez y sentido de movimiento del ratón. 42 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” 2.7.2 Ratón óptico. La primera generación de este tipo de ratones tiene internamente dos ventanas que se encuentran en la cara inferior y que hace contacto con la zona de movimiento. Dos LED's alumbran la superficie sobre la que se mueve el ratón. Uno de ellos produce una luz roja visible mientras que el otro produce una luz infrarroja. Estas luces se reflejan y vuelven a entrar por las mismas ventanas, siendo detectadas por dos fototransistores. La superficie presentaba una rejilla de líneas oscuras (que apenas reflejaban luz) sobre ella. Al mover el ratón, el haz de luz es interrumpido un cierto número de veces por las líneas, lo que permite conocer el desplazamiento y la velocidad [61]. El funcionamiento general se muestra en la figura 17. Figura 17.- Modo de adquisición de desplazamiento de un ratón óptico de 1ra generación. Los ratones ópticos de segunda generación contienen básicamente una pequeña cámara (que toma unas 1.500 imágenes por segundo) como lo muestra la figura 18, un diodo emisor de luz roja (LED) y un programa de procesamiento digital de imagen en tiempo real (DSP). El diodo emisor de luz (LED) ilumina la superficie sobre la que se arrastra el ratón. La cámara captura imágenes de la superficie y las envía a un procesador digital de señales (DSP). El programa que se ejecuta sobre el DSP es capaz de detectar patrones sobre cada imagen recibida, como lo muestra la figura 19. Estudiando las imágenes sucesivas, el DSP averigua el patrón de desplazamiento y la velocidad [62]. 43 MARCO TEÓRICO Figura 18.- Modo de adquisición de desplazamiento de un ratón óptico de 2da generación. Figura 19.- Secuencia de imágenes que el sensor de un ratón óptico de 2da generación. 2.7.3 Ratón Laser. Estos ratones sustituyen el sensor óptico por un laser de clase 1 que es inofensivo para el ser humano. Funciona de forma similar al ratón óptico basado en LED, como se observa en la figura 20. Este tipo de ratones tiene una mayor velocidad de respuesta y una mejor precisión funcionando bien en superficies suaves y reflectantes [63]. Figura 20.- Modo de adquisición de desplazamiento de un ratón laser. 44 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Para que las señales que envía el ratón a la computadora puedan ser reconocidas por la misma, es necesario que el sistema operativo identifique el protocolo que utiliza el ratón. Desde la aparición del primer ratón de computadora, han evolucionado distintas interfaces de comunicación de este dispositivo con la computadora. 2.8 Protocolo de envío de datos de un ratón USB compatible con HID. En la actualidad, el estándar y protocolo más utilizado para ratones de computadora es el USB, por lo que se requiere analizar las características de envío de datos para la implementación del filtro. En concreto, de los ratones USB, el protocolo más utilizado es el compatible con HID. El estado de un ratón USB compatible con HID consta de 4 elementos: Estado del botón derecho (presionado o suelto), estado del botón izquierdo (presionado o suelto), desplazamiento en el eje X del ratón y desplazamiento en el eje Y del ratón. Pueden ser mas estados dependiendo del modelo del ratón, siendo opciones como un tercer botón o una rueda (scroll). Un ratón USB compatible con HID envía un paquete de 4 bytes los cuales corresponden a la configuración de la tabla 5: Tabla 5.- Datos que contiene cada byte que envía el ratón a la PC. Byte 1 estado de los botones. Byte 2 movimiento en eje x. Byte 3 movimiento en eje y. Byte 4 movimiento del scroll. Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit2 Bit 1 0 0 0 0 1 Medio Derecho Izquierdo. Bit que indica el sentido de Cantidad de pixeles de movimiento. El bit 0 indica el valor movimiento, positivo (valor "0") o menos significativo. El bit 6 indica el valor más significativo. El negativo (valor "1"). valor máximo posible, equivalente al sistema decimal, es el 127. Bit que indica el sentido de Cantidad de pixeles de movimiento. El bit 0 indica el valor movimiento, positivo (valor "0") o menos significativo. El bit 6 indica el valor más significativo. El negativo (valor "1"). valor máximo posible, equivalente al sistema decimal, es el 127. 0 0 Botó Botó Magnitud de giro de la rueda media. n #5 n #4 Los valores posibles van de -8 a 7. 45 MARCO TEÓRICO Conociendo la teoría del protocolo de un ratón USB compatible con HID, se confirmó el envío de estos paquetes de datos con un ratón de estas características; se utilizó el programa computacional Driver Wizard WinDriver V10.10 Jungo [64], el cual es un analizador de puertos que permite observar los paquetes de datos que llegan a los diferentes puertos del equipo de cómputo. La interfaz se muestra en la figura 21. Figura 21.- Interfaz del programa computacional WinDriver. Se corroboró que los datos de entrada al puerto coinciden con la teoría y con el estado del ratón, como se observa en la figura 22. 46 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Figura 22.- Adquisición de la señal que envía un ratón estándar bajo el protocolo USB. Para ejemplificar, se analiza la primer línea de la imagen anterior, formada por 4 grupos de 4 bytes cada uno. Tabla 6.- Datos del protocolo correspondiente a la primer línea de la figura 22. Byte 4 Byte 3 Byte 2 Byte 1 Grupo 1. Sin movimiento Movimiento eje Y 2 Movimiento eje X, 2 Sin botones 0x00020200 Scroll. pixeles positivos. pixeles positivos. presionados. Grupo 2. Sin movimiento Movimiento eje Y, 6 Movimiento eje X, 14 Sin botones 0x00FA0E00 Scroll. pixeles negativos. pixeles positivos. presionados. Grupo 3. Sin movimiento Movimiento eje Y, 9 Movimiento eje X, 24 Sin botones 0x00F71800 Scroll. pixeles negativos. pixeles positivos. presionados. Grupo 4. Sin movimiento Movimiento eje Y, 8 Movimiento eje X, 21 Sin botones 0x00F81500 Scroll. pixeles negativos. pixeles positivos. presionados. 47 MARCO TEÓRICO Cuando los movimientos del ratón en sus 3 modalidades, eje "X", eje "Y" y rueda media son positivos (el valor del bit 8 es "0"), las lecturas se hacen en forma directa, utilizando el valor del byte en la cantidad de pixeles que se desplazará el cursor de la pantalla en un intervalo de tiempo de 8 ms (tiempo de muestreo del ratón). Si los movimientos son negativos (el bit 8 tiene un valor de "1"), al valor del byte se le aplica la técnica de complemento a dos, es decir, a la lectura obtenida se le invierten todos los bits (complemento) y a la cantidad obtenida se suma 1 bit, y la cantidad resultante será la magnitud de desplazamiento negativo de pixeles que el cursor de pantalla tendrá. Un ratón convencional USB es un dispositivo de baja velocidad, con una tasa de transferencia alrededor de 1,5 Mbps (15 millones de bits por segundo), es decir 192 kB/s (192 mil bytes por segundo). Esta tasa se utiliza en su mayor parte por dispositivos de interfaz humana (HID) como los teclados, los ratones, las cámaras web, etc. Un ratón convencional USB envía el paquete de datos a la computadora con una frecuencia de 125 Hz. Esta frecuencia se comprobó al analizar la comunicación entre un ratón USB compatible con HID y un equipo de cómputo; por medio de una conexión que derivaba las 2 terminales de comunicación USB (D+ y D-, figura 23); se analizó la trama de datos entre estos dos dispositivos por medio de un osciloscopio. El ratón se mantuvo en constante movimiento durante el análisis. Figura 23.- Adaptador para analizar la comunicación USB entre el ratón y la computadora. 48 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Posteriormente se energizó el osciloscopio y una vez calibrado el periodo por división y el voltaje por división, se tomo una lectura fotográfica (figura 24) de los valores de voltaje del bus de transmisión USB. Envío de datos del estado del ratón. Periodo de envío de datos: 8 ms. Figura 24.- Captura instantánea del osciloscopio durante la transmisión de datos. Durante el análisis visual se observó que aproximadamente cada 8 milisegundos se envían datos del ratón a la computadora, es decir, que la frecuencia en el envío de datos del ratón a la computadora es alrededor de 125 HZ. Debido a la velocidad de envío de los bytes y a la resolución gráfica del osciloscopio es imposible observar los cambios en los niveles de voltaje del bus, correspondientes a un periodo de envío de datos por el ratón. Para visualizar estos cambios de voltaje, es necesario disminuir la escala de tiempo del osciloscopio. En la figura 25 se tiene un ejemplo de visualización en el momento en que se conecta el ratón a un puerto USB; la visualización se realizó calibrando el osciloscopio a una escala de 5 microsegundos por división. 49 MARCO TEÓRICO Figura 25.- Captura instantánea del osciloscopio durante la transmisión de datos 2. Se puede observar que existen cambios de voltaje en el bus de datos USB. Este bus es síncrono y utiliza el algoritmo de codificación NRZI ("Non Return to Zero Inverted") ("No retorno a cero invertido"). En este sistema existen dos líneas de datos, ambas con voltajes opuestos (D+ y D-); una tensión de referencia corresponde a un "1", pero no hay retorno a cero entre bits, de forma que una serie de "unos" corresponde a un voltaje uniforme en cada línea; en cambio los ceros se marcan como cambios del nivel de tensión, de modo que una sucesión de ceros produce sucesivos cambios de tensión entre los conductores de señal. Para ejemplificar este sistema de envío se tiene como ejemplo la figura 26. Figura 26.- Trama de datos en síncronos en binario y codificación NRZI. 50 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” La figura anterior muestra la secuencia de datos enviados utilizando el código NRZI equivalente de un dato binario. Las tensiones de las líneas D+ y Dintercambian sus valores de voltaje sólo cuando se envía un "0" lógico. Cuando se envía un "1" lógico, el voltaje de las líneas D+ y D- permanecen constante. 51 MARCO TEÓRICO 52 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” CAPÍTULO 3 Desarrollo 3.1 Introducción Para implementar el filtro a utilizar, es necesario desarrollar el dispositivo computacional donde será implementado. En la figura 27 se muestra el diagrama de bloques general del funcionamiento del sistema propuesto para cancelar la vibración contenida en la señal utilizada para posicionar el cursor. Figura 27.- Diagrama de bloques general del sistema propuesto. El sistema propuesto consiste en diseñar un módulo de adquisición, procesamiento y envío de datos que se integre a un ratón USB compatible con HID, con el fin de tratar los datos obtenidos de la manipulación del ratón por parte del usuario, implementar el filtro digital para la cancelación de la señal del temblor adquirido por el desplazamiento del ratón y enviar los datos obtenidos con el protocolo de un ratón USB compatible con HID. 53 DESARROLLO 3.2 Desarrollo del dispositivo computacional: ratón USB. Se realizaron las siguientes actividades: a) Investigación y análisis de los componentes internos de un ratón USB compatible con HID. b) Diseño electrónico del dispositivo computacional. c) Adquisición de componentes necesarios para el desarrollo del prototipo. d) Desarrollo del circuito electrónico. e) Montaje y pruebas del dispositivo. 3.2.1 Investigación y análisis de los componentes internos de un ratón USB compatible con HID. Se adquirieron 3 diferentes ratones USB compatibles con HID (figura 28), se desarmaron y se observó el circuito interno en cada uno de ellos. Los modelos elegidos fueron: 1. 2. 3. Ratón USB óptico, marca Microsoft, Modelo P58-00031. Ratón USB óptico, marca Genius, Modelo Gm-03021u/a. Ratón USB óptico, marca Ativa, Modelo Lynx-L7R. 1) 2) 3) Figura 28.- Ratones USB para computadora, utilizados para conocer su circuitería. 54 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Los ratones para computadora se integran por 3 tipos de sensores: Sensor para reconocimiento del estado de los botones. Sensor para reconocimiento del giro de la rueda media. Sensor para reconocimiento del desplazamiento del ratón. Tabla 7.- Componentes internos dentro de los ratones adquiridos. Microsoft Genius Ativa Modelo del ratón. P58-00031 Gm-03021u/a Lynx-L7R Sensor de botones. Electro-mecánico. Electro-mecánico. Electro-mecánico. Sensor de rotación. Óptico Óptico-mecánico Óptico-mecánico Sensor de movimiento S2083 Adns-2610 Controlador. Cy7c63723 0424f9yp3-dy29 Pan3511dk Se analizaron las señales eléctricas que envía los botones y el codificador rotatorio con la finalidad de diseñar el circuito que acoplaría estas señales con el microcontrolador. Se investigó el protocolo para entablar una comunicación con los sensores de movimiento; se eligió el sensor ADNS-2610 (figura 29) (anexo 3) ya que de los sensores disponibles en el mercado, este sensor fue el más económico. Figura 29.- Sensor elegido para detectar el movimiento del ratón. 55 DESARROLLO 3.2.2 Diseño del módulo electrónico De acuerdo al diagrama de conexiones que presenta el circuito original del ratón (ver anexo 4), se procedió a diseñar un circuito que permite adquirir las señales de la placa original, acoplarlas al microcontrolador y procesarlas (ver anexo 5). 3.2.3 Adquisición de componentes para el desarrollo del módulo electrónico. En la tabla 8 se muestra la lista de los componentes requeridos para el desarrollo del ratón computacional. Tabla 8.- Componentes adquiridos para el desarrollo del ratón USB. Componentes del prototipo de ratón USB. PIC18F2550 (ver anexo 6). $72,00 Ratón marca Ativa modelo Lynx-L7R $79,00 Placa fenólica 15cmx15cm $23,00 Cable para conexiones UTP (metro) $10,00 Sensor ADNS 2610 $27.00 Tubo de 20 gramos de soldadura aleación estaño/plomo (60/40 $19,00 Componentes electrónicos diversos $100,00 TOTAL $360,00 3.2.4 Desarrollo del circuito electrónico. Se concluyó que se podía utilizar el circuito original del ratón marca Ativa modelo Lynx-L7R, evitando desarrollar otra placa para el circuito base; el proceso consistió en retirar el circuito integrado original (que realizaba la función de sensor y controlador), sustituyéndolo por unos postes (figura 30) que enviarían los datos contenidos en sus terminales a otra placa que debía ser diseñada. 56 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Retiro del sensor original, sustitución por postes. Figura 30.- Circuito original del ratón marca Ativa, sustituyendo el sensor por unos postes. Se diseñó la placa sobre la cual estarían montados los componentes electrónicos que enlazarían las señales de la placa original con el microcontrolador (figura 31). La placa se desarrolló utilizando la máquina de circuitos impresos del laboratorio de Electrónica de Potencia, CENIDET. El diagrama de la disposición física del módulo desarrollado se presenta en el anexo 7. La lista de materiales utilizados se encuentra en el anexo 8. Figura 31.- Placa diseñada para montaje sobre la placa original. 57 DESARROLLO En la figura 32 se presenta el diagrama de bloques de las señales adquiridas, contenidas y generadas dentro de un ratón USB compatible con HID enlazadas al módulo electrónico desarrollado. Figura 32.- Diagrama de las señales contenidas en el sistema de un ratón USB compatible con HID enlazadas al módulo electrónico desarrollado. 3.2.5 Montaje y pruebas del módulo desarrollado. Se montaron todos los componentes electrónicos para posteriormente insertar la placa desarrollada en la posición requerida y finalmente soldar los postes (figura 33). a) b) Figura 33.- a) Vista superior, b) Vista lateral del circuito final del prototipo de ratón USB. 58 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Por último, al microcontrolador se le grabó el código que permite adquirir el desplazamiento del ratón, el estado de los botones y los giros de la rueda media; para esto se utilizó el módulo Pickit2 [65] mostrado en la figura 34 y 35. a) b) Figura 34.- Programación de microcontrolador del prototipo de ratón . a) prototipo de ratón listo para programación. b) Módulo de programación Pickit2. Figura 35.- Interfaz para programación del microcontrolador 18f2550 con Pickit2. 59 DESARROLLO Al evaluar el giro de la rueda media, esta presentó complicaciones en su funcionamiento, por lo que a la placa original del ratón se le sustituyó el sistema para censar el giro de la rueda, sustituyéndolo por 2 resistencias de 1 KOhm unidas por un extremo conectadas a tierra y cada una de las terminales de las resistencias se conectó a 1 poste de aluminio, como se muestra en la figura 36. Resistencias unidas a tierra. 2 Postes de aluminio Figura 36.- Sistema de censado para emular el giro de la rueda media del ratón. A la carcasa inferior del ratón se le agregó una palanca unida a un resorte de compresión sujetado a la base. Esta palanca puede tener movimientos, cuyos desplazamientos están delimitados por el orificio de la superficie del ratón donde originalmente se deslizaba la rueda, siendo los movimientos de la palanca posibles solo hacia adelante y hacia atrás (figura 37). La palanca tiene un perno que la atraviesa horizontalmente y, al energizar el ratón, este se energiza a 5 volts. Palanca Resorte de compresión Orificio limitador de movimiento Perno energizado Figura 37.- Palanca adherida a la carcasa del ratón. 60 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Cuando la palanca se desplaza hacia adelante o hacia atrás, el perno que lo atraviesa hace contacto con alguno de los postes de aluminio, energizando la resistencia conectada a ese poste. La figura 38 muestra el módulo final implementado en el ratón. Cable de alimentación del perno de la palanca Zona de contacto del perno a) b) Figura 38.- Vista del circuito final para el ratón: a) desmontado; b) montado en la carcasa. El código se desarrolló con la compilador PIC C E Compiler PCWHD V.4.104 [66]. El código implementado procesa los datos de movimiento del ratón por medio del filtro digital seleccionado y envía los datos con el protocolo de un ratón USB compatible con HID. El nombre asignado al prototipo final es REODA-MX (Ratón para la Eliminación de Oscilaciones en el Desplazamiento del Apuntador). La figura 39 muestra el diseño final de REODA-MX. 61 DESARROLLO Figura 39.- REODA-MX. 3.3 Adquisición y tratamiento de las señales eléctricas en REODA-MX. A continuación se explican los procesos de adquisición del estado del ratón. En el anexo 9 se encuentra el diagrama eléctrico de REODA-MX, útil para identificar y asociar las distintas etapas abordadas en este tema. 3.3.1 Botón derecho, medio e izquierdo. El microcontrolador 18f2550 tiene una función que permite reconocer un valor lógico de acuerdo al voltaje al que se encuentra sometido la terminal donde se realiza la medición; el microcontrolador utiliza la tecnología TTL, por lo que un voltaje entre 0 y 0.8 volts en una terminal asignará un valor lógico "0" mientras que un voltaje entre 2 y 5 volts en la terminal asignará un valor lógico "1". Cuando se presiona cualquiera de los 3 botones, mecánicamente se cierra un circuito eléctrico configurado con una resistencia de tensión positiva (pull-up) en el cual la terminal del microcontrolador, en estado normal, se encuentra a una tensión de 5 volts. Cuando el botón se presiona, cierra un circuito conectado a tierra el cual incide directamente sobre la terminal del microcontrolador. Para evitar 62 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” un corto-circuito, se emplea una resistencia conectada entre la fuente de 5 volts, la terminal del microcontrolador y el botón que cierra el circuito a tierra, como se observa en la figura 40. Figura 40.- Resistencia de tensión positiva (Pull-Up). 3.3.2 Palanca. Para detectar el estado de la palanca, se emplea un sistema mecánico el cual consta en una palanca metálica energizada a 5 volts. Existen 2 elementos de contacto que se encuentran en una configuración de tensión negativa (pull-down) conectados a 2 terminales del microcontrolador. Cuando la palanca hace contacto con alguna de los 2 elementos de contacto, el voltaje en la terminal del microcontrolador cambia a 5 volts. Para evitar un corto-circuito, se coloca una resistencia conectada entre tierra, la terminal del microcontrolador y el elemento de contacto que cierra el circuito a 5 volts, como se observa en la figura 41. Figura 41.- Resistencia de tensión negativa (Pull-Down). 63 DESARROLLO 3.3.3 Interruptor de programación. Este interruptor sirve para programar el microcontrolador. Debido a que algunas de las terminales del microcontrolador involucradas en el circuito eléctrico también se utilizan para cargar el programa por medio del puerto ICSP, se requiere abrir el circuito de esta terminal cuando se inicia el modo de grabación; en modo de funcionamiento normal, se requiere cerrar el circuito por medio del interruptor. Se realizó esto debido a que el programador no reconocía el microcontrolador ya que la terminal utilizada tiene comunicación con el sensor ADNS-2610 y esto causó una doble comunicación creando un conflicto en los datos enviados y recibidos. 3.4 Lógica digital del filtro desarrollado. El microcontrolador 18F2550 inicia la comunicación con el equipo de cómputo para el reconocimiento del dispositivo y posteriormente comunicarse con los botones, rueda media y el sensor de movimiento, procesa los datos obtenidos y los envía. Para esto requieren distintas funciones en el microcontrolador; a continuación se enlistan las funciones que realiza el microcontrolador. 1. Inicializar microcontrolador. 2. Inicializar puerto USB. 3. Inicializar sensor de movimiento. 4. Detectar estado del giro de la rueda media. 5. Leer desplazamiento en el eje X. 6. Leer desplazamiento en el eje Y. 7. Filtro de movimiento para el eje X. 8. Filtro de movimiento para el eje Y. 9. Detectar estado de los botones. 10. Habilitar puerto USB e interrupciones. 11. Enviar datos con protocolo de ratón USB compatible con HID. 12. Esperar 8 ms. 64 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” En la figura 42 se presenta el diagrama de bloques de las funciones del microcontrolador. El código implementado se encuentra en el anexo 10. Figura 42.- Diagrama de bloques de las funciones realizadas por el microcontrolador. La figura anterior muestra la secuencia de funciones desarrolladas por el microcontrolador. Al energizar el microcontrolador se realizan por única vez las primeras 3 funciones (bloque de línea discontinua) y se continúa con las siguientes funciones. Al concluir la función "esperar 8 ms", la siguiente función a realizar es la "detección de giro de rueda media" generando un ciclo infinito con las 9 funciones involucradas. 3.4.1 Función: "Inicializar microcontrolador". Esta función carga las rutinas que se utilizarán durante las distintas funciones que ejecutará el microcontrolador; su finalidad es identificar e interpretar el lenguaje de programación con el lenguaje del microcontrolador utilizado, comunicar y enlazar las instrucciones utilizadas durante la ejecución del programa. Define las subfunciones que se utilizarán. Define las variables y constantes a utilizar, así como el tipo de dato que manejarán. Configura los puertos de entrada y salida de datos del microcontrolador. La figura 43 muestra la secuencia de subfunciones que lleva a cabo la función "Inicializar microcontrolador". 65 DESARROLLO Figura 43.- Diagrama de bloques de las subfunciones de la función "Inicializar microcontrolador". 3.4.2 Función: "Inicializar puerto USB". Esta función se encarga de inicializar la comunicación del microcontrolador con el equipo de cómputo, enviando la información de su descriptor (características del dispositivo), en este caso, está programado para emular el comportamiento de un ratón USB compatible con HID. Las librerías requeridas para esta función se utilizaron del programa computacional PCWHD Compiler [66], de la compañía CCS Inc. Versión 4.104; los nombres de estas se nombran a continuación: 1. 2. 3. 4. ex_usb_mouse.c pic18_usb.h usb_desc_mouse.h usb.c La figura 44 muestra la secuencia de subfunciones que lleva a cabo la función "Inicializar puerto USB". Figura 44.- Diagrama de bloques de las subfunciones de la función "Inicializar puerto USB". 66 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” 1. Configuración total del dispositivo USB. Este campo indica al equipo de cómputo las características de configuración del dispositivo. Para el caso de un ratón USB compatible con HID se requieren 34 bytes (=0x22) divididos en 4 descriptores los cuales son: a) Descriptor de configuración: Este descriptor indica el dispositivo USB con el que se realiza la comunicación. Para un ratón HID consta de 9 bytes donde cada uno tiene las características siguientes: Byte 1: Indica la longitud del tamaño del descriptor (=0x09). Byte 2: Indica el tipo de configuración (=0x02). Byte 3 y 4: Indica la longitud de los datos de la configuración (0x22) Byte 5: Indica el número de interfaces que soporta el dispositivo (=0x01). Byte 6: Indica el identificador para esta configuración (=0x01). Byte 7: Indica el índice del descriptor de cadena para la configuración (=0x00). Byte 8: Bit 1 al 5 no se usa. El bit 6=0 si no soporta la función remota "despertar" (wake up), 1 si lo soporta. Bit 7=0 si el dispositivo no es autoalimentado de energía, 1 si es autoalimentado. Bit 8=1. Byte 9: Indica el máximo poder requerido en el Bus. 2 mA por cada bit (ejemplo =0x32 para 100 mA). b) Descriptor de interface: Este descriptor indica el tipo de interfaz desarrollada. Para un ratón HID consta de 9 bytes donde cada uno tiene las características siguientes: Byte 10: Indica la longitud del tamaño del descriptor (=0x09). Byte 11: Indica la constante de interface (=0x04). Byte 12: Indica el número que define la interfaz (=0x00). Byte 13: Indica los parámetros alternativos (=0x00). Byte 14: Indica el número de puntos finales excepto 0 (=0x01). Byte 15: Indica el código de clase (=0x03 para HID). Byte 16: Indica el código de subclase (=0x01). Byte 17: Indica el código de protocolo (=0x02). Byte 18: Indica el índice del descriptor de cadena para la interface (=0x00). 67 DESARROLLO c) Descriptor de clase: Este descriptor indica la clase de dispositivo USB conectado. Para un ratón HID consta de 9 bytes donde cada uno tiene las siguientes características: Byte 19: Indica la longitud del tamaño del descriptor (=0x09). Byte 20: Indica el tipo de descriptor (=0x21 para HID). Byte 21 y 22: Indica el número de versión de la clase HID (=0x0110, normalmente 1.1). Byte 23: Indica el código del país donde se localiza (0x00 para ninguno). Byte 24: Indica el número de descriptores de clase HID que siguen (=0x01). Byte 25: Indica el tipo de reporte de descriptor (=0x22 para HID). Byte 26 y 27: Indica la longitud de reporte del descriptor (0x00 normalmente). d) Descriptor de punto final: Este descriptor indica el punto final que utiliza el dispositivo USB. Para un ratón HID consta de 7 bytes donde cada uno tiene las siguientes características: Byte 28: Indica la longitud del tamaño del descriptor (=0x07). Byte 29: Indica la constante de punto final (=0x05). Byte 30: Indica el número y dirección del punto final (=0x81 EP1 IN). Byte 31: Indica el tipo de transferencia soportada (0x03 para interrupción). Byte 32 y 33: Indica el máximo tamaño de paquete soportado (=0x04). Byte 34: Indica el intervalo de muestreo (=0xA0, no puede ser menor de 10 ms para dispositivos de velocidad lenta). Posteriormente se le indican al equipo de cómputo las características particulares del dispositivo las cuales son: 2. Descriptor del dispositivo: Este descriptor indica el nombre comercial del dispositivo, representado en código ASCCI. Dependiendo del tamaño del nombre es la cantidad de bytes requeridos; el primer byte indica la cantidad de bytes requeridos + 1. 68 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” 3. Descriptor del fabricante: Este descriptor indica el nombre del fabricante del dispositivo y el modelo del dispositivo. Cabe mencionar que, para ser reconocido el dispositivo por el equipo de cómputo, es necesario registrar la marca ante USB.org. Este descriptor requiere de 18 bytes donde cada uno tiene las siguientes características: Byte 1: Indica la longitud del tamaño del descriptor (=0x12). Byte 2: Indica las constante del dispositivo (=0x01). Byte 3 y 4: Indica la versión USB en código BCD (0x0110, normalmente). Byte 5: Indica el código de clase (=0x00). Byte 6: Indica el código de subclase (=0x00). Byte 7: Indica el código de protocolo (=0x00). Byte 8: Indica el tamaño máximo de paquete para el punto final 0. (0x08, 8 para dispositivos de baja velocidad). Byte 9 y 10: Indica la identificación del vendedor (consultar lista de Vendor ID). Byte 11 y 12: Indica la identificación del producto (Consultar lista de Product ID). Byte 13 y 14: Indica el número de versión del dispositivo. Byte 15: Índice del descriptor de cadena del fabricante. Byte 16: Índice del descriptor de cadena del producto. Byte 17: Índice del descriptor de cadena del número serial (0x00). Byte 18: Número de configuraciones posibles (0x00). 4. Descriptor del reporte HID: Este descriptor, en términos generales, se utiliza para indicarle al equipo computacional que se requiere de un controlador, en este caso, para un ratón compatible con HID, cuyo descriptor deberá ser el siguiente: Tabla 9.- Descriptor de reporte HID para un ratón USB compatible con HID. Byte. 1y2 3y4 5y6 7y8 9 y 10 11 y 12 13 y 14 15 y 16 Valor 0x0105 0x0209 0x01A1 0x0109 0x00A1 0x0905 0x0119 0x0529 Significado. Uso de la página (controles genéricos de escritorio). Uso (ratón). Colección (Aplicación). Uso (Apuntador). Colección (Física). Uso de la pagina (Botón). Uso mínimo (1). Uso máximo (5). 69 DESARROLLO 17 y 18 19 y 20 21 y 22 23 y 24 25 y 26 27 y 28 29 y 30 31 y 32 33 y 34 35 y 36 37 y 38 39 y 40 41 y 42 43 y 44 45 y 46 47 y 48 49 y 50 51 52 0x0015 0x0125 0x0595 0x0175 0x0281 0x0195 0x0375 0x0181 0x0105 0x3009 0x3109 0x3809 0x8115 0x7F25 0X0875 0x0395 0X0681 C0 C0 Mínimo lógico (0). Máximo lógico (1). Reporte de cuenta (5). Tamaño de reporte (1). Entrada (Dato, Variable, Absoluto, Bit de campo). Reporte de cuenta (1). Tamaño de reporte (3). Entrada (Dato, Variable, Absoluto, Bit de campo). Uso de la página (controles genéricos de escritorio). Uso (X). Uso (Y). Uso (rueda media). Mínimo lógico (-127). Máximo lógico (127). Tamaño de reporte (8). Reporte de cuenta (3). Entrada (Dato, Variable, Absoluto, Bit de campo). Fin de colección Fin de colección. 5. Descriptor de marca del producto. Este descriptor indica la marca del producto; la cantidad de bytes es variable para cada marca y, a diferencia de los primeros 3 descriptores, en este el primer byte no reporta la cantidad de bytes necesarios. A continuación se muestran ejemplos del protocolo de 2 ratones USB compatibles con HID donde se identifican los parámetros anteriores. Para esto se utilizó el programa computacional USBlyzer V1.6 [67] el cual es una herramienta que permite analizar los datos que transitan por diversos puertos de algún equipo computacional, con el fin de identificar el dispositivo conectado, así como para depurar el código de dispositivos desarrollados, logrando identificar errores en el protocolo. Para el primer ejemplo se analizó el puerto USB de un equipo computacional al cual se conecto al puerto USB un ratón óptico, marca Microsoft, Modelo P58-00031. El programa computacional USBlyzer muestra, en la figura 45, la captura de la interfaz en el instante de tiempo en que se conecta el ratón USB. En esta imagen se manifiestan los tiempos en que se realiza la comunicación y los datos obtenidos de del dispositivo. 70 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Figura 45.- Captura de transferencia de datos del ratón de marca Microsoft. 71 DESARROLLO A continuación se realiza el análisis de los 5 descriptores del dispositivo computacional. Tabla 10.- Configuración total del dispositivo del ejemplo 1. Descriptor de configuración. Byte 1 2 3y4 5 6 7 8 Valor 0x09 0x02 0x0022 0x01 0x01 0x00 0xA0 9 0x32 Significado Longitud del tamaño del descriptor: 9 bytes. Tipo de configuración. Longitud de los datos de la configuración: 34 bytes Número de interfaces que soporta el dispositivo: 1. Identificador para la configuración. Índice del descriptor de cadena para la configuración. Bit 6 = 1 el sistema soporta la función remota despertar (wake up). Bit 7 = 0 el sistema no es autoalimentado. Máximo poder requerido en el Bus: 100 mA. Descriptor de interfaz 10 11 12 13 14 15 16 17 18 0x09 0x04 0x00 0x00 0x01 0x03 0x01 0x02 0x00 Longitud del tamaño del descriptor: 9 bytes. Constante de interfaz: 4. Número que define la interfaz: 0. Parámetros alternativos: 0. Número de puntos finales: 1. Código de clase: 3. Código de subclase: 1. Código de protocolo: 2. índice del descriptor de cadena para la interface: 0. Descriptor de clase. 19 20 21 Y 22 23 24 25 26 y 27 0x09 0x21 0x0110 0x00 0x01 0x22 0x0034 Longitud del tamaño del descriptor: 9 bytes. Tipo de descriptor: 33. Número de versión de la clase HID: 1.1. Código del país donde se localiza: 0. Número de descriptores de clase HID que siguen: 1. Tipo de reporte de descriptor: 34. Longitud de reporte del descriptor: 34. Descriptor de punto final. 28 29 30 31 32 y 33 34 0x07 0x05 0x81 0x03 0x0004 0x0A Longitud del tamaño del descriptor: 7. Constante de punto final: 5. Número y dirección del punto final: 129. Tipo de transferencia soportada: 3. Máximo tamaño de paquete soportado: 4. Intervalo de muestreo: 10 ms. La configuración total del dispositivo corresponde a la de un ratón USB HID. 72 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Tabla 11.- Descriptor del dispositivo del ejemplo 1. Byte 1 Valor 0x28 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 0x03 0x42 0x00 0x61 0x00 0x73 0x00 0x69 0x00 0x63 0x00 0x20 0x00 0x4F 0x00 0x70 0x00 0x74 0x00 0x69 0x00 0x63 0x00 0x61 0x00 0x6C 0x00 0x20 0x00 0x4D 0x00 0x6F 0x00 0x75 0x00 0x73 0x00 0x65 0x00 Significado Longitud del tamaño del descriptor: 40 bytes. Fin de texto. Letra: B Carácter nulo. Letra: a Carácter nulo. Letra: s Carácter nulo. Letra: i Carácter nulo. Letra: c Carácter nulo. Espacio Carácter nulo. Letra: O Carácter nulo. Letra: p Carácter nulo. Letra: t Carácter nulo. Letra: i Carácter nulo. Letra: c Carácter nulo. Letra: a Carácter nulo. Letra: l Carácter nulo. Espacio Carácter nulo. Letra: M Carácter nulo. Letra: o Carácter nulo. Letra: u Carácter nulo. Letra: s Carácter nulo. Letra: e Carácter nulo. Texto obtenido: " Basic Optical Mouse ". 73 DESARROLLO Tabla 12.- Descriptor del fabricante del ejemplo 1. Descriptor de configuración. Byte 1 2 3y4 5 6 7 8 9 y 10 11 y 12 13 y 14 15 16 17 18 Valor 0x12 0x02 0x0110 0x00 0x01 0x00 0x08 0x045E 0x0084 0x0000 0x01 0x02 0x00 0x01 Significado Longitud del tamaño del descriptor: 18 bytes. Constante del dispositivo: 2 Versión USB: 1.1 Código de clase: 0. Código de subclase: 1. Código de protocolo: 0. Tamaño máximo de paquete para el punto final 0: 8. Identificación del vendedor: 045E = Microsoft Corp. Identificación del producto: 0084. = Basic Optical Mouse. Versión del dispositivo: 0. Descriptor de cadena del fabricante: 1. Descriptor de cadena del producto: 2. Descriptor de cadena del número serial: 0. Número de configuraciones posibles: 1. Tabla 13.- Descriptor del reporte HID del ejemplo 1. Byte. 1y2 3y4 5y6 7y8 9 y 10 11 y 12 13 y 14 15 y 16 17 y 18 19 y 20 21 y 22 23 y 24 25 y 26 27 y 28 29 y 30 31 y 32 33 y 34 35 y 36 37 y 38 39 y 40 41 y 42 43 y 44 45 y 46 47 y 48 49 y 50 51 52 74 Valor 0x0105 0x0209 0x01A1 0x0109 0x00A1 0x0905 0x0119 0x0529 0x0015 0x0125 0x0595 0x0175 0x0281 0x0195 0x0375 0x0181 0x0105 0x3009 0x3109 0x3809 0x8115 0x7F25 0X0875 0x0395 0X0681 C0 C0 Significado. Uso de la página (controles genéricos de escritorio). Uso (ratón). Colección (Aplicación). Uso (Apuntador). Colección (Física). Uso de la pagina (Botón). Uso mínimo (1). Uso máximo (5). Mínimo lógico (0). Máximo lógico (1). Reporte de cuenta (5). Tamaño de reporte (1). Entrada (Dato, Variable, Absoluto, Bit de campo). Reporte de cuenta (1). Tamaño de reporte (3). Entrada (Dato, Variable, Absoluto, Bit de campo). Uso de la página (controles genéricos de escritorio). Uso (X). Uso (Y). Uso (rueda media). Mínimo lógico (-127). Máximo lógico (127). Tamaño de reporte (8). Reporte de cuenta (3). Entrada (Dato, Variable, Absoluto, Bit de campo). Fin de colección Fin de colección. “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Tabla 14.- Descriptor de marca del producto del ejemplo 1. Byte 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Valor 0x14 0x03 0x4D 0x00 0x69 0x00 0x63 0x00 0x72 0x00 0x6F 0x00 0x73 0x00 0x6F 0x00 0x66 0x00 0x74 0x00 Significado Dispositivo de control 4. Fin de texto. Letra: M Carácter nulo. Letra: i Carácter nulo. Letra: c Carácter nulo. Letra: r Carácter nulo. Letra: o Carácter nulo. Letra: s Carácter nulo. Letra: o Carácter nulo. Letra: f Carácter nulo. Letra: t Carácter nulo. Texto obtenido: " Microsoft ". Se puede observar, con los datos obtenidos de las 5 tablas anteriores, que la información que envía el ratón USB compatible con HID al equipo de cómputo corresponde completamente con las características del mismo. Las tablas 10 y 13 muestran las configuraciones de base de un ratón de computadora. La tabla 12 muestra las características propias del producto, siendo los identificadores clave los bytes 9 al 14 que indican el vendedor, el producto y la versión del producto. Las tablas 11 y 15 muestran las características del modelo del producto, mostrando el modelo del producto y la marca del mismo, respectivamente. Para el segundo ejemplo se analizó el ratón USB óptico, marca Genius, Modelo Gm-03021u/a. El programa computacional USBlyzer muestra en la figura 46 los instantes de tiempo en que se realiza la comunicación y los datos obtenidos de del dispositivo. 75 DESARROLLO Figura 46.- Captura de transferencia de datos del ratón de marca Genius. 76 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” A continuación se realiza un análisis con los 5 descriptores del dispositivo computacional. Tabla 15.- Configuración total del dispositivo del ejemplo 2. Descriptor de configuración. Byte 1 2 3y4 5 6 7 8 Valor 0x09 0x02 0x2200 0x01 0x01 0x00 0xA0 9 0x32 Significado Longitud del tamaño del descriptor: 9 bytes. Tipo de configuración. Longitud de los datos de la configuración: 34 bytes Número de interfaces que soporta el dispositivo: 1. Identificador para la configuración. Índice del descriptor de cadena para la configuración. Bit 6 = 1 el sistema soporta la función remota despertar (wake up). Bit 7 = 0 el sistema no es autoalimentado. Máximo poder requerido en el Bus: 100 mA. Descriptor de interfaz 10 11 12 13 14 15 16 17 18 0x09 0x04 0x00 0x00 0x01 0x03 0x01 0x02 0x00 Longitud del tamaño del descriptor: 9 bytes. Constante de interfaz: 4. Número que define la interfaz: 0. Parámetros alternativos: 0. Número de puntos finales: 1. Código de clase: 3. Código de subclase: 1. Código de protocolo: 2. índice del descriptor de cadena para la interface: 0. Descriptor de clase. 19 20 21 Y 22 23 24 25 26 y 27 0x09 0x21 0x0110 0x00 0x01 0x22 0x0034 Longitud del tamaño del descriptor: 9 bytes. Tipo de descriptor: 33. Número de versión de la clase HID: 1.1. Código del país donde se localiza: 0. Número de descriptores de clase HID que siguen: 1. Tipo de reporte de descriptor: 34. Longitud de reporte del descriptor: 34. Descriptor de punto final. 28 29 30 31 32 y 33 34 0x07 0x05 0x81 0x03 0x0004 0x0A Longitud del tamaño del descriptor: 7. Constante de punto final: 5. Número y dirección del punto final: 129. Tipo de transferencia soportada: 3. Máximo tamaño de paquete soportado: 4. Intervalo de muestreo: 10 ms. La configuración total del dispositivo corresponde a la de un ratón USB HID. 77 DESARROLLO Tabla 16.- Descriptor del dispositivo del ejemplo 2. Byte 1 Valor 0x34 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 0x03 0x4E 0x00 0x65 0x00 0x74 0x00 0x53 0x00 0x63 0x00 0x72 0x00 0x6F 0x00 0x6C 0x00 0x6C 0x00 0x20 0x00 0x2B 0x00 0x20 0x00 0x4D 0x00 0x69 0x00 0x6E 0x00 0x69 0x00 0x20 0x00 0x54 0x00 0x72 0x00 0x61 0x00 0x76 0x00 0x65 0x00 0x6C 0x00 0x65 0x00 0x72 0x00 Significado Longitud del tamaño del descriptor: 52 bytes. Fin de texto. Letra: N Carácter nulo. Letra: e Carácter nulo. Letra: t Carácter nulo. Letra: S Carácter nulo. Letra: c Carácter nulo. Letra: r Carácter nulo. Letra: o Carácter nulo. Letra: l Carácter nulo. Letra: l Carácter nulo. Delete Carácter nulo. Letra: + Carácter nulo. Delete Carácter nulo. Letra: M Carácter nulo. Letra: i Carácter nulo. Letra: n Carácter nulo. Letra: i Carácter nulo. Delete Carácter nulo. Letra: T Carácter nulo. Letra: r Carácter nulo. Letra: a Carácter nulo. Letra: v Carácter nulo. Letra: e Carácter nulo. Letra: l Carácter nulo. Letra: e Carácter nulo. Letra: r Carácter nulo. Texto obtenido: " NetScroll + Mini Traveler ". 78 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Tabla 17.- Descriptor del fabricante del ejemplo 2. Descriptor de configuración. Byte 1 2 3y4 5 6 7 8 9 y 10 11 y 12 13 y 14 15 16 17 18 Valor 0x12 0x02 0x0110 0x00 0x01 0x00 0x08 0x0458 0x0036 0x0110 0x02 0x01 0x00 0x01 Significado Longitud del tamaño del descriptor: 18 bytes. Constante del dispositivo: 2 Version USB: 1.1 Código de clase: 0. Código de subclase: 1. Código de protocolo: 0. Tamaño máximo de paquete para el punto final 0: 8. Identificación del vendedor: 0458 = KYE Systems Corp. (Mouse Systems) Identificación del producto: 0036. = Pocket Mouse LE Versión del dispositivo: 1.1. Descriptor de cadena del fabricante: 2. Descriptor de cadena del producto: 1. Descriptor de cadena del número serial: 0. Número de configuraciones posibles: 1. Tabla 18.- Descriptor del reporte HID del ejemplo 2. Byte. 1y2 3y4 5y6 7y8 9 y 10 11 y 12 13 y 14 15 y 16 17 y 18 19 y 20 21 y 22 23 y 24 25 y 26 27 y 28 29 y 30 31 y 32 33 y 34 35 y 36 37 y 38 39 y 40 41 y 42 43 y 44 45 y 46 47 y 48 49 y 50 51 52 Valor 0x0105 0x0209 0x01A1 0x0109 0x00A1 0x0905 0x0119 0x0529 0x0015 0x0125 0x0595 0x0175 0x0281 0x0195 0x0375 0x0181 0x0105 0x3009 0x3109 0x3809 0x8115 0x7F25 0X0875 0x0395 0X0681 C0 C0 Significado. Uso de la página (controles genéricos de escritorio). Uso (ratón). Colección (Aplicación). Uso (Apuntador). Colección (Física). Uso de la pagina (Botón). Uso mínimo (1). Uso máximo (5). Mínimo lógico (0). Máximo lógico (1). Reporte de cuenta (5). Tamaño de reporte (1). Entrada (Dato, Variable, Absoluto, Bit de campo). Reporte de cuenta (1). Tamaño de reporte (3). Entrada (Dato, Variable, Absoluto, Bit de campo). Uso de la página (controles genéricos de escritorio). Uso (X). Uso (Y). Uso (rueda media). Mínimo lógico (-127). Máximo lógico (127). Tamaño de reporte (8). Reporte de cuenta (3). Entrada (Dato, Variable, Absoluto, Bit de campo). Fin de colección Fin de colección. 79 DESARROLLO Tabla 19.- Descriptor de marca del producto del ejemplo 2. Byte 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Valor 0x0E 0x03 0x47 0x00 0x65 0x00 0x6E 0x00 0x69 0x00 0x75 0x00 0x73 0x00 Significado Shift Out. Fin de texto. Letra: G Carácter nulo. Letra: e Carácter nulo. Letra: n Carácter nulo. Letra: i Carácter nulo. Letra: u Carácter nulo. Letra: s Carácter nulo. Texto obtenido: " Genius ". Se puede observar, con los datos obtenidos de las 5 tablas anteriores, que la información que envía el ratón USB compatible con HID al equipo de cómputo también corresponde a las características del mismo. Las tablas 15 y 18 muestran las configuraciones de base de un ratón de computadora. La tabla 17 muestra las características propias del producto, siendo los identificadores clave los bytes 9 al 14 que indican el vendedor, el producto y la versión del producto. Las tablas 16 y 19 muestran las características del modelo del producto, mostrando el modelo del producto y la marca del mismo, respectivamente. Se concluye que el protocolo utilizado por ambos dispositivos tiene la finalidad de identificarse con el equipo computacional, establecer un controlador adecuado y así iniciar la comunicación correspondiente, en este caso, al envío de datos del estado del ratón computacional. 3.4.3 Función: "Inicializar sensor de movimiento". Esta función inicializa al sensor de movimiento, realizando un reinicio del mismo escribiendo a la dirección 0x00 el valor 0x80. Posteriormente se le indica el modo de funcionamiento donde trabajará en modo de suspensión después de 1 segundo de inactividad (el LED rojo disminuirá la intensidad de iluminación), escribiendo a 80 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” la dirección 0x00 el valor 0x00. Para conocer los tiempos de escritura, se recomienda observar el código adjunto en el anexo 9 y la hoja de datos del sensor, contenido en el anexo 3. 3.4.4 Función: "Detectar estado del giro de la rueda media". Esta función detecta el estado de la palanca, conociendo si se encuentra accionada hacia adelante o hacia atrás, o si no se encuentra en uso, y permite emular el giro de la rueda media del ratón. La forma de detectar el estado de la palanca se describe en el tema 3.3.2. Si la palanca se empuja, el estado lógico en la terminal 0 del puerto B será de "1", y esto hará que la variable Palanca adopte el valor numérico "1". Si la palanca se jala, el estado lógico en terminal 1 del puerto B será "1", y esto hará que la variable Palanca adopte el valor numérico "255". Si la palanca no se acciona, la variable Palanca adoptará el valor numérico "0". La figura 47 muestra la rutina para detectar el estado de la palanca. Figura 47.- Diagrama de flujo de la función "Detectar el estado de giro de la rueda media". La variable Palanca tiene asignado un valor entero que puede ser, 0, 1, o 255. 81 DESARROLLO 3.4.5 Función: "Leer desplazamiento en el eje X". Esta función realiza una comunicación con el sensor de movimiento para solicitarle la información sobre el desplazamiento en el eje X que obtuvo durante los últimos 8 milisegundos. Esto se logra leyendo el registro 0x02 del sensor, de acuerdo a la disposición física del mismo respecto al eje de movimiento asignado. El movimiento del ratón en el eje X puede realizarse en 2 sentidos, por lo que el sensor de movimiento debe detectar la magnitud y el sentido de movimiento. Para esto utiliza el mismo protocolo que utiliza un ratón USB compatible con HID, abordado en el tema 2.8. El microcontrolador realiza una lectura del valor obtenido por el sensor y lo asigna a la variable EntradaX. Esta cantidad es un entero positivo que puede adoptar los valores de 0 a 255. 3.4.6 Función: "Leer desplazamiento en el eje Y". Esta función realiza una comunica con el sensor de movimiento para solicitarle la información sobre el desplazamiento en el eje Y que obtuvo durante los últimos 8 milisegundos. Esto se logra leyendo el registro 0x03 del sensor, de acuerdo a la disposición física del mismo respecto al eje de movimiento asignado. El valor obtenido del sensor se asigna a la variable EntradaY. 3.4.7 Función: "Filtro de movimiento para el eje X". Esta función Implementa el filtro digital utilizado para cancelar las oscilaciones adquiridas por el sensor de movimiento en el eje X, obteniendo como resultado el valor de desplazamiento que se utilizará para posicionar el cursor de la pantalla. La rutina inicia comparando el valor del incremento proveniente del sensor, alojado en la variable EntradaX. Si el movimiento del ratón fue hacia la derecha, los valores que puede contener esta variable van de 1 a 127. Si el movimiento fue 82 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” hacia la izquierda, estos valores varían entre 255 y 128, donde un valor de 255 es traducido como un movimiento de 1 pixel negativo y un valor de 128 se traduce como un movimiento de 128 pixeles negativos. Por facilidad de tratamiento de datos, cuando ocurren movimientos negativos, los valores numéricos también se convierten en negativos. Posteriormente se actualizan los valores pasados del sensor y las salidas pasadas del filtro; posteriormente se aplica el filtro Chebyshev. Una vez obtenido el valor a la salida del filtro, se redondea al entero inmediato inferior. El valor obtenido se limita, de tal modo que la salida nunca superará el límite establecido de acuerdo al protocolo usado (-128 a 127). Si el valor adquirido por el sensor es un cero y éste se adquiere por más de 5 veces consecutivas, la salida del filtro se omite y automáticamente adquirirá el valor de 0, ya que esto se puede traducir como que el usuario dejó de sostener el ratón con su mano y cualquier respuesta del filtro será debido a la acumulación de valores que este tipo de filtro utiliza, ya que se trata de un filtro de respuesta infinita al impulso (IIR). La figura 48 muestra la secuencia de acciones que lleva a cabo la función "Filtro de movimiento para el eje X". Figura 48.- Diagrama de bloques de la función "Filtro de movimiento para el eje X". La figura 49 presenta el diagrama de flujo de datos de esta función. El valor introducido a esta función es el adquirido por la variable EntradaX. 83 DESARROLLO Figura 49.- Diagrama de flujo de la función "Filtro de movimiento para el eje X". La subrutina PromedioX sirve para mejorar la respuesta de la salida del filtro. Se comprobó que, a pesar de filtrar la señal con el filtro Chebyshev, la respuesta aun se presentaban oscilaciones, por lo que fue necesario identificar las características de estas oscilaciones con el fin de eliminarlas. Para identificar que existe un desplazamiento deseado por el usuario, deben existir 25 respuestas del filtro consecutivas cuyo valor sea diferente de "0". 84 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Si esta condición ocurre, la respuesta número 26 se asigna a la variable Promedio_actualXX. En caso de no cumplirse la condición de 25 respuestas consecutivas, se reinicia el contador que enumera las respuestas no nulas y el valor adquirido por la variable Promedio_actualXX es de "0". Si la condición de 25 respuestas consecutivas con incrementos NO NULOS está cumplida y se adquiere algún incremento nulo, el conteo no se reiniciará inmediatamente; se continuará utilizando el valor a la salida del filtro, siempre y cuando no supere la cantidad de 5 incrementos nulos consecutivos. Si esto sucede, se reinicia el conteo de la cantidad de muestras. En la figura 50 se muestra el diagrama de flujo de la rutina PromedioX. Figura 50.- Estructura de la rutina "PromedioX". La subrutina RegresoX se encarga de asignar un valor de movimiento de pixel de acuerdo al valor recibido de la rutina PromedioX, cuya variable de salida es Promedio_actualXX. Esta rutina es la que permite asignar un desplazamiento corto y e intermitente del cursor, o un desplazamiento largo y continuo, de acuerdo 85 DESARROLLO al movimiento de la mano del usuario, con la finalidad de posicionar el cursor incluso con un desplazamiento de 1 pixel de forma sencilla. La rutina detecta cuando el usuario desea mover el cursor pocos pixeles, haciendo una posicionamiento intermitente. Si el usuario continúa intentando mover el cursor con incrementos pequeños, se inicia un posicionamiento exponencial, que incrementa los desplazamientos. La rutina también permite detectar que el usuario desea desplazar rápidamente el cursor, por lo que también permite iniciar el movimiento del cursor de forma instantanea y con desplazamientos largos. Después de asignar el valor de desplazamiento del pixel, convierte el valor de salida al protocolo de un ratón USB compatible con HID, que va de 0 a 255 y el valor obtenido lo adquiere la variable DeltaXX. El diagrama de flujo de esta subfunción se muestra en la figura 51. Figura 51.- Diagrama de flujo de la subfunción "RegresoX". 86 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” 3.4.8 Función: "Filtro de movimiento para el eje Y". Esta función Implementa el filtro digital utilizado para cancelar las oscilaciones adquiridas por el sensor de movimiento en el eje Y, obteniendo como resultado el valor de desplazamiento que se utilizará para posicionar el cursor de la pantalla. Las rutinas y subrutinas son las mismas que para el eje X, por lo cual no se detallarán. 3.4.9 Función: "Detectar estado de los botones". Esta función detecta el estado de los 3 botones del ratón, conociendo si se encuentran accionados por el usuario, o si no se encuentra en uso. La forma de conocer el estado del botón se abordó en el tema 3.3.1. El primer botón del que se verifica su estado es el botón izquierdo. Se identifica el estado lógico en la 4 del puerto B para conocer si este se encuentra presionado o no. Si se encuentra presionado, el estado lógico de esa terminal será de "0", por lo cual la variable a adoptará un valor numérico de "1", de lo contrario adoptará un valor numérico de "0". El segundo botón del que se verifica su estado es el botón derecho. Se identifica el estado lógico en la terminal 3 del puerto B para conocer si este se encuentra presionado o no. Si se encuentra presionado, el estado lógico de esa terminal será de "0", y la variable b adoptará un valor numérico de "2", de lo contrario adoptará un valor numérico de "0". El último botón en verificar su estado es el botón central. Se identifica el estado lógico en la terminal 2 del puerto B para conocer si este se encuentra presionado o no. Si se encuentra presionado, el estado lógico de esa terminal será de "0", y la variable c adoptará un valor numérico de "4", de lo contrario adoptará un valor numérico de "0". El diagrama de flujo de la función "Detectar estado de los botones" se muestra en la figura 52. 87 DESARROLLO Figura 52.- Diagrama de flujo de la función "Detectar estado de los botones". 3.4.10 Función: "Habilitar puerto USB e interrupciones". Esta función verifica la conexión del bus USB. Si la conexión muestra que el bus USB está conectado y el periférico no está enlazado, esta función lo enlaza al periférico USB, logrando que el equipo de cómputo comience el proceso de enumeración (esto habilitará las interrupciones). Si la conexión muestra que el bus USB no está enlazado y el periférico USB está funcionando, la función reiniciará el periférico USB y esperará a que el dispositivo USB se reconecte y sea enumerado. 88 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” 3.4.11 Función: "Enviar datos con protocolo de ratón USB compatible con HID". Esta función recibe los datos obtenidos del estado del ratón, que son representados con las variables a, b, c (estado de los botones), palanca (estado de la rueda media del ratón), DeltaXX (desplazamiento del cursor eje X) y DeltaYY (desplazamiento del cursor eje Y) y los agrupa en 4 bytes, utilizando el protocolo de un ratón USB compatible con HID, visto en el tema 2.8. La función prepara al puerto USB para indicarle al equipo de cómputo que el ratón se dispone a enviar información sobre su estado, indicándole el tamaño del paquete de datos y posteriormente envía estos. La figura 53 muestra el diagrama de flujo de la función "Enviar datos con protocolo de ratón USB compatible con HID". Figura 53.- Diagrama de flujo de la función " Enviar datos con protocolo de ratón USB compatible con HID ". De acuerdo al tema 2.8, se verificó que el envío de datos de un ratón USB compatible con HID tiene un protocolo determinado que consta de 4 bytes. La figura 54 muestra la secuencia de envío de estos datos y la información contenida en esta secuencia. 89 DESARROLLO Figura 54.- Secuencia de envío de datos del estado de un ratón USB compatible con HID. Byte 1: Contiene la información del estado de los botones del ratón. A continuación se describe la información contenida en cada bit: Bit 1: Indica el estado del botón izquierdo del ratón. Bit 2: Indica el estado del botón derecho del ratón. Bit 3: Indica el estado del botón central del ratón. Bit 4: Siempre 1. Bit 5-8: para uso específico del dispositivo (normalmente 0). Byte 2: Contiene la información del desplazamiento del ratón en el eje X. A continuación se describe la información contenida en cada bit: Bit 9-15: Indica la magnitud del desplazamiento del ratón. Bit 16: Indica el sentido de desplazamiento del ratón. Si el ratón se movió en sentido positivo en el eje x, el valor de este bit es 0, de lo contrario será "1" y la magnitud de movimiento contenidos en los bits 9-15 se le aplicará la técnica de codificación de complemento a 2, es decir, se obtendrá el valor del complemento de cada bit y dato obtenido se le sumará un "1", y el nuevo valor será la magnitud de desplazamiento en el eje x en sentido negativo. Byte 3: Contiene la información del desplazamiento del ratón en el eje Y. A continuación se describe la información contenida en cada bit: 90 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Bit 17-23: Indica la magnitud del desplazamiento del ratón. Bit 24: Indica el sentido de desplazamiento del ratón. Si el ratón se movió en sentido positivo en el eje Y, el valor de este bit es "0", de lo contrario será "1" y la magnitud de movimiento contenidos en los bits 17-23 se le aplicará la técnica de codificación de complemento a 2, es decir, se obtendrá el valor del complemento de cada bit y dato obtenido se le sumará un "1", y el nuevo valor será la magnitud de desplazamiento en el eje x en sentido negativo. Byte 4: Contiene la información del giro de la rueda central (posición de la palanca en REODA-MX). A continuación se describen la información contenida en cada bit: Bit 25-27: Indica la magnitud del giro de la rueda media. Bit 28: Indica el sentido de giro de la rueda. Si el giro fué en sentido positivo, el valor de este bit es 0, de lo contrario será "1" y la magnitud de movimiento contenidos en los bits 1-3 se le aplicará la técnica de codificación de complemento a 2, es decir, se obtendrá el valor del complemento de cada bit y al dato obtenido se le sumará un "1", y el nuevo valor será la magnitud de giro de la rueda media. Bit 29: Indica el estado de un 4to botón. Bit 30: Indica el estado de un 5to botón. Bit 31 y 32: siempre 0. 3.4.12 Función: "Esperar 8 ms" Esta función espera a que transcurran 8 ms, con el fin de respetar los tiempos de envío de datos de un ratón USB compatible con HID. Una vez transcurrido este tiempo, la función siguiente será la explicada en el tema 3.4.4. 91 DESARROLLO 92 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” CAPÍTULO 4 Pruebas y Resultados 4.1 Introducción. Este capítulo contiene el proceso de validación de REODA-MX. Existe un documento donde se proponen pruebas para validar el sistema Tech Filter [42]. En este documento se proponen 2 pruebas: trazo de una espiral con el cursor y unión de 9 puntos dispersos por la pantalla del equipo de cómputo, con el fin de evaluar el porcentaje de atenuación de las vibraciones del cursor. Con base en este documento se diseñó un protocolo de pruebas basado en la necesidad de medir 5 parámetros que se requieren analizar durante el proceso de posicionamiento del cursor, y que son útiles para la validación de REODA-MX. Estos parámetros son: Estabilidad del cursor (porcentaje de atenuación de la vibración) Posicionamiento deseado del cursor. Traslado deseado del cursor. Relación de movimiento ratón-cursor. Uso de botones. 4.2 Diseño e implementación de la pruebas para la evaluación de REODA-MX. Las pruebas se describen en un documento adicional titulado documento de pruebas, disponible en el anexo 11. Cabe mencionar que al usuario que evaluó las 3 aplicaciones computacionales (REODA-MX, Mouse Cage y Steady Mouse) 93 PRUEBAS Y RESULTADOS solo se le aplicaron las pruebas 1, 2 y 3, ya que las pruebas 4, 5 y 6 requerían el uso de los botones del ratón y, de acuerdo a lo observado al aplicar las primeras 3 pruebas, el usuario presentaba algunas pulsaciones involuntarias de los botones, por lo que se omitieron estas pruebas. También se omitieron las pruebas 7 y 8 ya que son un complemento de las pruebas 2 y 3, y la duración total de las primeras 3 pruebas alcanzó una un tiempo alrededor de 45 minutos, ya que el usuario no había utilizado un equipo de cómputo y la familiarización con el dispositivo fue tardada, aunado al tiempo requerido para explicar el funcionamiento del dispositivo y corregir posturas de la mano y explicar instrucciones durante la realización de las pruebas. Las pruebas 1, 2 y 3 se aplicaron a la Sra. Silvia López Aranda con 54 años de edad, quien no tenía un conocimiento previo del funcionamiento de un ratón para computadora y que al momento de la prueba tenía a lo menos 5 años con la enfermedad de Parkinson. La figura 55 muestra la caligrafía de la persona a la que se le aplicaron las pruebas. Se aprecia que, a pesar de ser legible, presenta alteraciones en la trayectoria de escritura, producto de la enfermedad de Párkinson que padece el usuario. Figura 55.- Firma del usuario que participó en la validación de REODA-MX. 94 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Las pruebas no se pudieron aplicar a más personas con temblor en manos debido a que fue muy difícil contactar gente con este padecimiento y con experiencia en el uso de una computadora mediante el ratón, que permitiera entender las pruebas. Hay que resaltar que este padecimiento se presenta en mayor proporción en personas mayores a 65 años; al visitar lugares como asilos y centros recreativos para personas de la tercera edad, las personas que presentaron temblor en manos también presentaban problemas mentales degenerativos que impidieron el entendimiento de las pruebas. Se recurrió a visitar centros de neurología donde se pidió el apoyo de los médicos especializados para contactar personas con este padecimiento, sin embargo no se tuvo éxito. 4.3 Comparación del desempeño de REODA-MX. Para comparar el desempeño de REODA-MX, también se evaluaron 2 programas computacionales que adquieren los datos enviados por el ratón de computadora, los procesan y utilizan los valores de salida para posicionar el cursor; estos programas son Mouse Cage y Steady Mouse y el objetivo de ambos consiste en cancelar las oscilaciones que presenta el cursor, producto de la enfermedad de Parkinson del usuario que manipula el ratón computacional. Debido a la naturaleza de las pruebas que permiten cuantificar los 5 parámetros que se desean evaluar, se requiere conocer el posicionamiento del cursor en la pantalla cada vez que el ratón envía información al equipo de cómputo; para esto se desarrolló un programa computacional que adquiere las posiciones del cursor aproximadamente cada 8 milisegundos, el cual es el tiempo en el que el ratón envía información a la computadora. Este programa computacional se creó utilizando el compilador DEV-C++ [68] de la compañía BloodShed Software, cuya licencia es gratuita. A continuación se delimitan las zonas de la pantalla utilizadas en las pruebas implementadas (figura 56). 95 PRUEBAS Y RESULTADOS Figura 56.- Zonas de la pantalla evaluadas durante la realización de la prueba 3. La zona rectangular de la letra B se delimita por los siguientes pixeles (x, y): Esquina superior izquierda: pixeles (364, 345). Esquina superior derecha: pixeles (381, 345). Esquina inferior derecha: pixeles (381, 358). Esquina inferior izquierda: pixeles (364, 358). La zona rectangular de la letra C se delimita por los siguientes pixeles (x, y): Esquina superior izquierda: pixeles (3, 646). Esquina superior derecha: pixeles (21, 646). Esquina inferior derecha: pixeles (21, 658). Esquina inferior izquierda: pixeles (2, 658). La zona rectangular de la letra D se delimita por los siguientes pixeles (x, y): Esquina superior izquierda: pixeles (1346, 689). Esquina superior derecha: pixeles (1363, 689). Esquina inferior derecha: pixeles (1363, 702). Esquina inferior izquierda: pixeles (1346, 702). A continuación se presenta el análisis de los resultados de la aplicación de la prueba 3, que consiste en trasladar el cursor entre las zonas delimitadas con anterioridad y mantener el cursor dentro de la zona indicada en la prueba (Anexo 11). Las posiciones del cursor fueron obtenidas y la prueba fue video-grabada para corroborar las posiciones adquiridas con el video. 96 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” 4.3.1 Steady Mouse. La figura 57 muestra la ruta que tuvo el cursor durante el desplazamiento de la zona B a la zona C durante la realización de la prueba 3 utilizando el programa computacional Steady Mouse. Pixel de pantalla en el eje Y. Pixel de pantalla en el eje X. Figura 57.- Trayectoria del cursor del punto B al punto C durante la prueba 3 con el programa computacional Steady Mouse. Se observa que el cursor tuvo una trayectoria de la zona B a la zona C con oscilaciones de hasta, producto de la ganancia utilizada en el filtro implementado en Steady Mouse. No se presentan vibraciones producto de la enfermedad de Párkinson del usuario, sin embargo las oscilaciones resultantes impidieron un trayecto directo entre ambas zonas, teniendo desviaciones de hasta 130 pixeles. El tiempo de traslado desde el momento en que el cursor abandona la zona B y entra por primera vez a la zona C es alrededor de 19.33 segundos. En la figura 58 se describe la misma trayectoria para cada eje (X y Y) respecto al tiempo expresado en muestras; las muestras fueron obtenidas cada 8 ms, periodo de envío de datos del ratón a la computadora. 97 PRUEBAS Y RESULTADOS Muestra 0, 100,200,300,400,500,600,700 Pixel de pantalla en el eje X. Zona delimitada por la letra B Zona delimitada por la letra C Pixel de pantalla en el eje Y. Muestras con periodo de 8 ms Zona delimitada por la letra B Zona delimitada por la letra C Figura 58.- Zonas de convergencia entre el eje X y el eje Y en la zona B y C utilizando el programa computacional Steady Mouse. Las barras de color verde indican que solo durante ese tiempo el cursor se mantuvo dentro de la zona B y C. Una vez que el cursor entró por primera vez a la zona C, se adquirieron 750 muestras (6 segundos) para conocer el comportamiento del cursor en esta zona. Las 750 muestras inician en la muestra 2440 de la gráfica. Al observar el video de la grabación de la prueba, se observó que el usuario, al ingresar el cursor a la zona C, dejó de sostener firmemente el ratón de manera que las oscilaciones de su mano dejaron de transmitirse al ratón, por lo 98 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” que las estabilidad del cursor dentro de esta zona se debe a esta condición de manipulación del ratón y no a la funcionalidad del programa computacional Steady Mouse. En la figura 59 se muestra otra ruta que tuvo el cursor durante un intento por posicionar y mantener el cursor dentro de la zona D. Pixel de pantalla en el eje Y. Pixel de pantalla en el eje X. Figura 59.- Ruta de trayectoria del cursor para posicionarlo en el punto D durante la prueba 3 con el programa computacional Steady Mouse. En la gráfica anterior se observa que el cursor tuvo oscilaciones que le impidieron mantener una posición estática dentro de la zona D. Se cuantificó el error (distancia máxima existente entre la posición del cursor fuera de la zona D y la zona D) durante las primeras 810 muestras, mismas que inician su conteo cuando el cursor ingresa por primera vez a la zona rectangular D. Las 810 muestras inician en la muestra 240 de la gráfica mostrada en la figura 60. En esta figura se presenta la misma ruta de la figura 59, separando la posición del cursor en cada eje de movimiento, medida con respecto al tiempo de muestreo. 99 PRUEBAS Y RESULTADOS Muestra 0, 100, 200, 300, 400, 500, 600, 700, 800 Pixel de pantalla en el eje X. Zona delimitada por la letra D Pixel de pantalla en el eje Y. Muestras con periodo de 8 ms Zona delimitada por la letra D Figura 60.- Zona de convergencia entre el eje X y el eje Y en la zona D. Las barras de color verde muestran los instantes de tiempo en que el cursor se mantuvo dentro de la zona rectangular D. Se observa que el cursor nunca se mantiene estable dentro de la zona D, debido al desempeño del programa computacional Steady Mouse, impidiendo ubicar el cursor dentro de la zona deseada. Después de alrededor de 7 segundos de intento, se finalizó la prueba sin conseguir el objetivo. De acuerdo a la prueba 3, el desempeño de este programa computacional permite eliminar las oscilaciones del cursor, producto de la enfermedad de Párkinson del usuario, sin embargo agrega otras oscilaciones al cursor, impidiendo realizar trayectos directos y ubicar el cursor dentro de zonas requeridas. 100 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” 4.3.2 Mouse Cage. La figura 61 muestra la ruta que tuvo el cursor durante el desplazamiento de zona B a la zona C durante la realización de la prueba 3 utilizando el programa computacional Mouse Cage. Pixel de pantalla en el eje Y. Pixel de pantalla en el eje X. Figura 61.- Trayectoria del cursor del punto B al punto C durante la prueba 3 con el programa computacional Mouse Cage. Se observa que el cursor tuvo una trayectoria más directa entre la zona B y la zona C a diferencia del desempeño del programa computacional Steady Mouse. Sin embargo, al intentar posicionar el cursor dentro de la zona rectangular junto a la letra C, el cursor presenta oscilaciones que impiden ubicarlo dentro de esta zona, producto del temblor del Párkinson del usuario. El tiempo de traslado desde el momento en que el cursor abandona la zona B y entra por primera vez a la zona C es alrededor de 4.34 segundos. En la figura 62 se describe la misma trayectoria para cada eje (X y Y) respecto al periodo de muestreo (8 ms) el cual es el periodo de envío de datos del ratón a la computadora. 101 PRUEBAS Y RESULTADOS Pixel de pantalla en el eje X. Muestra 0, 100,200,300,400,500,600,700 Zona delimitada por la letra B Zona delimitada por la letra C Pixel de pantalla en el eje Y. Muestras con periodo de 8 ms Zona delimitada por la letra B Zona delimitada por la letra C Figura 62.- Zona de convergencia entre el eje X y el eje Y en la zona B y C utilizando el programa computacional Mouse Cage. Las barras de color verde indican que solo durante ese tiempo el cursor se mantuvo dentro de la zona B y C. Una vez que el cursor entró por primera vez a la zona C, se adquirieron 750 muestras (6 segundos) para conocer el comportamiento del cursor en esta zona. Las 750 muestras inician en la muestra 2111 de la gráfica. Se observa que el cursor nunca se mantiene estable dentro de la zona C, debido al desempeño del programa computacional Mouse Cage, ya que a pesar de lograr un trayecto del cursor más directo, no es posible ubicar el cursor dentro de la zona C. Después de alrededor de 7 segundos de intento, se finalizó la prueba sin conseguir el objetivo. De acuerdo a la prueba 3, el desempeño de este programa 102 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” computacional no elimina todas las oscilaciones del cursor, producto de la enfermedad de Párkinson del usuario impidiendo mantener el cursor dentro de zonas deseadas. En la figura 63 se muestra la ruta que tuvo el cursor durante intento por posicionar y mantener el cursor dentro de la zona D. Pixel de pantalla en el eje Y. Pixel de pantalla en el eje X. Figura 63.- Ruta de trayectoria del cursor para posicionarlo en el punto D durante la prueba 3 con el programa computacional Mouse Cage. En la gráfica anterior se observa que el cursor tuvo oscilaciones que le impidieron mantener una posición estática dentro de la zona D. Se cuantificó el error (distancia máxima existente entre la posición del cursor fuera de la zona D y la zona D) durante las primeras 810 muestras, mismas que inician su conteo cuando el cursor ingresa por primera vez a la zona rectangular D. Las 810 muestras inician en la muestra 515 de la gráfica mostrada en la figura 64. En esta figura se presenta la misma ruta de la figura 63, separando la posición del cursor en cada eje de movimiento, medida con respecto al tiempo de muestreo. 103 PRUEBAS Y RESULTADOS Muestra 0, 100, 200, 300, 400, 500, 600, 700, 800 Pixel de pantalla en el eje X. Zona delimitada por la letra D Pixel de pantalla en el eje Y. Muestras con periodo de 8 ms Zona delimitada por la letra D Figura 64.- Zona de convergencia entre el eje X y el eje Y en la zona D. Las barras de color verde muestran los instantes de tiempo en que el cursor se mantuvo dentro de la zona rectangular D. Se observa que el cursor nunca se mantiene estable dentro de la zona D, debido al desempeño del programa computacional Mouse Cage, impidiendo ubicar el cursor dentro de la zona deseada. Después de alrededor de 7 segundos de intento, se finalizó la prueba sin conseguir el objetivo. De acuerdo a la prueba 3, el desempeño de este programa computacional no elimina completamente las oscilaciones del cursor, producto de la enfermedad de Párkinson del usuario, y aunque los trayectos son más directos que con el uso de Steady Mouse, las oscilaciones restantes del cursor impiden posicionar el cursor dentro de zonas requeridas. 104 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” 4.3.2 REODA-MX La figura 65 muestra la ruta que tuvo el cursor durante el desplazamiento de la zona B a la zona C durante la realización de la prueba 3 utilizando REODA-MX. Pixel de pantalla en el eje Y. Pixel de pantalla en el eje X. Figura 65.- Trayectoria del cursor del punto B al punto C durante la prueba 3 con REODAMX. Se observa que el cursor tuvo una trayectoria segmentada entre la zona B y la zona C, definida por trazos rectos y semi-rectos, sin oscilaciones presentes durante el trayecto, a diferencia del desempeño del programa computacional Mouse Cage y Steady Mouse. logrando ubicar el cursor dentro de la zona C. El tiempo de traslado desde el momento en que el cursor abandona la zona B y entra por primera vez a la zona C es alrededor de 80 segundos. Cabe mencionar que se alcanzó este tiempo debido a que un buen desempeño de REODA-MX implica un periodo de reconocimiento y adaptación en las funciones del mismo, factor que no se tuvo con el usuario. En la figura 66 se describe la misma trayectoria para cada eje (X y Y) respecto al periodo de muestreo (8 ms) el cual es el periodo de envío de datos del ratón a la computadora. 105 PRUEBAS Y RESULTADOS Muestra 0, 750 Pixel de pantalla en el eje X. Zona delimitada por la letra B Zona delimitada por la letra C Muestras con periodo de 8 ms Pixel de pantalla en el eje Y. Zona delimitada por la letra B Zona delimitada por la letra C Figura 66.- Zona de convergencia entre el eje X y el eje Y en la zona B y C utilizando REODAMX. Las barras de color verde indican que solo durante ese tiempo el cursor se mantuvo dentro de la zona B y C. Una vez que el cursor entró por primera vez a la zona C, se adquirieron 750 muestras (6 segundos) para conocer el comportamiento del cursor en esta zona. Las 750 muestras inician en la muestra 11718 de la gráfica. Se observa que el cursor se mantiene estable dentro de la zona C, debido al desempeño del dispositivo computacional REODA-MX, ya que elimina las oscilaciones del cursor, producto de la enfermedad de Párkinson del usuario, así como la detección y omisión de movimientos involuntarios, permitiendo ubicar y 106 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” mantener el cursor dentro de la zona C. Después de alrededor de 7 segundos de intento, se finalizó la prueba consiguiendo el objetivo. En la figura 67 se muestra la ruta que tuvo el cursor durante intento por posicionar y mantener el cursor dentro de la zona D. Pixel de pantalla en el eje Y. Pixel de pantalla en el eje X. Figura 67.- Ruta de trayectoria del cursor para posicionarlo en el punto D durante la prueba 3 con REODA-MX. En la gráfica anterior se observa que el cursor no presentó oscilaciones durante el trayecto y posicionamiento del cursor dentro de la zona D. Se cuantificó el error (distancia máxima existente entre la posición del cursor fuera de la zona D y la zona D) durante las primeras 810 muestras, mismas que inician su conteo cuando el cursor ingresa por primera vez a la zona rectangular D. Las 810 muestras inician en la muestra 240 de la gráfica mostrada en la figura 68. En esta figura se presenta la misma ruta de la figura 67, separando la posición del cursor en cada eje de movimiento, medida con respecto al tiempo de muestreo. 107 PRUEBAS Y RESULTADOS 100 200 300 Pixel de pantalla en el eje X. Muestra 0 400 500 600 700 800 Zona delimitada por la letra D Pixel de pantalla en el eje Y. Muestras con periodo de 8 ms Zona delimitada por la letra D Figura 68.- Zona de convergencia entre el eje X y el eje Y en la zona D. Las barras de color verde muestran los instantes de tiempo en que el cursor se mantuvo dentro de la zona rectangular D. Se observa que el cursor se mantiene estable dentro de la zona D, debido al desempeño del dispositivo computacional REODA-MX., permitiendo ubicar el cursor dentro de la zona deseada. Después de alrededor de 7 segundos, se finalizó la prueba consiguiendo el objetivo. De acuerdo a la prueba 3, el desempeño de este dispositivo computacional aparentemente elimina las oscilaciones del cursor, producto de la enfermedad de Párkinson del usuario, pudiendo realizar trayectos directos y segmentados, así como detectar movimientos involuntarios del usuario, permitiendo posicionar y mantener el cursor dentro de zonas requeridas. 108 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” 4.4 Análisis de resultados. A continuación se presenta un resumen con las características de la prueba 3, evaluando las aplicaciones Steady Mouse, Mouse Cage y REODA-MX. Tabla 20.- Tiempo transcurrido durante el desarrollo de la prueba. Traslado del cursor de la zona rectangular junto a la letra B a la zona rectangular junto a la letra C. Tiempo requerido en segundos. Steady Mouse. Mouse Cage. REODA-MX 19.33 4.34 80 Con el programa computacional Mouse Cage se logra un tiempo de 4.34 segundos, a diferencia del programa computacional Steady Mouse en el cual se requirió de 19.33 segundos, esto debido a la alta ganancia del filtro implementado, lo cual reflejó que con un ligero desplazamiento del ratón se obtuviera un amplio desplazamiento del cursor, logrando poco control en la posición del cursor. Por otra parte, REODA-MX alcanzó un tiempo de 80 segundos, mucho mayor que las otras 2 aplicaciones, sin embargo esto se debió a que el usuario no tuvo un tiempo suficiente para adaptarse al funcionamiento del ratón, ya que este presenta ganancias programadas para cada velocidad que adopta el ratón y como los desplazamientos del ratón con la mano del usuario fueron lentos, el cursor se desplazó de forma lenta haciendo que su recorrido se lograra en un tiempo mayor. Tabla 21.- Parámetros evaluados durante la realización de la prueba 3. Estabilidad del cursor en la zona rectangular junto a la letra C. Steady Mouse. Tiempo evaluado Mouse Cage. REODA-MX 750 muestras = 6 segundos Número de veces que el cursor salió de la zona: 1 5 1 Promedio en pixeles de la distancia de error máxima entre el cursor y la zona: 22 28 3 Distancia en pixeles del error máximo entre el cursor y la zona: 22 86 3 Promedio en pixeles del error durante las 750 muestras: 2 13 <1 109 PRUEBAS Y RESULTADOS Estabilidad del cursor en la zona rectangular junto a la letra D. Steady Mouse. Tiempo evaluado Mouse Cage. REODA-MX 810 muestras = 6.48 segundos Número de veces que el cursor salió de la zona: 6 7 2 Promedio en pixeles de la distancia de error máxima entre el cursor y la zona: 20 9 7 Distancia en pixeles del error máximo entre el cursor y la zona: 33 20 8 Promedio en pixeles del error durante las 810 muestras: 9 4 3 De acuerdo a las tablas 20 y 21, la aplicación en la que el cursor abandonó una menor cantidad de veces la zona rectangular junto a la letra C y junto a la letra D fue REODA-MX debido a que este absorbió estas oscilaciones a diferencia de los programas computacionales que presentaban oscilaciones que impedían mantener el cursor estable. Cabe mencionar al evaluar este parámetro en la zona C con el programa computacional Steady Mouse se observó, en el video grabado de la prueba, que el usuario al llegar a la zona rectangular junto a la letra C dejó de sostener firmemente el ratón, de manera que las oscilaciones de su mano ya no se transmitieron al ratón, por lo que los datos de esta zona específicamente para este programa computacional no son válidos. Por otra parte, se observa que la distancia de error máxima entre el cursor y la zona evaluada es menor con el uso de REODA-MX, así como también el promedio de la distancia de error máxima entre el cursor y la zona, esto se debe a que el usuario logró mantener la posición del cursor más cercana a la zona donde requería posicionarlo a diferencia de los programas computacionales que, por las mismas oscilaciones que contenían, lograban un alejamiento mayor de la zona de posicionamiento requerido. El promedio de error también fue menor en REODA-MX, ya que al tener una cantidad menor de momentos fuera de la zona de posicionamiento requerido durante el periodo de valuación, repercutió en tener un bajo promedio de este 110 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” parámetro, a diferencia de los programas computacionales, ya que estos en buena parte el periodo evaluado obtuvieron oscilaciones que mantuvieron al cursor fuera de la zona asignada, por lo que acumularon un mayor valor de este parámetro. La evaluación del desempeño de REODA-MX solo pudo ser comparada con 2 aplicaciones, Mouse Cage y Steady Mouse, ya que estas aplicaciones fueron encontradas en internet y ambas permiten ser descargadas para un periodo de prueba y uso libre respectivamente. Cabe mencionar que a pesar que existen aplicaciones donde se requiere un traslado del cursor por una ruta requerida, la principal utilidad de REODA-MX consiste en posicionarse en un lugar deseado y mantener el control de dicha posición, por lo que se hace hincapié en que esta es la característica más importante que hay que resaltar y cuyo desempeño es mejor comparado con los programas computacionales evaluados. No hay que olvidar que el usuario con temblor en manos que evaluó las pruebas no tenía conocimiento sobre el uso de el equipo de cómputo y con otro padecimiento no considerado, por lo que esto derivó en un tiempo mayor para la realización de las mismas, a diferencia del usuario que tenía experiencia con el uso de un equipo de cómputo, por lo que logró desarrollar las pruebas en mucho menor tiempo y con una mayor precisión. Para tener un mejor criterio sobre el desempeño de REODA-MX en comparación con los programas computacionales, es recomendable aplicar las pruebas diseñadas a una mayor cantidad de personas con temblor en manos y con experiencia en el uso de equipos de cómputo. 111 PRUEBAS Y RESULTADOS 112 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” CAPÍTULO 5 Conclusiones 5.1 Conclusiones. Se cumplió el objetivo principal de la investigación, el cual consiste en desarrollar un sistema que permite, a las personas con TE en manos, desplazar y mantener el cursor en un punto deseado de la pantalla de un equipo de cómputo, utilizando un ratón para computadora. Inicialmente la meta fue filtrar cuando menos un 90% del ruido proveniente de la mano de una persona con TE en manos. Sin embargo este porcentaje se incrementó alrededor del 99%, ya que las oscilaciones que presenta el cursor son imperceptibles, como se puede observar en los videos de las gráficas obtenidas de las pruebas aplicadas para la validación de REODA-MX, permitiendo posicionar y mantener el cursor de pantalla en un punto deseado. Se ha desarrollado un producto altamente redituable ya que el costo NETO de fabricación es de $360.00 MXN, mismo que es un costo bajo en relación al beneficio que aporta, ya que hay que recordar que ninguna de las aplicaciones evaluadas logró este beneficio, aunado al costo de estos productos que pueden alcanzar un valor de hasta $40.00 USD. Hay que tener en cuenta que REODA-MX es un prototipo derivado de un ratón USB modificado; su elaboración se puede mejorar, ya que al sistema electrónico original se le está adhiriendo otro módulo electrónico, encareciendo el desarrollo del producto. Sería conveniente desarrollar un único módulo que integre todas las funciones de REODA-MX con el fin de abaratar costos de producción y 113 CONCLUSIONES disminuir problemas de conexiones o sustituciones de componentes. Así mismo es conveniente elegir un microcontrolador cuyo costo sea el menor, siempre y cuando soporte las funciones requeridas por REODA-MX, e inclusive desarrollar un circuito integrado de uso específico. REODA-MX cumple con las características de traslado y posicionamiento en el lugar deseado, a diferencia de los programas computacionales. Para lograr un óptimo desempeño en el funcionamiento del ratón, es conveniente tener un periodo de práctica con el fin de aprender cómo responde el cursor ante diversos movimientos del ratón, ya que este fue diseñado para desplazar el cursor en la unidad de desplazamiento del cursor, es decir, 1 pixel. A continuación se dan a conocer las observaciones realizadas a la aplicación REODA-MX. Ventajas: Se pueden realizar las tareas básicas con el ratón. El retraso en el tiempo es imperceptible y justificado, ya que el sistema permite eliminar la oscilación del cursor y desplazar el mismo inclusive a 1 pixel de distancia manteniendo el control total del cursor. Es un dispositivo computacional que logra lo que los otros programas computacionales no hacen y cumple el objetivo que es trasladar el cursor al punto deseado y mantenerlo en esa posición. El posicionamiento es continuo en comparación con el programa computacional Mouse Cage cuyo posicionamiento es intermitente. El control sobre el cursor es total en comparación con los 2 programas computacionales evaluados (Mouse Cage y Steady Mouse). Puntos de mejora: 114 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Se recomienda que REODA-MX responda con una mayor incremento de pixeles, por ejemplo 7 u 8 pixeles, cuando existan movimientos del ratón mayores a 15 cm/s. Se necesita asignar una zona trabajo para el movimiento del ratón mayor a la delimitada por un tapete para ratón estándar (24cm x 20cm aproximadamente) para evitar tener que levantar el cursor y ubicarlo en la zona contraria donde se reiniciará el movimiento. Este problema también se puede resolver utilizando la tecnología de ratones laser, ya que éstos no necesitan una superficie específica, eliminando así el uso de un tapete para ratón, y operando el ratón directamente sobre el escritorio de trabajo. 5.2 Aportaciones. La principal aportación principal de REODA-MX es que permite manipular el cursor de forma completa y sencilla, algo que las aplicaciones Mouse Cage y Steady Mouse no permiten, de acuerdo al análisis de resultados. Es la primera aplicación conocida que alcanza el objetivo (posicionar adecuadamente el cursor de un equipo de cómputo), y cuyo propósito lograría que las personas con temblor esencial en manos y enfermedad de Párkinson, con una capacidad mental apta para manipular un equipo de cómputo, se reintegre fácilmente al uso de este dispositivo. 5.3 Trabajos futuros. Consideraciones para trabajos futuros: Los botones son un parámetro que es conveniente evaluar con un usuario con temblor esencial en manos para observar la facilidad o dificultar que tiene al presionarlos, así como también si es necesario agregar un filtro que detecte cuando hay presión en los botones de forma involuntaria. 115 CONCLUSIONES El botón central y el giro de la rueda no se evaluaron debido a que su uso es similar al de los botones, sin embargo es conveniente evaluarlos para conocer si se requiere un sistema distinto para llevar a cabo las mismas tareas. El traslado por una ruta deseada es una actividad que cuesta trabajo realizarla a velocidades altas. Se puede lograr siempre y cuando sea con una velocidad menor, por lo cual quizás se pueda mejorar este parámetro ya que puede afectar en actividades que incluya la manipulación del cursor a velocidades mayores y con precisión en la ruta de traslado, como programas computacionales de juegos y diseño gráfico. El ratón solo sirve para temblor esencial en manos. Si el temblor se presenta desde el brazo, es posible que las magnitudes de oscilación en el ratón sean de un grado mucho mayor y el filtro no funcione adecuadamente, se propone como trabajo futuro. Se propone comparar el desempeño de otros productos . Se propone ampliar el alcance de REODA-MX, incluyendo la eliminación de temblores como la enfermedad de Parkinson, esclerosis múltiple y otras. Se propone el desarrollo de un equipo computacional intermedio entre el ratón y el equipo de cómputo que tenga la misma función que el filtro implementado en el ratón, para que el usuario pueda trabajar con el ratón que brinde le mayor comodidad al trabajar. El aproximado es de $ 300.00 MX. Se propone el desarrollo de un programa computacional que realice la misma función que REODA-MX, Se propone diseñar un dispositivo equivalente cuya función sea emular un ratón USB. 116 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” BIBLIOGRAFÍA 1. Formación Médica Continuada. Urra, Dr. Fernando García. 39, Madrid : s.n., 1990, Vol. 39, págs. 105-118. 2. Revista médica del Uruguay. El temblor esencial. Chouza, Dr. Carlos. 3, 1986, Vol. 2, págs. 251258. 3. Temblor Esencial. Eric de la Cruz Estrada, Enrique Otero Siliceo. 3, s.l. : Medigraphic, Artemisa en Linea, 2006, Archivos de Neurociencia, Vol. 11, págs. 194-204. 4. Martinez, Ángeles Cruz. Casi 500 mil mexicanos padecen el mal de Parkinson; es progresivo e incurable. La Jornada. Sábado 26 de marzo, 2011. 5. Kelly E. Lions, Rajesh Pahwa, [ed.]. HANDBOOK OF ESSENTIAL TREMOR AND OTHER TREMOR DISORDERS. pág. 79. 6. Wikipedia. [En línea] 15 de 12 de 2010. [Citado el: 2 de 1 de 2011.] http://es.wikipedia.org/wiki/Ratón_(informática). 7. INEGI. [En línea] [Citado el: 2 de 1 de 2011.] http://www.inegi.org.mx/sistemas/sisept/default.aspx?t=tinf211&s=est&c=19432. 8. DISEÑO Y CONSTRUCCIÓN DE UN DISPOSITIVO PARA LA MEDICIÓN DEL. Osorio, Jimmy Alexander Cortés Osorio / Francisco Alejandro Medina A. / José Andrés Chaves. 37, Colomboa : s.n., 2007, Scientia Et Technica, Vol. XIII, págs. 139-144. 0122-1701. 9. Human Tremor Analysis Using Particle Swarm Optimization. Heberhart, Rusell C. [ed.] IEEE. Washington DC : s.n., 1999. Congress on Evolutionary Computation. 10. Real-Time Estimation of Pathological Tremor Parameters from Gyroscope Data. Juan A. Gallego, Eduardo Rocon, Javier O. Roa, Juan C. Moreno and Jos´e L. Pons. 10, s.l. : Open Access, Vol. Sensor 2010, págs. 2129-2149. 1424-8220. 11. Neurological Tremor: Sensors, Signal Processing and Emerging Applications. Manto, Giuliana Grimaldi and Mario. 10, s.l. : Oppen Acces, Vol. Sensors 2010, págs. 1399-1422. 1424-8220. 12. Tracking Tremor Frequency in Spike Trains Using the Extended Kalman Filter. McNames, Sunghan Kim and James. Shangai, China : IEEE, 2005. Engineering in Medicine and Biology 27th Annual Conference. Vol. Septiembre. 13. Tracking Tremor Frequency in Spike Trains Using the Extended Kalman Smoother. McNames, Sunghan Kim and James. 8, s.l. : IEEE, Agosto de 2006, IEEE TRANSACTIONS ON BIOMEDICAL ENGINEERING, Vol. 53, págs. 1569-1577. 0018-9294. 14. Higher Order Statistics and Neural Network for Tremor Recognition. Jacek Jakubowski, Krzystof Kwiatos, Augustyn Chwaleba, and Stanislaw Osowski. 2, febrero de 2002, IEEE TRANSACTIONS ON BIOMEDICAL ENGINEERING,, Vol. 49, págs. 152-159. 0018–9294. 15. Comparison of Phase-Coupling Indices for Tremor. Sunghan Kim, James McNames and Kim Burchiel. Arlington, Virginia : s.n., 2005. 2nd International IEEE EMBS Conference on Neural Engineering. 0-7803-8709-0. 16. Spiral analysis—Improved clinical utility with center detection. Hongzhi Wanga, Qiping Yua, Mónica M. Kurtis a, Alicia G. Floyda, Whitney A. Smitha, Seth L. Pullmana,. 2, s.l. : ELSEVIER, 30 de JUNIO de 2008, Journal of Neuroscience Methods, Vol. 171. 0165-0270. 17. Validity of Spiral Analysis in Early Parkinson’s Disease. Rachel Saunders-Pullman, Carol Derby, Kaili Stanley, Alicia Floyd, Susan Bressman, Richard B. Lipton, Amanda Deligtisch, Lawrence Severt, Qiping Yu, Mo´nica Kurtis, Seth L. Pullman. [ed.] Wiley InterScience. 4, 2008, Movement Disorders, Vol. 23, págs. 531-537. 18. Axis Is a Feature of Handwritten Spirals in Essential Tremor. 8, s.l. : Wiley InterScience, 3 de Mayo de 2006, Movement Disorders, Vol. 21, págs. 1294-1295. 117 BIBLIOGRAFÍA 19. Spiral Analysis: a New Technique for Measuring Tremor with a Digitizing Tablet. Pullman., Seth L. 3, 1998, Movement Disorders, Vol. 13, págs. 85-89. 20. KALVERT., Michael A. Adjustable and tunable hand tremor stabilizer. 6730049 Estados Unidos, 5 de 4 de 2004. 21. ASATOURIAN, Anton, HYUN, Benjamin y LIPAZ, Gil. Method for treating tremors. 6361549 Estados Unidos, 26 de 3 de 2002. 22. TIEDEKEN., Edwin T. Tremor control device. 4996977 Estados Unidos, 26 de 5 de 1989. 23. A wearable tremor-suppression orthosis. Jack Kotovsky, MS and Michael J. Rosen. 1998, Journal of Rehabilitation Research and Developmen, Vol. 25, págs. 373-387. 24. Jason Winters, ET. AL. Essential Tremor Suppression via Viscous Damping. Biomedical Engineering, University of Florida, Florida. 2006. 25. José Luis PONS Rovira, Et. Al. Dispositivo ortésico dinámico para la monitorización, diagnóstico y supresión de temblor patológico. WO 2006/064074 A1 España, 20 de 6 de 2006. 26. —. Método y dispositivo biomecánico de cancelación de temblor patológico. 2222819 España, 1 de 2 de 2005. 27. —. Método y dispositivo electrónico e informático de supresión y valoración de temblor y movimiento espástico en periféricos de entrada y de mando. 2253077 España, 16 de 5 de 2006. 28. —. Órtesis para amortiguación del temblor. WO 2008/096031 A1 España, 14 de 8 de 2008. 29. Diseño desarrollo y validación de dispositivo robótico para la supresión del temblor patológico. E. Rocon, Et. Al. 2, 4 de 2008, Revista iberoamericana de automática e informática industrial, Vol. 5, págs. 79-92. 30. Lima, Eduardo Rocon de. Reducción activa del temblor patológico de miembro superior mediante exoesqueletos robóticos. Universidad Politécnica de Madrid. Madrid : s.n., 2006. Tesis de Doctorado en Ciencias. 31. Hall, Gary Ellis. Active tremor control of human motion disorder. Instituto Tecnológico de Massachusetts. Cambridge : s.n., 2001. Tesis de Maestría en Ciencias. 32. Baleares, Universidad de. [En línea] Fundación Vodafone España. [Citado el: 2 de 1 de 2011.] http://fundacion.vodafone.es/PortalVodafone/fundacion/es/Innovacion/Accesibilidad/Historic o/ProyectoHeadDev/;jsessionid=yQR12C0Dn6ZBwfBPkq1PvPUxWbQGWrESwdai9dAPRvhieow6z0re!9460 99909. 33. Lleida, Universidad de. [En línea] 10 de 2007. [Citado el: 2 de 1 de 2011.] http://robotica.udl.cat/headmouse/headmouse.html. 34. Point, Naturall. [En línea] 2001. [Citado el: 2 de 1 de 2011.] http://www.naturalpoint.com/smartnav/. 35. University, Stanford. [En línea] 2006. [Citado el: 2 de 1 de 2011.] http://hci.stanford.edu/research/GUIDe/index.html. 36. 5th Iberoamerican Meeting on Optics and 8th Latin American meeting on Optics, Lasers, and Their Applications. Miranda, David, Silva, E. y Patino, A. s.l. : SPIE, 2004. 37. Washington, University of. [En línea] 2005. [Citado el: 2 de 1 de 2011.] http://ssli.ee.washington.edu/vj/. 38. Li, TH. Bili Inc, Tapping your full talent™. [En línea] [Citado el: 2 de 1 de 2011.] http://www.bilila.com/. 39. Tunic Software. [En línea] 1 de 8 de 2005. [Citado el: 2 de 1 de 2011.] http://www.sharewareconnection.com/mousecage.htm. 40. Gottemoller, Ben. SteadyMouse.com. [En línea] 2005. [Citado el: 2 de 1 de 2011.] http://www.steadymouse.com/. 118 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” 41. Levine, James. Monstrose Secam Limited. [En línea] 14 de 3 de 2005. [Citado el: 2 de 1 de 2011.] http://www.montrosesecam.com/index.html. 42. TechNaid. TechFiler. [En línea] [Citado el: 21 de febrero de 2011.] http://www.technaid.com/index.php/products/techfilter.html. 43. Adaptive Filtering of Physiological Tremor for Real-time Compensation. K. C. Veluvolu, U-X. Tan, W. T. Latt, C. Y. Shee and W. T. Ang. [ed.] IEEE. Bangkok, Thailand : s.n., 2008. International Conference on Robotics and Biomimetics. págs. 524-529. 978-1-4244-2679-9. 44. Hall, Gary Ellis. Active tremor control for human tremor disorder. Departmen of Mechanical Engineering, University of Rochester. 1998. pág. 142, Tesis de maestría. 45. Antonio Padilha Lanari Bo, Philippe Poignet. Tremor Attenuation Using FES-based Joint Stiffnes control. 46. Ogata, Katsuiko. Ingeniería de Control Moderna. [trad.] Miguél ángel Martinez Sarmiento. 3. Naucalpan de Juarez : Pearson-Prentice Hall, 1998. pág. 997. 970-17-0048-1. 47. NC. Laplace versus Fourier. [En línea] Jueves 6 de Octubre de 2005. [Citado el: Lunes 18 de Abril de 2011.] http://unanue.blogspot.com/2005/10/laplace-versusfourier.html?seenIEPage=1. 48. A customized optimal filter for eliminating operator's tremor. Juan G. González, Edwin A. Heredia, Tariq Rahman, Keneth E. Barner, Gonzalo R. Arce. Phildelphia, PA. : s.n., 1995. International Simposium on Intelligent Systems and Advanced Manufacturing Telemanipulator and Telepresence Technologies II. 49. Filtering Involuntary Motion of People With Tremor Disability Using Optimal Equalization. Juan G. González, Edwin A. Heredia, Tariq Rahman, Keneth E. Barner, Gonzalo R. Arce. [ed.] IEEE. Vancouver, BC, Canada. : s.n., 1995. International Conference of Systems, Man and Cybernetics. 50. Adaptive Human Machinne Interface for Persons With Tremor. Cameron N. Riviere, Nitish V. Takor. [ed.] IEEE-EMBC and CMBEC. 1995. Tema 5: Neurologial Systems/Biomechanics. págs. 1993-1994. 0-7803-2475-7. 51. Modeling and Cancelling Tremor in Human-Machinne Interfaces. Cammeron N. Riviere, Nitish V. Takor. [ed.] IEEE. 1996. Engineering in Medicine and Biology. págs. 29-36. 0739-5175. 52. Adaptive Canceling of Physiological Tremor for Improved Precision in Microsurgery. Cameron N. Riviere, R. Scott Rader, and Nitish V. Thakor. [ed.] IEEE. 7, 1998, TRANSACTIONS ON BIOMEDICAL ENGINEERING, Vol. 45, págs. 839-846. 0018–9294. 53. Toward Active Tremor Canceling in Handheld Microsurgical Instruments. Cameron N. Riviere, Wei Tech Ang, Pradeep K. Khosla. [ed.] IEEE. 3, Octubre de 2003, TRANSACTIONS ON ROBOTICS AND AUTOMATION, Vol. 19, págs. 793-800. 1042-296X. 54. The MathWorks. Filter Design Toolbox User’s Guide. s.l. : The MathWorks, Inc., 2002. 2. 55. Universidad Miguel Hernandez de Elche . Análisis de Circuitos y Sistemas Lineales. [En línea] [Citado el: 2 de 1 de 2011.] http://repositorio.innovacionumh.es/Proyectos/P_19/Tema_5/UMH_06.htm. 56. Roa, Lucio David Torres de. Realización Activa en Matlab. Ingenieria Electrónica y Comunicaciones, UDLA. 2007. Tesis de Maestría. 57. Paarmann, Larry D. Design and Analysis of Analog Filters. s.l. : Kluwer Academic Publishers, 2003. 0-7923-7373-1. 58. Escuela Técnica Superior de Ingenieros de Telecomunicación. Síntesis de circuitos eléctricos y electrónicos. [En línea] curso 2004/2005. [Citado el: 3 de 1 de 2011.] http://www.tsc.uvigo.es/BIO/Docencia/SCEE/Clases/Clase_07.pdf. 59. Winder, Steve. Analog and Digital Filter Design. Segunda. s.l. : Newnes, 2002. pág. 450. 119 BIBLIOGRAFÍA 60. Wikipedia. Ratón (informática). [En línea] 15 de 12 de 2010. [Citado el: 3 de 1 de 2011.] http://es.wikipedia.org/wiki/Mouse. 61. Gabriel Gartensztern, Alejandra Szuster, Nicolás Yanco. Trabajo práctico de sistemas y soportes de la información. 2007. 62. TERRA.COM. Ratones Ópticos. [En línea] 1 de 1 de 2008. [Citado el: 3 de 1 de 2011.] http://www.terra.es/tecnologia/articulo/html/tec8216.htm. 63. Computer Audio Video System Integrator. ¿Qué es un mouse o ratón? [En línea] [Citado el: 3 de 1 de 2011.] http://www.cavsi.com/preguntasrespuestas/que-es-un-mouse-raton/. 64. Rom, Eran. Windriver V10.1. s.l. : Jungo Ltd . 65. Software, PICkit 2 Development Programmer/Debugger. PicKit2. s.l. : http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocNa me=en023805. 66. Systems, CCS Custom Computer. PCWH IDE Compiler for Microchip PIC® PIC10 Through PIC18 MCUs. s.l. : http://www.ccsinfo.com/product_info.php?products_id=PCWH_full. 67. USBlyzer. USBlyzer - Professional Software USB Protocol Analyzer. s.l. : http://www.usblyzer.com/. 68. Software, Bloodshed. Dev C++. s.l. : http://www.bloodshed.net/devcpp.html. 120 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” ANEXOS Anexo 1. Elección del filtro implementado en REODA-MX. Para elegir el filtro a utilizar, se realizó un proceso de selección que implicó la generación de varios filtros, la simulación de una entrada similar a una mano con temblor y un movimiento deseado (ver anexo 2), se analizó el desempeño de cada filtro. El filtro que mejor desempeño obtuvo fue el que se eligió. Para generar distintos filtros, se utilizó la herramienta FDATOOL (figura A1), de MATLAB, la cual brinda la posibilidad de diseñar filtros digitales de tipo FIR e IIR con los respectivos diseños que trae por default programados dicha herramienta. Figura A1.- Interfaz de FDATOOL para el diseño de filtros digitales. A continuación se presenta la lista de los filtros evaluados. 121 ANEXOS Filtros FIR por el método de ventanas. Bartlett. Bartlett-hanning. Blackman. Blackman-harris. Bohman. Chebyshev. Flat-top. Gaussian. Haming. Han. Káiser. Nutall. Parsen. Rectangular. Tylor. Triangular. Tukey. Filtros IIR. Butterworth. Chebyshev 1. Chebyshev 2. Elíptico. Por otra parte se diseñaron filtros de acuerdo al comportamiento de la señal de entrada observada. A continuación se explican cada uno de ellos. Otros filtros. Resta algebraica. Este filtro consiste en realizar una etapa de reconocimiento del patrón de movimiento del temblor esencial en manos, aproximando a una función seno una 122 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” serie de muestras adquiridas durante un proceso de entrenamiento, reconociendo así la amplitud y frecuencia de movimiento. Esta función seno se utiliza como referencia para restarla algebraicamente a la señal adquirida por el ratón. Debido a que puede presentarse el problema de adquirir N muestras menos ó N muestras más durante un ciclo de movimiento del ratón, el filtro re-calcula el número de muestras asignadas a la función seno de referencia, por lo cual en ninguna ocasión el código presentará problemas de carencia o exceso de muestras para llevar a cabo la resta algebraica. Para llevar a cabo este proceso se requiere un retraso en la señal de salida de 1 periodo de ciclo de temblor. Desfase de 180º de la señal de entrada. Este filtro consiste en realizar una etapa de reconocimiento de la cresta y el valle de la señal adquirida por el ratón. El filtro guarda en un arreglo las muestras adquiridas de la señal, cuando indica un movimiento del valle a la cresta e Identifica la diferencia de magnitudes. Posteriormente adquiere, en otro arreglo, las muestras adquiridas cuando el movimiento va de la cresta al valle. Re-calcula la primer señal adquirida para que tenga el mismo número de muestras que la segunda señal y realiza un promedio algebraico de la N muestra de la primer señal con la N muestra de la segunda señal. Para llevar a cabo este proceso se requiere un retraso en la señal de salida de 1 periodo de ciclo de temblor. Media móvil. Este filtro consiste en realizar un promedio de las N muestras anteriores adquiridas por el ratón. El retraso de la señal depende del número de muestras promediadas. Se realizaron las comparaciones con las respuestas que mejores resultados proporcionaron por observación. Se aplicó un criterio evaluando 3 factores básicos: 123 ANEXOS 1.- Retraso en el tiempo de la señal de salida respecto a la señal de entrada. 2.- Porcentaje de atenuación de la oscilación. 3.- Relación de movimiento ratón-cursor similar a la de un ratón USB convencional. A continuación se presentan tablas comparativas de cada filtro comparando los parámetros antes mencionados. Para medir el retraso en el tiempo se utilizó una entrada escalón y se midió el tiempo de retardo en que la señal alcanza un valor estable con un error del 5% y 2% respecto a la unidad. Los resultados se muestran en la tabla A1. Tabla A1.- Comparación del tiempo de establecimiento al 5% y 2% de los filtros evaluados ante una entrada tipo escalón unitario. Filtro Barttlet Barttlet-hanning Blackman Blackman harris Bohman Chebyshev Sidelobe=100 Flat-top Gaussian Hamming Hann Kaisser Nutall Parzen Rectangular Taylor Triangular Tukey Butterworth Chebyshev I Chebyshev 2 Elíptico Error 5% ms 160 160 152 144-152 144 144 136 160 160 152 176 152 144 184 168 160 168 328 464 424 472 Error 2% ms 176 168 160 160 160 160 152 168 176 168 184 160 160 192 184 176 176 664 600 536 616 Sobre-impulso No No No No No No 2.88% No No No No No No No No No No 4.32% No 5.29% No Sin embargo, debido a que los incrementos en los movimientos del ratón generalmente no son bruscos (escalón), el tiempo de retardo disminuye en la práctica, teniendo otros valores de acuerdo a la magnitud del incremento. En la 124 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” tabla A2 se presentan los valores aproximados de retraso en el tiempo de la respuesta de los filtros evaluados con la entrada propuesta. Tabla A2.- Comparación del tiempo de retardo entre la señal de entrada y la señal de los filtros evaluados en modo de funcionamiento común. Filtro Barttlet Barttlet-hanning Blackman Blackman harris Bohman Chebyshev Sidelobe=100 Flat-top Gaussian Hamming Hann Kaisser Nutall Parzen Rectangular Taylor Triangular Tukey Butterworth Chebyshev I Chebyshev 2 Elíptico Tiempo de retardo ms 112 104 96 112 104 104 104 96 104 112 120 104 96 96 104 112 112 152 160 144 128 Para el filtro de resta algebraica, desfase de 180° y media móvil, el retraso de la respuesta es de 1 periodo de ciclo de temblor, que va desde 250 milisegundos hasta 83 milisegundos. Evaluando los filtros por el retraso en el tiempo de la señal de salida respecto a la señal de entrada: En los filtros FIR, los filtros Blackman, Gaussian, Parsen y Rectangular son los que tienen un menor retraso, siendo este de 96 ms. En los filtros IIR, el Chebyshev 2 y el Elíptico son los que menor retraso tienen en la respuesta con respecto a la entrada, siendo de 144ms y 128ms respectivamente. En otros filtros, todos requieren al menos 250 ms de retraso para una entrada de 4 Hz. 125 ANEXOS Para medir el grado de atenuación de la oscilación en la respuesta del filtro, se utilizó una entrada constante de tipo senoidal montada en 0, de 4 a 12 Hz con incrementos de 1 Hz y amplitud 50. Se mide el valor absoluto de la magnitud existente entre el valle y la cresta de la señal resultante. Tabla A3.- Comparación de la variación absoluta de la respuesta de cada filtro evaluado ante una entrada constante de tipo senoidal de 4Hz a 12 Hz con incrementos de 1 Hz y amplitud 50 pixeles (100 pico a pico). Filtro Barttlet Barttlet-hanning Blackman Blackman harris Bohman Chebyshev Flat-top Gaussian Hamming Hann Kaisser Nutall Parzen Rectangular Taylor Triangular Tukey Butterworth Chebyshev I Chebyshev 2 Elíptico 126 4 Hz 64 68 76 80 76 78 96 68 66 70 38 78 78 36 56 62 54 12 14 10 24 5 Hz 50 54 64 70 66 68 94 54 50 56 16 68 68 16 40 46 38 8 12 2 20 6 Hz 36 40 54 58 54 54 90 42 36 42 2 58 56 0 24 34 20 6 10 2 16 7 Hz 24 28 40 48 42 46 86 30 26 30 8 46 46 8 14 22 6 4 8 4 14 8 Hz 14 18 30 38 34 36 78 20 16 20 10 38 34 10 6 12 4 4 8 6 12 9 Hz 8 10 22 28 24 26 72 14 8 12 6 28 26 6 2 6 10 2 6 6 10 10 Hz 4 6 14 22 16 20 64 8 4 6 2 20 18 2 0 4 12 2 6 6 10 11 Hz 2 2 8 16 10 14 54 4 2 2 2 14 12 4 0 2 10 2 6 8 8 12 Hz 2 0 6 10 6 8 30 2 0 0 6 10 8 6 0 2 8 2 4 8 8 Suma 180 198 274 322 286 304 578 212 182 208 82 314 300 80 128 168 156 38 66 48 108 En los filtros FIR, los que mejor desempeño tuvieron fueron los filtros Káiser y Rectangular. Si se aumenta la beta del filtro Kaiser a un número mayor a 0.5, comienza a adherirse mayor ruido. Sin embargo, si se disminuye no sufre cambios visibles. En los filtros IIR, los mejores filtros fueron el Butterworth y el Chebyshev II. Los filtros por resta algebraica, desfase de 180° y media móvil tienen una magnitud de atenuación de oscilación es de 0 debido a la condición ideal de la entrada. “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Para poder elegir el filtro que responda adecuadamente a las condiciones de operación es necesario realizar una comparación de los 2 factores que se evaluaron con anterioridad, los cuales son el tiempo de retraso y la atenuación de la señal no deseada. Para esto se realizó la tabla A4, la cual se compone de: La columna 1 indica el filtro evaluado. La columna 2 corresponde a la última columna de la tabla 15. La columna 3 indica el factor de peso utilizado para multiplicarlo por el valor de la columna anterior. La columna 4 corresponde a la última columna de la tabla 14. La columna 5 indica el factor de peso utilizado para multiplicarlo por el valor de la columna anterior. La columna 6 indica el resultado obtenido para cada filtro que corresponde a la siguiente ecuación: resultado f1 = (suma f1 * factor a) + (retardo f1 * factor b). Tabla A4.- Calificación final de cada filtro evaluado. Filtro Barttlet Barttlet-hanning Blackman Blackman harris Bohman Chebyshev Flat-top Gaussian Hamming Hann Kaisser Nutall Parzen Rectangular Taylor Triangular Tukey Butterworth Chebyshev I Chebyshev 2 Elíptico Suma 180 198 274 322 286 304 578 212 182 208 82 314 300 80 128 168 156 38 66 48 108 Factor a 0.8 Retardo 112 104 96 112 104 104 104 96 104 112 120 104 96 96 104 112 112 152 160 144 128 Factor b 0.2 Resultado 166.4 179.2 238.4 280 249.6 264 483.2 188.8 166.4 188.8 89.6 272 259.2 83.2 123.2 156.8 147.2 60.8 84.8 67.2 112 127 ANEXOS El factor "a" se eligió de 0.8 debido a que este valor evaluará la capacidad del filtro por mantener una estabilidad en la filtración de oscilaciones, durante toda la banda de frecuencias características del temblor esencial, por esto se asignó un valor alto ya que este factor se consideró de prioridad. El factor "b" se eligió de 0.2 debido a que el tiempo de retardo es similar en todos los filtros y no existe una diferencia considerable entre los filtros evaluados, así la evaluación de este parámetro resultó poco significante debido a que los tiempos de retardo no sobre pasan los límites identificados en la tabla A5. Como resultado, se tiene que los filtros con mejor desempeño (resultado menor a 85) son el Butterworth, Chebyshev 2, Rectangular y Chebyshev 1. A continuación se presentan las respuestas de estos 4 filtros. Figura A2.- Respuesta del filtro Rectangular. Figura A3.- Respuesta del filtro Butterworth. Figura A4.- Respuesta del filtro Chebyshev I. Figura A5.- Respuesta de filtro Chebyshev II. 128 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Figura A6.- Respuesta del filtro Rectangular. Se puede observar que el filtro que elimina de mejor forma las oscilaciones transitorias es el Chebyshev 2 (inverso) y el retraso en el tiempo de la respuesta es aceptable. Sin embargo se implementó el filtro en REODA-MX y se observó que, al mover el ratón en un sentido durante un tiempo e inmediatamente detenerlo, el cursor continuaba desplazándose durante un tiempo considerable, lo que hacía muy difícil posicionar el cursor en un lugar deseado, por lo que habría que estar "atinando" al momento exacto para dejar de mover REODA-MX. Por este motivo se procedió a implementar el segundo mejor filtro el cual fue el Butterworth. Al evaluarlo, se observó que la ganancia de este filtro era pequeña, por lo que se debía mover el ratón en una área de trabajo grande para que el cursor se desplazará una zona pequeña, y, al modificar la ganancia del filtro, se incrementaba la magnitud de las oscilaciones, por lo que se volvió una opción no viable. Finalmente se implementó el tercer filtro que mejor desempeño obtuvo, el cual fue el filtro Chebyshev 1. Al evaluarlo se observó una buena atenuación de la oscilación y su ganancia era ideal para la relación movimiento ratón-cursor. Por este motivo este fue el filtro que se eligió. 129 ANEXOS Cabe mencionar que la respuesta directa del filtro no es la que se utiliza para posicionar el cursor; se requirió a la implementación de etapas de acondicionamiento de la señal, ya que se requiere que el usuario sea capaz de desplazar el cursor 1 pixel, por lo que se utilizó un acondicionamiento para posicionamiento fino del cursor. Adicionalmente se realizó un experimento el cual consistió en retrasar la señal que adquiere el prototipo de ratón desarrollado, con el fin de conocer 2 parámetros. 1. El máximo tiempo de retardo que un usuario no alcanza a percibir. 2. El máximo tiempo de retardo que un usuario alcanza a tolerar sin perder la paciencia por el retardo en la adquisición de la señal de movimiento del ratón. Para esto se realizaron pruebas con 2 personas. A continuación se presentan los resultados en la tabla A5. Tabla A5.- Tiempo de retardo imperceptible y tolerable entre el movimiento del ratón-cursor. Usuario Edad Srta. Scarlett Grisell Ruiz González. Sr. Omar Alejandro Ruiz González. 22 años 25 años Máximo retardo imperceptible (muestras) 10 muestras = 80 ms 7 muestras = 56 ms Máximo retardo tolerable (ms) 20 muestras = 160 20 muestras = 160 Con esta tabla se puede validar que el filtro elegido (Chebyshev 1) cumple con el requerimiento de máximo retardo tolerable. 130 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Anexo 2. Entrada utilizada para validar los filtros. La figura A7 muestra la entrada que se utilizó para evaluar el desempeño de los filtros. El eje X de la gráfica indica la muestra con respecto al tiempo, cuyo periodo de muestreo es aproximadamente de 8 ms. El eje Y de la gráfica corresponde a los pixeles correspondientes al eje X de la pantalla de un equipo de cómputo configurada con una resolución de 1024 x 768 pixeles. entrada 1025 975 Pixel del eje X 925 875 825 775 entrada 725 675 625 575 0 200 400 600 800 1000 Muestra (Ts=8ms) Figura A7.- Entrada utilizada para evaluar los filtros analizados. 131 ANEXOS A continuación se presentan los valores de las posiciones del cursor obtenidas en cada muestra y el número de muestra correspondiente. Mue. Valor 1 663 2 657 3 653 4 650 5 649 6 649 7 652 8 658 9 665 10 674 11 683 12 691 13 699 14 705 15 707 16 708 17 707 18 704 19 699 20 691 21 682 22 671 23 659 24 650 25 641 26 634 27 630 28 628 29 628 30 628 31 628 32 631 33 636 34 642 35 651 36 659 37 667 38 673 39 679 40 681 41 681 42 680 43 677 44 672 45 663 46 654 47 642 48 630 49 619 50 611 51 604 132 Mue. Valor 52 601 53 600 54 600 55 603 56 608 57 614 58 624 59 634 60 646 61 656 62 665 63 672 64 676 65 679 66 679 67 679 68 677 69 673 70 667 71 659 72 651 73 643 74 635 75 630 76 626 77 623 78 623 79 625 80 628 81 632 82 632 83 637 84 644 85 650 86 655 87 658 88 661 89 663 90 663 91 661 92 658 93 654 94 648 95 641 96 634 97 627 98 622 99 619 100 618 101 618 102 620 Mue. 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 Valor 626 634 643 655 667 677 687 693 698 699 698 695 689 681 671 659 648 639 632 626 625 625 627 633 641 651 665 676 688 699 706 712 715 715 714 711 706 700 691 683 677 671 668 668 668 672 680 690 702 717 731 Mue. Valor 154 743 155 753 156 761 157 765 158 765 159 765 160 765 161 762 162 756 163 748 164 738 165 726 166 716 167 707 168 700 169 694 170 692 171 692 172 693 173 697 174 702 175 710 176 720 177 728 178 736 179 741 180 744 181 744 182 743 183 742 184 740 185 737 186 734 187 731 188 728 189 726 190 724 191 724 192 724 193 726 194 731 195 739 196 747 197 758 198 766 199 774 200 779 201 782 202 783 203 781 204 778 Mue. Valor 205 772 206 763 207 752 208 740 209 731 210 722 211 716 212 712 213 712 214 712 215 716 216 722 217 730 218 740 219 749 220 758 221 765 222 765 223 770 224 773 225 773 226 772 227 768 228 762 229 754 230 744 231 735 232 727 233 719 234 715 235 713 236 712 237 712 238 716 239 720 240 726 241 733 242 740 243 747 244 751 245 753 246 753 247 752 248 749 249 744 250 736 251 728 252 720 253 713 254 708 255 704 Mue. Valor 256 703 257 703 258 704 259 708 260 714 261 723 262 731 263 740 264 747 265 752 266 756 267 758 268 758 269 755 270 751 271 746 272 739 273 731 274 724 275 718 276 715 277 713 278 713 279 716 280 721 281 729 282 739 283 739 284 751 285 763 286 774 287 782 288 789 289 792 290 792 291 791 292 786 293 776 294 764 295 751 296 737 297 723 298 711 299 703 300 699 301 698 302 699 303 703 304 711 305 720 306 732 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Mue. Valor 307 745 308 756 309 765 310 772 311 777 312 780 313 780 314 780 315 778 316 775 317 773 318 771 319 770 320 769 321 769 322 770 323 774 324 779 325 787 326 795 327 805 328 812 329 818 330 821 331 823 332 823 333 823 334 820 335 814 336 809 337 802 338 796 339 790 340 786 341 785 342 785 343 786 344 791 345 799 346 808 347 819 348 831 349 840 350 847 351 852 352 855 353 855 354 853 355 849 356 844 357 836 358 826 359 817 360 809 361 804 Mue. Valor 362 801 363 799 364 799 365 801 366 808 367 816 368 824 369 832 370 840 371 846 372 849 373 850 374 849 375 846 376 840 377 832 378 823 379 812 380 803 381 796 382 791 383 789 384 789 385 790 386 795 387 795 388 803 389 813 390 824 391 835 392 844 393 852 394 858 395 860 396 860 397 858 398 854 399 846 400 838 401 829 402 820 403 812 404 805 405 801 406 799 407 799 408 800 409 804 410 808 411 815 412 820 413 825 414 830 415 833 416 834 Mue. 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 Valor 833 831 826 819 811 802 794 787 782 779 779 779 782 787 795 803 812 820 827 832 834 835 834 831 826 820 820 805 805 798 793 790 790 790 793 799 806 814 822 830 836 840 843 843 842 839 834 828 821 814 809 803 800 800 800 Mue. Valor 472 802 473 807 474 814 475 822 476 830 477 838 478 845 479 848 480 849 481 849 482 846 483 839 484 830 485 821 486 809 487 797 488 788 489 781 490 775 491 774 492 774 493 774 494 776 495 789 496 789 497 797 498 808 499 816 500 824 501 829 502 833 503 834 504 833 505 830 506 825 507 817 508 808 509 797 510 787 511 777 512 769 513 764 514 763 515 763 516 765 517 769 518 777 519 786 520 797 521 807 522 817 523 825 524 830 525 833 526 834 Mue. Valor 527 833 528 830 529 825 530 821 531 816 532 812 533 807 534 805 535 805 536 805 537 809 538 814 539 822 540 830 541 839 542 849 543 855 544 861 545 864 546 864 547 863 548 860 549 855 550 850 551 844 552 844 553 832 554 830 555 830 556 829 557 830 558 834 559 840 560 853 561 864 562 879 563 893 564 907 565 917 566 925 567 928 568 928 569 926 570 921 571 913 572 903 573 891 574 879 575 869 576 861 577 855 578 852 579 852 580 852 581 856 Mue. Valor 582 862 583 870 584 880 585 890 586 900 587 906 588 913 589 916 590 917 591 917 592 915 593 912 594 908 595 903 596 897 597 892 598 888 599 885 600 884 601 884 602 885 603 885 604 896 605 896 606 905 607 915 608 924 609 932 610 939 611 943 612 944 613 944 614 941 615 935 616 929 617 919 618 909 619 899 620 891 621 885 622 881 623 878 624 878 625 879 626 882 627 887 628 894 629 900 630 908 631 914 632 919 633 921 634 922 635 921 636 918 133 ANEXOS Mue. Valor 637 912 638 904 639 894 640 883 641 872 642 863 643 855 644 849 645 847 646 847 647 849 648 854 649 863 650 874 651 886 652 900 653 912 654 923 655 932 656 937 657 940 658 940 659 940 660 939 661 936 662 931 663 925 664 916 665 907 666 899 667 894 668 888 669 885 670 884 671 884 672 885 673 887 674 891 675 895 676 899 677 903 678 907 679 910 680 911 681 911 682 910 683 907 684 903 685 898 686 892 687 886 688 880 689 876 690 873 691 872 134 Mue. Valor 692 872 693 874 694 877 695 882 696 888 697 895 698 902 699 907 700 913 701 915 702 915 703 914 704 912 705 908 706 904 707 898 708 898 709 893 710 889 711 886 712 884 713 884 714 884 715 887 716 892 717 898 718 905 719 913 720 920 721 927 722 930 723 931 724 931 725 929 726 925 727 919 728 910 729 901 730 892 731 885 732 878 733 874 734 873 735 873 736 875 737 881 738 887 739 895 740 905 741 913 742 919 743 925 744 928 745 928 746 927 Mue. 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 Valor 925 920 913 905 895 884 873 864 857 852 848 846 846 846 847 847 849 851 853 853 852 848 843 834 823 810 794 779 767 757 749 744 743 743 745 751 757 764 772 777 783 784 785 783 778 770 760 748 733 719 704 692 682 674 668 Mue. Valor 802 666 803 666 804 666 805 670 806 676 807 686 808 695 809 706 810 714 811 720 812 724 813 727 814 727 815 724 816 717 817 708 818 697 819 685 820 674 821 663 822 654 823 649 824 647 825 647 826 647 827 648 828 653 829 661 830 670 831 680 832 690 833 698 834 705 835 709 836 711 837 711 838 708 839 704 840 698 841 688 842 678 843 666 844 655 845 646 846 638 847 632 848 629 849 629 850 629 851 632 852 637 853 643 854 653 855 661 856 669 Mue. Valor 857 674 858 680 859 681 860 681 861 679 862 674 863 667 864 658 865 649 866 639 867 631 868 624 869 622 870 620 871 620 872 623 873 629 874 638 875 638 876 647 877 659 878 670 879 679 880 687 881 693 882 695 883 696 884 694 885 691 886 685 887 678 888 669 889 660 890 650 891 642 892 637 893 634 894 633 895 633 896 633 897 637 898 642 899 649 900 657 901 665 902 673 903 678 904 682 905 684 906 684 907 681 908 677 909 671 910 664 911 655 Mue. Valor 912 645 913 637 914 631 915 626 916 624 917 624 918 625 919 628 920 633 921 641 922 649 923 657 924 665 925 670 926 674 927 676 928 676 929 673 930 669 931 664 932 656 933 648 934 640 935 640 936 632 937 626 938 623 939 622 940 622 941 625 942 630 943 636 944 646 945 656 946 667 947 675 948 682 949 686 950 688 951 688 952 686 953 682 954 676 955 667 956 658 957 648 958 640 959 633 960 627 961 625 962 625 963 625 964 628 965 633 966 641 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Mue. Valor 967 650 968 661 969 670 970 679 971 686 972 690 973 692 974 692 975 690 976 686 977 680 978 671 979 665 980 657 981 650 982 647 983 646 984 647 985 653 986 662 987 662 988 677 989 697 990 721 991 751 992 779 993 801 994 815 995 826 996 832 997 834 998 833 999 829 1000 821 1001 811 1002 800 1003 790 1004 780 1005 775 1006 773 1007 773 1008 776 1009 786 1010 800 1011 816 1012 841 1013 866 1014 888 1015 904 1016 917 1017 924 1018 927 1019 927 1020 923 1021 914 Mue. 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 Valor 904 892 879 867 856 851 849 849 853 861 873 887 903 918 931 942 950 953 954 953 953 950 945 941 937 933 930 929 929 931 936 943 951 959 967 974 977 978 978 975 971 965 958 951 944 940 938 938 939 943 951 960 971 983 993 Mue. 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 Valor 1003 1009 1012 1012 1010 1004 995 983 970 956 944 935 935 930 928 928 930 935 943 952 963 973 983 989 993 995 994 991 985 976 967 955 944 936 931 928 928 930 935 943 955 967 977 988 996 1000 1002 1001 998 992 983 972 960 950 940 Mue. Valor 1132 932 1133 929 1134 929 1135 930 1136 936 1137 944 1138 956 1139 969 1140 982 1141 982 1142 994 1143 1004 1144 1012 1145 1015 1146 1015 1147 1012 1148 1006 1149 996 1150 985 1151 973 1152 960 1153 949 1154 941 1155 937 1156 936 1157 936 1158 940 1159 946 1160 956 1161 965 1162 976 1163 985 1164 993 1165 998 1166 1001 1167 1001 1168 999 1169 995 1170 987 1171 976 1172 965 1173 955 1174 944 1175 936 1176 932 1177 930 1178 930 1179 932 1180 938 1181 947 1182 958 1183 969 1184 981 1185 992 1186 1000 Mue. Valor 1187 1005 1188 1008 1189 1008 1190 1005 1191 998 1192 989 1193 977 1194 965 1195 952 1196 941 1197 933 1198 933 1199 929 1200 928 1201 928 1202 931 1203 938 1204 947 1205 958 1206 970 1207 980 1208 988 1209 995 1210 1001 1211 1002 1212 1002 1213 999 1214 995 1215 989 1216 981 1217 971 1218 962 1219 954 1220 949 1221 944 1222 942 1223 942 1224 943 1225 948 1226 955 1227 963 1228 971 1229 980 1230 988 1231 993 1232 996 1233 997 1234 996 1235 993 1236 987 1237 980 1238 971 1239 963 1240 955 1241 948 Mue. Valor 1242 944 1243 943 1244 943 1245 944 1246 948 1247 956 1248 964 1249 975 1250 987 1251 996 1252 1004 1253 1004 1254 1011 1255 1014 1256 1016 1257 1016 1258 1013 1259 1008 1260 1002 1261 994 1262 983 1263 972 1264 963 1265 955 1266 948 1267 945 1268 945 1269 945 1270 948 1271 953 1272 959 1273 968 1274 977 1275 984 1276 990 1277 995 1278 997 1279 997 1280 996 1281 994 1282 989 1283 982 1284 974 1285 965 1286 957 1287 949 1288 943 1289 940 1290 940 1291 940 1292 941 1293 946 1294 953 1295 961 1296 969 135 ANEXOS Mue. Valor 1297 977 1298 984 1299 989 1300 992 1301 993 1302 993 1303 990 1304 985 1305 978 1306 970 1307 961 1308 951 1309 945 1310 945 1311 939 1312 936 1313 936 1314 936 1315 938 1316 943 1317 950 1318 959 1319 969 1320 977 1321 983 1322 989 1323 992 1324 992 1325 991 1326 988 1327 982 1328 974 1329 966 1330 957 1331 949 1332 942 1333 938 1334 937 1335 937 1336 940 1337 945 1338 954 1339 965 1340 975 1341 985 1342 994 1343 999 1344 1004 1345 1004 1346 1002 1347 997 1348 988 1349 975 1350 960 1351 944 136 Mue. 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 Valor 922 903 888 876 867 862 860 860 860 863 870 880 889 898 908 912 912 910 905 897 884 871 855 838 822 808 798 788 784 782 782 784 789 795 802 809 814 816 816 813 809 803 793 784 775 767 760 755 753 753 755 759 764 769 775 Mue. 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 Valor 780 784 786 786 786 783 779 770 749 737 725 715 707 707 701 698 697 697 699 702 707 712 719 726 731 734 737 738 738 735 730 723 714 703 691 679 669 661 655 652 652 652 654 659 667 675 686 695 702 709 712 714 714 712 708 Mue. Valor 1462 703 1463 695 1464 685 1465 675 1466 664 1467 656 1468 656 1469 649 1470 644 1471 642 1472 642 1473 643 1474 648 1475 655 1476 664 1477 675 1478 685 1479 696 1480 704 1481 709 1482 711 1483 712 1484 711 1485 707 1486 702 1487 694 1488 685 1489 674 1490 665 1491 655 1492 649 1493 645 1494 642 1495 641 1496 641 1497 643 1498 648 1499 655 1500 664 1501 674 1502 684 1503 692 1504 698 1505 703 1506 704 1507 704 1508 702 1509 697 1510 690 1511 681 1512 670 1513 657 1514 647 1515 647 1516 637 Mue. Valor 1517 631 1518 625 1519 623 1520 622 1521 623 1522 627 1523 634 1524 643 1525 652 1526 663 1527 674 1528 680 1529 687 1530 690 1531 691 1532 691 1533 688 1534 683 1535 677 1536 669 1537 658 1538 647 1539 638 1540 631 1541 626 1542 623 1543 622 1544 622 1545 624 1546 628 1547 637 1548 645 1549 654 1550 663 1551 671 1552 678 1553 683 1554 685 1555 686 1556 684 1557 681 1558 676 1559 670 1560 660 1561 648 1562 638 1563 627 1564 619 1565 619 1566 614 1567 611 1568 610 1569 610 1570 614 1571 620 Mue. Valor 1572 630 1573 640 1574 651 1575 661 1576 671 1577 678 1578 682 1579 685 1580 686 1581 685 1582 683 1583 678 1584 671 1585 663 1586 654 1587 643 1588 633 1589 625 1590 619 1591 616 1592 616 1593 616 1594 618 1595 623 1596 631 1597 642 1598 652 1599 662 1600 670 1601 677 1602 681 1603 683 1604 683 1605 680 1606 674 1607 666 1608 656 1609 645 1610 633 1611 623 1612 613 1613 607 1614 604 1615 604 1616 602 1617 602 1618 605 1619 610 1620 618 1621 627 1622 638 1623 647 1624 655 1625 662 1626 666 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Mue. Valor 1627 668 1628 668 1629 666 1630 661 1631 654 1632 645 1633 634 1634 623 1635 611 1636 601 1637 593 1638 589 1639 587 1640 587 1641 588 1642 592 1643 598 1644 608 1645 618 1646 630 1647 641 1648 650 1649 657 1650 661 1651 663 1652 663 1653 662 1654 658 1655 652 1656 644 1657 634 1658 624 1659 614 1660 606 1661 601 1662 598 1663 597 1664 597 1665 600 1666 606 1667 606 1668 614 1669 624 1670 647 1671 656 1672 664 1673 670 1674 672 1675 673 1676 671 1677 668 1678 668 1679 662 1680 653 1681 644 Mue. 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 Valor 632 621 613 606 602 601 601 602 606 612 621 631 642 652 662 668 674 677 677 675 671 665 655 643 630 618 607 599 593 591 590 591 596 602 612 624 636 649 660 668 674 678 681 681 678 673 673 667 657 645 633 621 611 603 597 Mue. 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 Valor 594 594 594 597 605 614 625 638 650 661 670 677 681 683 683 681 676 669 660 648 634 620 609 599 592 588 588 588 592 599 609 620 634 647 658 667 672 676 676 677 676 672 666 656 644 630 615 603 593 585 579 576 576 577 582 Mue. Valor 1792 590 1793 600 1794 611 1795 623 1796 634 1797 643 1798 650 1799 653 1800 653 1801 653 1802 649 1803 644 1804 634 1805 624 1806 612 1807 600 1808 588 1809 579 1810 572 1811 568 1812 566 1813 566 1814 568 1815 575 1816 583 1817 595 1818 607 1819 620 1820 632 1821 641 1822 649 1823 653 1824 656 1825 657 1826 656 1827 652 1828 647 1829 640 1830 632 1831 623 1832 614 1833 607 1834 601 1835 597 1836 596 1837 596 1838 598 1839 598 1840 603 1841 609 1842 616 1843 625 1844 635 1845 642 1846 648 Mue. Valor 1847 652 1848 654 1849 654 1850 653 1851 651 1852 647 1853 643 1854 637 1855 632 1856 628 1857 624 1858 623 1859 623 1860 625 1861 629 1862 634 1863 642 1864 650 1865 658 1866 666 1867 672 1868 675 1869 676 1870 676 1871 673 1872 668 1873 663 1874 655 1875 647 1876 637 1877 631 1878 625 1879 621 1880 619 1881 619 1882 620 1883 624 1884 631 1885 637 1886 647 1887 656 1888 656 1889 664 1890 672 1891 676 1892 679 1893 679 1894 676 1895 672 1896 667 1897 660 1898 652 1899 644 1900 636 1901 630 Mue. Valor 1902 625 1903 622 1904 621 1905 622 1906 625 1907 630 1908 638 1909 647 1910 656 1911 666 1912 674 1913 679 1914 682 1915 684 1916 684 1917 681 1918 677 1919 671 1920 661 1921 652 1922 640 1923 631 1924 621 1925 614 1926 610 1927 608 1928 608 1929 608 1930 612 1931 616 1932 621 1933 628 1934 636 1935 643 1936 648 1937 653 1938 656 1939 657 1940 658 1941 658 1942 658 1943 656 1944 654 1945 650 1946 646 1947 640 1948 634 1949 630 1950 626 1951 624 1952 623 1953 623 1954 624 1955 629 1956 635 137 ANEXOS Mue. Valor 1957 643 1958 653 1959 662 1960 670 1961 676 1962 680 1963 682 1964 682 1965 681 1966 678 1967 673 1968 667 1969 658 1970 650 1971 642 1972 636 1973 630 1974 628 1975 628 1976 628 1977 632 1978 638 1979 648 1980 658 1981 670 1982 681 1983 690 1984 698 1985 704 1986 706 1987 706 1988 704 1989 700 1990 692 1991 683 1992 672 1993 660 1994 660 1995 638 1996 638 1997 630 1998 624 1999 622 2000 621 138 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Anexo 3. Hoja de datos del sensor ADNS-2610. 139 ANEXOS Anexo 4. Circuito original del ratón marca ATIVA modelo LYNX-L7R. Figura A8.- Diagrama eléctrico original del ratón marca ATIVA modelo LYNX-L7R. 140 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Anexo 5. Circuito eléctrico del módulo desarrollado para el ratón marca ATIVA modelo LYNX-L7R. Figura A9.- Diagrama eléctrico de REODA-MX. Nota: En las terminales de color verde se insertan los postes provenientes de la placa original, en sustitución del sensor PAN3511DK. 141 ANEXOS Anexo 6. Hoja de datos del microcontrolador 18F2550. 142 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Anexo 7. Disposición física del módulo desarrollado para la aplicación REODA_MX. Figura A10.- Vista PCB (layout) del módulo desarrollado para REODA-MX. a) b) Figura A11.- Vista PCB de los componentes montados en los lados: a) superior; b) inferior. 143 ANEXOS Anexo 8. Lista de materiales usados para el desarrollar el módulo adherido al circuito original del ratón marca Ativa modelo Lynx-L7R. Tabla A6.- Lista de materiales necesarios para el módulo de REODA-MX Material Placa fenólica de 20cmx20cm Microcontrolador 18f2550 Sensor ADNS-2616 Puerto ICSP de 5 terminales Postes para soldar Interruptor de línea de 1 polo 1 tiro Transistor 2N3906 Capacitor cerámico de 22 pF Capacitor electrolítico de 2.2 uF Capacitor electrolítico de 1 uF Resistencia de carbón de 1 kOhm Resistencia de carbón de 100 kOhms Cristal oscilador de 20 MHz Resonador cerámico de 24 MHz Cable UTP calibre 28 AWG Estaño para soldadura 60/40 144 Cantidad 1 1 1 1 22 1 1 2 1 1 6 1 1 1 1 metro 1 metro “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Anexo 9. Diagrama eléctrico de REODA-MX. Interruptor para programación Figura A12.- Diagrama eléctrico de REODA-MX. 145 ANEXOS Anexo 10. Código implementado en REODA-MX. // DECLARACION DE TODAS LAS LIBRERIAS #include <18F2550.h> #fuses HS,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VRE GEN #use delay(clock=20000000) #use rs232(baud=9600) #define __USB_PIC_PERIF__ 1 #if __USB_PIC_PERIF__ #include <pic18_usb.h> //Microchip PIC18Fxx5x hardware layer for usb.c #endif #include <pic18_usb.h> //Microchip PIC18Fxx5x hardware layer for usb.c #include <usb_desc_mouse.h> //USB Configuration and Device descriptors for this UBS device #include <usb.c> //handles usb setup tokens and get descriptor reports ////// DECLARACION DE TODAS LAS FUNCIONES void WriteSensor(int,int); Int ReadSensor(int); void PulseClock(); void usb_debug_task(void); int filtroX(int8); int promedioX(signed int); int regresox(signed int); int filtroY(int8); int promedioY(signed int); int regresoY(signed int); ////// DECLARACION DE TODAS LA VARIABLES Y CONSTANTES GLOBALES float float float float yunosiete= 0.047579378 ; yunoocho= 0.04753124 ; yunonueve= 0.047476726 ; ydoscero= 0.047415839 ; //VARIABLES DE LA FUNCION FILTROX int8 Entradax=0; signed int Entradaxayuda=0; signed int DiferenciaX=0; signed int salidaxcero=0; signed int16 entradaXdos=0; signed int16 entradaXuno=0; signed int16 entradaXcero=0; signed int16 SalidaX=0; signed int salidaxdos=0; signed int salidaxuno=0; float salidaxactual=0; int8 contadorxayuda=0; //VARIABLES DE LA FUNCION PROMEDIOX signed int promedio_actualxx=0; signed int promedio_actualxxx=0; int contadorx=0; int8 validax=0; int8 reiniciotodox=0; int8 exponencialx=0; int8 aumentoxuno=0; int8 aumentoxdos=0; int8 aumentoxtres=0; int8 aumentoxcuatro=0; int8 aumentoxfinal=0; int8 asignadox=0; int8 delayx=0; //VARIABLES PRINCIPALES int Data=0; int Address=0; Signed Int DeltaY=0; signed int DeltaYY=0; signed int DeltaX=0; int8 Deltaxx=0; //chebyshev 1 para eje x float bunox=-0.970797; float bdosx=0; float acerox=0.01460138; float aunox=0.01460138; float adosx=0; // Rectangular para eje Y float ycero = 0.047415838 ; float yuno= 0.04741583 ; float ydos= 0.047531243 ; float ytres= 0.047579378 ; float ycuatro= 0.047621119 ; float ycinco= 0.047656455 ; float yseis= 0.047685378 ; float ysiete= 0.047707882 ; float yocho= 0.047723959 ; float ynueve= 0.047733607 ; float yunocero= 0.047736823 ; float yunouno= 0.047733607 ; float yunodos= 0.047723959 ; float yunotres= 0.047707882 ; float yunocuatro= 0.04768553 ; float yunocinco= 0.047656455 ; float yunoseis= 0.047621119 ; 146 //VARIABLES DE LA FUNCION FILTROY int EntradaY=0; signed int EntradaYayuda=0; signed int salidaYcero=0; signed int16 SalidaY=0; float salidaYactual=0; signed int Ydiferenciadoscero=0; signed int Ydiferenciaunonueve=0; signed int Ydiferenciaunoocho=0; signed int Ydiferenciaunosiete=0; signed int Ydiferenciaunoseis=0; signed int Ydiferenciaunocinco=0; signed int Ydiferenciaunocuatro=0; signed int Ydiferenciaunotres=0; signed int Ydiferenciaunodos=0; signed int Ydiferenciaunouno=0; signed int Ydiferenciaunocero=0; signed int Ydiferencianueve=0; signed int Ydiferenciaocho=0; signed int Ydiferenciasiete=0; signed int Ydiferenciaseis=0; signed int Ydiferenciacinco=0; signed int Ydiferenciacuatro=0; signed int Ydiferenciatres=0; signed int Ydiferenciados=0; signed int Ydiferenciauno=0; signed int Ydiferenciacero=0; signed int promedio_actualYY=0; signed int contadorY=0; “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” else if ( input(PIN_B1)) //si la entrada de b0 está en alto { palanca=255; } else if (!input(pin_b0) && !input (pin_b1)) { palanca=0; } } //VARIABLES DE LA FUNCION PROMEDIOY int8 contadoryayuda=0; int8 reiniciotodoy=0; int8 exponencialy=0; int8 validay=0; signed int promedio_actualyyy=0; int8 aumentoyuno=0; int8 aumentoydos=0; int8 aumentoytres=0; int8 aumentoycuatro=0; int8 aumentoyfinal=0; int8 asignadoy=0; int8 delayy=0; /////// DECLARACION DE LA FUNCION PRINCIPAL void main(void) { set_tris_C(0x00);// PARA EL LED QUE ESTÁ SOLDADO set_tris_B(0x3F);// todo entrada menos SCK Y SDIO int8 out_data[4]; int8 count=0; char a=0; char b=0; char c=0; char palanca=0; printf("\r\n\nRaton Anti-Tremor CENIDET");//CCS USB Mouse Example #ifdef __PCH__ printf("\r\nPCH: v"); printf(__PCH__); #else printf("\r\n\PCM: v"); printf(__PCM__); #endif usb_init_cs(); // se inicializa el puerto USB. ReadSensor(0x03); // lee el registro 3 Delya X que para mi ratón será Delta Y EntradaY=Data; ReadSensor(0x02); // lee el registro 2 Delya Y que para mi ratón será Delta X EntradaX=Data; FiltroX(EntradaX); FiltroY(EntradaY); { if (input(PIN_B4)) //comparamos boton izquierdo a=0; else a=1; if (input(PIN_B3)) // comparamos boton derecho b=0; else b=2; if (input(PIN_B2)) // comparamos botón medio c=0; else c=0; } usb_task(); // habilita el puerto USB y sus interrupciones. usb_debug_task(); // Muestra la información de depuración en serie para la enumeración y los estados de conexión. #if !(__USB_PIC_PERIF__) printf("\r\nUSBN: 0x%X", usbn_get_version()); #endif printf("\r\n"); output_low(PIN_B6);// SCK=0; output_low(PIN_B7);// SDIO=0; output_high(PIN_C1);// SDIO=0; delay_cycles(50); // 1 ciclo son 200 ns, total 10us output_low(PIN_C1);// LED WriteSensor (0x00, 0x80); // configura al sensor en funcionamiento normal delay_cycles(250); //50us entre dato de una escritura y direccion de otra escritura deben pasar 100us delay_cycles(250); //50 us WriteSensor (0x00, 0x00); // mantiene el led rojo siempre encendido, 0 lo apaga despues de 1 segundo delay_cycles(250); // 50us delay_cycles(250); // 50us entre dato de una escritura y direccion de una lectura deben pasar 100us while (TRUE) { {// Aquí se harán las comparaciones para saber si giró hacia arriba o abajo if ( input(PIN_B0)) //si la entrada de b0 está en alto { palanca=1; } if (usb_enumerated()) { out_data[0]=a+b+c+8; //button state goes here out_data[1]=deltaxX; out_data[2]=DeltaYy; out_data[3]=0;//palanca; //wheel state goes here if (usb_put_packet(1,out_data,4,USB_DTS_TOGGLE)) count++; if (count > 100) { count=0; } delay_ms(8); } } } /////// DEFINICION DE LAS FUNCIONES void usb_debug_task(void) { static int8 last_connected; static int8 last_enumerated; int8 new_connected; int8 new_enumerated; new_connected=usb_attached(); new_enumerated=usb_enumerated(); if (new_connected && !last_connected) printf("\r\n\nUSB connected, waiting for enumaration..."); if (!new_connected && last_connected) printf("\r\n\nUSB disconnected, waiting for connection..."); if (new_enumerated && !last_enumerated) printf("\r\n\nUSB enumerated by PC/HOST"); if (!new_enumerated && last_enumerated) 147 ANEXOS printf("\r\n\nUSB unenumerated by PC/HOST, waiting for enumeration..."); { output_high(PIN_B7); Address=Address-y; last_connected=new_connected; last_enumerated=new_enumerated; } PulseClock(); output_low(PIN_B7); y=y/2; x++; } void PulseClock() //used to clock the data in/out of the ADNS-2610 { output_low(PIN_B6);// 200ns output_low(PIN_B6);// 200ns output_high(PIN_B6);// 200ns output_high(PIN_B6);// 200ns } void WriteSensor(int Address, int Data) //used to write data to the ADNS2610 { if (Address>=128) //Address 7 { Address=Address-128; } int x=0; int y=64; output_high(PIN_B7); output_high(PIN_B7); PulseClock(); output_low(PIN_B7); while (x<7) { if (Address>=y) //Address 6 { output_high(PIN_B7);// SDIO=1; Address=Address-y; } else { output_low(PIN_B7);// SDIO=0; } PulseClock(); y=y/2; x++; } } output_low(PIN_B7);//SDIO=0; set_tris_B(0xBF);//set SDIO RB7 to input delay_cycles(250); //50 us delay_cycles(250); //50 us 100us entre adres y dato para cargar el mismo. x=0; y=128; Data=0; while (x<8) { PulseClock(); if (input(PIN_B7))// compara la entrada de SDIO { Data=Data+y; } y=y/2; x++; } set_tris_B(0x3F); output_high(PIN_B6);//SCK=1; output_low(PIN_B7);//SDIO=0; return Data; } int filtroX(int8 entradax) { if (entradaX>127) { entradaXayuda=entradaX-256; } else {entradaxayuda=entradax;} DiferenciaX=SalidaXcero; //con signo +- delay_cycles(2); // entre el cambio de direccion y dato deben pasar al menos 250ns x=0; y=128; while (x<8) { if (Data>=y) { output_high(PIN_B7);// SDIO=1; Data=Data-y; } else { output_low(PIN_B7);// SDIO=0; } PulseClock(); y=y/2; x++; } output_low(PIN_B7);// SDIO=0; } int ReadSensor(int Address)// Used to read registers of the ADNS2610 { output_low(PIN_B7);//SDIO=0; int x=0; int y=128; while (x<8) { if (Address>=y) 148 entradaXdos=entradaXuno-DiferenciaX; entradaXuno=entradaXcero-DiferenciaX; entradaXcero=entradaXcero+entradaXayuda-DiferenciaX; // este valor puede ser mayor que 128 o menor que -128 salidaxdos=salidaxuno-diferenciaX; salidaxuno= 0; //salidaxcero-diferenciaX; // aqui debe valer cero absoluto ya que la salida pasada se compensó en la misma cantidad. SalidaXactual=((acerox*entradaxcero)+(aunox*entradaxuno)+(adosx*e ntradaxdos)-(bunox*salidaxuno)-(bdosx*salidaxdos)); SalidaX=SalidaXactual/1; if (salidax < -128) { salidax = -128; } if (salidax > 127) { salidax=127; } salidaxcero=salidaX; DeltaX=SalidaX; if (entradax==0) // esta rutina limita el movimiento del cursor a 5 muestras despues de que el raton no tuvo movimiento para evitar que el filtro no siga enviando residuos { contadorxayuda=contadorxayuda+1; “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” if (contadorxayuda==6) { deltax=0; contadorxayuda=5; } case 11: aumentoxfinal=1; break; // aumento final movimiento de 4 case 12: aumentoxfinal=1; break; } } if (entradax!=0) { contadorxayuda=0; } promediox (DeltaX); regresox(Promedio_actualxx); return DeltaxX; } int PromedioX(signed int DeltaX) // se promedia de 0 a 255 { if (deltax!=0) // distinto de cero { reiniciotodox=0; contadorx=contadorx+1; promedio_actualxx=0; if (contadorx==25) // si mantienes movimiento durante 25 ciclos significa que eres movimiento deseado { promedio_actualxx=deltax; contadorx=24; } } if (deltax==0) { reiniciotodox=reiniciotodox+1; if (reiniciotodox==5) // si mantienes 5 ciclos con un 0 de entrada { contadorx=0; reiniciotodox=4; } promedio_actualxx=0; } return promedio_actualxx; } int regresox(signed int promedio_actualxx ) { if (promedio_actualxx>0) { exponencialx=exponencialx+1; validax=validax+1; promedio_actualxxx=0; //fórmula if (promedio_actualxx>10) { promedio_actualxx=11; } switch(promedio_actualxx) { case 1: aumentoxuno=aumentoxuno+1; break; // aumento 1 mov. intermitente case 2: aumentoxuno=aumentoxuno+1; break; case 3: aumentoxuno=aumentoxuno+1; break; case 4: aumentoxuno=aumentoxuno+1; break; case 5: aumentoxdos=aumentoxdos+1; break; // aumento 2 movimiento de 1 case 6: aumentoxdos=aumentoxdos+1; break; case 7: aumentoxtres=aumentoxtres+1; break; // aumento 3 movimiento de 2 case 8: aumentoxtres=aumentoxtres+1; break; case 9: aumentoxcuatro=aumentoxcuatro+1; break; // aumento 4 movimiento de 3 case 10: aumentoxcuatro=aumentoxcuatro+1; break; if (exponencialx==1) {promedio_actualxxx=1;} if (exponencialx==21) { if ((aumentoxuno==aumentoxdos) || (aumentoxuno==aumentoxtres) || (aumentoxuno==aumentoxcuatro) || (aumentoxdos==aumentoxtres) || (aumentoxdos==aumentoxcuatro) || (aumentoxtres==aumentoxcuatro)) { promedio_actualxxx=1; } if ((aumentoxuno>aumentoxdos) && (aumentoxuno>aumentoxtres) && (aumentoxuno>aumentoxcuatro)) { promedio_actualxxx=1; } if ((aumentoxdos>aumentoxtres) && (aumentoxdos>aumentoxcuatro)) { validax=74; } if (aumentoxtres>aumentoxcuatro) { validax=74; } if ((aumentoxcuatro>aumentoxuno) && (aumentoxcuatro>aumentoxdos) && (aumentoxcuatro>aumentoxtres)) { validax=74; } if (aumentoxfinal==1) { validax=74; } } if (exponencialx==38) {promedio_actualxxx=1;} if (exponencialx==47) {promedio_actualxxx=1;} if (exponencialx==55) {promedio_actualxxx=1;} if (exponencialx==125) {promedio_actualxxx=1;} if (exponencialx==66) {promedio_actualxxx=1;} if (exponencialx==70) {promedio_actualxxx=1;} if (exponencialx==73) {promedio_actualxxx=1;} if (validax==74) // { exponencialx=73; // aqui comparamos la moda de la entrada (promedio_actualxx) la entrada que mas se repitio es la que se asigna de incremento if ((aumentoxuno==aumentoxdos) || (aumentoxuno==aumentoxtres) || (aumentoxuno==aumentoxcuatro) || (aumentoxdos==aumentoxtres) || (aumentoxdos==aumentoxcuatro) || (aumentoxtres==aumentoxcuatro)) { asignadox=1; } if ((aumentoxuno>aumentoxdos) && (aumentoxuno>aumentoxtres) && (aumentoxuno>aumentoxcuatro)) { asignadox=1; 149 ANEXOS } if ((aumentoxdos>aumentoxtres) && (aumentoxdos>aumentoxcuatro)) { asignadox=2; } if (aumentoxtres>aumentoxcuatro) { asignadox=3; } if ((aumentoxcuatro>aumentoxuno) && (aumentoxcuatro>aumentoxdos) && (aumentoxcuatro>aumentoxtres)) { asignadox=4; } if (aumentoxfinal==1) { asignadox=5; } aumentoxuno=0; aumentoxdos=0; aumentoxtres=0; aumentoxcuatro=0; aumentoxfinal=0; validax=0; } if (asignadox==1) { promedio_actualxxx=0; delayx=delayx+1; if (delayx==10) { promedio_actualxxx=1; delayx=0; } } if (asignadox == 2) { promedio_actualxxx=1;} if (asignadox==3) { promedio_actualxxx=2;} if (asignadox==4) { promedio_actualxxx=3; } if (asignadox==5) { promedio_actualxxx=6; } } if (promedio_actualxx<0) { exponencialx=exponencialx+1; validax=validax+1; promedio_actualxxx=0; //fórmula if (promedio_actualxx<-10) { promedio_actualxx=-11; } switch(promedio_actualxx) { case -1: aumentoxuno=aumentoxuno+1; break; // aumento 1 mov. intermitente case -2: aumentoxuno=aumentoxuno+1; break; case -3: aumentoxuno=aumentoxuno+1; break; case -4: aumentoxuno=aumentoxuno+1; break; case -5: aumentoxdos=aumentoxdos+1; break; // aumento 2 movimiento de 1 case -6: aumentoxdos=aumentoxdos+1; break; case -7: aumentoxtres=aumentoxtres+1; break; // aumento 3 movimiento de 2 case -8: aumentoxtres=aumentoxtres+1; break; case -9: aumentoxcuatro=aumentoxcuatro+1; break; // aumento 4 movimiento de 3 case -10: aumentoxcuatro=aumentoxcuatro+1; break; case -11: aumentoxfinal=1; break; // aumento final movimiento de 8 150 case -12: aumentoxfinal=1; break; } if (exponencialx==1) {promedio_actualxxx=-1;} if (exponencialx==21) { if ((aumentoxuno==aumentoxdos) || (aumentoxuno==aumentoxtres) || (aumentoxuno==aumentoxcuatro) || (aumentoxdos==aumentoxtres) || (aumentoxdos==aumentoxcuatro) || (aumentoxtres==aumentoxcuatro)) { promedio_actualxxx=-1; } if ((aumentoxuno>aumentoxdos) && (aumentoxuno>aumentoxtres) && (aumentoxuno>aumentoxcuatro)) { promedio_actualxxx=-1; } if ((aumentoxdos>aumentoxtres) && (aumentoxdos>aumentoxcuatro)) { validax=74; } if (aumentoxtres>aumentoxcuatro) { validax=74; } if ((aumentoxcuatro>aumentoxuno) && (aumentoxcuatro>aumentoxdos) && (aumentoxcuatro>aumentoxtres)) { validax=74; } if (aumentoxfinal==1) { validax=74; } } if (exponencialx==38) {promedio_actualxxx=-1;} if (exponencialx==47) {promedio_actualxxx=-1;} if (exponencialx==55) {promedio_actualxxx=-1;} if (exponencialx==61) {promedio_actualxxx=-1;} if (exponencialx==66) {promedio_actualxxx=-1;} if (exponencialx==70) {promedio_actualxxx=-1;} if (exponencialx==73) {promedio_actualxxx=-1;} if (validax==74) { exponencialx=73; // aqui podriamos comparar, la entrada (promedio_actualxx) MODA es 2, el contador lo mandamos a 151 para que posiciones mas rapido, si es 4 lo mandamos a 255 if ((aumentoxuno==aumentoxdos) || (aumentoxuno==aumentoxtres) || (aumentoxuno==aumentoxcuatro) || (aumentoxdos==aumentoxtres) || (aumentoxdos==aumentoxcuatro) || (aumentoxtres==aumentoxcuatro)) { asignadox=1; } if ((aumentoxuno>aumentoxdos) && (aumentoxuno>aumentoxtres) && (aumentoxuno>aumentoxcuatro)) { asignadox=1; } “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” if ((aumentoxdos>aumentoxtres) && (aumentoxdos>aumentoxcuatro)) { asignadox=2; } if (aumentoxtres>aumentoxcuatro) { asignadox=3; } if ((aumentoxcuatro>aumentoxuno) && (aumentoxcuatro>aumentoxdos) && (aumentoxcuatro>aumentoxtres)) { asignadox=4; } if (aumentoxfinal==1) { asignadox=5; } aumentoxuno=0; aumentoxdos=0; aumentoxtres=0; aumentoxcuatro=0; aumentoxfinal=0; validax=0; } if (asignadox==1) { promedio_actualxxx=0; delayx=delayx+1; if (delayx==10) { promedio_actualxxx=-1; delayx=0; } } if (asignadox == 2) { promedio_actualxxx=-1;} if (asignadox==3) { promedio_actualxxx=-2;} if (asignadox==4) { promedio_actualxxx=-3; } if (asignadox==5) { promedio_actualxxx=-6; } } if (promedio_actualxx==0) { exponencialx=0; promedio_actualxxx=0; aumentoxuno=0; aumentoxdos=0; aumentoxtres=0; aumentoxcuatro=0; aumentoxfinal=0; asignadox=0; validax=0; } Deltaxx=promedio_actualxxx; if (promedio_actualxxx < 0) // yo creo que esto tampoco va. { Deltaxx = 256+promedio_actualxxx; } return Deltaxx; } int filtroY(int8 entradaY) { if (entradaY>127) { entradaYayuda=entradaY-256; } else {entradaYayuda=entradaY;} Ydiferenciadoscero=Ydiferenciaunonueve; Ydiferenciaunonueve=Ydiferenciaunoocho; Ydiferenciaunoocho=Ydiferenciaunosiete; Ydiferenciaunosiete=Ydiferenciaunoseis; Ydiferenciaunoseis=Ydiferenciaunocinco; Ydiferenciaunocinco=Ydiferenciaunocuatro; Ydiferenciaunocuatro=Ydiferenciaunotres; Ydiferenciaunotres=Ydiferenciaunodos; Ydiferenciaunodos=Ydiferenciaunouno; Ydiferenciaunouno=Ydiferenciaunocero; Ydiferenciaunocero=Ydiferencianueve; Ydiferencianueve=Ydiferenciaocho; Ydiferenciaocho=Ydiferenciasiete; Ydiferenciasiete=Ydiferenciaseis; Ydiferenciaseis=Ydiferenciacinco; Ydiferenciacinco=Ydiferenciacuatro; Ydiferenciacuatro=Ydiferenciatres; Ydiferenciatres=Ydiferenciados; Ydiferenciados=Ydiferenciauno; Ydiferenciauno=Ydiferenciacero; Ydiferenciacero=entradayayuda; SalidaYactual=((ycero*ydiferenciacero)+(yuno*ydiferenciauno)+(ydos* ydiferenciados)+(ytres*ydiferenciatres)+(ycuatro*ydiferenciacuatro)+( ycinco*ydiferenciacinco)+(yseis*ydiferenciaseis)+(ysiete*ydiferenciasie te)+(yocho*ydiferenciaocho)+(ynueve*ydiferencianueve)+(yunocero*y diferenciaunocero)+(yunocero*ydiferenciaunocero)+(yunouno*ydifere nciaunouno)+(yunodos*ydiferenciaunodos)+(yunotres*ydiferenciauno tres)+(yunocuatro*ydiferenciaunocuatro)+(yunocinco*ydiferenciaunoc inco)+(yunoseis*ydiferenciaunoseis)+(yunosiete*ydiferenciaunosiete)+ (yunoocho*ydiferenciaunoocho)+(yunonueve*ydiferenciaunonueve)+( ydoscero*ydiferenciadoscero)); SalidaY=SalidaYactual/1; if (salidaY < -128) { salidaY = -128; } if (salidaY > 127) { salidaY=127; } salidaYcero=salidaY; DeltaY=SalidaY; if (entraday==0) // esta rutina limita el movimiento del cursor a 5 muestras despues de que el raton no tuvo movimiento para evitar que el filtro no siga enviando residuos { contadoryayuda=contadoryayuda+1; if (contadoryayuda==6) { deltay=0; contadoryayuda=5; } } if (entraday!=0) { contadoryayuda=0; } promedioy (Deltay); regresoy (Promedio_actualyy); return DeltaYY; } int Promedioy(signed int Deltay) // se promedia de 0 a 255 151 ANEXOS { if (deltay!=0) // distinto de cero { reiniciotodoy=0; contadory=contadory+1; promedio_actualyy=0; if (contadory==24) // si mantienes movimiento durante 25 ciclos significa que eres movimiento deseado { promedio_actualyy=deltay; contadory=23; } } if (deltay==0) { reiniciotodoy=reiniciotodoy+1; if (reiniciotodoy==4) // si mantienes 4 ciclos con un 0 de entrada { contadory=0; reiniciotodoy=3; } promedio_actualyy=0; } return promedio_actualyy; } int regresoy(signed int promedio_actualyy ) { if (promedio_actualyy>0) { exponencialy=exponencialy+1; validay=validay+1; promedio_actualyyy=0; if (promedio_actualyy>10) { promedio_actualyy=11; } switch(promedio_actualyy) { case 1: aumentoyuno=aumentoyuno+1; break; // aumento 1 mov. intermitente case 2: aumentoyuno=aumentoyuno+1; break; case 3: aumentoyuno=aumentoyuno+1; break; case 4: aumentoyuno=aumentoyuno+1; break; case 5: aumentoyuno=aumentoyuno+1; break; case 6: aumentoyuno=aumentoyuno+1; break; case 7: aumentoydos=aumentoydos+1; break; // aumento 2 movimiento de 1 case 8: aumentoydos=aumentoydos+1; break; case 9: aumentoytres=aumentoytres+1; break; // aumento 3 movimiento de 2 case 10: aumentoytres=aumentoytres+1; break; case 11: aumentoycuatro=aumentoycuatro+1; break; // aumento final movimiento de 3 case 12: aumentoycuatro=aumentoycuatro+1; break; } if (exponencialy==1) {promedio_actualyyy=1;} if (exponencialy==21) { if ((aumentoyuno==aumentoydos) || (aumentoyuno==aumentoytres) || (aumentoyuno==aumentoycuatro) || (aumentoydos==aumentoytres) || (aumentoydos==aumentoycuatro) || (aumentoytres==aumentoycuatro)) { promedio_actualyyy=1; } if ((aumentoyuno>aumentoydos) && (aumentoyuno>aumentoytres) && (aumentoyuno>aumentoycuatro)) { promedio_actualyyy=1; } 152 if ((aumentoydos>aumentoytres) && (aumentoydos>aumentoycuatro)) { validay=74; } if (aumentoytres>aumentoycuatro) { validay=74; } if ((aumentoycuatro>aumentoyuno) && (aumentoycuatro>aumentoydos) && (aumentoycuatro>aumentoytres)) { validay=74; } if (aumentoyfinal==1) { validay=74; } } if (exponencialy==38) {promedio_actualyyy=1;} if (exponencialy==47) {promedio_actualyyy=1;} if (exponencialy==55) {promedio_actualyyy=1;} if (exponencialy==125) {promedio_actualyyy=1;} if (exponencialy==66) {promedio_actualyyy=1;} if (exponencialy==70) {promedio_actualyyy=1;} if (exponencialy==73) {promedio_actualyyy=1;} if (validay==74) // { exponencialy=73; // aqui comparamos la moda de la entrada (promedio_actualyy) la entrada que mas se repitio es la que se asigna de incremento if ((aumentoyuno==aumentoydos) || (aumentoyuno==aumentoytres) || (aumentoyuno==aumentoycuatro) || (aumentoydos==aumentoytres) || (aumentoydos==aumentoycuatro) || (aumentoytres==aumentoycuatro)) { asignadoy=1; } if ((aumentoyuno>aumentoydos) && (aumentoyuno>aumentoytres) && (aumentoyuno>aumentoycuatro)) { asignadoy=1; } if ((aumentoydos>aumentoytres) && (aumentoydos>aumentoycuatro)) { asignadoy=2; } if (aumentoytres>aumentoycuatro) { asignadoy=3; } if ((aumentoycuatro>aumentoyuno) && (aumentoycuatro>aumentoydos) && (aumentoycuatro>aumentoytres)) { asignadoy=4; } if (aumentoyfinal==1) { asignadoy=5; } aumentoyuno=0; aumentoydos=0; aumentoytres=0; aumentoycuatro=0; “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” aumentoyfinal=0; validay=0; } if (asignadoy==1) // movimiento intermitente cada 10 ciclos { promedio_actualyyy=0; delayy=delayy+1; if (delayy==10) { promedio_actualyyy=1; delayy=0; } } if (asignadoy == 2) // movimiento 1 { promedio_actualyyy=1;} if (asignadoy==3) // movimiento 2 { promedio_actualyyy=2;} if (asignadoy==4) // movimiento 3 { promedio_actualyyy=6; } if (asignadoy==5) // movimiento 3 { promedio_actualyyy=4; } } if (promedio_actualyy<0) { exponencialy=exponencialy+1; validay=validay+1; promedio_actualyyy=0; //fórmula if (promedio_actualyy<-10) { promedio_actualyy=-11; } switch(promedio_actualyy) { case -1: aumentoyuno=aumentoyuno+1; break; // aumento 1 mov. intermitente case -2: aumentoyuno=aumentoyuno+1; break; case -3: aumentoyuno=aumentoyuno+1; break; case -4: aumentoyuno=aumentoyuno+1; break; case -5: aumentoyuno=aumentoyuno+1; break; case -6: aumentoyuno=aumentoyuno+1; break; case -7: aumentoydos=aumentoydos+1; break; // aumento 2 movimiento de 1 case -8: aumentoydos=aumentoydos+1; break; case -9: aumentoytres=aumentoytres+1; break; // aumento 3 movimiento de 2 case -10: aumentoytres=aumentoytres+1; break; case -11: aumentoycuatro=aumentoycuatro+1; break; // aumento final movimiento de 3 case -12: aumentoycuatro=aumentoycuatro+1; break; } if (exponencialy==1) {promedio_actualyyy=-1;} if (exponencialy==21) { if ((aumentoyuno==aumentoydos) || (aumentoyuno==aumentoytres) || (aumentoyuno==aumentoycuatro) || (aumentoydos==aumentoytres) || (aumentoydos==aumentoycuatro) || (aumentoytres==aumentoycuatro)) { promedio_actualyyy=-1; } if ((aumentoyuno>aumentoydos) && (aumentoyuno>aumentoytres) && (aumentoyuno>aumentoycuatro)) { promedio_actualyyy=-1; } if ((aumentoydos>aumentoytres) && (aumentoydos>aumentoycuatro)) { validay=74; } if (aumentoytres>aumentoycuatro) { validay=74; } if ((aumentoycuatro>aumentoyuno) && (aumentoycuatro>aumentoydos) && (aumentoycuatro>aumentoytres)) { validay=74; } if (aumentoyfinal==1) { validay=74; } } if (exponencialy==38) {promedio_actualyyy=-1;} if (exponencialy==47) {promedio_actualyyy=-1;} if (exponencialy==55) {promedio_actualyyy=-1;} if (exponencialy==61) {promedio_actualyyy=-1;} if (exponencialy==66) {promedio_actualyyy=-1;} if (exponencialy==70) {promedio_actualyyy=-1;} if (exponencialy==73) {promedio_actualyyy=-1;} if (validay==74) { exponencialy=73; // aqui podriamos comparar, la entrada (promedio_actualyy) MODA es 2, el contador lo mandamos a 151 para que posiciones mas rapido, si es 4 lo mandamos a 255 if ((aumentoyuno==aumentoydos) || (aumentoyuno==aumentoytres) || (aumentoyuno==aumentoycuatro) || (aumentoydos==aumentoytres) || (aumentoydos==aumentoycuatro) || (aumentoytres==aumentoycuatro)) { asignadoy=1; } if ((aumentoyuno>aumentoydos) && (aumentoyuno>aumentoytres) && (aumentoyuno>aumentoycuatro)) { asignadoy=1; } if ((aumentoydos>aumentoytres) && (aumentoydos>aumentoycuatro)) { asignadoy=2; } if (aumentoytres>aumentoycuatro) { asignadoy=3; } if ((aumentoycuatro>aumentoyuno) && (aumentoycuatro>aumentoydos) && (aumentoycuatro>aumentoytres)) { asignadoy=4; } if (aumentoyfinal==1) { asignadoy=5; } aumentoyuno=0; aumentoydos=0; aumentoytres=0; aumentoycuatro=0; aumentoyfinal=0; validay=0; } 153 ANEXOS { if (asignadoy==1) { promedio_actualyyy=0; delayy=delayy+1; if (delayy==10) { promedio_actualyyy=-1; delayy=0; } } if (asignadoy == 2) { promedio_actualyyy=-1;} if (asignadoy==3) { promedio_actualyyy=-2;} if (asignadoy==4) { promedio_actualyyy=-6; } if (asignadoy==5) { promedio_actualyyy=-4; } exponencialy=0; promedio_actualyyy=0; aumentoyuno=0; aumentoydos=0; aumentoytres=0; aumentoycuatro=0; aumentoyfinal=0; asignadoy=0; validay=0; } } Deltayy=promedio_actualyyy; if (promedio_actualyyy < 0) // yo creo que esto tampoco va. { Deltayy = 256+promedio_actualyyy; } if (promedio_actualyy==0) return Deltayy; } 154 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Anexo 11. Documento de pruebas para validación de REODA-MX. 11.1. Introducción El presente documento plantea una serie de pruebas diseñadas específicamente para validar REODA-MX. Estas pruebas fueron diseñadas de acuerdo a los parámetros que se requieren evaluar durante el funcionamiento de REODA-MX. Estas pruebas deben ser aplicadas, preferentemente, a personas con tremor esencial en manos. Las pruebas son sencillas, sin embargo se requiere que el usuario tenga un conocimiento previo sobre la utilización de un ratón de computadora, con el fin de entender de manera rápida las pruebas y evitar una extensión en la aplicación de las mismas invirtiendo tiempo en explicación y corrección de instrucciones de las pruebas y posturas de la mano en relación al ratón. En todo momento las pruebas aplicadas serán supervisadas por el evaluador, con el fin de brindar asistencia al momento de realizar las mismas en caso de que el usuario así lo requiera. Antes de iniciar las pruebas, el evaluador deberá explicar con detalle en qué consiste cada una de las pruebas, así también deberá ejemplificar un caso para cada prueba con el fin de que el usuario comprenda de manera más fácil la aplicación de estas. 11.2. Explicación a los usuarios sobre funcionamiento de un ratón de computadora. Un ratón de computadora estándar es un dispositivo que permite mover el cursor de pantalla de un equipo de cómputo con el fin de manipular, a través de un entorno gráfico, las diversas opciones del sistema operativo y de las aplicaciones instaladas en el mismo. 155 ANEXOS Normalmente consta de 3 botones (izquierdo, medio y derecho), y reconoce 3 ejes de movimiento, 2 de estos de traslación (eje x, eje y) y 1 de rotación (giro de la rueda media). Cada uno de los botones tiene asignadas funciones específicas; cuando el cursor está ubicado en escritorio del sistema operativo Windows, al oprimir cada uno de ellos, realizan las siguientes funciones: Tabla A7.- Funciones de los botones de un ratón para computadora. Parámetro Función Botón derecho Se accede a un menú textual que contiene distintas opciones. Botón Izquierdo Se selecciona un área del escritorio, o bien, un ícono del mismo. Botón central Sin función. Así mismo, al oprimir dos veces consecutivas algún botón, se realizan otras funciones, como ejecutar la aplicación que enlaza el ícono seleccionado (botón izquierdo). En el caso del desplazamiento en el eje “X” y “Y” del ratón, sirve para cambiar de ubicación el cursor y así poder seleccionar otros puntos del escritorio, como seleccionar íconos distintos o navegar por el menú de programas ubicado en la parte inferior izquierda del sistema operativo Windows. La combinación de estos parámetros permite realizar actividades como ejecutar programas de edición de texto, hojas de cálculo, navegar por el internet, entretenerse con juegos, escuchar música, ver fotos, videos, etc. Todas las aplicaciones computacionales diseñadas para ser manipuladas por medio del cursor. Sin embargo, para poder desempeñar estas funciones de forma adecuada, se requiere una precisión en la posición del cursor ya que estas aplicaciones tienen áreas de delimitadas gráficamente, destinadas para realizar distintas funciones. 156 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Una persona con tremor esencial en manos puede tener dificultades para posicionar el cursor de pantalla en la posición deseada, por lo cual, con un ratón para computadora convencional les es muy difícil o prácticamente imposible utilizar las aplicaciones computacionales. El objetivo REODA-MX, que fue diseñado para personas con TE en manos, es brindar un estabilidad en el cursor, evitando lo mejor posible las vibraciones producidas por el padecimiento y logrando ubicar el cursor en la posición deseada por el usuario. Para validar REODA-MX, debe ser utilizado por personas que tengan TE en manos, tratando de realizar tareas sencillas que permitan observar el comportamiento de la utilización del cursor y comprobar su funcionamiento a través de los comentarios obtenidos por los sujetos de pruebas. El evaluador podrá asignar alguna de las siguientes calificaciones para cada uno de los parámetros evaluados en el desempeño de REODA-MX, abordados en el tema 4.1, por medio de la observación visual. Calificación Valor 0 Pésimo - Imposible 1 Muy malo – Muy difícil 2 Intolerable – Difícil 3 Regular - Tolerable 4 Aceptable - Fácil 5 Muy bueno – Muy fácil 6 Perfecto – Sin problemas A continuación se detallan cada una de las pruebas diseñadas y el objetivo de las mismas. 157 ANEXOS Prueba 1.- Adaptación al funcionamiento de un ratón de computadora estándar. Requerimiento: Conocer el funcionamiento del ratón para computadora. Objetivo: Adaptación del usuario a las funciones básicas de un ratón de computadora. Explicación de la prueba: La prueba consiste en que el usuario manipule el ratón, trasladando el cursor entre varios puntos y seleccionando con el botón izquierdo una zona del escritorio, así como oprimiendo el mismo botón dos veces consecutivas sobre un ícono. Durante la duración de la prueba, se documentará cada 8 milisegundos la posición que el cursor adquiera, con el fin de utilizar estos datos para un mejoramiento de REODA-MX, en caso de ser requerido. Antes de realizar la prueba, el evaluador realizará los siguientes pasos: 1.- Preguntará al usuario cual es la mano que utiliza con mayor frecuencia para realizar actividades comunes. Dependiendo de la mano a utilizar, se ajustarán los sonido/Dispositivos botones. e Inicio/panel de control/Hardware impresoras/Mouse/Botones/Intercambiar y botones primario y secundario. Además verificar que la velocidad para presionar un botón dos veces consecutivas sea lenta y que el giro de la rueda media solo haga 1 cambio de línea por giro. 2.- Ejecutará una aplicación que adquirirá la posición del cursor. 158 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Diseño de la prueba. El usuario tomará el ratón convencional con la mano seleccionada y realizará la siguiente secuencia de instrucciones: a) b) c) d) Trasladar el cursor al punto medio de la pantalla y esperar 5 segundos. Trasladar el cursor al punto A y esperar 3 segundos. Trasladar el cursor al punto B y esperar 3 segundos. Trasladar el cursor al punto C y presionar el botón izquierdo (para diestro) o derecho (para zurdo) y sin soltar el botón, trasladar el cursor al punto D donde soltará el botón. e) Trasladar el cursor al punto E y presionará dos veces consecutivas el botón izquierdo (para diestro) o derecho (para zurdo). f) Fin de la prueba. Finalizando la prueba, el usuario tomará el ratón TrackBall y repetirá la prueba. Tiempo estimado de la duración de la prueba: 120 segundos. 159 ANEXOS Figura A13.- Fondo de pantalla utilizado para desarrollar la prueba 1. Se harán observaciones sobre el proceso de mantener el cursor en un punto fijo, sobre el proceso de oprimir un botón y mantenerlo así durante un trayecto y sobre el proceso de doble presión de un botón. Se le preguntará al usuario sobre la experiencia de haber utilizado el ratón y sobre los puntos antes mencionados. Se identificará cuál es el mejor dispositivo para mover el cursor de lugar en cuanto a facilidad de uso (dedo o muñeca) y rapidez. 160 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Prueba 2.- Estabilidad del cursor en un punto fijo. Requerimiento: Analizar la estabilidad del cursor debido a la acción del tremor en manos en el ratón. Objetivo. Comprobar el funcionamiento del filtro implementado para la eliminación de vibraciones en el cursor. Explicación de la prueba. La prueba consiste en mantener el cursor en un punto fijo. Para esto el usuario solo deberá sujetar el ratón en una posición de uso normal y tratar de mantener la posición del ratón en un punto fijo, es decir que no traté de desplazarlo intencionalmente, solo deberá moverse por la acción del tremor en manos que le inyecte al ratón. Esta prueba se realizará con el REODA-MX y los programas computacionales Mouse Cage y Steady Mouse. Diseño de la prueba El usuario tomará el ratón estándar con la mano seleccionada y realizará la siguiente secuencia de instrucciones: a) El usuario trasladará el cursor al punto medio de la pantalla (punto rojo) y mantendrá el cursor estable en ese punto durante 10 segundos. b) Fin de de la prueba. Tiempo estimado de la duración de la prueba: 1 minuto. 161 ANEXOS Figura A14.- Fondo de pantalla utilizado para desarrollar la prueba 2. Se harán observaciones sobre la estabilidad del cursor. En caso de que el cursor cambie de posición, hacer la anotación del porqué se movió. Estabilidad del cursor: Se refiere a la capacidad que el ratón tuvo para mantener una posición fija, deseada por el usuario; si el cursor no se movió aun cuando el ratón se desplazó considerablemente o bien, si el cursor seguía “vibrando” aún cuando el usuario intentó mantener el cursor en una posición fija. 162 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Prueba 3.- Velocidad de movimiento del cursor respecto a la velocidad del ratón. Requerimiento: Analizar la velocidad de desplazamiento que tiene en el cursor debido al desplazamiento intencional del ratón que inyecta un usuario con TE en manos. Objetivo: Comprobar y, en caso de ser necesario, ajustar los valores asignados para el posicionamiento aproximado y posicionamiento fino del cursor. Explicación de la prueba. La prueba consiste en que el usuario mueva el cursor de entre distintos puntos predeterminados; los movimientos del cursor entre puntos cercanos deducen desplazamientos del ratón lentos y los movimientos del cursor entre puntos lejanos deducen desplazamientos del ratón más rápidos. De tal modo que, para trasladar el cursor de un punto lejano a otro, se puede aumentar la velocidad del desplazamiento del cursor. Esta prueba se realizará con REODA-MX y con los programas computacionales Mouse Cage y Steady Mouse. Para esto habrá una primera etapa de entrenamiento de la mano. Se aplicará la prueba sin realizar observaciones. Una vez concluida la prueba se aplicará nuevamente incluyendo observaciones. Diseño de prueba: El usuario tomará el ratón estándar con la mano seleccionada y realizará la siguiente secuencia de instrucciones: a) Trasladar el cursor al punto medio de la pantalla (punto rojo) y esperar 5 segundos. b) Trasladar el cursor al punto A y esperar 3 segundos. 163 ANEXOS c) d) e) f) g) h) i) Trasladar el cursor al punto B y esperar 3 segundos. Trasladar el cursor al punto C y esperar 3 segundos. Trasladar el cursor al punto E y esperar 3 segundos. Trasladar el cursor al punto F y esperar 3 segundos. Trasladar el cursor al punto G y esperar 3 segundos. Trasladar el cursor al punto medio y esperar 3 segundos. Fin de la prueba. Tiempo estimado de la duración de la prueba: 90 segundos Figura A15.- Fondo de pantalla utilizado para desarrollar la prueba 3. Se harán observaciones sobre el proceso de trasladar el cursor, haciendo observaciones sobre la velocidad del cursor al trasladarlo entre puntos cercanos y entre puntos lejanos. 164 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Se le preguntará al usuario sobre la experiencia de haber utilizado el ratón y sobre la velocidad con la que lo hizo el cursor anotando los puntos más relevantes. También se le hará una encuesta sobre el uso de las 3 aplicaciones para el control del cursor, pidiéndole que califique del 0 al 10 la facilidad para posicionar el cursor, así como también que comente las observaciones que tuvo para cada aplicación. Posicionamiento deseado del cursor: Se refiere a la facilidad que tuvo el usuario al posicionar el cursor en una zona pequeña. Relación traslado ratón-cursor: Se refiere a la relación de movimiento que tuvo el cursor en relación al movimiento del ratón; si tuvo que mover grandes distancias el ratón para que el cursor se moviera un poco o si con pequeños movimientos del ratón, el cursor ya cambió de extremo su posición. 165 ANEXOS Prueba 4.- Manipulación del botón secundario del ratón. Requerimiento: Analizar la habilidad del usuario durante uso del botón secundario del ratón. Objetivo. Analizar la habilidad del usuario con TE en manos para la realización de tareas que implican la utilización de botones del ratón. Explicación de la prueba. La prueba consiste en posicionar y mantener el cursor arriba de un icono ubicado en el escritorio; con el botón derecho del ratón (para diestros) o izquierdo (para zurdos), presionarlo y soltarlo, seleccionar la opción copiar con el botón contrario al oprimido; trasladarse a otro punto del escritorio y pedirle al usuario que vuelva a presionar el botón derecho del ratón (para diestros) o izquierdo (para zurdos) y elija la opción pegar. Diseño de la prueba El usuario tomará el ratón estándar con la mano seleccionada y realizará la siguiente secuencia de instrucciones: a) Trasladar el cursor al punto medio de la pantalla (punto rojo) y esperar 5 segundos. b) Trasladar el cursor al punto A y situar el cursor arriba del ícono que se encuentre ahí. c) Presionar y soltar el botón derecho (para diestros) o izquierdo (para zurdos), situar el cursor en la posición “copiar” y con el botón contrario presionar y soltar. d) Trasladar el cursor al cuadro rojo junto al punto B y presionar y soltar el botón derecho (para diestros) o izquierdo (para zurdos), situar el cursor en la posición “pegar” y con el botón contrario presionar y soltar. e) Fin de la prueba. 166 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Tiempo estimado de la duración de la prueba: 20 segundos Figura A16.- Fondo de pantalla utilizado para desarrollar la prueba 4. Se harán observaciones sobre el proceso de posicionar el cursor en las opciones “copiar” y “pegar”, haciendo observaciones sobre la habilidad que el usuario tuvo al realizar estas operaciones. Se le preguntará al usuario sobre la experiencia de haber posicionado el cursor en estas pequeñas, anotando los comentarios que se consideren relevantes. Uso de los botones: Se refiere a la facilidad que tuvo el usuario al utilizar los recursos de los botones con el cursor fijo y en movimiento. Este parámetro se relaciona con diseño físico del ratón 167 ANEXOS Prueba 5.- Manipulación del botón primario del ratón. Requerimiento: Analizar la habilidad del usuario durante uso del botón secundario del ratón. Objetivo. Analizar la habilidad del usuario con TE en manos para la realización de tareas que implican la utilización de botones del ratón. Explicación de la prueba. La prueba consiste en posicionar el cursor en un icono ubicado en el escritorio y con el botón izquierdo del ratón (para diestros) o botón derecho (para zurdos), presionarlo y desplazar el cursor a otra ubicación; una vez llegado al punto de destino soltar el botón. Diseño de la prueba El usuario tomará el ratón estándar con la mano seleccionada y realizará la siguiente secuencia de instrucciones: a) Trasladar el cursor al punto medio de la pantalla (punto rojo) y esperar 5 segundos. b) Trasladar el cursor al punto A y situar el cursor arriba del ícono que se encuentre ahí. c) Presionar y no soltar el botón derecho (para diestros) o izquierdo (para zurdos) d) Trasladar el cursor con el ícono al cuadro junto punto B y soltar el botón. e) Fin de la prueba. Tiempo estimado de la duración de la prueba: 20 segundos 168 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Figura A17.- Fondo de pantalla utilizado para desarrollar la prueba 5. Se harán observaciones sobre el proceso de cambiar de ubicación un ícono a través del escritorio, haciendo observaciones sobre la habilidad del usuario para trasladar el ícono a una posición específica. Se le preguntará al usuario sobre la experiencia de haber utilizado este recurso y la habilidad que tuvo para evitar ubicar el ícono en un punto específico, anotando los comentarios que se consideren relevantes. 169 ANEXOS Prueba 6.- Manejo del cursor a través de rutas en el escritorio para ejecutar un programa. Requerimiento: Analizar el posicionamiento del cursor a través de ubicaciones en el escritorio que permiten ejecutar aplicaciones a través de la barra de inicio del sistema operativo Windows. Objetivo. Comprobar y, en caso de ser necesario, ajustar los parámetros necesarios para desplazar el cursor de forma adecuada en la barra de inicio del sistema operativo Windows. Explicación de la prueba. La prueba consiste en pedirle al usuario que ejecute la aplicación “paint”, ubicada en la barra de inicio y programas del sistema operativo Windows. Por medio de la observación visual del desplazamiento del cursor se podrá concluir si se requiere un ajuste en los parámetros del filtro o bien si el desempeño para esta tarea es el adecuado. Diseño de la prueba El usuario utilizará REODA-MX, Mouse Cage y Steady Mouse y, con la mano seleccionada, realizará la siguiente secuencia de instrucciones: a) Trasladar el cursor al punto medio de la pantalla (punto rojo) y esperar 5 segundos. b) Trasladar el cursor a la barra de tareas, en a posición de “inicio”. c) Presionar y soltar el botón izquierdo (para diestros) o derecho (para zurdos). d) Trasladar el cursor a la sección “todos los programas” y esperar ahí hasta que se despliegue un nuevo menú. 170 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” e) Trasladar el cursor hasta arriba del menú, donde se encuentra la sección “Accesorios”. f) Presionar y soltar el botón izquierdo (para diestros) o derecho (para zurdos). g) En el nuevo menú desplegado, trasladar el cursor a la sección “Paint”. h) Presionar y soltar el botón izquierdo (para diestros) o derecho (para zurdos). i) Fin de la prueba. Tiempo estimado de la duración de la prueba: 30 segundos Figura A18.- Fondo de pantalla utilizado para desarrollar la prueba 6. Se harán observaciones sobre el proceso de ubicar el cursor a través de las rutas del menú inicio, haciendo observaciones sobre la habilidad del usuario para trasladar el cursor a una posición específica. 171 ANEXOS Se le preguntará al usuario sobre la experiencia de haber trasladado el cursor a través de zonas reducidas, anotando los comentarios que se consideren relevantes. Traslado deseado del cursor: Se refiere a la facilidad que tuvo el usuario para trasladar por la ruta deseada el cursor. 172 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Prueba 7.- Dibujo de una espiral en pantalla por medio del ratón. Requerimiento: Analizar la habilidad del usuario para dibujar una espiral por medio del manejo del ratón. Objetivo. Comprobar el funcionamiento del filtro implementado en REODA-MX. Explicación de la prueba. El usuario manipulará un ratón convencional y tratará de dibujar una espiral en pantalla. Los puntos en pantalla adquiridos por el cursor se irán almacenando e un documento de texto. Posteriormente el usuario repetirá la misma prueba utilizando el REODA-MX y los programas computacionales Mouse Cage y Steady Mouse. Diseño de la prueba El usuario tomará el instrumento a utilizar y por medio de un fondo de pantalla, el usuario intentará desplazar el cursor por encima de la línea dibujada. Figura A19.- Fondo de pantalla utilizado para desarrollar la prueba 7. 173 ANEXOS Una vez finalizada la prueba, se le preguntará al usuario sobre el control que tuvo en el traslado del cursor por la línea de espiral designada. Se anotarán las observaciones y se calificarán. 174 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Prueba 8.- Manipulación de iconos pequeños en aplicaciones. Requerimiento: Analizar el posicionamiento del cursor dentro de pequeñas áreas, como iconos de algunas aplicaciones donde la zona de acción que permite el icono es muy reducida. Objetivo. Comprobar y, en caso de ser necesario, ajustar los parámetros necesarios para llevar a cabo el posicionamiento fino del cursor. Explicación de la prueba. Una vez dentro de la aplicación “paint”, se le pedirá que dibuje 3 líneas, tratando de formar un triángulo con estas, cambiando el color del lápiz cada vez que dibuje una línea nueva. Concluida esta tarea, se le pedirá al usuario que dibuje 3 figuras distintas, seleccionando en la barra de figuras la flecha adjunta y posteriormente 1 forma, realizando la tarea 3 veces. Finalmente se le pedirá que borre 1 figura y 1 línea de las que haya plasmado en la zona de dibujo. Por medio de la observación visual del desplazamiento del cursor se podrá concluir si se requiere un ajuste en los parámetros para el ajuste fino o bien si el desempeño para esta tarea es el adecuado. Diseño de la prueba El usuario utilizará REODA-MX, Mouse Cage y Steady Mouse, y con la mano seleccionada realizará la siguiente secuencia de instrucciones: a) Una vez estando dentro de la aplicación “Paint”, trasladar el cursor a la zona de herramientas, arriba del lápiz y presionar y soltar el botón izquierdo (para diestros) o derecho (para zurdos). b) Trasladar el cursor a la zona de dibujo y cuando el usuario quiera iniciar con la línea, presionar el mismo botón y sin soltarlo trasladar el cursor a la posición donde quiera finalizar la línea. 175 ANEXOS c) Al llegar a la posición final, soltar el botón. d) Trasladar el cursor a la zona de colores, situar el cursor sobre algún color deseado y presionar y soltar el botón. e) Trasladar nuevamente el cursor a la zona de dibujo y cuando el usuario quiera iniciar con la siguiente línea, presionar el mismo botón y sin soltarlo trasladar el cursor a la posición donde quiera finalizar la línea. f) Al llegar a la posición final, soltar el botón. g) Trasladar el cursor a la zona de colores, situar el cursor sobre algún color deseado y presionar y soltar el botón. h) Trasladar nuevamente el cursor a la zona de dibujo y cuando el usuario quiera iniciar con la última línea, presionar el mismo botón y sin soltarlo trasladar el cursor a la posición donde quiera finalizar la línea. i) Al llegar a la posición final, soltar el botón. j) Trasladar el cursor a la zona de “formas” y posicionar el cursor arriba de la flecha con dirección hacia abajo, ubicada al costado derecho de la zona. k) Oprimir y soltar el botón l) Ubicar el cursor sobre la forma de figura que el usuario deseé plasmar en la zona de dibujo. m) Oprimir y soltar el botón. n) Trasladar el cursor a la zona de dibujo. o) Oprimir el botón y sin soltarlo, trasladar el cursor a una nueva posición. p) Al llegar a la posición deseada soltar el botón. q) Trasladar nuevamente el cursor a la zona de “formas” y posicionar el cursor arriba de la flecha con dirección hacia abajo, ubicada al costado derecho de la zona. r) Oprimir y soltar el botón s) Ubicar el cursor sobre otra forma de figura que el usuario deseé plasmar en la zona de dibujo. t) Oprimir y soltar el botón. u) Trasladar el cursor a la zona de dibujo. v) Oprimir el botón y sin soltarlo, trasladar el cursor a una nueva posición. w) Al llegar a la posición deseada soltar el botón. x) Trasladar nuevamente el cursor a la zona de “formas” y posicionar el cursor arriba de la flecha con dirección hacia abajo, ubicada al costado derecho de la zona. y) Oprimir y soltar el botón 176 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” z) Ubicar el cursor sobre la forma de figura que el usuario deseé plasmar en la zona de dibujo. aa)Oprimir y soltar el botón. bb)Trasladar el cursor a la zona de dibujo. cc) Oprimir el botón y sin soltarlo, trasladar el cursor a una nueva posición. dd)Al llegar a la posición deseada soltar el botón. ee)Trasladar el cursor a la zona de “herramientas” y posicionar el cursor sobre la goma. ff) Oprimir y soltar el botón. gg) Trasladar el cursor a la zona de dibujo y ubicarlo en un extremo de una línea que el usuario elija para borrar. hh)Cuando el usuario se disponga a borrar, oprimir y sin soltar el botón, trasladar el cursor por toda la línea que desea borrar. ii) Al terminar esta tarea el usuario deberá soltar el botón y trasladar el cursor a una figura que el usuario desee borrar. jj) Cuando el usuario se disponga a borrar, oprimir y sin soltar el botón, trasladar el cursor por toda la figura a borrar. kk) Al terminar esta tarea el usuario deberá soltar el botón. ll) Fin de la prueba. Tiempo estimado de la duración de la prueba: 3 minutos. 177 ANEXOS Figura A20.- Fondo de pantalla utilizado para desarrollar la prueba 8. Se harán observaciones sobre el proceso de ubicar el cursor en pequeñas zonas de trabajo, haciendo observaciones sobre la habilidad del usuario para trasladar el cursor a una posición específica y el uso de los botones dentro de estas áreas. Se le preguntará al usuario sobre la experiencia de haber trasladado y posicionado el cursor en zonas reducidas, anotando los comentarios que se consideren relevantes. 178 “MODELADO, DISEÑO, CONSTRUCCIÓN Y PRUEBAS DE UN RATÓN DE COMPUTADORA PARA PERSONAS CON TREMOR EN MANOS” Finalmente, los parámetros evaluados durante el transcurso de la prueba fueron: Tabla A8.- Parámetros evaluados durante la aplicación de las pruebas. Parámetro Calificación otorgada por el evaluador Estabilidad del cursor (Prueba 2). Posicionamiento deseado del cursor (Prueba 3 y 8). Relación de traslado ratón-cursor (Prueba 3). Uso del botón secundario (Prueba 4). Uso del botón primario (Prueba 5). Traslado deseado del cursor (Prueba 6 y 7). USO GENERAL DE REODA-MX. Tiempo total de las pruebas: 15 minutos 179