Riduzione degli errori nella conversione A/D

La conversione analogico-digitale, come dice lo stesso nome, è il processo per cui una grandezza analogica è resa disponibile e verificabile in un dispositivo digitale, quindi in forma numerica. Ogni convertitore esegue un’operazione di campionamento ed una di quantizzazione. Si tratta di un’operazione a “perdita d’informazione”, in quanto alcuni dettagli iniziali vanno irrimediabilmente persi, anche se la risoluzione adottata è molto alta.

GLI  ERRORI NELLA CONVERSIONE

Nella trasformazione di un segnale, da analogico a digitale, vi è sempre una componente, ideale o reale, che differisce tra le due risultanti. Si definisce pertanto errore la differenza, dinamica o statica, tra un segnale analogico ed il segnale digitale corrispondente alla forma d’onda d’ingresso, secondo la formula:

Anche nei convertitori ideali (e quindi perfetti), è sempre  presente  un  errore,  caratterizzato  dal tipo di operazione di conversione svolta. Tale errore è detto errore di quantizzazione.

Figura 1. ADC ad integrazione

Figura 1: ADC ad integrazione

Figura 2. ADC Servo

Figura 2: ADC Servo

Figura 3. Flash ADC

Figura 3: Flash ADC

Figura 4. ADC per approssimazioni successive

Figura 4: ADC per approssimazioni successive

MCU E ADC

La riduzione dei costi, l’aumento di velocità dei semiconduttori e i vantaggi derivanti dall’utilizzo del processo digitale hanno contribuito ad accrescere la popolarità dei sistemi digitali con delle interfacce analogiche incorporate. Uno dei sistemi più utilizzati è l’ADC implementato  all’interno  di  un  microcontrollore  (MCU). Disponibili in moltissime tipologie e prodotti da svariate industrie, esso permette operazioni di conversione a costi estremamente ridotti. Eppure,  a  dispetto  dei  vantaggi  offerti  dai microcontrollori,  alcune periferiche integrate, come  proprio  l’ADC, possono  costituire  una sfida ai progettisti. Infatti, incorporando in uno stesso dispositivo  dei piccoli  sistemi a larga banda,  le  prestazioni  di  un  ADC  possono essere alquanto compromesse. Il rumore che potrebbe   scaturire   in   maniera  autonoma potrebbe  essere inaccettabile  o,  per  alcune applicazioni,   semplicemente intollerabile. Fortunatamente, seguendo attentamente alcuni  metodi  e semplici  regole, i  potenziali problemi della conversione analogico digitale possono essere evitati.

TIPOLOGIE DI ADC

Per comprendere e risolvere gli errori da conversione, è utile conoscere il meccanismo del funzionamento di un ADC. Si possono distinguere cinque categorie di ADC, ognuno dei quali naturalmente ha vantaggi e svantaggi: per integrazione, servo, flash, per approssimazioni successive, ibrido.

Per integrazione

Il convertitore integratore è utile quando è richiesta un’alta risoluzione (16 bit o più) e bassi costi. Poiché un convertitore semplice è già implementato, l’hardware occorrente è minimo e la risoluzione ottenuta è veramente molto alta. In più, anche l’immunità al rumore è abbastanza favorevole. Sebbene sia possibile implementare questo tipo di convertitore in una MCU, i costruttori non preferiscono  adottare  tale  strada  per  la  sua bassa velocità.

Servo ADC

Per contro, il convertitore servo, tende a possedere un’alta risoluzione e alta velocità di conversione, specialmente con gli ultimi modelli prodotti (es. convertitore sigma-delta). Questi tipi di convertitori tendono a bilanciare il potenziale d’ingresso usando una controreazione molto serrata. Infatti il tipico percorso avanti-indietro del segnale consente di ottenere risultati molto precisi.

Flash ADC

Esiste, in ogni caso, un tipo di ADC più veloce del precedente, che è costituito dal convertitore Flash. Collegando infatti tra loro molti comparatori (uno per ogni livello), le conversioni con altissima larghezza di banda (anche superiori a 100 Mhz) sono davvero un facilmente ottenibili, anche se a bassa risoluzione (di solito 5 o 6 bit).

ADC per approssimazioni successive

Il quarto tipo di ADC è molto popolare, grazie alla minima circuiteria esterna richiesta, velocità operativa medio-alta, e risoluzione medio-alta (solitamente da 8 a 16 bit). Esso utilizza un comparatore per raffrontare il segnale d’ingresso con una tensione di riferimento. Il suo funzionamento si basa sulla ricerca binaria e attualmente è il più diffuso sistema di conversione utilizzato all’interno dei microcontrollori.

ADC ibridi

Infine questi tipi di convertitori utilizzano combinazioni dei precedenti visti sopra, per cercare di ottenere i migliori risultati possibili, in un contesto ben preciso di esigenze.

ERRORI DI QUANTIZZAZIONE

In un convertitore ADC, per risoluzione si intende il numero di valori discreti che esso può rappresentare. Ad esempio, un convertitore ad 8 bit è capace di produrre 28 (256) livelli di tensione diversi. Dovendo convertire il segnale analogico di un trasduttore, con range compreso tra 0 Volt e 5 Volt, in segnale digitale, un ADC con risoluzione di 8 bit, consentirebbe di ottenere 256 livelli di tensioni diversi, e la relativa precisione ottenuta ammonterebbe  a 5/256  Volt, ossia 0,01953125 Volt. Naturalmente non sarà possibile ottenere ulteriori valori intermedi tra quelli generati dalla conversione, proprio a causa della perdita d’informazione. Per ottenere un segnale digitale il più possibile corrispondente a quello analogico d’ingresso è dunque opportuno aumentare a dismisura la risoluzione. In altre parole occorre innalzare il numero di bit utili alla rappresentazione del dato finale. Ciò però comporta una drastica crescita della complessità del circuito e dei costi finali. In ogni caso i digitalizzatori a 10 o 12 bit offrono prestazioni del tutto soddisfacenti. Si possono osservare le qualità di campionamento secondo le seguenti risoluzioni: bassa qualità (8-10 bit), media qualità (10-14 bit), alta qualità (14-20 bit), eccellente qualità (20-24 bit).

Tabella 1. Errori di LSB (least significant bit = bit meno significativo)

Tabella 1: Errori di LSB (least significant bit = bit meno significativo)

ERRORI DOVUTI DAL RUMORE

La risoluzione di campionamento è limitata dal rumore presente nel segnale. Se esiste una quantità elevata di rumore infatti, tutti i tentativi di spingere la conversione ad alti livelli di risoluzione risulterebbero vani, in quanto i bit meno significativi del valore saranno “funzione” del rumore e non del segnale vero e proprio. Pertanto l’informazione iniziale dovrà essere la più pulita possibile ed esente da rumore. Generalmente il rapporto segnale/rumore (S/N, signal/noise) dovrebbe attenersi a +6dB per ogni bit di risoluzione. La presenza o meno di rumore determina l’accuratezza del segnale. L’errore derivante è misurato in LSB (least significant bit, bit meno significativo) ed indica quanti bit rappresentano rumore e quanti rappresentano il segnale vero e proprio. Ad esempio, in un convertitore ADC con risoluzione di 8 bit, un errore di 1 solo LSB è pari a 1/256 della misurazione teorica ed intermini percentuali corrisponde a circa 0,4%.

ALIASING

L’aliasing è un particolare effetto che si ottiene quando un segnale di una certa frequenza viene campionato (per una scelta errata o per la mancanza di risorse) ad una frequenza minore. Ciò che si osserva è una anomalia di riproduzione nelle frequenze interessate. Per annullare l’effetto occorre utilizzare un filtro passa-basso per eliminare la componente ad alta frequenza che superi quella di campionamento. Come si vede in figura 5, campionando  ad una frequenza leggermente minore del segnale in ingresso, si ottiene una forma d’onda con periodo e fase completamente diversi.

Figura 5. Affetto dell’aliasing

Figura 5: Affetto dell’aliasing

UN  CONSIGLIO PER  IL CAMPIONAMENTO CON MCU

Quando si acquisisce un segnale tramite l’ADC di un microcontrollore, non è mai conveniente prelevare un solo valore (per ogni campione) per il suo successivo processo matematico e logico. Può accadere infatti che l’ingresso, se non è ben filtrato o pulito, presenti una componente causale o completamente estranea all’evento che si vuol misurare. Una tecnica per ovviare a questo problema è  quella  di  acquisire  un  numero  relativamente elevato di eventi, appartenenti allo stesso dominio del dato interessato, e su questi effettuare la media aritmetica. In questo modo si riduce drasticamente l’errore da misura causale e l’acquisizione è molto più attendibile. Un esempio chiarirà meglio il concetto. Si vuole acquisire ad ogni ora una temperatura, e memorizzarla su EEPROM. Non considerando la particolare sintassi del codice utilizzato, ma esprimendo la procedura in uno pseudo-codice, l’approccio errato è dato dal listato 1, mentre quello corretto è rappresentato nel listato 2. Col metodo proposto si elimina l’errore dovuto ad una possibile acquisizione  causale  erroneamente  effettuata dal trasduttore di temperatura.

Program SBAGLIATO
While true
   Acquisisci T
   Memorizza T
   Pausa 3600 secondi
Wend
Listato 1
Program CORRETTO
While true
  Somma=0
  For k=1 to 100
    Acquisisci T
    Somma=Somma+T
    Pausa 100 ms
  Next k
  Media=Somma/100
  Memorizza Media
  Pausa 3600 secondi
Wend
Listato 2

IL COMPARATORE

Rappresenta l’elemento principale in un convertitore A/D. La sua capacità di rilevare piccolissime variazioni d’ingresso a fronte di elevati cambiamenti in uscita, influisce notevolmente sulla bontà del sistema. D’altra parte, anomalie o malfunzionamenti del comparatore possono dar luogo a rumore indesiderato. I due parametri fondamentali che influiscono sulla sensibilità al rumore sono la larghezza di banda e le connessioni della sua alimentazione. Comparatori a larga banda rispondono bene sia al rumore che al segnale. Per questo motivo esso dovrebbe essere configurato attraverso degli ingressi differenziali.

IL PROBLEMA NEI  PCB

Tipicamente una causa frequente di malfunzionamenti o di errori di conversione dipende molto dal circuito stampato del sistema. Esso può influire negativamente a causa dei suoi elementi parassiti quali resistività,
capacità o induttanze indesiderate. In questo caso non basta assemblare passivamente i componenti elettronici su un
circuito stampato, ma occorre conoscere a fondo la problematica derivante dalla generazione indesiderata di rumore e segnali spuri. Si può anzi considerare un’arte quella di posizionare le piste al posto giusto e dalle dimensioni corrette. La figura 6 mostra un esempio di disposizione dei componenti alquanto critica. Sebbene perfettamente funzionante, in quanto la corrente fluisce correttamente alle varie utenze, esso presenta alcuni problemi.

Figura 6. Un mediocre circuito stampato

Figura 6. Un mediocre circuito stampato

Prima di tutto l’ADC è posizionato lontano dai terminali di alimentazione. In più l’induttanza parassita delle piste può facilmente generare rumore. In secondo luogo l’Opamp che funziona da buffer per il segnale in ingresso, anche se internamente presente nel MCU, è situato in una posizione poco felice. In terzo luogo, i condensatori di filtro presenti ai capi di ogni IC, sono inefficaci per la riduzione dei picchi di rumore. Dovrebbero essere posizionati ancor più vicino agli integrati, quasi attaccati tra loro. Tutti questi piccoli problemi, apparentemente insignificanti
poiché non pregiudicano il funzionamento del circuito, influiscono negativamente sull’intero processo di acquisizione. La figura 7 mostra, al contrario, un PCB più performante, considerando i problemi sopraesposti.

Figura 7. Un circuito stampato ottimizzato

Figura 7: Un circuito stampato ottimizzato

 

 

Una risposta

  1. Riccardo Ventrella Riccardo Ventrella 7 novembre 2017

Scrivi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *