Você está na página 1de 10

FASE DE DESARROLLO II

ADQUISICIÓN DE SEÑALES EMG


(Detección de movimientos de Extensión y Flexión)
ADQUISICIÓN DE SEÑAL – DESPLIEGUE
Y ALMACENAMIENTO EN SOFTWARE

JENNIFER NATHALY MUÑOZ RENGIFO


FERNANDO ARIAS
LEANDRO ORDÓÑEZ ANTE

Ing. JUAN SEBASTIAN CABRERA

UNIVERSIDAD DEL CAUCA


FACULTAD DE INGENIERIA ELECTRONICA Y TELECOMUNICACIONES
POPAYÁN 2008.
SEGUNDA FASE DE DESARROLLO

1. DESCRIPCIÓN DE PROCEDIMIENTOS REALIZADOS.

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.

Control del Puerto Paralelo desde Matlab

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.

El puerto paralelo esta conformado por 3 registros o puertos

– Puerto de Datos: 8 bits bidireccionales

– Puerto de Estado: 5 bits de solo lectura (entrada de datos)

– Puerto de Control: 4 bits bidireccionales


Figura 1. Puerto paralelo

Los cuales están identificados de la siguiente manera:

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 = daqhwinfo;

>> out.InstalledAdaptors

Lo que da como resultado en este caso:

ans =

'parallel'

'winsound'

Una vez que Matlab ha reconocido el PP, ejecutamos:

>> daqhwinfo('parallel')
ans =

AdaptorDllName: [1x50 char]

AdaptorDllVersion: '2.7 (R14SP3)'

AdaptorName: 'parallel'

BoardNames: {'PC Parallel Port Hardware'}

InstalledBoardIds: {'LPT1'}

ObjectConstructorName: {'' '' 'digitalio('parallel','LPT1')'}

Lo que nos permite ver información detallada del puerto paralelo para su programación.

Después de haber verificado toda la información del puerto en el sistema se procede a


implementar el código que nos permita recibir los datos, para esto se empieza por crear un objeto
de tipo DIO por medio de la función ‘digitalio’ de la siguiente manera:

>> parport = digitalio('parallel','LPT1');

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í:

>> addline(parport,0:7,0,'in')% los 8 pines de datos

>> addline(parport,0:2,2,'in')% 3 de los pines de control

Se debe tener en cuenta que NO se permite tener pines combinados (entrada/salida) en un


puerto.

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)

Se usa la función ‘putvalue’ para escribir datos en el puerto:

>>putvalue(parport.Line(1:8),data)%data es un valor decimal de 8 bits

Se usa la función ‘getvalue’ para leer datos del puerto:

>> lineval = getvalue(parport.Line(1:11))% leer 11 bits del puerto


En la implementación de la comunicación con el computador para transferir los datos de las
señales electromiográficas digitalizadas provenientes del PIC, el cual envía 10 bits de datos y un bit
de control que permite saber en que momento debe recibirse el dato de la señal para ser
almacenado.

El siguiente es el archivo en Matlab para la recepción de datos recibir.m:

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

Bandera es el bit de control para recibir cada dato de la señal digital.

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:

• Las funciones M establecidas


• El motor de adquisición de datos
• Los manejadores (drivers) de la tarjeta de adquisición de datos (en este caso, la de sonido)

Como se muestra en la figura 2, estos componentes permiten intercambiar información entre


Matlab y el hardware de adquisición de datos.

Figura 2. Componentes del toolbox de adquisición de datos.

Propiedades

Con el manejo de las propiedades es posible controlar el comportamiento de la aplicación. Las


propiedades contienen información sobre la configuración del hardware.
Datos

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:

• Crear dispositivos de objetos que proporcionan un camino de Matlab al hardware y permite


controlar el comportamiento de la aplicación
• Capturar datos o sacar datos
• Configurar las propiedades
• Evaluar el estado y los recursos del hardware de adquisición

El motor de adquisición de datos

Es una librería de enlace dinámico (.dll) en forma de archivo MEX que:

• 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

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’)

2. Agregar canales. Agregar un canal de hardware (E/S analógicas).

addchannel(ai,1);

3. Configurar propiedades. Configurar la tasa de muestreo deseada y tiempo de captura de


muestras

set(ai,'SampleRate',8000)% minima frecuencia de muestreo 8000HZ

set(ai,'SamplesPerTrigger',160000)% 20 segundos de muestreo

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.

Figura 3. Softscope de Matlab.

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.

Você também pode gostar