Convertitore analogico digitale ADC

Conversione analogico digitale
L’elettronica moderna ha spostato la maggior parte delle applicazioni nel mondo digitale in quanto i
sistemi a microprocessore sono diventati più veloci ed economici rispetto al passato. Oggi si tende
ad utilizzare per tutte le applicazioni elettroniche segnali “digitali” cioè segnali fisici (suono,
immagini, etc.) trasformati in “numeri”, e quindi segnali che possono essere gestite da circuiti
programmabili.
Il mondo fisico però per sua natura è continuo e le grandezze elettriche che si generano con un
trasduttore lineare sono continue. Occorre quindi fare una trasformazione tra il mondo delle
grandezze fisiche continue ed il mondo digitale per poter usare le moderne apparecchiature.
Tale conversione si chiama conversione analogico/digitale in quanto viene fatta agendo sulle
grandezze elettriche continue, “analoghe” a quelle fisiche, ottenute da queste tramite trasduttori
con caratteristica di trasferimento lineare.
Siccome i segnali elettrici continui, ottenuti da trasduttori, sono “analoghi” a quelli fisici questi
vengono chiamati “analogici”.
I segnali elettrici analogici vengono trasformati in grandezze digitali (numeriche) da circuiti apposito
chiamati “circuiti di conversione analogico digitale”, in inglese ADC
Il circuito di conversione analogico digitale riceve in ingresso una tensione analogica variabile in un
range ben definito (generalmente 0V-5V) e fornisce in uscita numeri variabili da un valore minimo o
ad un valore massimo 2n-1 dove n è il numero di cifre binarie usato per esprimere il numero.
Ad esempio se n=8 il valore massimo è uguale a 255.
Il disegno seguente esprime la relazione tra la tensione analogica e il valore digitale.
La dinamica d’ingresso del convertitore analogico digitale viene suddivisa in 256 intervalli (nel caso
n=8) ed ogni intervallo viene associato ad un numero compreso tra 0 e 255. Il valore analogico
presente in ingresso si troverà quindi appartenente ad uno ed solo intervallo. Il numero associato a
questo intervallo rappresenta il corrispondente digitale del valore analogico in ingresso.
Descriviamo meglio il funzionamento di un convertitore analogico digitale prendendo come
esempio 4 bit di uscita e range di ingresso 0V-5V. L’intervallo andrà suddiviso 24=16 sottointervalli
numerati da 0 a 15 come riportato nella figura seguente.
Ogni intervallo ha ampiezza pari a ∆V=5/16=0.312 quindi le tensioni in ingresso comprese tra un
minimo di 0V fino a 0,312V vengono convertite in 0000; tutte le tensioni comprese tra 0,313V e
0,624V vengono convertite nel numero 0001; tutte le tensioni comprese tra 0,624 a 0,936 vengono
convertite nel numero 0010, ecc.
La formula per ricavare il numero binario in uscita è la seguente:
Vi  2n Vi  16
N

VREF
5
Esempio:
Supponendo di avere un convertitore A/D con uscita a 4bit, ed un range 0-5 volt,
trovare il codice binario di uscita se la tensione d’ingresso vale 0,7V.
N 
0,7  16
 2,24  2  0010
5
Esempio:
Supponendo di avere un convertitore A/D con uscita a 4bit, ed un range 0-5 volt,
trovare la tensione d’ingresso se il codice binario d’uscita vale 1011.
N=(1100)bin = (12)dec
Vi 
N  VREF
n
2

12  5
60

 3,75
16
16
La tensione d’ingresso si trovava in un intervallo Vi e Vi+∆V cioè 3,75V e 3,75+0,312= 4,062V
Esempio:
Supponendo di avere un convertitore A/D con uscita a 8bit, ed un range 0-5 volt,
trovare il codice binario di uscita se la tensione d’ingresso vale 2,2 V.
N 
2,2  256
 112,64  112  01110000
5
Se il segnale in ingresso è una tensione continua, essa la posso rappresentare con un solo
numero, ma se la tensione in ingresso è variabile, l’uscita digitale assume numeri diversi al variare
dell’ingresso.
In sede di ricostruzione del segnale dai campioni i numeri vengono trasformati in una successione
di rettangoli, cioè una gradinata. L’altezza di ogni gradino è pari al limite minimo dell’intervallo al
quale appartiene il campione.
Vediamo con un esempio come viene fatta l’operazione di ricostruzione del segnale.
Ovviamente la gradinata è differente dal segnale di partenza anche se molto simile se n è grande
ed il passo di campionamento è piccolo.
Uno scienziato di nome Schannon ha dimostrato che è possibile ricostruire il segnale analogico di
partenza filtrando opportunamente la gradinata, per smussare gli spigoli, ma solo se abbiamo
provveduto a in ingresso un numero di campioni al secondo pari al doppio della frequenza
massima del segnale da convertire.
In termini matematici, se il passo di campionamento ∆t rispetta il teorema di Shannon, ed è legato
alla frequenza massima del segnale tramite la relazione t 
1
fmax , allora in sede di
2
ricostruzione del segnale, facendo un filtraggio sulla gradinata che ottengo dai campioni, posso
ricostruire il segnale di partenza senza errori.
I vantaggi nel trasmettere i segnali come campioni sono notevoli, infatti i dati numerici in uscita dal
convertitore analogico digitale possono essere trasmesse utilizzando le moderne linee numeriche
ad esempio fibre ottiche, oppure quelle più vecchie ad esempio doppino telefonico. Le
apparecchiature utilizzate sono ad esempio il personal computer che lavorano su dati digitali. I dati
digitali ottenuti possono essere archiviati utilizzando moderne apparecchiature cd, dvd, ecc.
L’operazione conversione viene eseguita da un componente che si chiama: convertitore analogico
digitale. Molti sono i tipi di integrati in commercio ma quello che prenderemo in considerazione
sarà l’ ADC080X. Questo integrato possiede prestazioni sufficienti per tutte le nostre applicazioni,
con un costo abbastanza basso. Esso è inoltre descritto in numerosi testi scolastici in quanto si
presenta didatticamente semplice da capire.
Le specifiche ADC080X:
È un convertitore a 8 bit in tecnologia CMOS si presenta in un contenitore a 20 PIN e funziona con
una sola tensione di alimentazione da 5V.
Di seguito riportiamo la piedinatura dell’integrato ADC0801 (TOP VIEW: Visto da sopra)
L’integrato possiede 2 ingressi analogici Vin- e Vin+ che comandano un ingresso differenziale. Il
dato digitale all’uscita è legato quindi alla differenza Vin+ e Vin-. Nella nostra applicazione
utilizziamo solo l’ingresso Vin+ mentre Vin- sarà collegato a massa. Le conversioni sono
cadenzate da un circuito di clock che può essere sia esterno che interno. Se voglio utilizzare un
circuito esterno posso introdurre un’onda quadra nel piedino 4. Se non possediamo un clock
esterno possiamo realizzare un clock interno inserendo esternamente una resistenza e un
condensatore in serie. Il condensatore ha un PIN a massa e la resistenza viene collegata al PIN
19. Nel nodo tra RC si trova un’onda quadra che è il clock da inserire al PIN 4.
La frequenza del clock è legata alla resistenza e al condensatore dalla seguente formula:
f 
1
. Il range d’ingresso può essere modificato agendo sul piedino 9. Il valore minimo del
1,1 R  C
range è uguale a 0V mentre il valore massimo è il doppio della tensione inserita al morsetto 9.
Ad esempio se nel morsetto 9 che si chiama VREF/2 applico una tensione pari a 2.5V il range
d’ingresso va da 0V a 5V.
L’ ADC080X possiede due masse separate, una per l’ingresso analogico (nel pin 8), e una per
l’uscita digitale (nel pin 10). L’alimentazione solo positiva viene inserita al pin 20.
Gli 8 bit in uscita sono prelevabili dal piedino 18 (LSB) al pin 11 (MSB).
Il PIN 3 viene utilizzato per iniziare una nuova conversione, in particolare a riposo si trova a livello
alto ma quando l’esterno porta questo livello a massa si ha la partenza di una nuova conversione.
Questo piedino viene chiamato WR\ e viene utilizzato come START OF CONVERTION (SOC).
Dopo un tempo di 100μs la conversione avrà avuto termine. Il convertitore segnala la fine della
conversione portando la tensione del piedino 5 dal livello alto a livello basso. Questo PIN prende il
nome INTR\ e funge da segnalazione di END OF CONVERTION (EOC).
I dati digitali rimangono all’interno dell’integrato fino a che tramite il PIN 2 l’esterno impone all’ADC
di trasferirli in uscita. Questo trasferimento avviene ponendo la tensione del piedino 2 (RD\) a
livello basso. Fino a quando l’esterno non porta a zero la tensione del PIN 2, i dati in uscita
rimangono quelli della conversione precedente. Il PIN 1 viene chiamato CHIP SELECT (CS\) e
serve per scollegare, cioè porre nel terzo stato (alta impedenza), tutte le linee digitali in uscita
quando la tensione è uguale a 5V.
MODALITÀ DI FUNZIONAMENTO:
L’ADC0804 può funzionare in due modalità differenti.
La prima modalità di funzionamento si ha facendo colloquiare l’ADC080X con un microprocessore
(o microcontrollore), seconda modalità di funzionamento viene chiamata FREE RUNNING (corsa
libera) ed non è necessario l’accoppiamento con un micro. Nella modalità di funzionamento con
colloquio sarà il micro a portare a livello basso WR\ (SOC). Quando il convertitore ha finito la
conversione segnala l’evento tramite INTR\ (EOC). Sarà il micro a portare a livello basso RD\ per
rendere disponibili i dati in uscita.
Il microprocessore Z80 (il capostipite dei moderni processori) può gestire l’ADC come se fosse una
memoria. Per far questo è sufficiente collegare i piedini dello Z80 con quelli dello stesso nome
dell’ADC. Questo è stato il motivo della grande diffusione dell’integrato. L’ADC0804 può essere
pilotato anche da altri microcontrollori, ma il circuito di collegamento e il programma di gestione
sono più complessi.
Nella modalità FREE RUNNING il convertitore funziona senza essere gestito da un
microprocessore. Nello schema elettrico vengono collegati assieme il WR\ con INTR\. In questa
maniera, quando INTR\ si porta a livello basso (fine della conversione), anche WR\ si porterà a
livello basso (generando l’inizio di una nuova conversione). Può capitare che l’integrato non inizi a
convertire; per tale motivo viene inserito nel circuito un pulsante che serve per portare a massa
INTR\. Le conversioni vengono scritte nelle uscite istantaneamente in quanto il RD\ è posto
sempre a massa e quindi appena una conversione terminata le uscite si aggiornano. Infine CS\ è a
massa mantenendo sempre il circuito abilitato.
Circuito di condizionamento
Un segnale analogico che deve essere convertito in un codice digitale da un convertitore A/D deve
appartenere ad un preciso intervallo. Se ci riferisce all’integrato precedente ADC080X il pin 9
(Vref/2) determina il valore massimo della tensione che può essere applicata in ingresso (il valore
minimo in tale è zero).
Non è opportuno collegare, anche se è possibile, tale convertitore direttamente ad un trasduttore,
per il seguente motivo: un trasduttore fornisce in uscita una tensione che varia in un certo intervallo
che difficilmente coincide con il range d’ingresso del convertitore. In tale situazione non si
avrebbero in uscita del convertitore A/D tutti i codici binari possibili.
Si opera quindi nella seguente maniera:
-
si pone il morsetto 9 del convertitore A/D ad una tensione pari a 2,5V in modo che il suo
range d’ingresso sia da 0 a 5V
-
si inserisce tra il trasduttore ed il convertitore A/D un circuito cuscinetto, chiamato circuito di
adattamento, che modifica il range d’uscita del trasduttore e lo adatta al range d’ingresso
del convertitore.
Dal punto di vista elettronico/matematico per trasformare in maniera lineare un intervallo di valori in
un secondo intervallo si possono effettuare due operazioni in cascata:
-
una traslazione dell’intervallo di partenza in modo che il suo valore minimo diventi zero.
-
Un’amplificazione o attenuazione in modo che il valore massimo dell’intervallo di partenza
coincida con quello dell’intervallo d’uscita.
Queste due operazioni possono essere svolte da un circuito chiamato amplificatore differenziale.
La funzione di trasferimento del seguente circuito è:
Vu  (Ving  Vref )  (
R2
)
R1
In altri termini, la tensione d’ingresso viene prima traslata (sottrazione) di un valore Vref e poi
amplificata (moltiplicazione) di un fattore R2/R1.
Esercizio: trasformare il range [10mV 60mV] nel range [0V 5V]
Prima operazione: traslazione di 10mV ed il range iniziale diventa [0mV 50mV]
Seconda operazione: amplificazione di 5V/50mV=100
Posso utilizzare il circuito precedente con Vref=10mV R2/R1=100