Vous êtes sur la page 1sur 4

Minist erio da Educa c ao

Universidade Tecnol ogica Federal do Paran a Campus Corn elio Proc opio Coordena c ao de Eletrot ecnica

Aquisi c ao de dados DAQmx NI USB 6008


Autor: Prof. Alessandro N. Vargas

Objetivo
Conhecer o funcionamento da Placa de Aquisi c ao de dados NI USB-6008.

NI USB 6008

A Placa de Aquisi c ao de dados produzida pela National Instruments denominada NI USB 6008 e um dispositivo simples e de baixo custo para interfaceamento Entrada/Sa da de sinais em rela c ao ao PC. Esta placa pode ser conectada via cabo USB a um PC executando o Matlab, e o Matlab realiza as tarefas de enviar e ler tens oes el etricas nos terminais da placa. As tens oes de sa da podem ser entre 0 +5V e as de entrada entre 10 +10V . Veremos a seguir os detalhes do funcionamento da placa.

Figura 1: Placa NI USB 6008.

1.1 Pr e-requisitos para usar o NI USB 6008

NI USB 6008

1.1

Pr e-requisitos para usar o NI USB 6008

(1) NI-DAQmx driver instalado; (2) Matlab (vers ao 2007 ou mais recente) contendo o pacote Data Acquisition Toolbox instalado.
Dica 1: Instale Matlab 32 bits (mesmo que tenha Windows 64 bits), isso evita problemas de compatibilidade. Dica 2: Na 1a. vez em que for usar o pacote Data Acquisition Toolbox, execute o comando daqregister(nidaq).

1.2

Caracter sticas

8 analog inputs (12-bit, at e 1 kHz); 2 analog outputs (12-bit, at e 150 Hz); 12 digital I/O; 32-bit counter. Obs: Nas experi encias pr aticas, observaremos que o PC executando Matlab limitar a a taxa de amostragem da entrada e sa da para algo entre 30 e 40 amostras por segundo.

1.3

Comandos no Matlab para uso do NI USB 6008


ai = analoginput(nidaq,Dev1); ao = analogoutput(nidaq,Dev1);

Deve-se criar um dispositivo de entrada e sa da para cada execu c ao. Os comandos s ao:

1.3.1 Adicionando canais O comando ao lado imp oe ao Matlab que o terminal da placa rotulado AI0 ser a utilizado para o sinal de Input (entrada). Se por exemplo necessitamos de tr es entradas, podemos informar ao Matlab para utilizar as portas AI0, AI1 e AI2 atrav es do comando addchannel(ai ,[0 1 2]);. Lembre-se que podemos utilizar at e sete terminais para as leituras de entrada.

addchannel(ai ,0);

O comando a seguir e necess ario para informar ao Matlab que a tens ao obtida em AI0 deve ter o referencial no terra GND (sempre usaremos essa op c ao). set(ai,InputType,SingleEnded); O comando get(ai) mostra todas as propriedades do objeto denido como Input. Esse comando eu til para vericar se o driver e dispositivos est ao funcionando corretamente. O comando ao lado determina que o terminal da placa rotulado AO0 ser a utilizado para o sinal de Output (sa da). Lembre-se que a placa possui somente duas sa das poss veis, ent ao o u nico outro comando admiss vel para a sa da e addchannel(ao,[0 1]) para dados em AO0 e AO1.

addchannel(ao,0);

1.3.2 Leitura e escrita Se desejamos escrever um valor no terminal do dispositivo, devemos usar o comando putsample(). valorSaida = 1.5; Por exemplo, para enviar +1.5V no terminal AO0, basta simplesmente adicionar as linhas de comando putsample(ao, valorSaida); ao lado. Se desejamos ler um valor do dispositivo, devemos usar o comando getsample(). Por exemplo, o comando abaixo l e a tens ao instant anea no terminal AI0: valorEntrada = getsample(ai) Prof. Alessandro Vargas 2 UTFPR-CP

1.4 Experi encia 4A Tens ao nos terminais do NI USB 6008

NI USB 6008

1.3.3

Finalizando e removendo dispositivo

Ap os cada execu c ao o dispositivo deve ser nalizado seguindo os comandos abaixo. putsample(ao,0); % grava zero volts no terminal de saida wait(ai,0.02); % impoe tempo de limpeza de buffer da entrada; delete(ai); clear ai; delete(ao); clear ao;

1.4

Experi encia 4A Tens ao nos terminais do NI USB 6008

1. Conecte o cabo USB na Placa NI USB 6008 e inicie o Matlab. 2. Conecte o mult metro para medir a tens ao nos terminais AO0 e GND. 3. Execute o c odigo abaixo.
clear all, close all, clc, ai = analoginput(nidaq,Dev1); ao = analogoutput(nidaq,Dev1); addchannel(ai,0); set(ai,InputType,SingleEnded); addchannel(ao,0); get(ai) Nit=500; % number of samples t1 = tic; % start the timer so we can calculate sampling rate when finished for k =1:Nit valorSaida=2 - 2*k/Nit putsample(ao , valorSaida ); valorEntrada=getsample(ai) pause (1e-6); end samprate = Nit/toc % calculate your average sampling rate putsample(ao,0); wait(ai,0.02); delete(ai); clear ai; putsample(ao,0); delete(ao); clear ao;

Pergunta 1: O que ocorre com as tens oes AO0 e AI0 durante a execu ca o do c odigo? Apresente um gr aco experimental aproximado das duas tens oes em fun ca o das amostras.

1.5

Experi encia 4B Gr aco das tens oes nos terminais do NI USB 6008
GND
P OT

Monte o circuito da gura ao lado usando P OT = 10k . Modique o c odigo da experi encia anterior considerando as linhas de comando a seguir. Salve os dados experimentais para apresenta c ao do relat orio.

AO0

AI0

Prof. Alessandro Vargas

UTFPR-CP

1.6 Experi encia 4C Gera c ao de curvas de tens oes nos terminais do NI USB 1 NI 6008 USB 6008

...(continua ca ~o do c odigo)...
Nit=500; % number of samples t1 = tic; % start the timer so we can calculate sampling rate when finished figure(1);clf; h=plot(nan,nan,b-);grid,xlim([1 Nit]),ylim([0 2.5]), for k =1:Nit valorSaida=2 - 2*k/Nit putsample(ao , valorSaida ); vecSaida(k)=valorSaida; valorEntrada=getsample(ai) vecEntrada(k)=valorEntrada; pause (1e-6); set(h,xdata,[1:k],ydata,[vecEntrada([1:k])]); end figure(2), plot([1:Nit],vecEntrada,bo-,[1:Nit],vecSaida,r*); grid,title (Saida medida em AO0 e AI0); legend(tensao AI0,tensao AO0); samprate = Nit/toc % calculate your average sampling rate putsample(ao,0); wait(ai,0.02); delete(ai); clear ai; putsample(ao,0); delete(ao); clear ao;

1.6

Experi encia 4C Gera c ao de curvas de tens oes nos terminais do NI USB 6008

Mantenha o potenci ometro conectado de acordo com Experi encia 4B. Modique o c odigo de modo que a sa da AO0 deve apresentar tens ao de refer encia id entica a cada gr aco em Fig. 2 (modique o c odigo-fonte de modo a realizar quatro experimentos distintos com amostras 800 cada). Dica: antes de gerar a tens ao na placa, use o comando plot() para certicar-se que a l ogica est a correta. Varie o cursor do potenci ometro para capturar a tens ao de entrada AI0 correspondente. Salve os dados experimentais para apresenta c ao do relat orio.

2 1.5 1 0.5 0

2 1.5 1 0.5 0

200

400

600

800

200

400

600

800

2 1.5 1 0.5 0

2 1.5 1 0.5 0

200

400

600

800

200

400

600

800

Figura 2: Gr aco de tens oes em AO0. Atividade: Fa ca um relat orio apresentando os resultados das Experi encias 4A, 4B e 4C.

Prof. Alessandro Vargas

UTFPR-CP

Vous aimerez peut-être aussi