Data Adquisicion Toolbox de Matlab

download Data Adquisicion Toolbox de Matlab

of 5

Transcript of Data Adquisicion Toolbox de Matlab

  • P-2B.1

    Introduccin a la Data Acquisition toolbox de MATLAB

    2.1. Introduccin.

    Bajo la denominacin Data Acquisition toolbox se recogen una serie de funciones

    desarrolladas en Matlab que proporciona las siguientes funcionalidades para la

    adquisicin de datos, como son:

    Un entorno de adquisicin y medida de datos desarrollado sobre un sistema PC

    compatible provisto de interfases adecuados de entrada y salida de datos

    Soporte de subsistemas de entrada analgica (ai), salida analgica (ao) y

    entrada-salida digital (dio)

    Compatibilidad con las siguientes familias de dispositivos de adquisicin:

    Advantech, Agilent , Keithley, Measurement Computing Corporation, National

    Instruments, puerto paralelo (LPT1) y tarjetas de sonido compatibles con

    Windows.

    Adquisicin de datos dirigida por eventos.

    2.1.1. Componentes.

    La Data Acquisition toolbox se encuentra formada por 3 tipos de elementos que

    permiten el paso de informacin entre Matlab y los dispositivos de adquisicin de datos:

    Ficheros M, cuyo desarrollo permite crear dispositivos objeto, adquirir datos o

    generar datos de salida, configurar las propiedades de los elementos de

    adquisicin de datos y procesar los datos adquiridos. La correcta configuracin

    de estas propiedades permite controlar al dispositivo de adquisicin de datos

    para que se ajuste a las necesidades del usuario.

    Motor de adquisicin de datos encargado de almacenar los dispositivos objeto

    creados, sus configuraciones y propiedades, los datos recogidos o almacenados

    para su envo, as como el control y sincronizacin de los eventos.

    Controladores de dispositivos que trasladan las propiedades, eventos y datos

    entre el motor de adquisicin de datos y el dispositivo fsico de entrada-salida

    empleado.

    2.1.2. Dispositivos objeto.

    Estos elementos permiten gobernar desde Matlab los diferentes subsistemas de entrada-

    salida presentes en el dispositivo fsico de adquisicin de datos instalado en el PC.

    Matlab dispone de tres tipos de dispositivos objeto: ai (entrada analgica), ao (salida

    analgica) y dio (entrada-salida digital).

    De esta forma, para iniciar una sesin de adquisicin de datos en Matlab se deben seguir

    los siguientes pasos:

    Crear un dispositivo objeto, usando para ello las funciones de Matlab

    analoginput, analogoutput o digitalio segn sea el caso de una entrada

    analgica, salida analgica o entrada-salida digital, respectivamente. El formato

    de uso de estas tres funciones es idntico, debindose indicar la denominacin

    del driver dispuesto por Matlab que es adecuado para el dispositivo fsico de

    adquisicin (en adelante, tarjeta de adquisicin) de que se dispone. Tambin hay

    que indicar el identificador de dispositivo que se asocia a la tarjeta de

  • P-2B.2

    adquisicin cuando se instala. Un ejemplo de definicin de un dispositivo objeto

    de entrada analgica con una tarjeta de National Instruments (como la que se

    dispone en el laboratorio), con un identificador de dispositivo igual a 1, sera:

    ai = analoginput(nidaq,1); Configurar los canales de E/S, mediante la funcin addchannel. En ella se hace

    referencia al dispositivo objeto creado anteriormente. Por ejemplo, para crear un

    canal de entrada analgico denominado an01usando el canal hardware 1 de la

    tarjeta en modo diferencial (patillas 5 y 6 del bloque conector en el laboratorio,

    segn la tabla de especificaciones de la tarjeta), se escribira:

    an01 = addchannel(ai,1); Si lo que se desea es aadir un grupo de canales hardware, por ejemplo del 0 al

    3, se escribira:

    an0_3 = addchannel(ai,0:3);

    Definir las propiedades para ajustar la adquisicin de datos a nuestras

    necesidades. Para conocer las propiedades del objeto que se ha definido, se

    puede hacer uso de la funcin get(), o bien mediante

    .[nombre-propiedad]. En principio, las dos propiedades

    bsicas que interesa ajustar son la frecuencia de muestreo (SampleRate) y el

    nmero de muestras por disparo (SamplesperTrigger). Se emplea la funcin set,

    donde se hace referencia al dispositivo objeto empleado, la propiedad que se

    quiere definir y el valor que se le asigna a la misma:

    set = (ai, SampleRate, Fs); set(ai,'SamplesPerTrigger',Samples);

    Tambin es importante conocer cul es el verdadero valor de la frecuencia de

    muestreo actual, lo hacemos con ActualRate = get(ai,'SampleRate');

    Iniciar la adquisicin o salida de datos usando la funcin start. Tras este punto

    suele ser interesante hacer uso de la funcin getdata y plot o cualquier otra que

    nos permita la visualizacin o procesamiento de los datos adquiridos y

    almacenados con la funcin getdata.

    start(ai)

    getdata(ai); Finalizacin del proceso haciendo uso de las funciones delete y clear:

    delete(ai)

    clear ai

    En general, en todas las prcticas con Matlab, el alumno debe desarrollar el cdigo fuente siguiendo las indicaciones del procedimiento. Debe realizar las conexiones entre los distintos instrumentos utilizados (Generador de Seal y Osciloscopio) y el bloque de conexin. Posteriormente debe ejecutar el cdigo fuente (Fichero.m) y probar su correcto funcionamiento. A la hora de redactar su memoria de prcticas, debe adjuntar cada uno de los cdigos fuente y los resultados obtenidos, fundamentalmente las imgenes del osciloscopio (se guardan en una memoria Flash) y los grficos que se obtienen con la funcin plot de Matlab. Se deben explicar y justificar los resultados obtenidos en cada apartado de la prctica.

    Como ayuda para la realizacin de la prctica el alumno se puede guardar las variables de Matlab en una Flash para su posterior tratamiento fuera del laboratorio.

  • P-2B.3

    2.2. Procedimiento para la Entrada Analgica.

    1. Configurar el generador de seal disponible en el laboratorio para que proporcione

    una seal de salida de 300 Hz con amplitud de 4 V de pico a pico. Ajuste los controles

    del osciloscopio para verificar la seal generada. Rellene la tabla 2.1.

    Tabla P1.2

    Control Vertical Control Horizontal Controles de Disparo VOLTS/DIV SEC/DIV Fuente

    Atenuacin Flanco

    Acoplamiento

    Adquisicin

    Configure MEDIDAS en el osciloscopio para visualizar la frecuencia y el valor de Vpico-pico de la seal.

    2. Desarrollar un cdigo en Matlab que permita adquirir la seal proporcionada por el

    generador de seal (en las condiciones del apartado anterior) y visualizar la seal

    adquirida correctamente en escala de tiempo.

    Para ello, es preciso que se seleccione:

    - El Input Mode de la tarjeta segn el tipo de fuente de seal. - El canal de entrada que se crea y su cdigo en el bloque de conexiones.

    - La frecuencia de muestreo.

    - El nmero de muestras que se adquieren en un disparo, de manera que se visualicen

    varios ciclos de la seal.

    %Se conoce la frecuencia de la seal adquirida.

    NombredelObjeto = analoginput(nidaq,1); analoginputchannel=addchannel(NombredelObjeto,CC); %CC es el nmero del canal que se aade

    %Elegimos el Input Type adecuado a la fuente de seal. %NombredelObjeto.InputType = 'Differential'; %Es el modo por defecto %NombredelObjeto.InputType = 'SingleEnded'; %NombredelObjeto.InputType = 'NonrefencedSingleEnded';

    Fseal=300; %Frecuencia de la seal adquirida en Hz.

    Fs= FFFF; % FFFF es la frecuencia de muestreo set(NombredelObjeto,'SampleRate',Fs); ActualRate = get(NombredelObjeto,'SampleRate'); %Es el verdadero valor de la frecuencia de muestreo

    Samples= SSSS; % SSSS es el nmero de muestras a adquirir. set(ai,'SamplesPerTrigger',Samples);

    %Ahora seleccionar el tipo de disparo %set(NombredelObjeto,'TriggerType','Inmediate'); %Es el modo de disparo por defecto %set(NombredelObjeto,'TriggerType','Manual'); %set(NombredelObjeto,'TriggerType','Software')

    start(NombredelObjeto) %trigger(NombredelObjeto); %Si no se ha elegido el modo de disparo por defecto data=getdata(NombredelObjeto);

    t= %Hacer un vector t que se utilice como base de tiempos para la funcin plot figure (1) plot(t,data);

    % Borramos objeto y liberamos memoria.

  • P-2B.4

    delete(NombredelObjeto) clear NombredelObjeto

    3. Modificar el anterior cdigo para que incluya la posibilidad de seleccionar el nmero

    de ciclos de seal que se visualizan, en funcin de la frecuencia de la seal que se

    adquiere y de la frecuencia de muestreo seleccionada en la tarjeta de adquisicin de

    datos.

    %La variable nciclos selecciona el nmero de ciclos de la seal que se desea adquirir

    nciclos=5; Poner aqu el cdigo Matlab modificado.

    Justifique la razn de dichas modificaciones!.

    4. Modificar el cdigo anterior si se utiliza la funcin [data,time] = getdata(NombredelObjeto);

    5. Igualmente si se utiliza la funcin: [data,time,abstime] = getdata(NombredelObjeto);

    2.3. Procedimiento para la Salida analgica.

    Junto con las consideraciones descritas para el apartado anterior de entrada analgica,

    aqu debe tenerse en cuenta que la frecuencia de muestreo que emplee la tarjeta puede

    no coincidir con la que el usuario indique desde su cdigo Matlab. En el caso de que se

    seleccione una frecuencia de muestreo que no est en el rango de las disponibles por la

    tarjeta de adquisicin, se producir un error. De estar dentro del rango, la tarjeta de

    adquisicin seleccionar la frecuencia de muestreo disponible ms prxima a la

    indicada por el cdigo Matlab. Se recomienda revisar la propiedad SampleRate con

    posterioridad a su definicin en el cdigo Matlab para evitar que se est muestreando a

    una frecuencia que no es la indicada por el usuario.

    Es necesario definir el modo de disparo para la salida analgica (propiedad

    TriggerType). La forma ms sencilla es provocar el disparo manualmente. Se puede

    emplear la funcin trigger() en el momento en el que se desee

    activar el disparo e iniciar la salida de datos. Evidentemente, habr que haber

    seleccionado el disparo manual en la variable TriggerType. En cuanto el usuario ha

    definido los datos que van a formar la seal de salida, debe usar la funcin

    putdata(,) para colocar dichos datos en el buffer de

    salida de la tarjeta.

    1. Generar una seal senoidal de 300Hz de 4 segundos de duracin y visualizarla en el

    osciloscopio. Utilizar el canal CH2 del osciloscopio y ajustar los controles del mismo

    para comprobar la frecuencia y amplitud de la seal generada.

    2. Modificar el cdigo Matlab del apartado anterior para que se pueda elegir la

    frecuencia de la seal generada, as como el nmero de ciclos generados por la tarjeta de

    adquisicin.

  • P-2B.5

    2.4. Procedimiento para la Entrada/salida digital.

    En este caso, no es necesario indicar la frecuencia de muestreo ni la duracin de

    disparo. Bastar con indicar el canal de entrada (o salida) y capturar (o generar) los

    valores. As, por ejemplo, para seleccionar el canal 0 del dispositivo objeto dio (el cual

    debe haber sido definido con anterioridad) como entrada, se usara la funcin:

    addline (dio, 0, in);

    Y para capturar los valores por dicho canal, se empleara la funcin getvalue. En el caso

    de la salida digital, el canal debera configurarse como out y usar la funcin putvalue.

    1. Desarrollar el cdigo necesario para adquirir un dato digital por el canal 0 de la

    tarjeta.

    2. Modificar el cdigo anterior para que se generen datos digitales por el canal 1.

    3. Combinar ambos cdigos para que el dato digital adquirido por el canal 1 se reenva

    por el canal 0.

    4. Cules seran las modificaciones si se desean cuatro canales de entrada y cuatro de

    salida.