Kazalo:

Uvod v ADC v mikrokrmilniku AVR - za začetnike: 14 korakov
Uvod v ADC v mikrokrmilniku AVR - za začetnike: 14 korakov

Video: Uvod v ADC v mikrokrmilniku AVR - za začetnike: 14 korakov

Video: Uvod v ADC v mikrokrmilniku AVR - za začetnike: 14 korakov
Video: How to use ESP32 WiFi and Bluetooth with Arduino IDE full details with examples and code 2024, November
Anonim
Uvod v ADC v mikrokrmilniku AVR | za začetnike
Uvod v ADC v mikrokrmilniku AVR | za začetnike

V tej vadnici boste izvedeli vse ADC v mikrokrmilniku avr

1. korak: Kaj je ADC?

ADC ali analogno -digitalni pretvornik omogoča pretvorbo analogne napetosti v digitalno vrednost, ki jo lahko uporablja mikrokrmilnik. Obstaja veliko virov analognih signalov, ki bi jih radi izmerili. Na voljo so analogni senzorji, ki merijo temperaturo, jakost svetlobe, razdaljo, položaj in silo.

2. korak: Kako deluje ADC v mikrokontrolerju AVR

AVR ADC mikrokontrolerju AVR omogoča pretvorbo analognih napetosti v digitalne vrednosti z malo ali brez zunanjih delov. ATmega8 ima 10-bitni zaporedni približevalni ADC. ATmega8 ima 7-kanalni ADC na PortC. ADC ima ločen analogni pin napajalne napetosti, AVCC. AVCC se ne sme razlikovati za več kot ± 0,3 V od VCC.. Referenčna napetost se lahko od zunaj loči na zatiču AREF. AVCC se uporablja kot referenčna napetost. ADC lahko nastavite tudi za neprekinjeno delovanje (način prostega teka) ali za samo eno pretvorbo.

3. korak: Formula za pretvorbo ADC

Formula pretvorbe ADC
Formula pretvorbe ADC

Kjer je Vin napetost na izbranem vhodnem zatiču in Vref izbrana referenčna napetost

4. korak: Kako konfigurirati ADC v ATmega8?

Kako konfigurirati ADC v ATmega8?
Kako konfigurirati ADC v ATmega8?

Naslednji registri se uporabljajo za implementacijo ADC v ATmega8

Izbira multipleksorja ADC

5. korak: Izbira ADLAR

Izbira ADLAR
Izbira ADLAR
Izbira ADLAR
Izbira ADLAR

Rezultat leve prilagoditve ADC Bit ADLAR vpliva na predstavitev rezultata pretvorbe ADC v podatkovnem registru ADC. Napišite eno v ADLAR, da levo prilagodite rezultat. V nasprotnem primeru je rezultat pravilno nastavljen

Ko je pretvorba ADC končana, se rezultat najde v ADCH in ADCL Ko se ADCL prebere, se podatkovni register ADC ne posodobi, dokler se ADCH ne prebere. Če je rezultat nastavljen levo in ni potrebna več kot 8-bitna natančnost, zadostuje, da se prebere ADCH. V nasprotnem primeru je treba najprej prebrati ADCL, nato ADCH. Biti za izbiro analognega kanala Vrednost teh bitov izbere, kateri analogni vhodi so povezani z ADC.

6. korak: Izbira ADCSRA

Izbira ADCSRA
Izbira ADCSRA
Izbira ADCSRA
Izbira ADCSRA

• Bit 7 - ADEN: ADC Enable Zapis tega bita v enega omogoča ADC. Z zapisom na nič se ADC izklopi

• Bit 6 - ADSC: ADC Start Conversion (Začetek pretvorbe ADC) V načinu enojne pretvorbe zapišite to bit v eno za začetek vsake pretvorbe. V načinu prostega teka zapišite to bitje v eno za začetek prve pretvorbe.

• Bit 5 - ADFR: ADC Free Running Select Ko je ta bit nastavljen (en), ADC deluje v načinu prostega teka. V tem načinu ADC neprekinjeno vzorči in posodablja podatkovne registre. Če izbrišete ta bit (nič), boste prekinili način prostega teka.

• Bit 4 - ADIF: ADC Interrupt Flag Ta bit je nastavljen, ko je pretvorba ADC končana in so podatkovni registri posodobljeni. Popoln prekinitev pretvorbe ADC se izvede, če sta nastavljena bit ADIE in I-bit v SREG. Strojna oprema počisti ADIF pri izvajanju ustreznega vektorja za ravnanje s prekinitvami. Druga možnost je, da se ADIF počisti tako, da se v zastavo zapiše logična.

• Bit 3-ADIE: ADC Interrupt Enable Ko je ta bit zapisan v eno in je nastavljen I-bit v SREG, se aktivira ADC Conversion Complete Interrupt.

• Biti 2: 0 - ADPS2: 0: Izbira bitov predkalerja ADC Glede na podatkovni list je treba to predskalo nastaviti tako, da je vhodna frekvenca ADC med 50 KHz in 200 KHz. Ura ADC izhaja iz sistemske ure s pomočjo ADPS2: 0 Ti biti določajo faktor delitve med frekvenco XTAL in vhodno uro ADC.

7. korak: Če želite izmeriti vrednost ADC, morate narediti nekaj dela, ki je navedeno spodaj

  • Nastavite vrednost ADC
  • Konfigurirajte izhodni LED pin
  • Konfigurirajte strojno opremo ADC
  • Omogoči ADC
  • Zaženite analogno -digitalno pretvorbo
  • Medtem ko za vedno

ČE je vrednost ADC višja od nastavljene vrednosti, VKLOPLJAVI LED ELSE Izklopi LED

8. korak: Nastavite vrednost ADC

Koda: uint8_t ADCValue = 128;

9. korak: Konfigurirajte izhodni LED pin

Koda: DDRB | = (1 << PB1);

10. korak: Konfigurirajte strojno opremo ADC

Konfigurirajte strojno opremo ADC

To se naredi z nastavitvijo bitov v krmilnih registrih za ADC. Najprej nastavimo predskalar za ADC. V skladu s podatkovnim listom je treba to predskalo nastaviti tako, da bo vhodna frekvenca ADC med 50 KHz in 200 KHz. Ura ADC izhaja iz sistemske ure. S sistemsko frekvenco 1MHz bo prednastavitev 8 povzročila frekvenco ADC 125 Khz. Prednamerjanje je nastavljeno z bitoma ADPS v registru ADCSRA. V skladu s podatkovnim listom morajo biti vsi trije bitovi ADPS2: 0 nastavljeni na 011, da dobimo 8 predkalerjev.

Koda: ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);

Nato nastavimo referenčno napetost ADC. To nadzirajo bitovi REFS v registru ADMUX. Spodaj nastavite referenčno napetost na AVCC.

Koda: ADMUX | = (1 << REFS0);

Če želite kanal, ki poteka skozi multiplekser, nastaviti na ADC, je treba ustrezno nastaviti bit MUX v registru ADMUX. Ker tukaj uporabljamo ADC5

Koda: ADMUX & = 0xF0; ADMUX | = 5;

Če želite ADC preklopiti v način prostega teka, nastavite ustrezno imenovan bit ADFR v register ADCSRA:

Koda: ADCSRA | = (1 << ADFR);

Zadnja sprememba nastavitev bo olajšala branje vrednosti ADC. Čeprav ima ADC ločljivost 10 bitov, te informacije pogosto niso potrebne. Ta 10 -bitna vrednost je razdeljena na dva 8 -bitna registra, ADCH in ADCL. Privzeto najnižjih 8 bitov vrednosti ADC najdemo v ADCL, zgornja dva pa sta najnižja dva bita ADCH. Z nastavitvijo bita ADLAR v register ADMUX lahko vrednost ADC poravnamo levo. Tako se v register ADCH vnese največ 8 bitov meritve, preostali del pa v register ADCL. Če nato preberemo register ADCH, dobimo 8 -bitno vrednost, ki predstavlja našo meritev od 0 do 5 voltov kot število od 0 do 255. V osnovi spreminjamo 10 -bitno merjenje ADC v 8 -bitno. Tu je koda za nastavitev bita ADLAR:

Koda:

ADMUX | = (1 << ADLAR); S tem je za ta primer zaključena nastavitev strojne opreme ADC. Preden bo ADC začel izvajati meritve, je treba nastaviti še dva bita.

11. korak: Omogočite ADC

Če želite omogočiti ADC, nastavite bit ADEN v ADCSRA:

Koda: ADCSRA | = (1 << ADEN);

Korak: Začnite analogno -digitalno pretvorbo

Za začetek meritev ADC je treba nastaviti bit ADSC v ADCSRA:

Koda: ADCSRA | = (1 << ADSC);

Na tej točki bi ADC začel nenehno vzorčiti napetost, prikazano na ADC5. Koda do te točke bi izgledala tako:

13. korak: VEDNO

Edino, kar morate storiti, je, da preizkusite vrednost ADC in nastavite LED, da prikažejo indikator visoke / nizke vrednosti. Ker ima ADC v ADCH največjo vrednost 255, smo izbrali preskusno vrednost th, da ugotovimo, ali je napetost visoka ali nizka. Preprost stavek IF/ELSE v zankah FOR nam bo omogočil vklop pravilne LED:

Koda

če (ADCH> ADCValue)

{

PORTB | = (1 << PB0); // Vklopi LED

}

drugače

{

PORTB & = ~ (1 << PB0); // Izklopite LED

}

14. korak: Na koncu je popolna koda

Koda:

#vključi

int main (void)

{

uint8_t ADCValue = 128;

DDRB | = (1 << PB0); // LED1 nastavimo kot izhod

ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // Predkalar ADC nastavite na 8 - // 125KHz frekvenco vzorčenja 1MHz

ADMUX | = (1 << REFS0); // Referenco ADC nastavite na AVCC

ADMUX | = (1 << ADLAR); // Levo prilagodite rezultat ADC, da omogočite enostavno 8 -bitno branje

ADMUX & = 0xF0;

ADMUX | = 5; // Vrednosti MUX je treba spremeniti za uporabo ADC0

ADCSRA | = (1 << ADFR); // ADC nastavite na Free-Running Mode

ADCSRA | = (1 << ADEN); // Omogoči ADC

ADCSRA | = (1 << ADSC); // Začni pretvorbe A2D, medtem ko (1) // Loop Forever

{

če (ADCH> ADCValue)

{

PORTB | = (1 << PB0); // Vklopite LED1

}

drugače

{

PORTE & = ~ (1 << PB1); // Izklopite LED1

}

}

vrnitev 0;

}

Najprej objavi to vadnico Kliknite tukaj

Priporočena: