Përmbajtje:
- Hapi 1: Çfarë është një ADC?
- Hapi 2: Si funksionon ADC në AVR- Mikrokontrollues
- Hapi 3: Formula e Konvertimit ADC
- Hapi 4: Si të konfiguroni ADC në ATmega8?
- Hapi 5: Përzgjedhja e ADLAR
- Hapi 6: Përzgjedhja e ADCSRA
- Hapi 7: Nëse dëshironi të merrni vlerën ADC ju duhet të keni nevojë për një punë të kryer që është renditur më poshtë
- Hapi 8: Vendosni Vlerën ADC
- Hapi 9: Konfiguroni Pin -in LED të daljes
- Hapi 10: Konfiguroni harduerin ADC
- Hapi 11: Aktivizo ADC
- Hapi 12: Filloni konvertimet analoge në ato dixhitale
- Hapi 13: NDRSE Përgjithmonë
- Hapi 14: Në fund Kodi i plotë është
Video: Hyrje në ADC në AVR Mikrokontrollues - për fillestarët: 14 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:24
Në këtë tutorial do të dini gjithçka ADC në mikrokontrollues avr
Hapi 1: Çfarë është një ADC?
Një ADC, ose Konvertuesi analog në dixhital, ju lejon të konvertoni një tension analog në një vlerë dixhitale që mund të përdoret nga një mikrokontrollues. Ka shumë burime të sinjaleve analoge që dikush mund të dëshirojë të masë. Ekzistojnë sensorë analogë që matin temperaturën, intensitetin e dritës, distancën, pozicionin dhe forcën, vetëm për të përmendur disa.
Hapi 2: Si funksionon ADC në AVR- Mikrokontrollues
AVR ADC lejon mikrokontrolluesin AVR të konvertojë tensione analoge në vlera dixhitale me pak ose aspak pjesë të jashtme. ATmega8 përmban një përafrim të njëpasnjëshëm 10-bit ADC. ATmega8 ka 7 kanale ADC në PortC. ADC ka një pin të veçantë analog të tensionit të furnizimit, AVCC. AVCC nuk duhet të ndryshojë më shumë se ± 0.3V nga VCC. Referenca e tensionit mund të shkëputet nga jashtë në kunjin AREF. AVCC përdoret si referencë e tensionit. ADC gjithashtu mund të vendoset që të funksionojë vazhdimisht (mënyra e funksionimit të lirë) ose të bëjë vetëm një konvertim.
Hapi 3: Formula e Konvertimit ADC
Ku Vin është tensioni në pinin e zgjedhur të hyrjes dhe Vref referenca e tensionit të zgjedhur
Hapi 4: Si të konfiguroni ADC në ATmega8?
Regjistrat e mëposhtëm përdoren për zbatimin e ADC në ATmega8
Përzgjedhja e ADP Multiplexer
Hapi 5: Përzgjedhja e ADLAR
ADC Left Adjust Result Biti ADLAR ndikon në paraqitjen e rezultatit të konvertimit ADC në Regjistrin e të dhënave ADC. Shkruani një në ADLAR për të rregulluar rezultatin në të majtë. Përndryshe, rezultati rregullohet siç duhet
Kur një konvertim ADC është i plotë, rezultati gjendet në ADCH dhe ADCL Kur lexohet ADCL, Regjistri i të Dhënave ADC nuk azhurnohet derisa ADCH të lexohet. Rrjedhimisht, nëse rezultati lihet i rregulluar dhe nuk kërkohet më shumë se një saktësi 8-bit, mjafton të lexoni ADCH. Përndryshe, ADCL duhet të lexohet së pari, pastaj ADCH. Bitët e përzgjedhjes së kanaleve analoge Vlera e këtyre bitëve zgjedh se cilat hyrje analoge janë të lidhura me ADC.
Hapi 6: Përzgjedhja e ADCSRA
• Bit 7 - ADEN: ADC Enable Shkrimi i këtij biti në një mundëson ADC. Duke e shkruar atë në zero, ADC fiket
• Bit 6 - ADSC: ADC Start Conversion Në modalitetin Single Conversion, shkruajeni këtë bit në një për të filluar çdo konvertim. Në modalitetin e Kandidimit Falas, shkruani këtë pjesë në një për të filluar konvertimin e parë.
• Bit 5 - ADFR: ADC Free Running Select Kur të vendoset ky bit (një) ADC funksionon në modalitetin Free Running. Në këtë mënyrë, ADC mostrat dhe përditëson regjistrat e të dhënave vazhdimisht. Pastrimi i këtij biti (zero) do të përfundojë mënyrën e funksionimit falas.
• Bit 4 - ADIF: Flamuri i ndërprerjes ADC Ky bit vendoset kur përfundon një konvertim ADC dhe azhurnohen regjistrat e të dhënave. Ndërprerja e plotë e konvertimit ADC ekzekutohet nëse janë vendosur biti ADIE dhe biti në SREG. ADIF pastrohet nga hardueri kur ekzekuton Vektorin e Trajtimit të ndërprerjes përkatëse. Përndryshe, ADIF pastrohet duke shkruar një logjike në flamur.
• Bit 3-ADIE: ADC Interrupt Enable Kur ky bit shkruhet në një dhe vendoset biti I në SREG, aktivizohet ndërprerja e plotë e konvertimit ADC.
• Bitet 2: 0 - ADPS2: 0: ADC Prescaler Select Bits Sipas fletës së të dhënave, kjo prescalar duhet të vendoset në mënyrë që frekuenca e hyrjes ADC të jetë midis 50 KHz dhe 200 KHz. Ora ADC rrjedh nga ora e sistemit me ndihmën e ADPS2: 0 Këto bit përcaktojnë faktorin e ndarjes midis frekuencës XTAL dhe orës hyrëse në ADC.
Hapi 7: Nëse dëshironi të merrni vlerën ADC ju duhet të keni nevojë për një punë të kryer që është renditur më poshtë
- Vendosni vlerën ADC
- Konfiguroni kunjin LED të daljes
- Konfiguroni harduerin ADC
- Aktivizo ADC
- Filloni konvertimet analoge në dixhitale
- NDIRSE Përgjithmonë
NFSE Vlera ADC Më e Lartë pastaj Vendosni Vlerën, Ndizni LED ELSE Fikni LED
Hapi 8: Vendosni Vlerën ADC
Kodi: uint8_t ADCValue = 128;
Hapi 9: Konfiguroni Pin -in LED të daljes
Kodi: DDRB | = (1 << PB1);
Hapi 10: Konfiguroni harduerin ADC
Konfiguroni harduerin ADC
Kjo bëhet përmes vendosjes së bitëve në regjistrat e kontrollit për ADC. Së pari, le të vendosim preskalerin për ADC. Sipas fletës së të dhënave, kjo prescalar duhet të vendoset në mënyrë që frekuenca e hyrjes ADC të jetë midis 50 KHz dhe 200 KHz. Ora ADC rrjedh nga ora e sistemit. Me një frekuencë sistemi prej 1MHz, një para -shkallëzues prej 8 do të rezultojë në një frekuencë ADC prej 125 Khz. Parakalimi vendoset nga bitët ADPS në regjistrin ADCSRA. Sipas fletës së të dhënave, të tre bitët ADPS2: 0 duhet të vendosen në 011 për të marrë parapaguesin 8.
Kodi: ADCSRA | = (0 << ADPS2) | (1 << ADPS1] | (1 << ADPS0];
Tjetra, le të vendosim tensionin e referencës ADC. Kjo kontrollohet nga bitët REFS në regjistrin ADMUX. Më poshtë vendos tensionin e referencës në AVCC.
Kodi: ADMUX | = (1 << REFS0);
Për të vendosur kanalin e kaluar nëpër multiplexer në ADC, bitet MUX në regjistrin ADMUX duhet të vendosen në përputhje me rrethanat. Meqenëse ne po përdorim ADC5 këtu
Kodi: ADMUX & = 0xF0; ADMUX | = 5;
Në mënyrë që të vendosni ADC në modalitetin e funksionimit të lirë, vendosni bitin ADFR me emrin e duhur në regjistrin ADCSRA:
Kodi: ADCSRA | = (1 << ADFR);
Një ndryshim i fundit i cilësimeve do të bëhet për ta bërë leximin e vlerës ADC më të thjeshtë. Megjithëse ADC ka një rezolutë prej 10 bitësh, ky informacion shumë shpesh nuk është i nevojshëm. Kjo vlerë prej 10 bitësh ndahet në dy regjistra 8 bitësh, ADCH dhe ADCL. Si parazgjedhje, 8 bitët më të ulët të vlerës ADC gjenden në ADCL, me dy të sipërmet dy bitët më të ulët të ADCH. Duke vendosur bitin ADLAR në regjistrin ADMUX, ne mund të rreshtojmë majtas vlerën ADC. Kjo vendos 8 bitët më të lartë të matjes në regjistrin ADCH, ndërsa pjesa tjetër në regjistrin ADCL. Nëse lexojmë pastaj regjistrin ADCH, marrim një vlerë 8 bit që përfaqëson matjen tonë 0 deri në 5 volt si një numër nga 0 në 255. Ne në thelb po e kthejmë matjen tonë ADC 10 bit në një 8 bit. Këtu është kodi për të vendosur bitin ADLAR:
Kodi:
ADMUX | = (1 << ADLAR); Kjo përfundon konfigurimin e harduerit ADC për këtë shembull. Dy bit të tjerë duhet të vendosen para se ADC të fillojë të marrë matje.
Hapi 11: Aktivizo ADC
Për të aktivizuar ADC, vendosni bitin ADEN në ADCSRA:
Kodi: ADCSRA | = (1 << ADEN];
Hapi 12: Filloni konvertimet analoge në ato dixhitale
Për të filluar matjet ADC, biti ADSC në ADCSRA duhet të vendoset:
Kodi: ADCSRA | = (1 << ADSC);
Në këtë pikë, ADC do të fillonte marrjen e mostrave të vazhdueshme të tensionit të paraqitur në ADC5. Kodi deri në këtë pikë do të duket kështu:
Hapi 13: NDRSE Përgjithmonë
E vetmja gjë që mbetet për të bërë është të testoni vlerën ADC dhe të vendosni LED -të të shfaqin një tregues të lartë / të ulët. Meqenëse leximi ADC në ADCH ka një vlerë maksimale prej 255, një vlerë testimi e th u zgjodh për të përcaktuar nëse tensioni ishte i lartë apo i ulët. Një deklaratë e thjeshtë IF/ELSE në sythe FOR do të na lejojë të ndezim LED -in e duhur:
Kodi
nëse (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // Ndizni LED
}
tjeter
{
PORTB & = ~ (1 << PB0); // Fikni LED
}
Hapi 14: Në fund Kodi i plotë është
Kodi:
#përfshi
int kryesore (e pavlefshme)
{
uint8_t ADCVlera = 128;
DDRB | = (1 << PB0); // Vendosni LED1 si dalje
ADCSRA | = (0 << ADPS2) | (1 << ADPS1] | (1 << ADPS0]; // Vendosni ADC prescalar në 8 - // Norma e mostrës 125KHz 1MHz
ADMUX | = (1 << REFS0); // Vendosni referencën ADC në AVCC
ADMUX | = (1 << ADLAR); // Rregulloni majtas rezultatin ADC për të lejuar lexim të lehtë me 8 bit
ADMUX & = 0xF0;
ADMUX | = 5; // Vlerat MUX duheshin ndryshuar për të përdorur ADC0
ADCSRA | = (1 << ADFR); // Vendosni ADC në modalitetin e funksionimit falas
ADCSRA | = (1 << ADEN]; // Aktivizo ADC
ADCSRA | = (1 << ADSC); // Filloni Konvertimet A2D ndërsa (1) // Loop Forever
{
nëse (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // Ndizni LED1
}
tjeter
{
PORTE & = ~ (1 << PB1); // Fik LED1
}
}
kthimi 0;
}
Së pari Publikoni këtë tutorial Kliko Këtu
Recommended:
Një orë LED pa mikrokontrollues: 12 hapa
Një orë LED pa mikrokontrollues: Siç duket, më pëlqen të bëj orë të ndryshme. Unë kam ndërtuar dhe projektuar orë të shumta elektronike dhe mekanike dhe kjo është një tjetër. Ora ime e parë elektronike kërkoi disa përsëritje dhe mësova shumë. Dizajni i paraqitur është i improvizuar
Orë dixhitale por pa mikrokontrollues [Hardcore Electronics]: 13 hapa (me fotografi)
Ora Dixhitale Por Pa Mikrokontrollues [Hardcore Electronics]: prettyshtë shumë e lehtë të ndërtosh qarqe me një mikrokontrollues, por ne i harrojmë plotësisht tonet e punës që një mikrokontrollues duhej të kalonte për të përfunduar një detyrë të thjeshtë (edhe për ndezjen e një led). Pra, sa e vështirë do të ishte të bësh një orë dixhitale të kompletuar
Stepper Motor i kontrolluar Stepper Motor Pa Mikrokontrollues !: 6 hapa
Stepper Motor i kontrolluar Stepper Motor Pa Mikrokontrollues !: Në këtë udhëzues të shpejtë, ne do të bëjmë një kontrollues të thjeshtë të motorit stepper duke përdorur një motor stepper. Ky projekt nuk kërkon qark të ndërlikuar ose mikrokontrollues. Pra, pa zhurmë të mëtejshme, le të fillojmë
Stepper Motor i kontrolluar me motor Stepper pa mikrokontrollues (V2): 9 hapa (me fotografi)
Stepper Motor i kontrolluar Stepper Motor Pa Mikrokontrollues (V2): Në një nga udhëzimet e mia të mëparshme, ju tregova se si të kontrolloni një motor stepper duke përdorur një motor stepper pa një mikrokontrollues. Ishte një projekt i shpejtë dhe argëtues, por erdhi me dy probleme të cilat do të zgjidhen në këtë Udhëzues. Pra, me zgjuarsi
Shpërndarës i dezinfektuesit të duarve pa kontakt pa arduino ose mikrokontrollues: 17 hapa (me fotografi)
Dispenser DIY Jo Kontaktues i Dezinfektuesit të Duarve Pa Arduino ose Mikrokontrollues: Siç e dimë të gjithë, shpërthimi i COVID-19 goditi botën dhe ndryshoi stilin tonë të jetesës. Në këtë gjendje, alkooli dhe dezinfektuesit e duarve janë lëngje jetike, megjithatë, ato duhet të përdoren siç duhet. Prekja e kontejnerëve të alkoolit ose dezinfektuesit e duarve me duar të infektuara