Escolar Documentos
Profissional Documentos
Cultura Documentos
La segunda fase de desarrollo tiene como objetivo digitalizar la señal adquirida de la salida del
amplificador EMG para posteriormente enviar esta señal digitalizada a un computador, donde será
desplegada en una gráfica de voltaje EMG contra tiempo.
Para esto se abordaron dos posibles soluciones:
1.1 Digitalización de señal EMG usando un PIC (18F452), envío de datos al computador a
través del puerto paralelo y adquisición de los mismos mediante una rutina de Matlab.
1.2 Adquisición de la Señal a través de la tarjeta de sonido de un computador usando el
toolbox de Matlab para adquisición de datos: Data Acquisition Toolbox.
Para la primera solución se implementó sobre el PIC una rutina programada en lenguaje C que
permitía digitalizar la señal con una frecuencia de muestreo de 2 kHz con una resolución de 10
bits, además de un bit de sincronización que cambiaba de estado cada vez que el Conversor A/D
procesaba una muestra. Cada muestra obtenida era enviada a dos de los puertos del
microcontrolador para, posteriormente enviarlos a un PC a través del puerto paralelo.
El puerto paralelo debe recibir las señales digitales provenientes del PIC para que tengan el
respectivo procesamiento en el PC, MATLAB se encarga de hacer la lectura de estos valores por
este puerto, el cual permite obtener la información a la tasa de baudios requerida.
La adquisición de datos en MATLAB se maneja por medio de los subsistemas DIO (Entradas-Salidas
Digitales) los cuales están diseñados para transferir valores digitales desde y hacia el hardware,
estos valores pueden ser en forma de bits (o líneas) o como puertos (típicamente formados por 8
líneas), un objeto DIO puede asociarse al puerto paralelo o a otra tarjeta de adquisición.
Si ID = 0 Puerto de Datos
Si ID = 1 Puerto de Estado
Si ID = 2 Puerto de Control
Para el puerto paralelo, el dispositivo puede ser LPT1, LPT2 o LPT3 y las direcciones base de estos
puertos generalmente son: 378, 278 y 3BC respectivamente.
Para obtener información de los adaptadores y de los Ids soportados se ejecuta la función
‘daqhwinfo’ en la ventana de comandos así:
>> out.InstalledAdaptors
ans =
'parallel'
'winsound'
>> daqhwinfo('parallel')
ans =
AdaptorName: 'parallel'
InstalledBoardIds: {'LPT1'}
Lo que nos permite ver información detallada del puerto paralelo para su programación.
Una vez creada la entrada digital del PP, lo que sigue es asignar que pines serán para entrada y
cuales para salida. Para lo que utilizamos la función ‘addline’, en este caso solo se necesita
configurar los pines del puerto de datos y los pines 1, 14, 16 del puerto de control como entradas,
así:
A cada línea se le asocia un índice (Index), que es el que usa MATLAB para acceder a los pines y
con la propiedad ‘Line’ tenemos acceso a estos índices
>> parport.Line(1:11)
clear all
clc
A=[];
parport = digitalio('parallel','LPT1');
addline(parport,0:7,0,'in');
addline(parport,0:2,2,'in');
bandera=getvalue(parport.Line(11));
if (bandera==0)
datos = getvalue(parport.Line(1:8));
datos1 = getvalue(parport.Line(9));
datos2 = getvalue(parport.Line(10));
datos3 = [datos,datos1,datos2]
A=[A;datos3]
end
Además de implementar el código para el control del puerto paralelo que permita la adquisición
de datos, se deben realizar las configuraciones correspondientes en la BIOS del PC (accesible en
unos PCs con la tecla F2) para que el puerto LPT1 pueda actuar como un dispositivo de entrada y
salida, lo que va a permitir usar los pines del 2 al 9 como de entrada.
La segunda alternativa que se consideró como solución consistió en la adquisición de la señal EMG
proveniente del amplificador a través de la tarjeta de sonido de un computador. Para esto, al igual
que en el caso anterior se usó la toolbox de adquisición de datos de Matlab:
Control de la tarjeta de sonido desde Matlab
De la misma manera que con el puerto paralelo, el control de la tarjeta de sonido se realiza
mediante el toolbox de adquisición de datos de MATLAB el cual se divide en tres componentes
principales:
Propiedades
Pueden ser datos provenientes de un sensor conectado a un subsistema de entrada analógica para
ser almacenados en Matlab o también pueden ser datos de salida de Matlab a un actuador
conectado a un subsistema de salida analógica.
Eventos
Un evento ocurre en un tiempo particular una vez que ciertas condiciones se hayan cumplido y se
produzcan una o más acciones predeterminadas. Los eventos solo pueden generarse después de
haber configurado las propiedades correspondientes. Una forma de utilizar los eventos puede ser
el analizar o graficar datos una vez que se adquiere un número predeterminado de ellos.
Funciones M
Para ejecutar cualquier tarea con la aplicación de adquisición de datos, debe llamarse algunas
funciones M. Entre otras cosas, estas funciones permiten:
• Guarda los dispositivos de objetos y sus valores asociados de configuración que controlan la
aplicación de adquisición de datos
• Controla la sincronización de eventos
• Controla el almacenaje de datos capturados o en espera de ser sacados
Mientras el motor ejecuta estas tareas, puede usarse Matlab para ejecutar otras tareas como el
análisis de los datos adquiridos. En otras palabras, el motor y Matlab son asíncronos.
El adaptador del manejador del hardware, o simplemente el manejador, es una interfaz entre el
motor de adquisición de datos y el manejador de la tarjeta. El propósito principal del adaptador es
pasar información entre Matlab y la tarjeta adquisitora a través del manejador (driver)
generalmente proporcionado por el fabricante. En la siguiente tabla se muestran las tarjetas
soportadas por el toolbox de adquisición de datos.
Adquisición de Datos
Para realizar la sesión de un sistema de adquisición de datos se realizan los siguientes pasos:
1. Creación del objeto de tipo dispositivo. Crear el objeto del canal analógico de entrada ‘ai’ para
la tarjeta de sonido.
ai=analoginput(‘winsound’)
addchannel(ai,1);
4. Adquirir datos e Iniciar la adquisición. Cuando terminen de adquirir todos los datos, ‘ai’
automáticamente detiene la ejecución.
start(ai)
data = getdata(ai);
plot(data)
5. Limpiar el espacio de trabajo. Una vez que ya no se requiera utilizar ‘ai’, debe eliminarse de la
memoria y del espacio de trabajo de Matlab.
delete(ai)
clear ai
Para las pruebas realizadas sobre el circuito amplificador EMG, se utilizaron algunas de las
herramientas que dispone Matlab en la toolbox de adquisición de datos:
Softscope: El softscope es una interfaz gráfica interactiva para mostrar en pantalla datos en
tiempo de ejecución y almacenarlos en arreglos de Matlab o archivos *.mat.
demoai_fft: crea un objeto de tipo entrada analógica asociado con el adaptador de la tarjeta de
sonido. La señal de entrada y su espectro son desplegados en tiempo de ejecución.
Figura 4. demoai_fft.
2. PRUEBAS Y RESULTADOS.
Después de realizar todas las pruebas necesarias para adquirir los datos por el puerto paralelo y a
pesar de realizar las configuraciones pertinentes para habilitar la lectura de datos por este medio y
de utilizar diferentes drivers, no fue posible obtener los datos provenientes del PIC, sin embargo,
las consultas posteriores referentes al tema permitieron establecer que la configuración de este
puerto en el sistema operativo Windows XP no admite su lectura ya que tiene demasiadas
restricciones de seguridad.
Por lo tanto se opto trabajar en la adquisición de datos a través de la tarjeta de sonido, de tal
manera que después de seguir el procedimiento descrito anteriormente, se realizaron pruebas de
las cuales se obtuvo resultados satisfactorios, logrando desplegar y almacenar 10 muestras de
señales corresponedientes a los movimientos de extensión y flexión. Estas muestras serán
utilizadas en la siguiente fase de desarrollo sometiéndolas a un proceso de extracción de
características que permitan identificar que tipo de movimiento se desea realizar.