Escolar Documentos
Profissional Documentos
Cultura Documentos
En general, Matlab puede realizar la adquisicin de seal externa empleando hardware de varias marcas:
los soportados son advantech, mcc, nidaq (figura 1). En el caso de un PC que incluye una tarjeta de
audio (figura 2a), los terminales se pueden ver en la (figura 2b). Como se puede ver, la tarjeta de audio
del PC consta de 2 o 3 conectores cilndricos que en conjunto se denominan puerto de audio y que
permiten realizar las siguientes tareas:
a) capturar la seal del micrfono (color rosado),
b) capturar audio procedente del exterior (color verde) y
c) enviar seal de audio hacia el exterior: 2 auriculares o 2 altavoces (color celeste). El conector
denominado Jack 3.5 (mm) cuenta con 3 contactos (figura 2c).
Figura 1. Adquisicin de seal externa por medio de hardware de marca National Instruments (NI) y measurement
computing (MCC)
(a)
(b)
(c)
Figura 2. (a) Adquisicin mediante tarjeta de audio, (b) Terminales de la tarjeta de audio en un PC, (c) Pines del
puerto de salida que tiene dos canales que van hacia los dos altavoces (contactos 1 y 2). El contacto 1 es tierra.
Para ver toda la ayuda referente a objetos, funciones, demos, etc sobre adquisicin:
>> daqhelp
Execution.
daqdevice/start - Start object running.
stop - Stop object running and logging/sending.
trigger - Manually initiate logging/sending for running object.
daqdevice/wait - Wait for the object to stop running.
General.
binvec2dec - Convert binary vector to decimal number.
daq/private/clear - Clear data acquisition object from the workspace.
daqcallback - Display event information for specified event.
daqfind - Find specified data acquisition objects.
daqmem - Allocate or display memory for one or more device
objects.
daqread - Read Data Acquisition Toolbox (.daq) data file.
daqregister - Register or unregister adaptor DLLs.
daqreset - Delete and unload all data acquisition objects and
DLLs.
daqdevice/delete - Remove data acquisition objects from the engine.
dec2binvec - Convert decimal number to binary vector.
ischannel - Determine if object is a channel.
isdioline - Determine if object is a line.
isvalid - Determine if object is associated with hardware.
isrunning - Determine if object is running.
length - Determine length of data acquisition object.
daq/private/load - Load data acquisition objects from disk into MATLAB
workspace.
makenames - Generate cell array of names for naming channels/lines.
obj2mfile - Convert data acquisition object to MATLAB code.
daq/private/save - Save data acquisition objects to disk.
showdaqevents - Display summary of event log.
size - Determine size of data acquisition object.
softscope - Data Acquisition oscilloscope GUI.
This demo gives examples on using the get/set notation, dot notation,
and named index notation for obtaining information about the channel
and for configuring the channel for your acquisition.
out = daqhwinfo;
out.InstalledAdaptors
Si se tuviese conectados algunos dispositivos de adquisicin, podramos obtener algo como lo siguiente:
ans =
'advantech'
'mcc'
'nidaq'
'parallel'
'winsound'
Observacin: en el anexo 1 se explica el empleo de una daq de National Instruments y el uso del objeto
daq en las nuevas versiones de Matlab.
Como primer paso se crea el objeto de entrada analgica con la ayuda de la funcin de Matlab
(analoginput).
'adaptor': especifica el nombre del hardware a usar: como ya se dijo, los adaptadores soportados son
advantech, mcc, nidaq. Si se trata de la tarjeta de sonido que est incluida en la placa madre del PC, el
controlador empleado es winsound.
ID: Es el identificador del dispositivo de hardware que puede ser especificado por un nmero o por una
cadena de caracteres (ejemplo 'ni'). Si ID est asociado con una tarjeta de sonido, el Data Acquisition
Toolbox asocia automticamente cada tarjeta de sonido con un valor de ID entero. Si este ID es 0, no es
necesario especificarlo. As, la creacin del objeto de entrada analgica quedara de la siguiente manera:
Si hacemos click en el botn derecho de la variable AI (figura 5), obtendremos varias opciones.
Figura 5. Click en el botn derecho de la variable AI y seleccionar Display Hardware Info para obtener informacin
del objeto
Si en la figura 5 hacemos click en la opcin Display Hardware Info, obtendremos la siguiente informacin:
(Revisar cada una de las caractersticas)
Si se hace doble click en la variable chan del workspace, apareceran sus propiedades (figura 6a). Se
puede ver que consta como monofnico, es decir, la adquisicin se la realiza por cualquiera de los dos
canales de ingreso (izquierdo o derecho).
DEBER:
Es posible muestrear dos seales a la vez, una con el canal izquierdo y otra con el derecho?
PC1: generar dos seales diferentes: CH1 sinusoide de 50 Hz, CH2 sinusoide de 100 Hz.
PC2: adquirir los dos canales (ver caractersticas anteriores):
chan = addchannel(AI,2); % la figura 6 (b) cambia a RIGHT
DEBER
Cmo se lo hara si se deseara realizar una adquisicin continua?
..
Si se desea emplear una frecuencia de muestreo diferente, por ejemplo 44100 (muestras/segundo), se
puede emplear la instruccin set de la siguiente manera:
Verificacin: para verificar que se produjo el cambio, otra vez podemos emplear la instruccin:
ActualRate = get(AI,'SampleRate');
Si se desea emplear nmero de muestras adquiridas en cada disparo de acuerdo a los datos de
duration y ActualRate, se lo calculara de la siguiente manera:
duracin * ActualRate
set(AI,'TriggerType','Manual');
INICIO DE ADQUISICIN:
Hasta aqu todo est listo para proceder con la adquisicin de la seal externa. Para iniciarla, introducimos
las instrucciones de INICIO (start) y DISPARO (trigger)
start(AI)
trigger(AI)
Dejamos que se adquiera la seal durante el tiempo de duracin que se introdujo anteriormente:
wait(AI,duration + 1)
plot(t,senial_adquirida)
title('Adquisicin de senial analgica por el puerto de audio')
xlabel('t(segundos)')
ylabel('y(volts)')
BORRAR EL OBJETO:
Si ya no se va a emplear el objeto de adquisicin, se lo debe borrar:
Generamos con el audiotester una onda seno de 1000 Hz y puenteamos el puerto de audio con el cable
macho-macho:
AI = analoginput('winsound');
chan = addchannel(AI,1);
duration = 1;
set(AI,'SampleRate',8000)
ActualRate = get(AI,'SampleRate');
set(AI,'SamplesPerTrigger',duration*ActualRate)
set(AI,'TriggerType','Manual');
blocksize = get(AI,'SamplesPerTrigger');
senial_adquirida = getdata(AI);
plot(t,senial_adquirida)
title('Adquisicin de seal analgica por el puerto de audio')
xlabel('t(segundos)')
ylabel('y(volts)')
%Eliminando el objeto
delete(AI)
Observacin: Vemos que s se adquiri 1 segundo pero al inicio hay un problema: considerarlo en futuros
proyectos
DEBER: REALIZAR EL SIGUIENTE PROYECTO (PASO A PASO)
ver video:
https://www.youtube.com/watch?v=HmXs6bdkoAM
Emplear: dos sensores de presin resistivos como el siguiente (costo aproximado: $8)
PARTE I. Adquirir y mostrar en pantalla uno de los dos canales de EMG ubicados uno en la parte superior
y otro en la parte inferior del antebrazo segn la siguiente grfica:
PARTE II. En base a los dos canales de EMG, en una GUI, mostrar grficas de mano abierta o cerrada
segn el usuario abra o cierre la mano.
Seal marrn:
cierre de la
mano
Seal azul:
apertura de la
mano
Para saber si la persona abri o cerr la mano, en la siguiente figura se puede apreciar mejor el
voltaje pico-pico entre la seal azul que claramente es inferior a la seal de color marrn, esta
seal tiene un valor de 2.7 Vdc, esto se realiz sin ningn esfuerzo al cierre de la mano. Como se
puede ver, con el uso de dos canales de EMG s es factible diferenciar si la mano fue abierta o fue
cerrada y lo muestra en la ventana de comandos con la frase mano_cerrada.
Seal marrn:
cierre de la
mano
Figura. Adquisicin en tiempo real de la seal EMG del antebrazo el momento de cerrar la mano.
En la figura 08 se puede apreciar mejor el voltaje pico-pico entre la seal marrn que claramente
es inferior a la seal de color azul, esta seal tiene un valor de 4.9 Vdc, esto se realiz sin ningn
esfuerzo al abrir la mano, los datos son adquiridos en tiempo real y como se pudo ver en las figuras
05 y 06, el algoritmo de control detecta si la mano fue abierta o fue cerrada y lo muestra en la
ventana de comandos con la frase mano_abierta.
Seal azul:
apertura de la
mano
Figura. Adquisicin en tiempo real de la seal EMG del antebrazo el momento de abrir la mano.