Académique Documents
Professionnel Documents
Culture Documents
Descripcin
El bloque Analog Input, inicializa, configura, y controla un dispositivo de
adquisicin de datos analgico. La apertura, inicializacin y configuracin del
dispositivo ocurre una vez al comienzo de la ejecucin del modelo. Durante el
tiempo de corrida del modelo, el bloque adquiere datos sincrnicamente
(reparte el bloque corriente de datos que el dispositivo est proveyendo) o
asincrnicamente (bufferea datos entrantes).
El bloque no tiene puertos de entrada. Tiene uno ms puertos de salida,
dependiendo de la configuracin que se elija en la caja de dilogos Source
Block Parameters.
El siguiente diagrama muestra el bloque configurado con un puerto para ambos
canales y con un puerto para cada canal, en el caso de un dispositivo que
tenga dos canales.
Use el Analog Input block para incorporar datos medidos en vivo en Simulink para:
Caracterizacin de Sistema
Verificacin de algoritmo
Diseo de controles
Se puede usar el Analog Input block para aplicaciones de seal usndolo en conjuncin
con Simulink bsico y bloques de Procesamiento de Seal.
Se puede usar el Analog Input block tanto sincrnicamente como asincrnicamente.
Selecciones el modo de adquisicin en la caja de dilogo Source Block Parameters.
El siguiente diagrama muestra el escenario de uso bsico del analog input, en la cual
debera:
Adquirir datos en cada etapa de tiempo o una vez por ejecucin del modelo.
Soundin.m
function data=soundin(duration,samplerate)
% function data=soundin(duration,samplerate=8000)
% lee datos del micrfono
% duration = duracion en segundos
% samplerate = frecuencia de muestreo en Hz (8000 por
defecto)
if (exist('samplerate')), samplerate=8000;
elseif isempty(samplerate)
samplerate=8000;
end
ai=analoginput('winsound');
addchannel(ai,1);
set(ai,'StandardSampleRates','off');
set(ai,'SampleRate',samplerate);
set(ai,'SamplesPerTrigger',duration*samplerate);
input('Pulse tecla para grabar');
start(ai);
waittilstop(ai,duration*1.1);
disp('Grabacion terminada');
data=getdata(ai);
delete(ai);
soundout.m
function soundout(data,samplerate)
% function soundout(data,samplerate=8000)
% envia datos a los altavoces
% data = tabla de datos entre -1 y 1
% samplerate = frecuencia de muestreo en Hz (8000 por
defecto)
if (exist('samplerate'))
samplerate=8000;
elseif isempty(samplerate)
samplerate=8000;
end
ao=analogoutput('winsound');
addchannel(ao,1);
set(ao,'StandardSampleRates','off');
set(ao,'SampleRate',samplerate);
putdata(ao,data);
start(ao);
duration=length(data)/samplerate;
waittilstop(ao,duration*1.1);
delete(ao);
% para poner un seno de 300 Hz, muestreado
% a 8000 Hz
i=1:100000;data(i)=sin(2*pi*300*(i-1)/8000);
function saca_senial(data,samplerate)
%%Open the analog device and channels
AO = analogoutput('winsound',0);
chan = addchannel(AO,1);
%% Set the sample rate and how long we will send data for
%% 8,000 Hz
% duration = 10
duration=length(data)/samplerate;
SampleRate = 8000;
set(AO,'SampleRate',SampleRate)
set(AO,'TriggerType','Manual')
NumSamples = SampleRate*duration;
%% Put the data in the buffer, start the device, and
% trigger
putdata(AO,data)
start(AO)
trigger(AO)
%% clean up, close down
waittilstop(AO,15)
delete(AO)
clear AO
ATENCIN: Cuando se tiene instalado un modem adems
de la tarjeta de sonido, es posible que el primero sea
reconocido como dispositivo de audio por defecto. En tal
caso la E/S no funcionara bien. Para comprobarlo, se puede
ejecutar la orden:
daqhwinfo('winsound')
La cual devolver una respuesta como:
ans =
AdaptorDllName:'C:\MATLAB6p5p1\toolbox\daq\daq\private\mwwinsound.dll'
AdaptorDllVersion: 'Version 2.2
(R13) 28-Jun-2002'
AdaptorName: 'winsound'
BoardNames: {'Lnea #0 del mdem'
'Auricular #0 del mdem'
'Creative
SB AudioPCI'}
InstalledBoardIds: {'0'
'1'
'2'}
ObjectConstructorName: {3x2 cell}
5. Salida Analgica
Aparte de adquirir datos desde sensores externos con
MATLAB, se puede desear enviar datos hacia afuera a un
dispositivo externo, por ejemplo se puede desear controlar
un pequeo motor, encender una luz, activar un parlante
(en el caso de la tarjeta de sonido).
Los comandos para sacar una seal analgica son similares
a los usados para adquirir datos. El siguiente programa
enviar una omda seno a 500 Hz al canal de salida
analgico 1 por un segundo.
%% Abre el dispositivo analgico y canales
AO = analogoutput('winsound',0);
chan = addchannel(AO,1);
%% Pone la tasa de muestreo y cunto de largo
%% sern los datos enviados
%% 44,100 Hz, 1 segundos de datos
duration = 1;
SampleRate = 44100;
set(AO,'SampleRate',SampleRate)
set(AO,'TriggerType','Manual')
NumSamples = SampleRate*duration;
%% Crea una seal a enviar, onda seno de 500 Hz
x = linspace(0,2*pi*500,NumSamples);
data = sin(x)';
%% Pone los datos en el buffer, arranca el %%
dispositivo, y trigger
putdata(AO,data)
start(AO)
trigger(AO)
%% clean up, apaga
waittilstop(AO,5)
delete(AO)
clear AO
El programa trabaja como sigue: Se comienza abriendo el
dispositivo definiendo los canales que sern usados. Los
canales 1 y 2 corresponden a los parlantes izquierdo y
derecho sobre la laptop. Luego se define cun largo sern
los datos a enviar y a qu tasa (44100 Hz por 1 segundo).
Se pone el trigger a manual. Luego, se crean los datos que
se desean enviar, una onda seno de 500 Hz durante 1
segundo.
Una vez que se crean los datos se ponen en el buffer de
salida, luego se arranca la corrida del dispositivo, y trigger
la salida. Es slo en el comando trigger que la seal es
sacada de la tarjeta de sonido.
Finalmente, se limpia y apaga el dispositivo como antes.
6. Seteo de las condiciones de Trigger
Hay muchas veces que se desea timar datos slo cuando
sucede un evento particular (por ejemplo, el sistema
responder slo cuando la seal de entrada excede un
cierto nivel).
In the previous exercise you saw that with the manual
trigger you
were not able to start the devices simultaneously and there
was a dead time when
Data Acquisition 7
the signal was being sent but the input channel was not yet
triggered. One way to
remedy this delay is to use software triggers rather than
manual triggers.
In setting a software trigger condition you must rst set the
trigger type to
be Software, rather than Manual. You must also specify
which channel you will
dierent than the commands that were used for the sound
card. There are a few
dierences in the details that we will elaborate here.
The DAQ card that we are using has 16 channels for analog
input, this means
that we can acquire information from 16 simultaneous
instruments in single-ended
mode or 8 measurements in dierential mode (see the web
tutorial for the dierence
between single-ended and dierential measurement). If
you are operating the card
in dierential mode the card channels range from Channel
0 to Channel 7. We
have noticed that when acquiring data to two simultaneous
channels that the code
may not work if the sample rate is below 1000 Hz. This is
clearly a bug and has
been reported to MathWorks. However, if you have trouble
acquiring data to two
simultaneous channels try adjusting the sample rate.
To initialize our DAQ card for analog input use the following
command
AI = analoginput('mcc',1);
This command works the same as before, only we are
dening a dierent piece of
Las lneas usan niveles lgicos TTL. Una lnea est en alto
(verdad) cuando est en un nivel TTL alto, mientras que
una lnea est baja (falso) cuando est en un nivel TTL
bajo.
Las excepciones son las lneas 1, 11, 14, y 17, las cuales
son hardware inverted. El toolbox agrupa las 17 lneas
nonground en tres puertos separados.
Los IDs de puerto y los nmeros de pin asociados estn
dados debajo.
ID de Puerto
0
Pines
2-9
1
2
10-13 y15
1,14,16 y 17
Descripcin
8 lneas I/O con el pin 9 como el bit ms
significativo (MSB)
5 lneas de entrada usadas para status
4 lneas I/O usadas para control
The constructor syntax tells you that you must supply the
adaptor name and the hardware ID to the analoginput
function ai = analoginput('nidaq',1);
The association between device objects and hardware
subsystems is shown below. Overview