La tensione di riferimento nei microcontroller
Commercialmente sono disponibili un gran numero di circuiti integrati e
moduli con funzione di ADC e questo consente di introdurre questa funzione in
qualsiasi progetto.
Nei microcontroller, dove la tendenza è quella di riassumere in un unico
componente il maggior numero di funzioni, assai spesso un modulo ADC si trova integrato nel
chip, dato che questa operazione è fondamentale per un gran numero di
applicazioni. Si tratta solitamente di convertitori SAR con risoluzione tra 8 e 12
bit e frequenza di campionamento massima attorno ai 100 ksps.
|
Va tenuto presente l' impiego per cui sono previsti i microcontroller embedded,
ovvero automatizzare processi a costi limitati. Quindi queste risoluzioni sono
generalmente adeguate o superiori alle necessità.
Risoluzioni maggiori (14-24 bit) saranno possibili,
quando necessarie, con l' aggiunta di componenti analogici esterni, che richiederà una circuiteria spesso più complessa di quella del necessaria al microcontroller
stesso e, probabilmente, una elevata potenza di calcolo per elaborare i
risultati.
|
Con un fondo scala di 5V, una conversione a 12 bit permetterà di
apprezzare (teoricamente) differenze del segnale di ingresso di 1.22 mV.
Queste risoluzioni sono adeguate non solo per misure di temperatura o
pressione o tensione, ma anche in applicazioni di mechatronica o
generazione di segnali complessi.
Ma, in generale, il target è meno impegnativo e 10 bit o 8 bit o meno sono
spesso più
che adeguati.
Certamente, per applicazioni più gravose, si trovano in commercio convertitori a 16, 18, 24 bit.
Ma per implementare questi dispositivi occorrono sofisticati front end con la
grandezza da misurare, riferimenti di tensione di estrema precisione e una
realizzazione pratica critica, oltre alla necessità di una elevata potenza di
calcolo sui risultati, onde evitare che parte della risoluzione teorica vada in
pratica perduta per rumore, disturbi, imprecisioni dell' hardware. Per questo
genere di misure il supporto digitale necessario potrà dipendere da strutture
più complesse di un semplice embedded, con i relativi costi.
Per queste ragioni, la risoluzione dei moduli ADC integrati nei
microcontroller è
limitata ed è limitata di conseguenza anche la necessità di una tensione di riferimento
particolarmente elaborata, tanto che, di base, essa è semplicemente la tensione di alimentazione del
microcontroller stesso.
Si tratta di una soluzione quasi sempre adatta per basse
risoluzioni, in quanto, a meno
di curare particolarmente la qualità dell' alimentazione generale, essa è
afflitta da problemi di stabilità e da rumore elettrico che, se non hanno effetti
sul funzionamento digitale, ne possono avere su quello analogico.
Di conseguenza, i progettisti fanno si che un buon ADC disponga della possibilità di utilizzare
anche una tensione
di riferimento esterna. In questo modo si potrà implementare una sorgente di
tensione di riferimento adeguata all' applicazione.
|
In generale, tutti i PIC che integrano un ADC a 10 o 12 bit comprendono le due opzioni:
- il semplice utilizzo della tensione di alimentazione (Vdd -Vss)
come tensione di riferimento
- oppure di dedicare uno o due pin alla Vref, che sarà
generata all' esterno del chip con un opportuno circuito.
La scelta della tensione di riferimento viene effettuata agendo su
due bit (VCFG1:0) di uno dei registri di configurazione del modulo ADC
(ADCON
o ADCON1).
E' possibile selezionare 3 diversi ambienti:
- Vref = tensione di alimentazione
- Vref+ esterna e riferimento Vref- a massa
- Esterne sia Vref+ che Vref-, diverso
dalla massa
|
A cosa serve questa gamma di possibilità?
Ricordiamo che dal valore della tensione di riferimento dipende il valore
attribuito ad un bit del risultato digitale. Questo, in altre parole, indica
che:
Vref = valore di uno step * risoluzione
= valore di uno step * 2N
dove N è il numero dei bit del risultato della conversione
e Vref è la differenza (Vref+
- Vref- )
Ovvero, l'
ampiezza della tensione di riferimento, a parità di numero di bit di
risoluzione, determina la definizione di 1 bit del risultato.
Per una
risoluzione di 10 bit ed una tensione di alimentazione di 5 V:
Tensione di
riferimento
|
Range
Vref+ - Vref- |
Valore di uno step
Vref / 2N |
|
Vref+ |
Vref- |
1 |
Alimentazione |
Massa |
Vdd - Vss = 5 |
4,88 mV |
2 |
Vref+ esterna 4096 V |
Massa |
4.096 - 0 = 4.096 |
4 mV |
3 |
Vref+ esterna 4096 V |
Vref- esterna 1024 V |
4.096 -1.024 = 3.072 |
3 mV |
1. Nel caso di impiego della tensione di alimentazione essa sarà pari alla Vref,
che quindi avrà il valore massimo della Vdd ed il riferimento a massa della
Vss. Ad esempio, se il microcontroller è alimentato a 5V,
questo valore sarà quello delle tensione di riferimento.
2. Nel caso di sorgente esterna, un pin potrà essere dedicato a ricevere la Vref+
da una fonte esterna, mentre il riferimento a livello minore sarà
quello della massa (Vss). Ad esempio, se il microcontroller è alimentato a 5V,
ma al pin di ingresso della Vref+ viene applicata una
tensione esterna di 4.096V, questo valore sarà quello delle tensione di
riferimento, dato che la Vref- sarà connessa alla
massa ( Vss).
3. Se entrambi i pin sono dedicati alla Vref , uno accetterà la la tensione
maggiore (che dovrà essere comunque uguale o minore della Vdd),
indicata con Vref+, l' altro quella minore
(che potrà essere maggiore di Vss), indicata con Vref-. Questo consente di ottenere uno
"spazio" di misura quanto più possibile adeguata alle caratteristiche
della tensione di ingresso e ridurre di conseguenza i calcoli successivi per l'
aggiustamento dei risultati della conversione.
Ad esempio, se al pin Vref+ viene applicata una
tensione esterna di 4.096V e al pin Vref- sarà
connessa una tensione esterna di 1.024 V, la tensione Vref sarà
data da:
(Vref+ - Vref-
) = 4.096 - 1.024 = 3.072 V
Raccogliendo quanto detto in una tabella:
Tensione di
riferimento |
Vmax |
Vmin |
1 |
Tensione di alimentazione |
Vdd |
Vss |
2 |
Massa e Vref+ esterna |
Vref+ |
Vss |
3 |
Tensione Esterna |
Vref+ |
Vref- |
Se si utilizza la tensione di alimentazione come riferimento, il valore
maggiore, ovvero quello che darà il massimo risultato digitale, è la tensione di funzionamento
Vdd, mentre la minore è la Vss, ovvero
0V.
Inoltre, il range della misura è:
range della misura = Vmax - Vmin = Vref+
- Vref-
Quindi, dalla tensione di riferimento dipende sia l' ampiezza di uno step,
sia il livello di tensione di ingresso che darà il risultato massimo o lo zero.
Per una conversione a 10 bit si avrà:.
Tensione
di riferimento |
Risultato
della conversione
[hex] |
3FF |
000 |
1 |
Tensione di alimentazione |
Vdd |
Vss |
2 |
Massa e Vref+ esterna |
Vref+ |
Vss |
3 |
Tensione Esterna |
Vref+ |
Vref- |
Ad esempio, per un PIC alimentato a 5V, questa sarà la sua massima tensione di riferimento,
mentre la minima corrisponderà allo zero della massa comune.
Nel caso dell' esempio:
range della misura = Vmax - Vmin = Vdd - Vss
= 5 - 0 = 5 V
e ogni bit varrà:
valore di uno step = range della misura
/ risoluzione = 5 / 1024 = 4.88 mV
Disponendo di un convertitore a 8 bit (256 step), con una Vref
di 5V, gli step della
conversione (1 bit) avranno la seguente risoluzione:
risoluzione di uno step = Vdd / 256 = 5 / 256 = 19,56 mV
ovvero ogni bit del risultato della conversione varrà 19.56 mV.
Se il convertitore è a 12 bit (4096 step), la risoluzione per bit diventa 1.22
mV.
Di nuovo ricordiamo: non è importante che si tratti di 4.97V piuttosto che
5.03V, in quanto,
sapendone il valore, basterà correggere matematicamente il risultato della
conversione per riportarlo alle condizioni volute. Importante, piuttosto,
sarà
la sua stabilità, ovvero la certezza che ogni volta venga effettuata la
conversione, il riferimento abbia sempre lo stesso valore. |
Se la precisione dell'ADC equivale allo 0,1% del massimo, una
tensione di riferimento con più dello 0,1% di instabilità è in grado di
modificare il
valore numerico emesso dall' ADC. Pertanto occorre che la Vref
abbia una
stabilità superiore, ad esempio 0.05%.
E questa stabilità, come abbiamo detto, comprende due fattori principali: la dipendenza dalla temperatura e
quella dalla tensione principale di alimentazione.
Ed è evidente che la tensione di alimentazione non dovrà avere
neppure disturbi casuali o rumore sovrapposto, che si rifletteranno in errori nella
misura; e questo non è semplice da ottenere in
circuiti essenzialmente digitali dove circolano correnti impulsive dovute, ad
esempio, alle commutazioni dei carichi sugli I/O. Quindi si dovranno minimizzare
disturbi, instabilità, rumore sovrapposti alla tensione continua e dovuti al
raddrizzamento dell' alternata o ad un sistema di conversione DC/DC di tipo
switch mode.
Nel caso della conversione a 12 bit un ripple di alimentazione di una decina di millivolt,
valore comune, renderà
immediatamente invalidi almeno gli ultimi tre o quattro bit del risultato della
conversione, mentre danneggerà solo l' ultimo della conversione a 8 bit.
Non è impossibile realizzare sistemi di alimentazione a basso
rumore ed alta stabilità. Il problema è che il loro costo può salire
sensibilmente rispetto a semplici regolatori a tre terminali, tipo 7805,
sopratutto se la potenza richiesta non è minimale, dato che dall'
alimentazione generale può dipendere non solo il microcontroller, ma anche un
certo quantitativo di elementi di I/O.
Queste considerazioni portano all' idea di impiegare una tensione diversa da quella di
alimentazione. In queste condizioni
possiamo:
-
utilizzare una circuiteria che minimizzi l' imprecisione, il
rumore, le variazioni della tensione di alimentazione e la stabilità nel
tempo
-
attribuire ad ogni step un determinato valore ed adeguarlo all'
applicazione in modo da ridurre calcoli sul risultato, cosa che migliora le prestazioni del processore, dato che le operazioni matematiche
impegnano algoritmi composti da cicli di numerose istruzioni.
Con una tensione esterna, il range diventa:
range della misura = Vref+ - Vref-
Quindi, la formula
vista prima è
generalizzabile con:
risoluzione di uno step = (Vref+ - Vref-) / risoluzione
La precisione dell'ADC, per essere sfruttata pienamente, si basa
dunque sull'accuratezza della tensione di riferimento.
In linea di massima si potrà attribuire alla stabilità della Vref i seguenti
parametri minimi:
Risoluzione dell' ADC |
8 Bit |
10 Bit |
12 bit |
Stabilità richiesta in % |
> 0,2 % |
> 0,05 % |
> 0,005 % |
Stabilità richiesta in ppm |
> 2000 ppm |
> 500 ppm |
> 50 ppm |
Vanno tenuti presenti anche i limiti che Microchip indica nei
fogli dati. La tabella seguente, tratta dal data sheet della famiglia 18Fx321 li
riporta:
In particolare, il parametro A20 limita la differenza tra
VrefH e VrefL a 1.8V nel caso in cui la tensione di alimentazione del PIC sia minore
di 3V e a 3V quando la Vdd è maggiore.
Tensione di alimentazione |
Vref+ - Vref- |
< 3 V |
>= 1.8 V |
>= 3 V |
>= 3 V |
Questo vuol dire che:
E, nel caso in cui sia impiegata una tensione di riferimento esterno Vref+
essa:
Se si utilizza sia un doppio riferimento esterno occorrerà che:
Ovvero, ad esempio, con 3.6 V di alimentazione, si potrà
utilizzare qualsiasi Vref+ esterna >= 3 V, ma minore di 3.9 V.
Con una tensione di alimentazione di 5 V, si potrà impiegare una qualsiasi Vref+ esterna >= 3 V, ma minore di
5.3 V. Se si utilizza anche un riferimento esterno basso (Vref-),
occorre verificare il range.
Ad esempio, sarà possibile una Vref- di 1.024 V ed una Vref+ di 4.096 V, dato che:
(VrefH -
VrefL) = 4.096 -1.024 = 3.072
che è maggiore di 3 V; ma non è consigliato
utilizzare una VrefL di 2.5 V, dato che:
(VrefH - VrefL)
= 4.096 -2.5 V = 1.596 V
è minore di 3 V. E così via.
Va notato con cura anche il parametro A30, che limita la resistenza della sorgente
esterna a 2.5k.
L' informazione va completata con la nota 3 alla successiva tabella
27-25, dove viene dato un tempo di sample minimo di 1.4 us, ma con la resistenza
della sorgente della tensione di soli 50 ohm !
Ovvero, è opportuno che le sorgenti di tensioni esterne abbiano la minima impedenza possibile per rispettare le
temporizzazioni minime. Ogni aumento di questa impedenza avrà come conseguenza
la necessità di aumentare il tempo di acquisizione.
E questa indicazione comprende anche la sorgente della tensione di riferimento esterno,
che dovrà avere la
minima impedenza, anche se la corrente utilizzata (parametro A50) è molto
limitata.
Vediamo più in dettaglio vari casi.
|