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