ADC è il convertitore da analogico a digitale, che converte i dati analogici in formato digitale; di solito viene utilizzato per convertire la tensione analogica in formato digitale. Il segnale analogico ha un numero infinito di valori come un'onda sinusoidale o il nostro discorso, ADC li converte in livelli o stati particolari, che possono essere misurati in numeri come una quantità fisica. Invece della conversione continua, ADC converte i dati periodicamente, che di solito è nota come frequenza di campionamento. Modem telefonicoè uno degli esempi di ADC, che viene utilizzato per Internet, converte i dati analogici in dati digitali, in modo che il computer possa capire, perché il computer può solo capire i dati digitali. Il vantaggio principale dell'utilizzo dell'ADC è che il rumore può essere eliminato in modo efficiente dal segnale originale e il segnale digitale può viaggiare in modo più efficiente di quello analogico. Questo è il motivo per cui l'audio digitale è molto chiaro durante l'ascolto.
Al giorno d'oggi ci sono molti microcontrollori sul mercato che hanno integrato ADC con uno o più canali. E utilizzando il loro registro ADC possiamo interfacciarci. Quando selezioniamo la famiglia di microcontrollori 8051 per realizzare qualsiasi progetto, in cui abbiamo bisogno di una conversione ADC, utilizziamo ADC esterno. Alcuni chip ADC esterni sono 0803,0804,0808,0809 e ce ne sono molti altri. Oggi interfacciamo l'ADC a 8 canali con il microcontrollore AT89s52, ovvero ADC0808 / 0809.
Componenti:
- 8051 Microcontrollore (AT89S52)
- ADC0808 / 0809
- LCD 16x2
- Resistore (1k, 10k)
- VASO (10k x4)
- Condensatore (10uf, 1000uf)
- Led rosso
- Breadboard o PCB
- 7805
- Cristallo 11.0592 MHz
- Energia
- Cavi di collegamento
ADC0808 / 0809:
ADC0808 / 0809 è un dispositivo CMOS monolitico e logica di controllo compatibile con microprocessore e dispone di 28 pin che forniscono un valore a 8 bit in uscita e pin di ingresso ADC a 8 canali (IN0-IN7). La sua risoluzione è 8, quindi può codificare i dati analogici in uno dei 256 livelli (2 8). Questo dispositivo ha una linea di indirizzo a tre canali, ovvero: ADDA, ADDB e ADDC per la selezione del canale. Di seguito è riportato il diagramma dei pin per ADC0808:
ADC0808 / 0809 richiede un impulso di clock per la conversione. Possiamo fornirlo usando l'oscillatore o usando il microcontrollore. In questo progetto abbiamo applicato la frequenza utilizzando un microcontrollore.
Possiamo selezionare qualsiasi canale di ingresso utilizzando le linee di indirizzo, così come possiamo selezionare la linea di ingresso IN0 mantenendo tutte e tre le linee di indirizzo (ADDA, ADDB e ADDC) basse. Se vogliamo selezionare il canale di ingresso IN2, dobbiamo mantenere ADDA, ADDB basso e ADDC alto. Per selezionare tutti gli altri canali di ingresso, dai un'occhiata alla tabella data:
Nome canale ADC |
PIN ADDC |
AGGIUNGI PIN |
PIN ADDA |
IN0 |
BASSO |
BASSO |
BASSO |
IN 1 |
BASSO |
BASSO |
ALTA |
IN 2 |
BASSO |
ALTA |
BASSO |
IN3 |
BASSO |
ALTA |
ALTA |
IN4 |
ALTA |
BASSO |
BASSO |
IN5 |
ALTA |
BASSO |
ALTA |
IN6 |
ALTA |
ALTA |
BASSO |
IN7 |
ALTA |
ALTA |
ALTA |
Descrizione del circuito:
Il circuito di "interfacciamento ADC0808 con 8051" è poco complesso e contiene più cavi di collegamento per collegare i dispositivi tra loro. In questo circuito abbiamo utilizzato principalmente AT89s52 come microcontrollore 8051, ADC0808, Potenziometro e LCD.
Un LCD 16x2 è collegato al microcontrollore 89s52 in modalità 4 bit. I pin di controllo RS, RW ed En sono collegati direttamente ai pin P2.0, GND e P2.2. E il pin dati D4-D7 è collegato ai pin P2.4, P2.5, P2.6 e P2.7 di 89s52. I pin di uscita ADC0808 sono collegati direttamente alla porta P1 di AT89s52. I pin della linea di indirizzo ADDA, ADDB, AADC sono collegati a P3.0, P3.1 e P3.2.
ALE (Abilitazione latch indirizzo), SC (Avvio conversione), EOC (Fine conversione), OE (Abilitazione uscita) e i pin di clock sono collegati a P3.3, P3.4, P3.5, P3.6 e P3.7.
E qui abbiamo usato tre potenziometri collegati ai pin 26, 27 e 28 di ADC0808.
Una batteria da 9 volt e un regolatore di tensione da 5 volt, ovvero 7805, vengono utilizzati per alimentare il circuito.
Lavorando:
In questo progetto abbiamo interfacciato tre canali di ADC0808. E per dimostrazione abbiamo usato tre resistori variabili. Quando alimentiamo il circuito, il microcontrollore inizializza l'LCD utilizzando il comando appropriato, fornisce il clock al chip ADC, seleziona il canale ADC utilizzando la riga dell'indirizzo e invia il segnale di conversione di avvio all'ADC. Dopo che questo ADC legge prima l'ingresso del canale ADC selezionato e fornisce la sua uscita convertita al microcontrollore. Quindi il microcontrollore mostra il suo valore nella posizione Ch1 sul display LCD. Quindi il microcontrollore cambia il canale ADC utilizzando la riga dell'indirizzo. Quindi ADC legge il canale selezionato e invia l'output al microcontrollore. E mostra sul display LCD come nome Ch2. E come saggio per altri canali.
Il funzionamento di ADC0808 è molto simile al funzionamento di ADC0804. In questo, il primo microcontrollore fornisce un segnale di clock a 500 KHz all'ADC0808, utilizzando l'interrupt del timer 0, poiché l'ADC richiede il segnale di clock per funzionare. Ora il microcontrollore invia un segnale di livello da BASSO ad ALTO al pin ALE (il suo pin alto attivo) di ADC0808 per abilitare il latch nell'indirizzo. Quindi applicando il segnale di livello HIGH a LOW a SC (Start Conversion), ADC avvia la conversione da analogico a digitale. Quindi attendi che il pin EOC (End of Conversion) diventi BASSO. Quando l'EOC diventa BASSO, significa che la conversione da analogico a digitale è stata completata e i dati sono pronti per l'uso. Dopodiché, il microcontrollore abilita la linea di uscita applicando un segnale da HIGH a LOW al pin OE di ADC0808.
ADC0808 fornisce l'output di conversione metrica del rapporto sui pin di uscita. E la formula per la conversione radiometrica è data da:
V in / (V fs -V z) = D x / (D max -D min)
Dove
V in è la tensione di ingresso per la conversione
V fs è il fondo scala Tensione
V z è la tensione zero
D x è il punto dati da misurare
D max è il limite massimo di dati
D min è il limite minimo di dati
Spiegazione del programma:
Nel programma, prima di tutto includiamo il file di intestazione che sand definisce variabili e pin di input e output per ADC e LCD.
# includere
È stata creata la funzione per la creazione del ritardo (void delay), insieme ad alcune funzioni dell'LCD come l'inizializzazione dell'LCD, la stampa della stringa, i comandi dell'LCD, ecc. Puoi trovarli facilmente in Code. Controllare questo articolo per l'interfacciamento dell'LCD con l'8051 e le sue funzioni.
Dopo questo nel programma principale, abbiamo inizializzato LCD e impostato i pin EOC, ALE, EO, SC di conseguenza.
void main () {int i = 0; eoc = 1; ale = 0; oe = 0; sc = 0; TMOD = 0x02; TH0 = 0xFD; lcd_ini (); lcdprint ("ADC 0808/0809");
E poi il programma legge l'ADC e memorizza l'output dell'ADC in una variabile e quindi lo invia a LCD dopo la conversione da decimale a ASCII, utilizzando le funzioni void read_adc () e void adc (int i):
void read_adc () {number = 0; ale = 1; sc = 1; ritardo (1); ale = 0; sc = 0; while (eoc == 1); while (eoc == 0); oe = 1; numero = input_port; ritardo (1); oe = 0; } void adc (int i) {switch (i) {case 0: ADDC = 0; ADDB = 0; ADDA = 0; lcdcmd (0xc0); read_adc ();