FREQUENZA DI CAMPIONAMENTO
Un segnale analogico è continuo nel tempo e la sua conversione
digitale corrisponde ad un flusso discreto di dati. La frequenza con cui i
valori sono campionati è chiamata sampling rate del convertitore.
Il concetto è che un segnale che varia con continuità in una
banda
limitata può essere campionato e poi
riprodotto esattamente dai valori tempo discreti con un algoritmo di
interpolazione, se la frequenza di campionamento è almeno pari al doppio della banda del segnale (Teorema di Nyquist-Shannon).
Un circuito d'ingresso
detto sample/hold (S/H) svolge questo compito - in generale si usa un
condensatore per immagazzinare la tensione del segnale da misurare
e un interruttore elettronico per disconnettere il condensatore dall'ingresso e
passarlo al convertitore vero e proprio. Molti ADC realizzati su circuiti integrati
dispongono del
sottosistema di S/H internamente, ma esistono intergrati specifici per questa
applicazione.
Il funzionamento è il seguente:
- si applica l' ingresso del S/H alla tensione di misura e lo si mantiene
collegato per un tempo sufficiente alla carica del condensatore di sample
- a questo punto si disconnette il condensatore dall' ingresso e lo si
collega all' ADC
In sostanza l' ADC converte non il valore della tensione di ingresso in un
dato istante, ma la sua "copia" presente nel condensatore.
Questa procedura è necessaria in quanto un ADC, per quanto veloce, non può effettuare una conversione
istantanea. Allora è facile capire il valore d'ingresso deve necessariamente rimanere costante
durante il tempo in cui il convertitore esegue la conversione (chiamato tempo di conversione o conversion time).
Se la tensione di ingresso varia durante la conversione, ad esempio per
successive approssimazioni, è chiaro che il valore del risultato finale non
avrebbe senso.
In altre parole, avendo a che fare con grandezze variabili, va tenuto presente
che convertire un valore analogico in uno digitale vuol
dire "campionarlo", ovvero prelevarne un "campione" con una
cadenza adeguata. Il tempo di acquisizione della tensione da parte del S/H si
chiama tempo di campionamento (sample time).
Il sample rate, ovvero quante conversioni sono possibili in una certa unità di
tempo dipende sia dal sample time, sia dal tempo impiegato dal convertitore per
fornire il risultato digitale.
Questo tempo può essere critico o fondamentale per varie applicazioni, ovvero
quelle in cui è necessario seguire le variazioni del segnale di ingresso,
sopratutto allo scopo di riprodurlo.
Ne abbiamo un esempio con una pellicola cinematografica: se i fotogrammi ripresi si succedono ogni 10
millisecondi, questo è più che adeguato per far si che l' occhio percepisca l'
immagine proiettata come in movimento, ma vuol anche dire che tra un fotogramma ed il successivo quanto è
successo nella realtà è andato perso.
Occorrerà dunque che la cadenza del "campionamento" avvenga in modo
adeguato al fenomeno che si vuole osservare. Con un esempio, se vogliamo seguire
una corsa ad ostacoli, una normale ripresa con fotogrammi che si succedono ogni
decina di millisecondi è adeguata; ma se vogliamo seguire il percorso di un
proiettile, occorrerà una velocità di campionamento molto maggiore.
Quindi, se voglio seguire un segnale lento, occorre una
cadenza di campionamento lento. Se devo seguire un segnale in veloce variazione,
il campionamento dovrà essere proporzionalmente veloce per non perdere momenti
significativi dell' evento.
Al limite, se devo valutare una grandezza statica, oppure la misura è in
relazione ad altri eventi, possono non occorrere
frequenze di campionamento particolari, ma bastare il campionamento nel
momento in cui ci serve il dato.
Come abbiamo detto, in generale, possiamo considerare che il tempo base della conversione sia
costituito da due componenti:
- tempo di campionamento
- tempo di conversione
A queste, però, va aggiunti
- il tempo necessario all'
assestamento del sistema, valutabile in funzione del clock e, sopratutto,
- il
tempo necessario al processore per avviare il processo e per recuperare il dato
digitale in uscita: è facile comprende che ogni operazione del processore coinvolge una o più
istruzioni, ognuna delle quali richiede un certo tempo, che dipende dal clock
principale della CPU.
Se il clock a cui lavora il processore non influisce sulla velocità della
conversione, influisce invece sulle operazioni "collaterali" alla
conversione, per cui maggiore è la velocità del clock del processore, minore
sarà il tempo necessario a svolgere una istruzione e minore quindi sarà il
tempo necessario per le operazioni di settaggio e di avvio dell' ADC e per la
lettura dei risultati.
Da notare che la conversione di un ADC SAR è praticamente "automatica" ed una
volta avviata procede da sola senza bisogno di alcun controllo da parte del
processore, cadenzata dal clock applicato; però, il recupero del dato in uscita richiede che si tenga in qualche modo
sotto controllo il flag EOC e, una volta trovatolo attivo, si effettui la
lettura del dato. Una gestione in polling dell' evento richiede un minimo numero
di istruzioni, ma impegna il processore, mentre una gestione in interrupt lo
lascia libero per altre attività, ma risente della latenza tipica. Anche le
operazioni di caricare in accumulatore il risultato della conversione,
trasferire i dati in memoria, azzerare il flag per la conversione
successiva, ecc, sono pure esse da considerare.
Ed è evidente che maggiore
sarà la velocità del clock principale del processore, minori saranno questi
tempi, ma maggiore il consumo energetico.
A questo riguardo va ricordato, a
scanso di equivoci, che il clock del SAR e quello del processore possono
essere differenti, anche quando derivano dallo stesso generatore di
clock. Solitamente
quello della conversione è una frazione di quello della CPU.
Ovvero, ad esempio, il clock della CPU in un PIC potrà essere 40 MHz,
ma il clock del modulo ADC non potrà superare i 625 kHz. |
Inoltre
va considerato che, in generale, il processore si troverà a dover fare molte
cose, di cui la gestione della conversione AD è una delle tante e questo può
presentare ostacoli nel raggiungimento reale di rate di conversione elevati.
A questo proposito, i microcontroller dotati di convertitori veloci hanno in
corrispondenza una gestione complessa della memoria: dove non sono implementati
veri sistemi di DMA, si ricorre a registri FIFO che possono accumulare
automaticamente i risultati di più conversioni AD, consentendo al micro di
"raccoglierli" nel momento più opportuno.
|