COMPONENTI PROGRAMMABILI |
ADC0804 1/4 [70 di 87] |
|
![]() |
|
![]() | Si tratta di un componente CMOS in grado di operare la conversione Analogico-Digitale a 8 bit con la tecnica delle approssimazioni successive. |
![]() | Nella Sezione dedicata progetto HW/SW con la parallela è disponibile un'ampia descrizione teorica, insieme ad ogni dettaglio sullo schema e sul codice assembly consigliati per il suo corretto impiego. |
|
![]() | Tra le sue caratteristiche principali ricordiamo la risoluzione pari a 8 bit, il tempo d'accesso di 135 ns, il tempo di conversione di 100 µs. |
![]() | Il suo ingresso analogico è di tipo differenziale e può ricevere una tensione da 0V a 5V, con alimentazione a 5V (sebbene i valori massimi prevedano range tra -0,3V e +18V, con alimentazione massima di 6,5V). |
![]() | Il dato digitale d’uscita (DB7 - DB0, da pin 11 a pin 18) risulta quindi essere proporzionale alla differenza di tensione fra i 2 pin d'ingresso (pin 6 e pin 7). |
![]() | Il pin-out del componente è proposto di seguito (se lo vuoi vedere nel suo ambito circuitale clicca qui): |
|
![]() |
|
![]() | Il clock, indispensabile per il suo funzionamento, può essere fornito dall'esterno (sul pin 4, Clock In), per esempio quello della CPU che lo controlla, ma può anche essere generato con l'aiuto di un trigger di Schmitt invertente, disponibile internamente, e di una rete RC applicata esternamente: con un resistore da 10k e un condensatore da 150pF lavora con un tipico clock di 640 kHz. |
|
![]() |
|
![]() |
Il range di conversione è stabilito dal livello di tensione proposto sul suo pin 9 (Vref/2); il valore di tensione che viene messo su di esso è pari a: |
|
Vin(+)max – Vin(-) ------------------------ 2 |
|
![]() | Se viene rispettata questa scelta quando su Vin(+) si pone la tensione Vin(+)max (per esempio 5V) in uscita verrà generato il codice FFH, mentre se Vin(+) è posta Vin(-) (per esempio 0V) in uscita si avrà il codice 00H. |
![]() | Se Vin(+) è proprio uguale a Vref/2 (per esempio 2,5V) il codice in uscita sarà 80H=10000000B; in tal caso si sfrutta tutto il range in cui l’ADC può lavorare tra 0 e +5V. |
|
![]() |
Nel caso in cui non venga applicata nessuna tensione esterna al pin 9 (Vref/2) il valore della tensione di riferimento viene assunto pari a Vcc/2 (per esempio 2,5 V). |
|
![]() | L'ADC0804 contiene un circuito equivalente ad una rete di 256 (=28) resistori di precisione in serie: con la logica delle successive approssimazioni tali resistori vengono inseriti o tolti (con l'aiuto di deviatori elettronici) al fine di determinare l'uguaglianza tra la tensione differenziale in ingresso (Vin(+) – Vin(-)) e la caduta di tensione provocata dai resistori effettivamente inseriti. |
![]() | Il meccanismo è assicurato da un particolare circuito sequenziale, denominato SAR (Successive Approximation Register), in grado di generare un codice binario ad 8 bit al quale è demandato il compito di inserire (tramite i deviatori elettronici) i resistori necessari a provocare la caduta di tensione da sottoporre al confronto con la tensione d'ingresso, Vin. |
![]() | Si tratta di un particolare registro a scorrimento a 8 bit (8-bit shift register); il codice da esso generato per primo è 10000000 (cioè quello con il bit più significativo, MSB, ad 1): in questo modo la tensione d'ingresso, Vin sarà sottoposta a confronto con la metà della tensione di alimentazione (pari alla caduta su solo la metà dei resistori). |
![]() | Se il risultato indica che Vin è minore il MSB viene forzato a 0, altrimenti si lascia a 1; in ogni caso l'indagine viene portata avanti impostando ora il bit6 a 1 e confrontando di nuovo la tensione d'ingresso, Vin con la tensione generata dal numero così aggiornato, 11000000 o 01000000. |
![]() | Risulta evidente che dopo otto confronti (e rispettivi aggiustamenti) il numero binario finale è quello che corrisponde al campione di tensione proposto in ingresso; per ottenerlo sono comunque necessari 64 periodi di clock. |
|
![]() | Il principio della conversione è dunque simile a quello messo in atto quando si desidera pesare una massa incognita, m1; ipotizziamo di avere a disposizione pesi campione di valore m, m/2, m/4, m/8, m/16,... dove m è la metà del peso massimo. | ||||
![]() | Ponendo su un piatto la massa incognita
m1 e sull'altro
m:
| ||||
![]() | Se m1 risulta ancora più pesante di m+m/2 allora si aggiunge m/4. | ||||
![]() | Se invece m1 risulta più leggero di m+m/2 allora si toglie m/2 e si aggiunge m/4. | ||||
![]() | Si procede in questo modo aggiungendo e/o togliendo i pesi campione fino a quando il peso incognito viene uguagliato; in pratica ad ogni tentativo si inserisce un nuovo peso (di valore pari alla metà di quello precedente) mantenendo anche quello di prima solo se nella misura precedente quello incognito risulta maggiore. |
|
![]() |
Data Sheet [70 di 87] |
![]() |
Programmabili - ADC0804 1/4 |
![]() |
![]() |
![]() |
||
Programmabili - ADC0804 |
|
|
|
Home
![]() |
|
|||||||
|
Motore Ricerca |
|