Come eseguire la calibrazione di un ADC

Calibrazione Convertitore Analogico Digitale

I convertitori analogico digitali (ADC, acronimo di Analog to Digital Converter) sono oggi ampiamente utilizzati in numerosi dispositivi e applicazioni ettroniche, come ad esempio nella registrazione audio, nella strumentazione biomedicale, nelle apparecchiature di test e monitoraggio, e così via. Sul mercato sono disponibili diversi tipi di ADC, ed il progettista elettronico ha la possibilità di scegliere il tipo più adatto basando la propria decisione su due elementi chiave: risoluzione e velocità.

  • La risoluzione, che è funzione del numero di bit usati per rappresentare il valore digitale ottenuto dalla conversione. Per esempio, un ADC con una risoluzione di 12-bit avrà un least significant bit (LSB) pari a 1 / (2 ^ 12). Se la tensione di riferimento è uguale a 5V, esso sarà in grado di eseguire la conversione con una risoluzione (o se si vuole, una precisione) di 0.01953125 V.
  • La velocità, espressa come il tempo richiesto per completare una conversione. Alcuni tipi di ADC vengono per questo detti “flash converter”, proprio perchè richiedono un tempo di conversione molto piccolo, se paragonato a quello di altri tipi di ADC. In qualche altro caso, una risoluzione elevata può essere preferita alla velocità di conversione; così, per esempio, esistono ADC con risoluzione pari a 24-bit (quindi in grado di misurare variazioni molto piccole della grandezza analogica da convertire) ma con tempi di conversione non trascurabili (100 o più millisecondi).

ADC: la calibrazione degli ad converter

Il convertitore analogico digitale ideale fornisce alla sua uscita un valore numerico che è strettamente e linearmente proporzionale al segnale analogico applicato al suo ingresso.

Nella pratica, un ADC reale risulta affetto da tre principali tipi di errore. Ora passeremo in rassegna questi errori e mostreremo come, tramite un algoritmo software eseguito su un processore o microcontrollore, sia possibile eseguire una procedura di calibrazione in grado di compensare gli errori.

ad converter

In figura 1 è visibile la caratteristica elettrica di un ADC ideale: sull’asse x è riportata la tensione analogica in ingresso al convertitore (Vin), mentre sull’asse y è riportato il valore digitale (N) ottenuto con la conversione. Vref è la tensione di riferimento dell’ADC. Con Vin=Vref, ci aspetteremmo di ottenere un valore di N pari a (2 ^ Nres) – 1, dove Nres è la risoluzione dell’ADC, espressa come numero di bit. Per esempio, un ADC ideale con una risoluzione di 8 bit e una tensione di riferimento pari a 5V, fornirà un valore di conversione N pari a 255 quando Vin=5V. Tuttavia, il comportamento reale è spesse volte diverso da quello teorico.

Un primo tipo di errore è rappresentato dall’errore di offset, visibile in figura 2. L’errore di offset è misurato dal numero di LSB (1 LSB è pari a 1 / 2^Nres) fornito come valore di conversione dall’ADC quando Vin è uguale a zero. Un ADC ideale dovrebbe sempre fornire N=0 quando Vin=0.

Consideriamo ora la caratteristica elettrica di un modello di Convertitore Analogico Digitale commerciale, più esattamente l’ADC0800 della National Semiconductor. Si tratta di un convertitore analogico digitale a 8-bit che esegue la conversione adottando la tecnica di approssimazioni successive.

Convertitore analogico digitale

Dando un’occhiata al datasheet, possiamo osservare che l’errore di offset relativo a questo modello (l’errore di offset viene anche detto “zero error”) è pari a +/- 2 LSB.

Un secondo tipo di errore è rappresentato dall’errore di guadagno (gain error), mostrato in figura 3. L’errore di guadagno è dovuto alla non perfetta amplificazione dell’ADC, che provoca come effetto una pendenza della caratteristica differente da quella teorica ideale. Questo tipo di errore presenta le proprietà di essere sistematico (avere cioè una riproducibilità del 100%) e di obbedire ad una legge di tipo lineare. Per questi motivi possiamo rappresentare l’entità dell’errore di guadagno come lo scostamento, per Vin=Vref, del valore convertito da quello ideale (quest’ultimo è pari a 2 ^ Nres – 1). Così, anche l’errore di guadagno potrà essere misurato in numero di LSB. Nel caso dell’ADC0800, l’errore di guadagno è pari a +/- 2 LSB.

Il terzo tipo di errore è l’errore di non linearità, che consiste nella non perfetta linearità della caratteristica dell’ADC. Normalmente viene misurato come massima deviazione tra la caratteristica reale e quella ideale. Nel caso dell’ADC0800, l’entità di questo errore è uguale a +/- 1 LSB.

A questo punto possiamo esaminare una procedura che permette di compensare sia l’errore di offset che l’errore di guadagno. La procedura si articola sui seguenti due passi:

  1. Impostare un valore di tensione in ingresso pari a zero, cioè Vin=0. Il valore di conversione corrispondente, chiamiamolo Nzero, viene quindi letto dall’ADC e memorizzato in una memoria persistente (ad esempio in una eeprom oppure in una NVRAM).
  2. Impostare un valore di tensione in ingresso Vin pari alla tensione di riferimento (in questo caso siparla anche di tensione di fondo scala, Vfs), cioè Vin=Vfull scale=Vref. Il corrispondente valore convertito, chiamiamolo Nfs, viene quindi letto dall’ADC e memorizzato in una memoria persistente (ad esempio in una eeprom oppure in una NVRAM).

L’equazione della retta associata alla caratteristica ideale è la seguente:

N = ( (2 ^ Nres) – 1) / Vref) x Vin

L’equazione della retta associata invece alla caratteristica reale è la seguente:

N’ = ((Nfs – Nzero) / Vref) x Vin + Nzero

In questo modo abbiamo ottenuto l’equazione della retta che meglio rappresenta la caratterisitca di un ADC reale. Come già detto in precedenza, i parametri di calibrazione Nzero e Nfs dovrebbero essere memorizzati in memoria persistente, e modificati solo quando l’ADC viene inserito per la prima volta nel circuito, oppure ogni volta che esso viene sostituito con un altro in seguito al verificarsi di guasti.

Ti potrebbero interessare anche:

Spingiamo al massimo l’ADC del PIC

Corso di microprogrammazione: i convertitori ADC e DAC

3 Comments

  1. MarciTy 21 aprile 2014
  2. slovati slovati 22 aprile 2014
  3. Giorgio B. Giorgio B. 26 aprile 2014

Leave a Reply