Come funziona la conversione AD
Vediamo di afferrare meglio i concetti attraverso una ulteriore
esemplificazione.
Vogliamo valutare una tensione elettrica variabile da 0 a V volt con un sistema
digitale, il quale dispone di un solo bit per rappresentare il numero.
Ricordiamo il formato digitale di un numero si basa su due sole cifre: 0 e 1 per
ogni bit. Quindi il problema è passare da una tensione variabile in continuità
tra due
estremi e un sistema che accetta solamente due livelli: 0 e 1.
E se abbiamo un solo bit dedicato alla misura si potranno avere solo due possibilità: o 1 o 0.
Di conseguenza si potrebbe utilizzare la legge per cui, ad esempio, qualunque valore minore di
1/2V sarà interpretato come
uno 0 e un qualsiasi valore superiore a 1/2V sarà interpretato come un 1
(non
esistono posizioni intermedie, essendo possibili solo due cifre per un bit
digitale).
Si può ottenere facilmente questo con un semplice comparatore la cui
uscita commuterà tra 0 (livello basso, massa) e 1 (livello alto, tensione di
alimentazione).
Un comparatore richiede due ingressi:
- la tensione da comparare Vin
- la tensione di riferimento della comparazione Vref
|
Se stabiliamo Vref = 1/2 V, il comparatore commuterà la sua uscita
tra 0 e 1 al superamento della soglia pari a metà della tensione +V. Da notare che si parla di una
Vref (tensione di riferimento)
nel senso che da essa dipende la precisione della soglia dello scatto
del comparatore. Posiamo utilizzare, come nello schema, una frazione della tensione di
alimentazione ottenuta attraverso un partitore resistivo,
ma la tensione di riferimento può arrivare anche da un' altra sorgente.
Va da sè che dalla sua stabilità e precisione dipende l' esattezza
della soglia di scatto del comparatore.
|
Il problema della Vref può essere compreso meglio con un esempio. Ricordiamo
che:
misurare significa confrontare con un campione
Se misuriamo una lunghezza
utilizziamo, ad esempio, un metro a nastro. Se questo metro è poco preciso,
altrettanto poco precisa sarà la nostra misura. E se vogliamo apprezzare i
decimi o centesimi di millimetro, non useremo un metro, ma un calibro. E
se ci interessano i millesimi o meno, utilizzeremo un micrometro. Ovvero, per
ogni genere di misura utilizzeremo uno strumento adeguato.
Quindi, il riferimento utilizzato per la misura è quello che ne stabilisce la
precisione. (Maggiori informazioni sulla tensione
di riferimento per la conversione AD le trovate qui.)
Con questo semplice circuito abbiamo realizzato un convertitore
analogico-digitale a 1 bit:
Vin |
Out |
0 ≤ Vin < 1/2 V |
0 |
1/2 V ≤ Vin < V |
1 |
Si può senz'altro dire che una valutazione ad 1 bit è una misura che
può non essere adeguata a molte applicazioni. Se il segnale analogico
varia tra 0 e 5V in modo continuo, ovvero sono possibili tutti gli
infiniti valori compresi tra i due estremi, poter valutare solo due
segmenti, uno inferiore a 2.5V e uno superiore, è molto limitativo.
Certamente questa risoluzione è ideale se è necessaria una soglia di
commutazione attorno ad un valore limite, come per un termostato, ma non
lo sarà invece per un termometro.
Abbiamo detto che, aumentando il numero dei bit della rappresentazione digitale,
aumenta l' ampiezza della quantità codificabile. Se con 1 bit possiamo
rappresentare 0 o 1, con 3 bit possiamo rappresentare numeri da 0 a 7 e così
via.
Si potrebbe pensare allora aumentare il numero di comparatori utilizzati in
corrispondenza del numero di bit definiti.
|
Ad esempio, se abbiamo una Vin di 8 V massimi, usando sette comparatori, potremmo fissare le soglie di scatto
ogni volt, in modo tale che l' uscita di ciascun comparatore vada a 1 quando
la tensione misurata ha superato la relativa soglia.
Le uscite dei comparatori
saranno collegate ad altrettanti ingressi del microprocessore; in sostanza
abbiamo trasformato una variazione di tensione da 0 a 8 V in 7 bit di
informazione digitale.
Vin |
Out |
0 ≤ V < 1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 ≤ V < 2 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
2 ≤ V < 3 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
3 ≤ V < 4 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
4 ≤ V < 5 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
5 ≤ V < 6 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
6 ≤ V < 7 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
7 ≤ V < 8 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
E' chiaro che siamo ancora distanti da una soluzione adeguata ad una misura
precisa, in quanto, ad esempio, che la tensione di ingresso valga 0,7 o 0.8 oppure 1,2
o 1,5 V darà sempre la stessa indicazione all' uscita dei comparatori, ma
abbiamo già un netto miglioramento rispetto al singolo bit.
Su questa strada, maggiore sarà il numero dei comparatori, più fine diventerà la definizione dei valori
misurati.
Ad esempio, disponendo di 1000 comparatori, si avranno 1000 livelli di
comparazione, ovvero 1000 suddivisioni
dello spazio di misura tra 0 e 5V, il che permetterà di discriminare variazioni di
5 / 1000 = 5 mV.
E per
avere risoluzioni maggiori potrò ancora aumentare il numero dei comparatori,
portandoli ad esempio 4000 o 65000 o più.
Un byte, misura tipica di un sistema a
microprocessore, sottintende un gruppo di 8 bit di I/O. Per il precedente
esempio dei 7 comparatori, un port di 8 bit di ingresso è adeguato. Ma con 1000 comparatori
occorre disporre di
1000 bit di ingresso del processore. E ogni bit è un pin del package: questo diventa costruttivamente
improponibile. Come fare?
|
La situazione si risolve in un attimo, facendo confluire le
uscite dei comparatori in un sistema di codifica (encoder) con una uscita binaria. Con
l' esempio precedente, lo stato delle uscite dei comparatori sarà
codificato su 3 bit.
Out
comparatori |
Out
codifica |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
000 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
001 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
010 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
011 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
100 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
101 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
110 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
111 |
|
L' encoder, quindi, codifica 2n-1 ingressi in n bit di
uscita.
Così, ad esempio, 1023 comparatori potranno esse codificati con sole 10 linee di
uscita (210 = 1024 e 210 -1 = 1023). E con una uscita a 12
bit si codificheranno 4095 comparatori e quindi 4096 livelli.
Il numero n dei bit codificati in uscita del risultato digitale della conversione è
indicato come risoluzione del convertitore. |
Si avranno così comunemente convertitori con dato in uscita codificato, o
risoluzione, su 8, 10, 12, 14 bit
e più.
Ora, convertitori AD come quello fin qui esemplificato esistono realmente: si
tratta dei convertitori Flash ADC o direct-conversion ADC. Ma esistono numerose altre tipologie di convertitori
analogico-digitali.
|