Sommario:
- Passaggio 1: cos'è un ADC?
- Passaggio 2: come funziona l'ADC in AVR-Microcontrollore
- Passaggio 3: Formula di conversione ADC
- Passaggio 4: come configurare l'ADC in ATmega8?
- Passaggio 5: selezione ADLAR
- Passaggio 6: selezione ADCSRA
- Passaggio 7: se si desidera assumere il valore ADC, è necessario eseguire alcuni lavori elencati di seguito
- Passaggio 8: Imposta il valore ADC
- Passaggio 9: configurare il pin LED di uscita
- Passaggio 10: configurare l'hardware dell'ADC
- Passaggio 11: abilita ADC
- Passaggio 12: Avvia la conversione da analogico a digitale
- Passaggio 13: MENTRE per sempre
- Passaggio 14: alla fine il codice completo è
Video: Introduzione all'ADC nel microcontrollore AVR - per principianti: 14 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:03
In questo tutorial saprai tutto ADC nel microcontrollore avr
Passaggio 1: cos'è un ADC?
Un ADC, o convertitore da analogico a digitale, consente di convertire una tensione analogica in un valore digitale che può essere utilizzato da un microcontrollore. Ci sono molte sorgenti di segnali analogici che si potrebbe voler misurare. Sono disponibili sensori analogici che misurano la temperatura, l'intensità della luce, la distanza, la posizione e la forza, solo per citarne alcuni.
Passaggio 2: come funziona l'ADC in AVR-Microcontrollore
L'ADC AVR consente al microcontrollore AVR di convertire le tensioni analogiche in valori digitali con poche o nessuna parte esterna. L'ATmega8 dispone di un ADC di approssimazione successiva a 10 bit. ATmega8 ha un ADC a 7 canali su PortC. L'ADC ha un pin di tensione di alimentazione analogico separato, AVCC. AVCC non deve differire più di ± 0.3V da VCC.. Il riferimento di tensione può essere disaccoppiato esternamente al pin AREF. AVCC viene utilizzato come riferimento di tensione. L'ADC può anche essere impostato per l'esecuzione continua (modalità di esecuzione libera) o per eseguire solo una conversione.
Passaggio 3: Formula di conversione ADC
Dove Vin è la tensione sul pin di ingresso selezionato e Vref il riferimento di tensione selezionato
Passaggio 4: come configurare l'ADC in ATmega8?
I seguenti registri sono utilizzati per l'implementazione di ADC in ATmega8
Selezione multiplexer ADC
Passaggio 5: selezione ADLAR
Risultato regolazione sinistra ADC Il bit ADLAR influisce sulla presentazione del risultato della conversione ADC nel registro dati ADC. Scrivi uno su ADLAR a sinistra per regolare il risultato. Altrimenti, il risultato è corretto
Quando una conversione ADC è completa, il risultato si trova in ADCH e ADCL Quando viene letto ADCL, il registro dati ADC non viene aggiornato finché non viene letto ADCH. Di conseguenza, se il risultato viene lasciato corretto e non è richiesta una precisione superiore a 8 bit, è sufficiente leggere ADCH. In caso contrario, è necessario leggere prima ADCL, quindi ADCH. Bit di selezione del canale analogico Il valore di questi bit seleziona quali ingressi analogici sono collegati all'ADC.
Passaggio 6: selezione ADCSRA
• Bit 7 – ADEN: ADC Enable Scrivendo questo bit su uno si abilita l'ADC. Scrivendolo a zero si spegne l'ADC
• Bit 6 – ADSC: ADC avvia conversione In modalità Single Conversion, scrivere questo bit su uno per avviare ogni conversione. In modalità Free Running, scrivi questo bit su uno per avviare la prima conversione.
• Bit 5 – ADFR: Selezione ADC Free Running Quando questo bit è impostato (uno) l'ADC funziona in modalità Free Running. In questa modalità, l'ADC campiona e aggiorna continuamente i registri dati. La cancellazione di questo bit (zero) interromperà la modalità di esecuzione libera.
• Bit 4 – ADIF: Flag di interruzione ADC Questo bit viene impostato quando una conversione ADC viene completata ei registri dati vengono aggiornati. L'interruzione di conversione ADC completata viene eseguita se il bit ADIE e il bit I in SREG sono impostati. L'ADIF viene cancellato dall'hardware durante l'esecuzione del corrispondente vettore di gestione dell'interruzione. In alternativa, l'ADIF viene cancellato scrivendone uno logico nel flag.
• Bit 3 – ADIE: abilitazione interruzione ADC Quando questo bit viene scritto su uno e il bit I in SREG è impostato, viene attivato l'interruzione completa conversione ADC.
• Bit 2:0 – ADPS2:0: Bit di selezione del prescaler ADC Secondo la scheda tecnica, questo prescalare deve essere impostato in modo che la frequenza di ingresso dell'ADC sia compresa tra 50 KHz e 200 KHz. L'orologio ADC è derivato dall'orologio di sistema con l'aiuto di ADPS2:0 Questi bit determinano il fattore di divisione tra la frequenza XTAL e l'orologio in ingresso all'ADC.
Passaggio 7: se si desidera assumere il valore ADC, è necessario eseguire alcuni lavori elencati di seguito
- Imposta il valore ADC
- Configura pin LED di uscita
- Configura l'hardware dell'ADC
- Abilita ADC
- Avvia conversioni da analogico a digitale
- MENTRE per sempre
SE il valore ADC è più alto del valore impostato, accendi il LED ALTRIMENTI spegni il LED
Passaggio 8: Imposta il valore ADC
Codice: uint8_t ADCValue=128;
Passaggio 9: configurare il pin LED di uscita
Codice: DDRB|= (1 << PB1);
Passaggio 10: configurare l'hardware dell'ADC
Configura l'hardware dell'ADC
Questo viene fatto impostando i bit nei registri di controllo per l'ADC. Innanzitutto, impostiamo il prescalare per l'ADC. Secondo la scheda tecnica, questo prescalare deve essere impostato in modo che la frequenza di ingresso dell'ADC sia compresa tra 50 KHz e 200 KHz. L'orologio ADC è derivato dall'orologio di sistema. Con una frequenza di sistema di 1 MHz, un prescaler di 8 risulterà in una frequenza ADC di 125 Khz. La prescalatura è impostata dai bit ADPS nel registro ADCSRA. Secondo la scheda tecnica, tutti e tre i bit ADPS2:0 devono essere impostati su 011 per ottenere il prescaler 8.
Codice: ADCSRA |= (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
Quindi, impostiamo la tensione di riferimento dell'ADC. Questo è controllato dai bit REFS nel registro ADMUX. Quanto segue imposta la tensione di riferimento su AVCC.
Codice: ADMUX |= (1 << REFS0);
Per impostare il canale passato attraverso il multiplexer all'ADC, i bit MUX nel registro ADMUX devono essere impostati di conseguenza. Dato che stiamo usando ADC5 qui
Codice: ADMUX&=0xF0; ADMUX|=5;
Per mettere l'ADC in modalità di esecuzione libera, impostare il bit ADFR dal nome appropriato nel registro ADCSRA:
Codice: ADCSRA |= (1 << ADFR);
Verrà effettuata un'ultima modifica alle impostazioni per rendere più semplice la lettura del valore ADC. Sebbene l'ADC abbia una risoluzione di 10 bit, molte informazioni spesso non sono necessarie. Questo valore a 10 bit è suddiviso in due registri a 8 bit, ADCH e ADCL. Per impostazione predefinita, gli 8 bit più bassi del valore ADC si trovano in ADCL, mentre i due più alti sono i due bit più bassi di ADCH. Impostando il bit ADLAR nel registro ADMUX, possiamo allineare a sinistra il valore ADC. Questo mette gli 8 bit più alti della misura nel registro ADCH, con il resto nel registro ADCL. Se poi leggiamo il registro ADCH, otteniamo un valore a 8 bit che rappresenta la nostra misurazione da 0 a 5 volt come un numero da 0 a 255. In pratica stiamo trasformando la nostra misurazione ADC a 10 bit in una a 8 bit. Ecco il codice per impostare il bit ADLAR:
Codice:
ADMUX |= (1 << ADLAR); Ciò completa la configurazione dell'hardware ADC per questo esempio. È necessario impostare altri due bit prima che l'ADC inizi a eseguire le misurazioni.
Passaggio 11: abilita ADC
Per abilitare l'ADC, impostare il bit ADEN in ADCSRA:
Codice: ADCSRA |= (1 << ADEN);
Passaggio 12: Avvia la conversione da analogico a digitale
Per avviare le misurazioni ADC, è necessario impostare il bit ADSC in ADCSRA:
Codice: ADCSRA |= (1 << ADSC);
A questo punto, l'ADC inizierà a campionare continuamente la tensione presentata su ADC5. Il codice fino a questo punto sarebbe simile a questo:
Passaggio 13: MENTRE per sempre
L'unica cosa che resta da fare è testare il valore ADC e impostare i LED per visualizzare un'indicazione alta/bassa. Poiché la lettura dell'ADC in ADCH ha un valore massimo di 255, è stato scelto un valore di prova di th per determinare se la tensione era alta o bassa. Una semplice istruzione IF/ELSE nei cicli FOR ci permetterà di accendere il LED corretto:
Codice
if(ADCH >ValoreADC)
{
PORTAB |= (1 << PB0); // Accendi il LED
}
altro
{
PORTAB&= ~(1 << PB0); // Spegni il LED
}
Passaggio 14: alla fine il codice completo è
Codice:
#includere
int principale (vuoto)
{
uint8_t ADCValue=128;
DDRB |= (1 << PB0); // Imposta LED1 come uscita
ADCSRA |= (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // Imposta ADC prescalare su 8 - // Frequenza di campionamento 125KHz 1MHz
ADMUX |= (1 << REFS0); // Imposta il riferimento ADC su AVCC
ADMUX |= (1 << ADLAR); // Regola il risultato ADC sinistro per consentire una facile lettura a 8 bit
ADMUX&=0xF0;
ADMUX|=5; // I valori MUX dovevano essere modificati per utilizzare ADC0
ADCSRA |= (1 << ADFR); // Imposta l'ADC in modalità di esecuzione libera
ADCSRA |= (1 << ADEN); // Abilita ADC
ADCSRA |= (1 << ADSC); // Avvia le conversioni A2D while(1) // Loop Forever
{
if(ADCH > Valore ADC)
{
PORTAB |= (1 << PB0); // Accende il LED1
}
altro
{
PORTE &= ~(1 << PB1); // Spegni il LED1
}
}
restituisce 0;
}
Prima pubblica questo tutorial Clicca qui
Consigliato:
Introduzione al microcontrollore CloudX: 3 passaggi
Introduzione al microcontrollore CloudX: il microcontrollore CloudX è un microcomputer hardware e software opensource che ti consente di creare i tuoi progetti interattivi. CloudX è un piccolo chip board che consente agli utenti di dirgli cosa fare prima di intraprendere qualsiasi azione, accetta diversi k
Microcontrollore AVR. Sensore di distanza ad ultrasuoni. HC-SR04 su LCD NOKIA 5110: 4 passaggi
Microcontrollore AVR. Sensore di distanza ad ultrasuoni. HC-SR04 su LCD NOKIA 5110: Ciao a tutti! In questa sezione realizzo un semplice dispositivo elettronico per rilevare la distanza e questi parametri vengono visualizzati sul display LCD NOKIA 5110. I parametri vengono visualizzati sotto forma di diagramma e numeri. Il dispositivo è basato sul microcontrollore AVR ATMEG
Configurazione dei fusibili del microcontrollore AVR. Creazione e caricamento nella memoria flash del microcontrollore del programma di lampeggio dei LED.: 5 passaggi
Configurazione dei fusibili del microcontrollore AVR. Creazione e caricamento nella memoria flash del microcontrollore del LED lampeggiante Program.: In questo caso creeremo un semplice programma in codice C e lo masterizzeremo nella memoria del microcontrollore. Scriveremo il nostro programma e compileremo il file esadecimale, utilizzando Atmel Studio come piattaforma di sviluppo integrata. Configurare il fusibile bi
Scheda microcontrollore All in One: 8 passaggi
All in One Microcontroler Board: In questo progetto di scheda microcontroller all-in-one lo scopo è di essere più funzionale di Arduino, dopo circa 100 ore di progettazione ho deciso di condividerlo con la community, spero che apprezziate lo sforzo e supportalo (qualsiasi domanda o in
Un'introduzione all'elaborazione delle immagini: Pixy e le sue alternative: 6 passaggi
Un'introduzione all'elaborazione delle immagini: Pixy e le sue alternative: in questo articolo spiegheremo il significato di Digital Image Processing (DIP) e le ragioni per utilizzare hardware come Pixy e altri strumenti per eseguire un processo su immagini o video. Alla fine di questo articolo, imparerai: Come si forma un'immagine digitale