Você está na página 1de 5

Minist

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

Aquisic
ao de dados
DAQmx NI USB 6008
Autor: Prof. Alessandro N. Vargas

Objetivo
Conhecer o funcionamento da Placa de Aquisicao de dados NI USB-6008.

NI USB 6008

A Placa de Aquisicao de dados produzida pela National Instruments denominada NI USB


6008 e um dispositivo simples e de baixo custo para interfaceamento Entrada/Sada de sinais
em relacao 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 eletricas nos terminais da placa. As tens
oes de sada
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 Pre-requisitos para usar o NI USB 6008

1.1

NI USB 6008

Pr
e-requisitos para usar o NI USB 6008

(1) NI-DAQmx driver instalado; (2) Matlab (versao 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
Matlab como Administrador e no prompt de comando execute daqregister(nidaq).

1.2

Caractersticas

8 analog inputs (12-bit, ate 1 kHz);


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

1.3

Comandos no Matlab para uso do NI USB 6008

Deve-se criar um dispositivo de entrada e sada para cada execucao. Os comandos s


ao:
ai = analoginput(nidaq,Dev1);
ao = analogoutput(nidaq,Dev1);
1.3.1 Adicionando canais
O comando ao lado impoe ao Matlab que o terminal da placa
rotulado AI0 sera utilizado para o sinal de Input (entrada).
Se por exemplo necessitamos de tres entradas, podemos informar ao Matlab para utilizar as portas AI0, AI1 e AI2 atraves
do comando addchannel(ai ,[0 1 2]);. Lembre-se que podemos utilizar ate sete terminais para as leituras de entrada.

addchannel(ai ,0);

O comando a seguir e necessario para informar ao Matlab que a tens


ao obtida em AI0
deve ter o referencial no terra GND (sempre usaremos essa opcao).
set(ai,InputType,SingleEnded);
O comando get(ai) mostra todas as propriedades do objeto definido como Input. Esse
comando e u
til para verificar se o driver e dispositivos estao funcionando corretamente.
O comando ao lado determina que o terminal da placa rotulado AO0 sera utilizado para o sinal de Output (sada).
Lembre-se que a placa possui somente duas sadas possveis, entao o u
nico outro comando admissvel para a sada
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 le a tens
ao instantanea no terminal AI0:
valorEntrada = getsample(ai)
Prof. Alessandro Vargas

UTFPR-CP

1.3 Comandos no Matlab para uso do NI USB 6008

1.3.3

NI USB 6008

Finalizando e removendo dispositivo

Ap
os cada execucao o dispositivo deve ser finalizado 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;

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 multmetro para medir a tens
ao nos terminais AO0 e GND.
3. Execute o codigo 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
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;

Quest
ao 1: O que ocorre com as tens
oes AO0 e AI0?

Prof. Alessandro Vargas

UTFPR-CP

1.3 Comandos no Matlab para uso do NI USB 6008

NI USB 6008

Experi
encia 4B Tens
oes nos terminais do NI USB 6008
Monte o circuito da figura ao lado usando P OT = 10k.
Modifique o codigo da experiencia anterior considerando as
linhas de comando a seguir. Salve os dados experimentais
para apresentacao do relat
orio.

AO0

GND
P OT

AI0

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

Quest
ao 2: Apresente um gr
afico experimental contendo as tens
oes AO0 e AI0 em funca
o
das amostras.

Prof. Alessandro Vargas

UTFPR-CP

1.3 Comandos no Matlab para uso do NI USB 6008

NI USB 6008

Experi
encia 4C Gerac
ao de curvas de tens
oes nos terminais
do NI USB 6008
Mantenha o potenciometro conectado de acordo com Experiencia 4B. Modifique o codigo de modo que a sada AO0 deve apresentar tens
ao de referencia identica a cada
gr
afico em Fig. 2 (modifique o codigo-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 certificar-se que a l
ogica gerando os gr
aficos
est
a correta. Varie o cursor do potenciometro para capturar a tens
ao de entrada AI0
correspondente. Salve os dados experimentais para apresentacao do relat
orio.
Quest
ao 3: Apresente os gr
aficos correspondente aos experimentos.

1.5

1.5

0.5

0.5

200

400

600

800

1.5

1.5

0.5

0.5

200

400

600

800

200

400

600

800

200

400

600

800

Figura 2: Gr
afico de tens
oes em AO0.

Prof. Alessandro Vargas

UTFPR-CP

Você também pode gostar