Acquisizione Dati

Transcript

Acquisizione Dati
Acquisizione dati:
L’interfaccia tra PC e mondo
reale
1. Esempi di convertitori DAC e ADC
2. Esempi pratici di acquisizione dati in
ambiente MATLAB
Interfacciamento tra PC e mondo reale,
Acquisizione Dati ed uscita Analogica tramite
una scheda DAC
L’acquisizione dati tramite scheda convertitore Digital to Analog
Converter (DAC) è pratica comune di laboratorio. La PASCO ne offre
una versione piuttosto “blindata” utile nei primi anni di corso. In molti
casi questa è insufficiente o peggio, genera problemi a causa della sua
rigidità. In questa lezione imparerete ad utilizzare una scheda di basso
costo (Keythley DAS1601 ovvero National Instrument NI 6124E e
successive) nell’ambiente di calcolo Matlab.
Letteratura
Per approfondire l’argomento sono utili i seguenti testi e documenti:
P. Horowitz and W. Hill,The Art of Electronics, Cambridge University Press, 1980, in particolare il
capitolo 9
- Per l’hardware della scheda National Instruments 6124E:
– http://www.fis.unipr.it/~gigi/dida/strumentazione/NI-DAQ/PCI-6024e-6025eManual.pdf
– http://www.fis.unipr.it/~gigi/dida/strumentazione/NI-DAQ/specifiche_6024E.pdf
– http://www.fis.unipr.it/~gigi/dida/strumentazione/NI-DAQ/presentazione_6024E.pdf
- Per le alter schede di acquisizione National Instruments
www.ni.com (ni6009 ni6008)
•
Matlab data acquisition toolbox
http://www.mathworks.it/products/daq/index.html
Useremo due tipi di schede di acquisizione:
quelle che si interfacciano tramite PCI o USB
block diagram of a typical 16-bit 200-kHz DAQ
board. It plugs into an open PCI slot in you PC.
Differenze principali:
- Velocità di trasferimento dati
- Facilità di installazione (la PCI va
inserita sulla scheda madre, vs la USB
è “plug & pray”)
Gli ingredienti importanti:
0. Contatore binario
1. Convertitore digitale-analogico (DAC)
2. Convertitore analogico-digitale (ADC)
0. CONTATORE BINARIO
Gate = segnale in AND con clock
Contatore=timer
1) Digital-to-Analog Converter (DAC)
Può essere realizzato con due diversi approcci
principali:
1.a Weighted Summing Amplifier
1.b R-2R Network Approach
1.a Weighted Sum DAC
1.b R-2R Ladder DAC
1.b R-2R Ladder DAC
2. Analog to Digital Converter
Può essere realizzato con tre diversi
approcci principali:
2.a Digital-Ramp ADC
2.b Successive Approximation ADC
2.c Flash ADC
2.a Digital-Ramp ADC
La conversione comporta un comparatore tra:
1. tensione di ingresso
2. segnale generato da un DAC
L’uscita del comparatore pilota un contatore binario
2.a Digital-Ramp ADC
2.b Successive approximation ADC
DAC + comparatore
Ora usa la logica per
convergere + rapidamente
2.b Successive approximation ADC
Illustration of 4-bit SAC with 1 volt step size
2.c Flash ADC
• +rapido di tutti.
(63 for 6-bit, 255 for 8-bit, etc.)
• 8-bit necessita di 256
comparatori
• Priority encoder converte in
binario
La temporizzazione: Sample Hold
Accuratezza
Il numero di bit della scheda ne definisce il “range dinamico” o profondità: il
rapporto tra la tensione massima VMAX e quella minima misurabile dV. Appare
evidente che un range dinamico esteso è nemico della velocità: a parità di
prezzo, schede ADC veloci hanno accuratezza di pochi bit, e viceversa.
Entrambe le schede che userete hanno una profondità di 12 bit.
Più precisamente, il livello di accuratezza per una digitalizzazione ad N bit con
tensione compresa tra 0 e VMAX è
dV= VMAX/2N
mentre se la tensione è compresa tra -VMAX e VMAX allora
dV= VMAX/2N-1
Per sfruttare al meglio il range dinamico il segnale può dover essere attenuato
o, più spesso, amplificato. Le schede hanno un amplificatore a guadagno fisso
e selezionabile (10x, 100x, 500x) che è posto prima dell’ ADC.
Velocità
La velocità della scheda è definita dal numero di campionamenti che si
possono effettuare in un secondo. Entrambe le schede DAS1601 e
NI6524E hanno velocità massima di 100Ks, anche se poi il software
non sempre consente di arrivare a questa velocità.
Si possono acquisire diversi segnali quasi contemporaneamente:
entrambe le schede hanno 16 ingressi unipolari (single ended) ovvero
8 differenziali multiplexati. La velocità dichiarata dal costruttore si
riferisce al convertitore A/D, il multiplexing rallenta l’acquisizione di un
fattore almeno pari al numero di canali attivi
Esempio: misura della risonanza audio
%definiamo parametri
clear
SampleRate=40000;
Duration=5;
SamplePerTrigger=Duration*SampleRate;
tempo=(1:SamplePerTrigger)*Duration/SamplePerTrigger;
x 10
7
6
5
Ampiezza
%Proviamo la scheda audio
daqreset
AI = analoginput('winsound');
AO = analogoutput('winsound');
addchannel(AI, 1);
addchannel(AO, 1);
set (AO, 'SampleRate', SampleRate)
set (AI, 'SampleRate', SampleRate)
set(AI, 'SamplesPerTrigger', SamplePerTrigger);
-4
8
4
3
2
1
f0=200;
ff=3000;
disp(['Intervallo di frequenze testato:
',num2str(f0),'fino a ',num2str(ff),'Hz'])
%frequenze=linspace(f0,ff,SamplePerTrigger);
frequenze=logspace(log10(f0),log10(ff),SamplePerTrigger);
clear wave
wave=sin((2*pi*frequenze.*tempo));
putdata(AO,wave')
start([AO AI])
while AI.SamplesAcquired<SamplePerTrigger
end
wave_in=getdata(AI);
plot(frequenze,smooth(wave_in.^2,100))
xlabel('Frequenza (Hz)')
ylabel('Ampiezza')
0
0
500
1000
1500
2000
Frequenza (Hz)
2500
3000
3500