Sisukord:
- Samm: mis on ADC?
- Samm 2: Kuidas töötada ADC-ga AVR-mikrokontrolleris
- 3. samm: ADC teisendusvalem
- Samm: kuidas konfigureerida ADC ATmega8 -s?
- Samm: ADLAR -i valik
- 6. samm: ADCSRA valik
- Samm: kui soovite võtta ADC väärtust, peate tegema allpool loetletud tööd
- Samm: määrake ADC väärtus
- Samm: konfigureerige väljundi LED -tihvt
- Samm: konfigureerige ADC riistvara
- Samm: lubage ADC
- 12. samm: alustage analoog -digitaalkonversioone
- Samm 13: KUI Igavesti
- 14. samm: lõpus on täielik kood
Video: Sissejuhatus AVC mikrokontrolleri ADC -sse - algajatele: 14 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:49
Selles õpetuses saate teada kõike, mis on ADR mikrokontrolleris
Samm: mis on ADC?
ADC või analoog -digitaalmuundur võimaldab teisendada analoogpinge digitaalseks väärtuseks, mida saab kasutada mikrokontroller. On palju analoogsignaalide allikaid, mida võiks soovida mõõta. Saadaval on analoogandurid, mis mõõdavad temperatuuri, valguse intensiivsust, kaugust, asendit ja jõudu.
Samm 2: Kuidas töötada ADC-ga AVR-mikrokontrolleris
AVR ADC võimaldab AVR -i mikrokontrolleril teisendada analoogpinged digitaalseteks väärtusteks, ilma väliste osadeta. ATmega8-l on 10-bitine järjestikune ligikaudne ADC. ATmega8-l on PortC-s 7 kanaliga ADC. ADC -l on eraldi analoogtoitepinge, AVCC. AVCC ei tohi VCC -st erineda rohkem kui ± 0,3 V. AREF -i tihvti juures võib pingeviite väliselt lahti ühendada. Pinge võrdlusalusena kasutatakse AVCC -d. ADC saab seadistada ka pidevaks töötamiseks (vabalt töötav režiim) või ainult ühe teisenduse tegemiseks.
3. samm: ADC teisendusvalem
Kus Vin on pinge valitud sisendpoldil ja Vref valitud pinge võrdlus
Samm: kuidas konfigureerida ADC ATmega8 -s?
Järgmisi registreid kasutatakse ADC rakendamiseks ATmega8 -s
ADC multiplekseri valik
Samm: ADLAR -i valik
ADC vasakpoolse reguleerimise tulemus ADLAR -bit mõjutab ADC -teisendustulemuse esitamist ADC -andmeregistris. Kirjutage üks ADLAR -i vasakule, et tulemust reguleerida. Vastasel juhul on tulemus õigesti reguleeritud
Kui ADC teisendamine on lõpule viidud, leitakse tulemus ADCH -st ja ADCL -ist. ADCL -i lugemisel ei värskendata ADC -andmeregistrit enne, kui ADCH on loetud. Järelikult, kui tulemus jäetakse reguleerimata ja pole vaja rohkem kui 8-bitist täpsust, piisab ADCH lugemisest. Vastasel juhul tuleb kõigepealt lugeda ADCL, seejärel ADCH. Analoogkanali valiku bitid Nende bittide väärtus valib, millised analoogsisendid on ADC -ga ühendatud.
6. samm: ADCSRA valik
• Bitt 7 - ADEN: ADC Luba Selle biti kirjutamine ühele lubab ADC. Kirjutades selle nulli, lülitatakse ADC välja
• Bitt 6 - ADSC: ADC Alusta teisendamist Ühe konversiooni režiimis kirjutage see bitt ühele, et alustada iga konversiooni. Tasuta jooksurežiimis kirjutage see bitt ühele, et alustada esimest teisendust.
• Bitt 5 - ADFR: ADC vabajooksu valimine Kui see bit (üks) on seatud, töötab ADC vabasõidu režiimis. Selles režiimis proovib ja uuendab ADC pidevalt andmeregistreid. Selle biti (null) kustutamine lõpetab vabajooksu režiimi.
• Bit 4 - ADIF: ADC katkestuslipp See bit määratakse siis, kui ADC teisendamine on lõpule viidud ja andmeregistreid värskendatakse. ADC Conversion Complete Interrupt käivitatakse, kui ADIE-bit ja SREG-i I-bit on seatud. Vastava katkestuskäsitlusvektori käivitamisel kustutab ADIF riistvara. Teise võimalusena kustutatakse ADIF, kirjutades lipule loogilise.
• Bitt 3-ADIE: ADC-katkestuse lubamine Kui see bit on ühele kirjutatud ja SREG-i I-bit on seatud, aktiveeritakse ADC Conversion Complete Interrupt.
• Bits 2: 0 - ADPS2: 0: ADC prescaler Select Bits Vastavalt andmelehele tuleb see eelkalar seadistada nii, et ADC sisendsagedus oleks vahemikus 50 KHz kuni 200 KHz. ADC kell on tuletatud süsteemikellast ADPS2 abil: 0 Need bitid määravad jaotusteguri XTAL sageduse ja ADC sisendkella vahel.
Samm: kui soovite võtta ADC väärtust, peate tegema allpool loetletud tööd
- Määrake ADC väärtus
- Väljundi LED -tihvti seadistamine
- Seadistage ADC riistvara
- Luba ADC
- Alustage analoog -digitaalkonversioone
- KUI Igavesti
KUI ADC väärtus on kõrgem, siis määrake väärtus, lülitage LED sisse ELSE Lülitage LED välja
Samm: määrake ADC väärtus
Kood: uint8_t ADCValue = 128;
Samm: konfigureerige väljundi LED -tihvt
Kood: DDRB | = (1 << PB1);
Samm: konfigureerige ADC riistvara
Seadistage ADC riistvara
Seda tehakse bittide seadistamisega ADC juhtregistrites. Esiteks seadistame ADC -le eelkalar. Andmelehe kohaselt tuleb see eelkalar seadistada nii, et ADC sisendsagedus oleks vahemikus 50 KHz kuni 200 KHz. ADC kell on tuletatud süsteemi kellast. Kui süsteemisagedus on 1MHz, siis 8 -kordse eelskaala tulemuseks on ADC sagedus 125 Khz. Eelseadistamise määravad ADCSRA registri ADPS -bitid. Vastavalt andmelehele peavad kõik kolm ADPS2: 0 bitti olema seatud väärtusele 011, et saada 8 eelseadistust.
Kood: ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
Järgmisena seadistame ADC võrdluspinge. Seda juhivad REFS -bitid ADMUX -registris. Järgnev seab võrdluspingeks AVCC.
Kood: ADMUX | = (1 << REFS0);
Selleks, et seadistada multiplekserist läbitud kanal ADC -le, tuleb vastavalt seadistada ADMUX -registri MUX -bitid. Kuna me kasutame siin ADC5
Kood: ADMUX & = 0xF0; ADMUX | = 5;
ADC vabalt töötavasse režiimi seadmiseks seadke ADCSRA registrisse sobiva nimega ADFR-bit:
Kood: ADCSRA | = (1 << ADFR);
Viimane seadete muudatus tehakse, et muuta ADC väärtuse lugemine lihtsamaks. Kuigi ADC eraldusvõime on 10 bitti, pole see palju teavet sageli vajalik. See 10 -bitine väärtus on jagatud kaheks 8 -bitiseks registriks, ADCH ja ADCL. Vaikimisi on ADCL -is ADC -väärtuse madalaimad 8 bitti, millest kaks ülemist on ADCH -i kaks alumist bitti. Seades ADMUX -registrisse ADLAR -biti, saame ADC väärtuse vasakule joondada. See paneb mõõtmise kõrgeimad 8 bitti ADCH -registrisse, ülejäänud - ADCL -registrisse. Kui me siis loeme ADCH registrit, saame 8 -bitise väärtuse, mis tähistab meie 0–5 -voldist mõõtmist numbrina 0–255. Põhimõtteliselt muudame oma 10 -bitise ADC -mõõtmise 8 -bitiseks. Siin on kood ADLAR -bitti seadistamiseks:
Kood:
ADMUX | = (1 << ADLAR); See lõpetab selle näite jaoks ADC riistvara häälestamise. Enne kui ADC hakkab mõõtmisi tegema, tuleb määrata veel kaks bitti.
Samm: lubage ADC
ADC lubamiseks seadke ADCSRA -s ADEN -bit:
Kood: ADCSRA | = (1 << ADEN);
12. samm: alustage analoog -digitaalkonversioone
ADC mõõtmiste alustamiseks tuleb ADCSRA ADSC bit seadistada:
Kood: ADCSRA | = (1 << ADSC);
Sel hetkel hakkaks ADC pidevalt proovima ADC5 -l esitatud pinget. Selle aja kood näeks välja selline:
Samm 13: KUI Igavesti
Ainus asi, mida teha, on testida ADC väärtust ja seadistada LED -id näitama kõrge / madala näitu. Kuna ADCH näidu ADCH maksimaalne väärtus on 255, valiti testväärtus th, et teha kindlaks, kas pinge oli kõrge või madal. Lihtne IF/ELSE avaldus FOR -ahelates võimaldab meil õige LED -i sisse lülitada:
Kood
kui (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // Lülitage LED sisse
}
muidu
{
PORTB & = ~ (1 << PB0); // Lülita LED välja
}
14. samm: lõpus on täielik kood
Kood:
#kaasake
int main (tühine)
{
uint8_t ADCValue = 128;
DDRB | = (1 << PB0); // Määra väljundiks LED1
ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // Seadistage ADC eelkalar 8 - 125KHz proovivõtu sagedusele 1MHz
ADMUX | = (1 << REFS0); // Määra ADC viide AVCC -le
ADMUX | = (1 << ADLAR); // Vasakpoolne ADC tulemus, et võimaldada hõlpsat 8 -bitist lugemist
ADMUX & = 0xF0;
ADMUX | = 5; // ADC0 kasutamiseks tuli muuta MUX väärtusi
ADCSRA | = (1 << ADFR); // Seadke ADC vabalt töötavale režiimile
ADCSRA | = (1 << ADEN); // Luba ADC
ADCSRA | = (1 << ADSC); // Alustage A2D konversioone ajal (1) // Loop Forever
{
kui (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // Lülitage LED1 sisse
}
muidu
{
PORTE & = ~ (1 << PB1); // Lülitage LED1 välja
}
}
tagasitulek 0;
}
Esmalt avaldage see õpetus Klõpsake siin
Soovitan:
Digitaalkell mikrokontrolleri abil (AT89S52 ilma RTC -ahelata): 4 sammu (piltidega)
Digitaalkell mikrokontrolleri abil (AT89S52 ilma RTC -ahelata): kirjeldame kella … "Kell on seade, mis loeb ja näitab aega (suhteline)"! . MÄRKUS: lugemiseks kulub 2-3 minutit, palun lugege kogu projekt läbi, muidu ma ei
Teie mikrokontrolleri projektide keskmine: 6 sammu
Teie mikrokontrollerite projektide jooksev keskmine: selles juhendis selgitan, mis on jooksev keskmine ja miks peaksite sellest hoolima, ning näitan teile, kuidas seda maksimaalse arvutusliku efektiivsuse saavutamiseks rakendada (ärge muretsege keerukuse pärast, see on väga lihtne mõista ja
Magic Cube või mikrokontrolleri kuubik: 7 sammu (koos piltidega)
Magic Cube või mikrokontrolleri kuubik: selles juhendis näitan teile, kuidas teha maagilist kuubikut vigasest mikrokontrollerist. See idee pärineb siis, kui olen võtnud Arduino Mega 2560-st vigase ATmega2560 mikrokontrolleri ja teinud kuubiku . Magic Cube'i riistvara kohta olen teinud
CloudX mikrokontrolleri sissejuhatus: 3 sammu
CloudX-i mikrokontrolleri sissejuhatus: CloudX-i mikrokontroller on avatud lähtekoodiga riist- ja tarkvaramikroarvuti, mis võimaldab teil luua oma interaktiivseid projekte. CloudX on väike puitlaastplaat, mis võimaldab kasutajatel enne mis tahes toimingu tegemist öelda, mida teha, see aktsepteerib erinevaid võimalusi
AVR mikrokontrolleri kaitsmebittide konfiguratsioon. Mikrokontrolleri välkmällu LED -i vilkumisprogrammi loomine ja üleslaadimine: 5 sammu
AVR mikrokontrolleri kaitsmebittide konfiguratsioon. Mikrokontrolleri välkmällu LED -i vilkumisprogrammi loomine ja üleslaadimine: Sel juhul loome lihtsa programmi C -koodiga ja põletame selle mikrokontrolleri mällu. Kirjutame oma programmi ja koostame hex -faili, kasutades Atmel Studio integreeritud arendusplatvormina. Seadistame kaitsme bi