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 2 n 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