Tutorials - PIC

 

Perché le tensioni di riferimento sono 1.024, 2.048 o 4.096 V? 

Osservando le caratteristiche dei componenti indicati ai link precedenti, si verifica che la maggior parte delle tensioni di riferimento prodotte non sono numeri interi, ad esempio 1V o 2V, ma le più comuni sono valori apparentemente "strani":

  • 1.024 V
  • 2.048 V
  • 2.56 V
  • 4.096 V

Il motivo per cui la tensione di riferimento ha questi valori è quello di fornire una precisa risoluzione in conversione A/D. 
E se osserviamo vediamo che:

1024 2 10
2048 2 11
256 2 8
4096 2 12
512 2 9

ovvero, si tratta in ogni caso di potenze di 2.
E il risultato della conversione è un valore binario, ovvero basato su un sistema numerico di potenze di 2. 
In pratica questo comporta che il valore di ogni bit sarà un numero intero e non frazionario.

Se, ad esempio, il riferimento A/D positivo è 2 V e il riferimento negativo è 0 V e la risoluzione della conversione è di 10 bit, ogni bit avrà il valore di:

risoluzione di uno step = (Vref+ - Vref-) / 1024 = (2-0) / 1024 = 1.953125 mV

il che rende necessario che nelle operazioni successive di trattamento del risultato sia impegnata matematica a virgola mobile.
Se utilizziamo invece un riferimento a 2,048 V, abbiamo:

risoluzione di uno step = (Vref+ - Vref-) / 1024 = 2.048 / 1024 = 2 mV

 il che semplifica decisamente il trattamento del risultato. Analogamente, se il riferimento positivo sarà 5V:

risoluzione di uno step = (Vref+ - Vref-) / 1024 = 5 / 1024 = 4.8828125 mV

mentre se utilizziamo il riferimento a  4.096 V:

risoluzione di uno step = (Vref+ - Vref-) / 1024 = 4096 / 1024 = 4 mV

Questo, nella maggior parte dei casi, rende i calcoli più facili e precisi. Ad esempio, in Assembly, non sarà necessario ricorrere a librerie di matematica in virgola mobile e nei linguaggi ad alto livello i numeri interi renderanno i calcoli molto più veloci.

In conclusione, l' impiego di tensioni di riferimento con valore multiplo di 2 consentono di ridurre i calcoli successivi alla conversione, dato che permettono di agire su numeri interi e non su numeri frazionari.

Analizzando i dati forniti dai costruttori, si rileva che, comunque, sono disponibili altri riferimenti che hanno valori analoghi a quelli dei campioni (pile) elettrochimici, a lungo utilizzati nei laboratori di fisica e di elettrologia (1.235 e simili), ed esistono anche riferimenti di valore "preciso" (in senso decimale) come i classici 5V e 10V, ampiamente utilizzato nei front end analogici complessi. Questo riferimento è pensato per circuiti alimentati dal +/- 12 o +/-15V, tipico dell' elettronica analogica.

Commercialmente si reperiscono riferimenti di tensione a:

  • 1 - 1.024 - 1.136 - 1.2 - 1.225 - 1.235 - 1.247 - 1.25 - 1.8 V
  • 2 - 2.048 - 2.3 - 2.465 - 2.495 - 2.5 - 2.56 - 2.75 V
  • 3 - 3.3 V
  • 4.096 V
  • 5 - 8192 - 10 V

e variabili in gamme abbastanza ampie, da 0.5 a 37V.
Quindi, per impieghi specifici, non è difficile trovare il riferimento più adatto.


Quale valore per la tensione di riferimento ?

L' ADC richiede una tensione di riferimento di zero (Vref-) ed una tensione di riferimento di massimo (Vref+). Lo "zero" digitale in uscita si avrà per una tensione di ingresso pari a Vref-, mentre il massimo digitale si avrà per un ingresso pari a Vref+.

Se utilizziamo la tensione di alimentazione come Vref, si avrà che:

  • Vref+ = Vdd (la tensione di alimentazione del controller
  • Vref- = Vss (0 volt)

Alcuni microcontroller hanno la possibilità di utilizzare un pin analogico come ingresso per una Vref+ esterna, che potrà quindi avere un valore diverso (ma non maggiore !) della Vdd.
Altri possono dedicare due pin, di cui uno alla Vref+, come appena detto ed un' altro alla Vref-, che a questo punto può assumere valori maggiori di 0V (ma non negativi rispetto alla massa, nè maggiori di Vref+).

Utilizzando questa opzione, si otterrà una misura raziometrica:

  • un ingresso di una tensione pari a Vref- sarà convertito in una uscita pari ad uno 0 digitale
  • un ingresso di una tensione pari a Vref+ sarà convertito nel numero digitale codificato come 2N-1
  • una tensione di ingresso X compresa tra i due valori sarà convertita come X * (2n-1) / Vdd

Riassumendo in una tabella:.

Tensione di riferimento Risultato della conversione
[hex] 
MASSIMO ZERO
Tensione di alimentazione Vdd Vss
Massa con Vref+ esterna Vref+ Vss
Tensione Esterna Vref+ Vref-

E'evidente che la conversione risulterà tanto più accurata quanto il range del valore analogico da valutare sarà uguale al range compreso Vref- e Vref+  

Vx = Vref- + (range * X) / (2n-1)

dove:

 range = Vref+ - Vref-

Una tabella dà una idea più precisa dei risultati possibili per una risoluzione di 10 bit

Vx
digitale
[bit]

Vref+ = 5V
Vref- = 0 V
range = 5 V
Vref+ = 4.096
Vref- = 0V
range = 4,096V
Vref+ = 4.096
Vref- = 1,024V
range = 3.072V
1 4.887 mV 4 mV 3 mV
20 0,097 V 0.080 V 1.082 V
100 0.488 V 0.400 V 1.317 V
500 2.443 V 2.001 V 2.490 V
750 3.665 V 3.002 V 3.223 V
900 4.398 V 3.060 V 3.663 V
1000 4.887 V 4.003 V 3.956 V

Per fare un esempio pratico, supponiamo che la tensione di ingresso abbia un massimo 4V, ma il suo valore minimo sia 1.1V e non 0V. Con un riferimento a 5V gran parte della dinamica del convertitore resta inutilizzata.
Possiamo recuperare la situazione utilizzando il riferimento Vref- del modulo ADC.  Ricordando che:  

risultato digitale X per la tensione Vin = ((Vin - Vref-) * (2n-1)) / (Vref+ - Vref-)

possiamo costruire una tabella che compari il risultato della conversione per una tensione di riferimento pari a quella di alimentazione (5V) e per un riferimento esterno che utilizzi Vref+ = 4.096 V e Vref- = 1.024 V.

Vin
[V]

Risultato digitale della conversione a 10 bit
Vref- = Vss (0V)
Vref+ = Vdd (5V)
Vref- = 1.024 V
Vref+ = 4.096 V

1 bit = 4.88 mV

1 bit = 3 mV

1.1 225dec = E1hex 25dec = 19hex
1.5 307dec = 133hex 159dec = 9Fhex
2 409dec = 199hex 325dec = 145hex
2.5 511dec = 1FFhex 492dec = 1EChex
3 614dec = 266hex 658dec = 292hex
3.5 716dec = 2CChex 825dec = 339hex
4 818dec = 332hex 991dec = 3DFhex

Si può osservare come l' aggiustamento della Vref, sia al livello basso che al livello alto, permette di seguire con maggior precisione la misura, ampliando il range dinamico della conversione.

Se ne conclude che l' impiego di una adeguata tensione di riferimento, calcolata in base alle esigenze del segnale da valutare, possa essere una soluzione fortemente migliorativa per il risultato della conversione.


Conclusioni

Posiamo fissare i seguenti punti:

  1. la qualità del risultato della conversione dipende sensibilmente dalla qualità della tensione di riferimento
  2. la qualità della tensione di riferimento dovrà essere proporzionale alla risoluzione che si desidera ottenere. Occorrerà quindi provvedere al generatore di tensione di riferimento adeguato all' applicazione
    E' inutile disporre di un ADC con un elevato numero di bit di risoluzione se poi la tensione di riferimento utilizzata non consente una corretta lettura di questa risoluzione !
  3. la qualità della tensione di riferimento dipende essenzialmente dalla sua stabilità e precisione con le variazioni di temperatura e di tensione di alimentazione.
  4. La tensione di alimentazione è adatta come Vref solo per basse risoluzioni (8 bit o meno). Per risoluzioni maggiori occorre un riferimento esterno al microcontroller. L' uso di un integrato progettato per questa applicazione è la soluzione ideale
  5. un valore di Vref multiplo di 2 consente di ridurre i calcoli successivi alla conversione
  6. una scelta opportuna di Vref- e Vref+ può migliorare la resa della conversione

In ogni caso, si dovrà scegliere il circuito della tensione di riferimento in funzione dell' applicazione. Ed è inutile applicare componenti di elevatissima precisione e stabilità (e costo) in applicazioni a bassa risoluzione. Come è insensato utilizzare tensioni di riferimento di bassa qualità se si vogliono apprezzare i bit meno significativi della conversione.


Documentazione

Alcuni link a documenti interessanti


 

  

Copyright © afg . Tutti i diritti riservati.
Aggiornato il 14/09/11 .