Satura rādītājs:

Ievads ADC AVR mikrokontrollerī - iesācējiem: 14 soļi
Ievads ADC AVR mikrokontrollerī - iesācējiem: 14 soļi

Video: Ievads ADC AVR mikrokontrollerī - iesācējiem: 14 soļi

Video: Ievads ADC AVR mikrokontrollerī - iesācējiem: 14 soļi
Video: Подключение АЦП. AVR.RU 2024, Novembris
Anonim
Ievads ADC AVR mikrokontrollerī | iesācējiem
Ievads ADC AVR mikrokontrollerī | iesācējiem

Šajā apmācībā jūs zināt visu ADC avr mikrokontrollerī

1. darbība: kas ir ADC?

ADC jeb Analog to Digital Converter ļauj analogo spriegumu pārvērst digitālā vērtībā, ko var izmantot mikrokontrolleris. Ir daudz analogo signālu avotu, kurus varētu vēlēties izmērīt. Ir pieejami analogie sensori, kas mēra temperatūru, gaismas intensitāti, attālumu, stāvokli un spēku.

2. darbība. Kā strādāt ar ADC AVR-mikrokontrollerī

AVR ADC ļauj AVR mikrokontrolleram pārveidot analogo spriegumu par digitālo vērtību bez ārējām daļām. ATmega8 ir 10 bitu secīga aptuvena ADC. ATmega8 ir 7 kanālu ADC PortC. ADC ir atsevišķa analogā barošanas sprieguma tapa AVCC. AVCC nedrīkst atšķirties no VCC vairāk par ± 0.3V. Sprieguma atskaite var būt ārēji atvienota pie AREF tapas. AVCC tiek izmantots kā atskaites spriegums. ADC var iestatīt arī tā, lai tā darbotos nepārtraukti (brīvās darbības režīms) vai veiktu tikai vienu reklāmguvumu.

3. darbība: ADC konversijas formula

ADC konversijas formula
ADC konversijas formula

Kur Vin ir spriegums izvēlētajā ieejas tapā un Vref - izvēlētā sprieguma atsauce

4. solis: Kā konfigurēt ADC ATmega8?

Kā konfigurēt ADC ATmega8?
Kā konfigurēt ADC ATmega8?

ADC ieviešanai ATmega8 tiek izmantoti šādi reģistri

ADC multipleksora izvēle

5. solis: ADLAR atlase

ADLAR izvēle
ADLAR izvēle
ADLAR izvēle
ADLAR izvēle

ADC kreisās pielāgošanas rezultāts ADLAR bits ietekmē ADC konvertēšanas rezultāta attēlojumu ADC datu reģistrā. Uzrakstiet vienu ADLAR pa kreisi, lai pielāgotu rezultātu. Pretējā gadījumā rezultāts ir pareizi noregulēts

Kad ADC konvertēšana ir pabeigta, rezultāts tiek atrasts ADCH un ADCL. Lasot ADCL, ADC datu reģistrs netiek atjaunināts, kamēr nav nolasīts ADCH. Līdz ar to, ja rezultāts tiek atstāts noregulēts un nepieciešama ne vairāk kā 8 bitu precizitāte, pietiek ar ADCH nolasīšanu. Pretējā gadījumā vispirms jāizlasa ADCL, pēc tam - ADCH. Analogo kanālu izvēles biti Šo bitu vērtība nosaka, kuras analogās ieejas ir pievienotas ADC.

6. darbība: ADCSRA atlase

ADCSRA izvēle
ADCSRA izvēle
ADCSRA izvēle
ADCSRA izvēle

• 7. bits - ADEN: ADC Iespējot Šī bita rakstīšana vienā iespējo ADC. Uzrakstot to līdz nullei, ADC tiek izslēgts

• 6. bits - ADSC: ADC Sākt konvertēšanu Viena reklāmguvuma režīmā ierakstiet šo bitu vienam, lai sāktu katru reklāmguvumu. Bezmaksas skriešanas režīmā uzrakstiet šo bitu vienam, lai sāktu pirmo reklāmguvumu.

• 5. bits - ADFR: ADC bezmaksas skriešanas izvēle Izvēloties šo bitu (vienu), ADC darbojas brīvās skriešanas režīmā. Šajā režīmā ADC nepārtraukti ņem paraugus un atjaunina datu reģistrus. Notīrot šo bitu (nulli), tiks pārtraukts bezmaksas skriešanas režīms.

• 4. bits - ADIF: ADC pārtraukšanas karogs Šis bits tiek iestatīts, kad ADC konvertēšana ir pabeigta un datu reģistri tiek atjaunināti. ADC Conversion Complete Interrupt tiek izpildīts, ja SRIE ir iestatīti ADIE bits un I-bit. ADIF tiek dzēsts ar aparatūru, izpildot atbilstošo pārtraukšanas apstrādes vektoru. Alternatīvi, ADIF tiek notīrīts, uzrakstot karodziņam loģisku.

• 3. bits-ADIE: ADC pārtraukšanas iespējošana Ja šis bits ir ierakstīts vienā un SREG I-bits ir iestatīts, tiek aktivizēts ADC konversijas pabeigšanas pārtraukums.

• Bits 2: 0 - ADPS2: 0: ADC Prescaler Select Bits Saskaņā ar datu lapu šī preskalāra iestatīšana jāveic tā, lai ADC ievades frekvence būtu no 50 KHz līdz 200 KHz. ADC pulkstenis ir atvasināts no sistēmas pulksteņa ar ADPS2 palīdzību: 0 Šie biti nosaka dalīšanas koeficientu starp XTAL frekvenci un ADC ievades pulksteni.

7. solis: ja vēlaties izmantot ADC vērtību, jums ir jāveic daži zemāk uzskaitīti darbi

  • Iestatiet ADC vērtību
  • Konfigurējiet izejas LED tapu
  • Konfigurējiet ADC aparatūru
  • Iespējot ADC
  • Sāciet konvertēšanu no analogā uz digitālo
  • MŪŽĪGI

Ja ADC vērtība ir augstāka, tad iestatiet vērtību, ieslēdziet LED ELSE Izslēdziet LED

8. darbība: iestatiet ADC vērtību

Kods: uint8_t ADCValue = 128;

9. solis: konfigurējiet izejas LED tapu

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

10. darbība: konfigurējiet ADC aparatūru

Konfigurējiet ADC aparatūru

Tas tiek darīts, iestatot bitus ADC vadības reģistros. Vispirms iestatīsim ADC preskalāru. Saskaņā ar datu lapu, šis preskalārs ir jāiestata tā, lai ADC ievades frekvence būtu no 50 KHz līdz 200 KHz. ADC pulkstenis ir iegūts no sistēmas pulksteņa. Ja sistēmas frekvence ir 1 MHz, iepriekšēja palielinājuma skaļrunis 8 radīs ADC frekvenci 125 Khz. Iepriekšējo mērogošanu nosaka ADPS biti ADCSRA reģistrā. Saskaņā ar datu lapu visiem trim ADPS2: 0 bitiem jābūt iestatītiem uz 011, lai iegūtu 8 prescaler.

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

Tālāk iestatīsim ADC atsauces spriegumu. To kontrolē REFS biti ADMUX reģistrā. Tālāk ir norādīts atsauces spriegums uz AVCC.

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

Lai kanālu, kas izvadīts caur multipleksoru, iestatītu uz ADC, atbilstoši jāiestata MUX biti ADMUX reģistrā. Tā kā mēs šeit izmantojam ADC5

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

Lai ieslēgtu ADC brīvās darbības režīmā, ADCSRA reģistrā iestatiet precīzi nosaukto ADFR bitu:

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

Tiks veiktas pēdējās izmaiņas iestatījumos, lai vienkāršotu ADC vērtības nolasīšanu. Lai gan ADC izšķirtspēja ir 10 biti, tik daudz informācijas bieži nav nepieciešama. Šī 10 bitu vērtība ir sadalīta divos 8 bitu reģistros - ADCH un ADCL. Pēc noklusējuma ADCL ir atrodami zemākie 8 biti no ADC vērtības, un divi augšējie ir zemākie divi ADCH biti. Iestatot ADLAR bitu ADMUX reģistrā, mēs varam izlīdzināt ADC vērtību pa kreisi. Tādējādi augstākie 8 mērījumu biti tiek ievietoti ADCH reģistrā, bet pārējie - ADCL reģistrā. Ja mēs lasām ADCH reģistru, mēs iegūstam 8 bitu vērtību, kas attēlo mūsu 0 līdz 5 voltu mērījumu kā skaitli no 0 līdz 255. Mēs būtībā pārvēršam mūsu 10 bitu ADC mērījumu par 8 bitu. Šeit ir kods, lai iestatītu ADLAR bitu:

Kods:

ADMUX | = (1 << ADLAR); Tas pabeidz ADC aparatūras iestatīšanu šim piemēram. Lai ADC sāktu veikt mērījumus, ir jāiestata vēl divi biti.

11. darbība: iespējojiet ADC

Lai iespējotu ADC, iestatiet ADEN bitu ADCSRA:

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

12. darbība. Sāciet konvertēšanu no analogā uz digitālo

Lai sāktu ADC mērījumus, ADCSRA ir jāiestata ADSC bits:

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

Šajā brīdī ADC sāks nepārtraukti paraugu ņemšanu no sprieguma, kas uzrādīts ADC5. Kods līdz šim izskatīsies šādi:

13. solis: MŪŽĪGI

Atliek tikai pārbaudīt ADC vērtību un iestatīt gaismas diodes, lai parādītu augstu / zemu indikāciju. Tā kā ADC nolasījuma ADCH maksimālā vērtība ir 255, tika izvēlēta testa vērtība th, lai noteiktu, vai spriegums bija augsts vai zems. Vienkāršs IF/ELSE paziņojums FOR cilpās ļaus mums ieslēgt pareizo LED:

Kods

ja (ADCH> ADCValue)

{

PORTB | = (1 << PB0); // Ieslēdziet LED

}

citādi

{

PORTB & = ~ (1 << PB0); // Izslēdziet LED

}

14. darbība. Beigās ir pabeigts kods

Kods:

#iekļaut

int main (anulēts)

{

uint8_t ADCValue = 128;

DDRB | = (1 << PB0); // Iestatīt LED1 kā izeju

ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // Iestatiet ADC preskalāru uz 8 - // 125KHz izlases frekvenci 1MHz

ADMUX | = (1 << REFS0); // Iestatīt ADC atsauci uz AVCC

ADMUX | = (1 << ADLAR); // Kreisais ADC rezultāts, lai varētu viegli nolasīt 8 bitus

ADMUX & = 0xF0;

ADMUX | = 5; // Lai izmantotu ADC0, ir jāmaina MUX vērtības

ADCSRA | = (1 << ADFR); // Iestatiet ADC brīvās darbības režīmā

ADCSRA | = (1 << ADEN); // Iespējot ADC

ADCSRA | = (1 << ADSC); // Sāciet A2D reklāmguvumus, kamēr (1) // Loop Forever

{

ja (ADCH> ADCValue)

{

PORTB | = (1 << PB0); // Ieslēdziet LED1

}

citādi

{

PORTE & = ~ (1 << PB1); // Izslēgt LED1

}

}

atgriezties 0;

}

Vispirms publicējiet šo pamācību Noklikšķiniet šeit

Ieteicams: