Schema a Blocchi http://www.ipsiamoretto.it/utenti/azzani/public_html/20015bz/ciuffo&gave/sblocchi/adc0804.htm Convertitore ADC 0804 L’ADC 0804 è un convertitore Analogico/Digitale ad approssimazione successiva, il quale usa una differenza di potenziale simile al prodotto 256R. Questo convertitore è progettato per funzionare con il bus di controllo dell’8080 con uscite tristate dotate di latch di memoria che controllano direttamente i data bus. Questo convertitore A/D appare come una locazione di memoria oppure come porta in/out del microprocessore e non ha bisogno di un interfacciamento logico. Gli ingressi analogici differenziali di tensione permettono l’incremento del rapporto di ricezione di modo comune e l’ingresso setta uno zero analogico sul valore di tensione. Inoltre la tensione di riferimento (Vrif) in ingresso può essere regolata in modo da permettere la codifica di ogni più piccolo intervallo analogico di tensione fino alla risoluzione completa pari a 8 bit. Funzionamento del blocco L’ADC trasforma un segnale analogico in un codice binario Il passaggio da un segnale, che assume con continuità tutti i valori all’interno di un intervallo, ad una successione discreta di codici binari avviene tramite un’operazione denominata quantizzazione. La quantizzazione è descritta dalla caratteristica di trasferimento rappresentata dal grafico di figura 3. I valori di tensione in ingresso sono riportati sull’ascissa, mentre sull’ordinata viene riportato il codice binario associato ad ogni intervallo di valori di V i. Nell’esempio di figura 3 l’ampiezza massima del segnale d’ingresso è V iM = 8 V. Il numero di bit scelto è 3 quindi il numero possibile di codici binari esprimibili è Q = 2 3 = Fig. 3 La quantizzazione descritta in grafico Di conseguenza la tensione analogica d’ingresso è stata divisa in 8 parti uguali, ad ognuna delle quali è stato associato uno degli 8 codici binari possibili. A tutti i valori di tensione appartenenti ad un singolo intervallo degli otto possibili viene associato lo stesso codice. Fig. 4 Tabella di definizione tra valori di tensione e parola associata L’esempio precedente mette in evidenza la necessità d’introdurre due parametri caratteristici dei convertitori A/D. Il primo è l’ampiezza massima V iM del segnale d’ingresso che può essere convertito dall’ADC. Il segnale da elaborare deve dunque passare prima in un circuito di condizionamento per renderlo utilizzabile dal convertitore. In particolare i campi di valori della V i accettati dagli ADC in commercio sono generalmente da 0 V a 5 V o da 0 V a 10 V. L’altro parametro è il numero n di bit con cui si effettua la codifica. Il campo dei valori della V i viene diviso in Q = 2n parti uguali. Ad ognuno di questi 2n intervalli viene associata una parola di n bit. Spesso l'ampiezza dell'intervallo è indicata come passo di quantizzazione. Parametri Caratteristici degli ADC RISOLUZIONE: La risoluzione, indicata con R, rappresenta la variazione della tensione d’ingresso associata ad una variazione del bit meno significativo del codice binario. In modo equivalente la risoluzione rappresenta il passo di quantizzazione. In effetti, come viene mostrato dall’esempio di figura 3, se il codice bina-rio differisce per il bit meno significativo (LSB), otteniamo quello associato all’intervallo successivo o precedente. Possiamo così scrivere: La risoluzione può essere espressa in percentuale del valore massimo della tensione convertibile: Spesso i costruttori forniscono come risoluzione il numero di bit della parola di codifica. ERRORE DI QUANTIZZAZIONE: L’errore di quantizzazione, indicato anche come incertezza, definisce il livello di indeterminazione ed è dovuto al fatto che ad ogni codice binario non viene associato un unico valore della tensione d’ingresso ma l’insieme dei valori appartenenti al passo di quantizzazione. Ad esempio la figura 3 mostra che alla parola di codice 010 sono associati tutti i valori della V i compresi tra 2 V e 3 V e di conseguenza 010 rappresenta oltre al valore esatto 2 V anche 2.9 V. Quando il valore esatto di Vi rappresentato dalla parola di codifica è l’estremo inferiore dell’intervallo, l’errore massimo di quantizzazione (eM) è pari l’ampiezza dell’intervallo stesso (ossia alla risoluzione R) e quindi: eM = R Nell’esempio di figura 3 eM = 1 V. L’andamento dell’errore in funzione del valore della tensione (relativo all’esempio di figura 9) è mostrato in figura 5. Fig. 5 Grafico dell’andamento dell’errore in funzione del valore di tensione Si osserva che e = 0 quando in ingresso è presente il valore esatto della tensione associato alla parola binaria. Se il valore esatto di V i rappresentato dalla parola di codice è al centro dell’intervallo di quantizzazione l’errore massimo che si può commettere viene dimezzato: In effetti se nell’esempio di figura 3 si sceglie il passo di quantizzazione in modo che la parola 010 rappresenti l’intervallo di valori 1.5 V 2.5 V, simmetrico intorno al valore esatto 2 V, l’errore massimo vale 0.5 V (la figura 6 mostra l’andamento dell’errore). Fig. 6 Tabella che mostra l’anda-mento dell’errore . Per ridurre l’incertezza occorre diminuire l’ampiezza del passo di quantizzazione aumentando il numero di bit. IL TEMPO DI CONVERSIONE è il tempo necessario all’ADC per trasformare il valore della tensione d’ingresso in un codice binario. Il segnale analogico da convertire deve essere campionato per prelevare i valori della Vi da trasformare in codice binario. Con il campionamento il segnale analogico viene trasformato in una successione discreta di valori di Vi. Nella figura 7 è riportato un esempio. Fig. 7 Esempio grafico del campionamento del segnale analogico . Il segnale S(t) può essere rappresentato dalla successione dei suoi campioni S 1, S2, S3, S4, S5 … prelevati ad intervalli regolari Tc. Il valore di Tc non può essere qualsiasi. Per poter ricostruire il segnale dai suoi campioni occorre che la frequenza di campionamento: soddisfi la condizione di Shannon: dove fM è la frequenza massima (o banda) del segnale. Di conseguenza il pe-riodo di campionamento di Tc deve essere: La conversione deve terminare prima che arrivi il nuovo campione da conver-tire in codice binario. Indicando con Ts il tempo di conversione occorre avere com’è mostrato in figura 8. Fig. 8 Per avere il tempo di conversione Ts occorre avere occorre avere . Il valore del campione è quello assunto da V i all’inizio della conversione anche se durante il tempo Ts il segnale subisce delle variazioni. Per non introdurre un ulteriore errore, il codice binario associato al campione deve rimanere valido per tutto il tempo di conversione. Di conseguenza le variazioni del segnale, durante T s, devono essere tali da fare rimanere Vi all’interno del passo di quantizzazione (o entro la risoluzione). Supponendo di avere un segnale sinusoidale V i con frequenza f e di utilizzare un ADC a n bit, per non aggiungere un altro errore a quello di quantizzazione, si può dimostrare che deve essere: Per lavorare con frequenze più elevate è necessario inserire un dispositivo detto di sample/hold (campionamento e mantenimento). In effetti se il tempo di conversione è alto a Tc, c’è il rischio di perdere il nuovo campione perché la conversione precedente non è terminata. Per evitare ciò il valore viene memorizzato (hold) fino a quando deve essere convertito. Cl assificazione di convertitori A/D CONVERTITORI PARALLELI (FLASH) Gli ADC flash sono i convertitori più veloci infatti presentano tempi di conversione dell’ordine delle decine di nanosecondi. Questi convertitori sono necessari quando i segnali hanno frequenza elevata. Sappiamo infatti che T s deve essere minore del periodo di campionamento. Ora, per un segnale video con fM = 5 MHz, si ha che: Pertanto il Ts deve essere inferiore. Non si può quindi fare a meno di usare gli ADC flash, gli unici che consentono simili velocità. In figura 9 è mostrato lo schema circuitale di principio di un ADC flash a 3 bit. Fig. 9 schema circuitale di principio di un ADC flash a 3 bit . Il circuito è composto da 9 resistenze, 7 comparatori e un encoder con 7 ingressi e 3 uscite. Nel caso generale di ADC a n bit la struttura fonda-mentale è composta da 2n – 1 comparatori, 2n – 2 resistenze uguali di valore R, 2 resistenze di valore R/2 e 1 encoder. Questi convertitori presentano notevoli problemi costruttivi, essendo difficile ottenerli proprio con 2n – 2 resistenze uguali con stessa tolleranza; ne consegue che il dispositivo ha scarsa pre-cisione oltre a risultare costoso. Il principio di funzionamento è basato sul confronto tra il valore del cam-pione da convertire e i potenziali presenti sui morsetti invertenti dei comparatori dati dalla partizione di una tensione di riferimento V r. In ogni comparatore, sul morsetto non invertente, è presente il valore di tensione da convertire: l’uscita è alta per il comparatore in cui si verifica che V i è maggiore del potenziale del morsetto invertente. Le uscite dei comparatori vanno in un encoder che fornisce così il codice binario. Per fare in modo che tutti i dati arrivino contemporaneamente all’encoder ed evitare disturbi (glitch) si possono inserire dopo i comparatori dei latches. Questi mantengono l’informazione e la presentano simultaneamente all’encoder. Analizziamo l’esempio di figura 9. I potenziali presenti sui morsetti non invertenti dei comparatori C1, C2, C3, C4, C5, C6, C7 sono rispettivamente: mentre . Di conseguenza per ogni valore di Vi tra zero e Vr è possibile determinare quali comparatori hanno l’uscita alta. Ad esempio se: i comparatori C1, C2, C3 hanno l’uscita alta, tutti gli altri bassa. Le uscite U 1, U2, U3, U4, U5, U6, U7 valgono 1110000. L’encoder fornisce il seguente codice binario 011 (equivalente a 3 in decimale, pari al numero di comparatori con uscita alta). Possiamo così costruire la seguente tabella (o matrice) di conversione. Fig.10 Matrice di conversione. Spesso è presente un ulteriore comparatore che dà l’indicazione di overflow se . Due comparatori flash che si trovano in commercio sono: AD5010KD a 6 bit con Ts = 20 ns e AD6020KD a 6 bit con Ts = 10 ns. I CONVERTITORI A REAZIONE Lo schema di funzionamento di questi dispositivi presenta una catena di reazione nella quale è presente un convertitore D/A. Durante la conversione il dato digitale viene trasformato in analogico in modo da confrontarlo con la tensione V i. Quando la differenza tra i due segnali è minore di un valore fissato, la conversione si ferma, fornendo in uscita la parola binaria. Sono descritti di seguito i principali tipi di convertitori a reazione. Lo schema di principio è riportato in figura 11. Fig.11 Convertitore a reazione. Il circuito comprende: un clock che genera impulsi con una determinata frequenza; un contatore d’impulsi; un dispositivo di controllo per iniziare la conversione e riportare a zero il contatore per una nuova operazione; un DAC che trasforma il dato digitale in uscita dal contatore in una gradinata con un numero di gradini pari al numero d’impulsi; un comparatore. Il funzionamento del dispositivo può essere descritto nel seguente modo: la conversione inizia quando il dispositivo di controllo manda un impulso al flip-flop settandolo (uscita Q alta), gli impulsi del clock passano attraverso la porta AND e inizia così il conteggio. Ogni impulso che arriva incrementa di un gradino l’uscita del DAC. Quando la gradinata supera il valore di Vi il comparatore resetta (uscita Q bassa) il flip-flop, la porta AND non fa più passare gli impulsi e il conteggio si blocca. Il dato binario del contatore, associato al valore Vi, viene così memorizzato. La precisione del convertitore a gradinata è dunque legata a quella del DAC e alla stabilità della sua tensione di riferimento Vr. In effetti ogni impulso contato provoca un gradino di ampiezza: Il tempo di conversione Ts dipende dal valore del segnale d’ingresso: più alto è il valore di Vi più impulsi è necessario contare per ottenere una gradinata che raggiunga V i. Infatti Ts = kTck dove Tck è il periodo degli impulsi di clock e k il numero di impulsi contati. Per la risoluzione percentuale di questo ADC vale l’espressione generale già vista: IL CONVERTITORE A BILANCIAMENTO Il convertitore a bilanciamento continuo ha una velocità di conversione più elevata rispetto a quello a gradinata. Infatti nello schema di principio ripor-tato in figura 16 è presente un contatore Up/Down, in grado di contare in avanti e indietro. Il comando Up/Down viene fornito dal comparatore: se V i è maggiore della tensione in uscita dal DAC allora il contatore conta in avanti (Up), nel caso contrario il conteggio è in diminuzione (Down). Fig.12 Convertitore a bilanciamento. Con questo dispositivo evitiamo di ripartire da zero per ogni conversione. Infatti a differenza del convertitore a gradinata, il contatore quando inizia la conversione non parte da zero ma dal codice binario corrispondente al valore di tensione: Dunque se: il conteggio è in aumento e la conversione prosegue come nel caso di un convertitore a gradinata: ogni impulso contato è un gradino di ampiezza: in più, fino a raggiungere il valore di Vi. A questo punto la conversione si ferma e a Vi viene associato il codice binario fornito dal contatore. Se: il conteggio è in diminuzione. Ogni impulso contato adesso abbassa la gradi-nata di uno scalino fino a quando Vi diventa maggiore della tensione in uscita del DAC e la conversione si ferma. IL COVERTITORE AD APPROSSIMAZIONI SUCCESSIVE Lo schema circuitale è riportato in figura 13. Il funzionamento si basa sul-l’utilizzo di un particolare circuito sequenziale denominato SAR (Successive Approximation Register). Questo dispositivo genera una parola di codice che viene corretta, dopo il confronto tra il campione Vi da convertire e la tensione VDAC in uscita dal DAC, fino a quando la differen-za risulta minore di un valore fissato. Fig.13 Schema circuitale di un convertitore ad approssimazioni successive . Il principio della conversione può essere illustrato con l’esempio della pesa-tura di una massa incognita. Sia abbiano a disposizione masse di valori: dove m1 è la metà della portata massima, mentre il valore minore è legato all’incertezza desiderata.. si pone sul piatto m1: se la massa incognita m risulta maggiore, allora si aggiunge: Se Se si inserisce si toglie . e si inserisce . Si procede in questo modo fino all’ultimo valore a disposizione. In pratica ad ogni tentativo si inserisce un nuovo peso (di valore pari alla metà di quello precedente) mantenendo anche quello di prima soltanto se nella misura precedente la massa incognita risulta maggiore. La parola di codice viene modificata dal circuito SAR con lo stesso principio. La prima parola generata è formata da tutti zero tranne il bit più significativo che vale 1.Prendiamo l’esempio di un ADC a 4 bit. Si parte da 1000. Se la tensione V DAC in uscita dal DAC è minore di Vi, il SAR mantiene il MSB e porta a 1 quello successivo generando la seguente parola 1100 (se il MSB torna a 0 e la parola fornita è 0100).Se dal secondo tentativo risulta che la nuova tensione in uscita dal DAC (VDAC) è tale che il secondo bit è mantenuto alto (torna a 0 se ) e viene a questo punto generata la parola 1110 (o 1010) portando a 1 il terzo bit.Se dal terzo tentativo il terzo bit è mantenuto alto (torna a 0 se ) ed il quarto bit viene messo a 1.Al quarto confronto se la tensione in uscita dal convertitore D/A è mino-re di Vi l’ultimo bit rimane alto, in casso contrario torna a 0.Abbiamo così determinato i quattro bit che formano la parola di codice. La parola binaria è stata generata dopo 4 tentativi, in generale per un convertitore a n bit sono necessari n confronti. Dunque se ogni operazione è scandita da un clock con periodo T ck il tempo di conversione di un convertitore ad approssimazioni successive a n bit vale Ts = nTck. Rispetto agli altri convertitori a reazione il tempo di conversione è costante (indipendente dal campione) e molto minore. Per la risoluzione percentuale di questo ADC vale l’espressione generale già vista: Questa soluzione risulta la più diffusa tra i componenti ADC commerciali. Gli integrati disponibili sono numerosi e risultano adatti a convertire segnali provenienti da trasduttori oltre ad essere compatibili con i microprocessori. Vediamo alcuni integrati disponibili. Fig.14 Nell’esempio del grafico di figura 15 viene mostrato come avviene la genera-zione della parola di codice nel caso di 4 bit. Fig.15 Generazione di parola di codice (caso a 4 bit) I CONVERTITORI AD INTEGRAZIONE I convertitori ad integrazione più diffusi sono quelli a doppia rampa. Lo schema di funzionamento, riportato in figura 16, evidenzia la presenza del circuito integratore. Questo produce in uscita una rampa decrescente (o crescente) se l’ingresso è una costante positiva (o negativa). Fig.16 I convertitori ad integrazione a doppia rampa. Inizialmente all’ingresso dell’integratore viene applicato il campione da convertire per una durata T1 fissata. Questa durata è determinata tramite un clock con periodo T ck ed un contatore, infatti Ti = ni Tck (ni numero di impulsi contati). L’uscita dell’integratore è una rampa decrescente con pendenza legata a Vi che inizia da zero, essendo il condensatorre scarico (fig. 17), fino a raggiungere il valore. Fig.16 Il condensatore scarico Dopo un tempo Ti il tasto T commuta nella posizione –Vr. L’integratore fornisce adesso una rampa crescente con pendenza legata la tensione di riferimento V r. La rampa inizia dal valore V’ (fig.16) e quando passa per lo zero blocca il conteggio inibendo la porta AND. La prima rampa ha pendenza variabile dovuta al valore del campione durata fissa: il valore V’ raggiunto dipende da Vi. La seconda rampa, invece, ha pendenza fissa e durata Tx che dipende da V’ ( e quindi da Vi) essendo il tempo impiegato per passare da V’ a zero. Dalla misura di Tx è possibile risalire a Vi. Tx viene rilevato attraverso il contatore, infatti Tx = nx Tck dove con nx viene indicato il numero di impulsi contati durante la rampa crescente. Verifichiamolo mediante formule ma-tematiche: quindi: e Si ottiene quindi: Il dato digitale nx, fornito dal contatore, rappresenta la codifica del se-gnale analogico Vi in ingresso. Questi convertitori sono immuni a certi tipi di rumore ma molto lenti: il tempo di conversione Ts vale Ts = Ti + Tx = (ni + nx)Tck. Per questo motivo non sono indicati nei sistemi a microprocessori. Per la riso-luzione percentuale di questo ADC vale l’espressione generale già vista.