INHOUDSOPGAWE:
- Stap 1: Wat is 'n ADC?
- Stap 2: Hoe werk ADC in AVR- Microcontroller
- Stap 3: ADC -omskakelingsformule
- Stap 4: Hoe om ADC in ATmega8 op te stel?
- Stap 5: ADLAR -keuse
- Stap 6: ADCSRA -keuse
- Stap 7: As u die ADC -waarde wil neem, benodig u 'n bietjie werk wat hieronder uiteengesit word
- Stap 8: Stel ADC -waarde in
- Stap 9: Stel die uitvoer -LED -pen in
- Stap 10: Stel ADC -hardeware op
- Stap 11: Aktiveer ADC
- Stap 12: Begin analoog na digitale omskakelings
- Stap 13: TERWYL ewig
- Stap 14: Aan die einde is die volledige kode
Video: Inleiding tot ADC in AVR -mikrobeheerder - vir beginners: 14 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:27
In hierdie handleiding sal u alles weet wat ADC in AVR -mikrobeheerder is
Stap 1: Wat is 'n ADC?
Met 'n ADC, of Analog to Digital Converter, kan 'n mens 'n analoog spanning omskakel na 'n digitale waarde wat deur 'n mikrobeheerder gebruik kan word. Daar is baie bronne van analoog seine wat u dalk wil meet. Daar is analoog sensors beskikbaar wat temperatuur, ligintensiteit, afstand, posisie en krag meet, om maar net 'n paar te noem.
Stap 2: Hoe werk ADC in AVR- Microcontroller
Met die AVR ADC kan die AVR -mikrobeheerder analoog spannings omskakel na digitale waardes met min tot geen eksterne dele nie. Die ATmega8 beskik oor 'n opeenvolgende benadering van 10-bis ADC. Atmega8 het ADC met 7 kanale by PortC. Die ADC het 'n aparte analoge toevoerspanningspen, AVCC. AVCC mag nie meer as ± 0.3V van VCC verskil nie. Die spanningsverwysing kan ekstern ontkoppel word by die AREF -pen. AVCC word gebruik as die spanningsverwysing. Die ADC kan ook ingestel word om deurlopend te werk (die vryloopmodus) of om slegs een omskakeling te doen.
Stap 3: ADC -omskakelingsformule
Waar Vin die spanning op die geselekteerde invoerpen is en Vref die geselekteerde spanningsverwysing
Stap 4: Hoe om ADC in ATmega8 op te stel?
Die volgende registers word gebruik vir die implementering van ADC in ATmega8
ADC Multiplexer seleksie
Stap 5: ADLAR -keuse
Resultaat ADC links verstel Die ADLAR -bit beïnvloed die voorstelling van die ADC -omskakelingsresultaat in die ADC -dataregister. Skryf een aan ADLAR na links om die resultaat aan te pas. Andersins word die resultaat reg aangepas
As 'n ADC -omskakeling voltooi is, word die resultaat gevind in ADCH en ADCL As ADCL gelees word, word die ADC -dataregister nie bygewerk totdat ADCH gelees is nie. As die resultaat dus aangepas word en daar nie meer as 8-bis presisie benodig word nie, is dit voldoende om ADCH te lees. Anders moet ADCL eers gelees word, dan ADCH. Analoog kanaalkeuse Bits Die waarde van hierdie bisse kies watter analoog insette aan die ADC gekoppel is.
Stap 6: ADCSRA -keuse
• Bit 7 - ADEN: ADC Aktiveer Deur hierdie bietjie na een te skryf, word die ADC moontlik gemaak. Deur dit op nul te skryf, word die ADC afgeskakel
• Bit 6 - ADSC: ADC -omskakeling begin In enkel -omskakelingsmodus skryf hierdie bis aan een om elke omskakeling te begin. Skryf hierdie stukkie in die vrylopende modus vir een om die eerste omskakeling te begin.
• Bit 5 - ADFR: ADC Free Running Kies As hierdie bit (een) ingestel is, werk die ADC in Free Running -modus. In hierdie modus neem en dateer die ADC die dataregisters voortdurend. As u hierdie bietjie (nul) uitvee, word die vryloopmodus beëindig.
• Bit 4 - ADIF: ADC Interrupt Flag Hierdie bit word gestel wanneer 'n ADC -omskakeling voltooi is en die dataregisters opgedateer word. Die ADC Conversion Complete Interrupt word uitgevoer as die ADIE-bit en die I-bit in SREG ingestel is. ADIF word deur hardeware skoongemaak wanneer die ooreenstemmende onderbrekingshanteringsvektor uitgevoer word. Alternatiewelik word ADIF skoongemaak deur 'n logiese een aan die vlag te skryf.
• Bit 3-ADIE: ADC-onderbreking geaktiveer As hierdie bit na een geskryf word en die I-bit in SREG ingestel is, word die ADC Conversion Complete Interrupt geaktiveer.
• Bits 2: 0 - ADPS2: 0: ADC Prescaler Kies Bits Volgens die datablad moet hierdie prescalar so ingestel word dat die ADC -invoervrekwensie tussen 50 KHz en 200 KHz is. Die ADC -klok word afgelei van die stelselklok met behulp van ADPS2: 0 Hierdie bisse bepaal die verdelingsfaktor tussen die XTAL -frekwensie en die ingangsklok na die ADC.
Stap 7: As u die ADC -waarde wil neem, benodig u 'n bietjie werk wat hieronder uiteengesit word
- Stel ADC -waarde
- Stel die uitvoer -LED -pen in
- Stel ADC -hardeware op
- Aktiveer ADC
- Begin analoog na digitale omskakelings
- TERWYL ewig
AS ADC -waarde hoër dan stel waarde, skakel LED anders aan, skakel LED aan
Stap 8: Stel ADC -waarde in
Kode: uint8_t ADCValue = 128;
Stap 9: Stel die uitvoer -LED -pen in
Kode: DDRB | = (1 << PB1);
Stap 10: Stel ADC -hardeware op
Stel ADC -hardeware op
Dit word gedoen deur bits in die kontroleregisters vir die ADC in te stel. Laat ons eers die prescalar vir die ADC stel. Volgens die datablad moet hierdie prescalar so ingestel word dat die ADC -insetfrekwensie tussen 50 KHz en 200 KHz is. Die ADC -klok word afgelei van die stelselklok. Met 'n stelselfrekwensie van 1MHz, sal 'n voorskaler van 8 'n ADC -frekwensie van 125 Khz tot gevolg hê. Die voorskaal word bepaal deur die ADPS -bisse in die ADCSRA -register. Volgens die datablad moet al drie ADPS2: 0 -bisse op 011 gestel word om die 8 voorskaler te kry.
Kode: ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
Laat ons dan die ADC -verwysingspanning stel. Dit word beheer deur die REFS -stukkies in die ADMUX -register. Die volgende stel die verwysingspanning op AVCC.
Kode: ADMUX | = (1 << REFS0);
Om die kanaal wat deur die multiplexer na die ADC gestuur word, in te stel, moet die MUX -bisse in die ADMUX -register dienooreenkomstig ingestel word. Aangesien ons hier ADC5 gebruik
Kode: ADMUX & = 0xF0; ADMUX | = 5;
Om die ADC in die vrylopende modus te plaas, stel die toepaslike ADFR-bit in die ADCSRA-register in:
Kode: ADCSRA | = (1 << ADFR);
'N Laaste instellingsverandering word aangebring om die lees van die ADC -waarde makliker te maak. Alhoewel die ADC 'n resolusie van 10 bis het, is hierdie veel inligting dikwels nie nodig nie. Hierdie 10 bis waarde word verdeel oor twee 8 bit registers, ADCH en ADCL. Standaard word die laagste 8 bisse van die ADC -waarde in ADCL aangetref, terwyl die boonste twee die laagste twee bisse van ADCH is. Deur die ADLAR -bit in die ADMUX -register in te stel, kan ons die ADC -waarde links belyn. Dit plaas die hoogste 8 bisse van die meting in die ADCH -register, met die res in die ADCL -register. As ons dan die ADCH -register lees, kry ons 'n 8 bis waarde wat ons 0 tot 5 volt meting verteenwoordig as 'n getal van 0 tot 255. Ons verander basies ons 10 bit ADC meting in 'n 8 bit one. Hier is die kode om die ADLAR -bit in te stel:
Kode:
ADMUX | = (1 << ADLAR); Dit voltooi die opstel van die ADC -hardeware vir hierdie voorbeeld. Nog twee stukkies moet ingestel word voordat die ADC metings begin neem.
Stap 11: Aktiveer ADC
Stel die ADEN -bit in ADCSRA in om die ADC te aktiveer:
Kode: ADCSRA | = (1 << ADEN);
Stap 12: Begin analoog na digitale omskakelings
Om die ADC -metings te begin, moet die ADSC -bit in ADCSRA ingestel word:
Kode: ADCSRA | = (1 << ADSC);
Op hierdie punt sou die ADC voortdurend begin met die monsterneming van die spanning wat op ADC5 aangebied word. Die kode tot op hierdie punt sou so lyk:
Stap 13: TERWYL ewig
Die enigste ding wat u hoef te doen is om die ADC -waarde te toets en die LED's op 'n hoë / lae aanduiding te stel. Aangesien die ADC -lesing in ADCH 'n maksimum waarde van 255 het, is 'n toetswaarde van th gekies om te bepaal of die spanning hoog of laag was. Met 'n eenvoudige IF/ELSE verklaring in die FOR -lusse kan ons die regte LED aanskakel:
Kode
as (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // Skakel LED aan
}
anders
{
PORTB & = ~ (1 << PB0); // Skakel LED af
}
Stap 14: Aan die einde is die volledige kode
Kode:
#insluit
int main (leeg)
{
uint8_t ADCValue = 128;
DDRB | = (1 << PB0); // Stel LED1 as uitset in
ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // Stel ADC prescalar op 8 - // 125KHz monstertempo 1MHz
ADMUX | = (1 << REFS0); // Stel ADC -verwysing op AVCC
ADMUX | = (1 << ADLAR); // Verstel die ADC -resultaat aan die linkerkant om maklike 8 -bis -lees moontlik te maak
ADMUX & = 0xF0;
ADMUX | = 5; // MUX -waardes moes verander word om ADC0 te gebruik
ADCSRA | = (1 << ADFR); // Stel ADC in die vrylopende modus
ADCSRA | = (1 << ADEN); // Aktiveer ADC
ADCSRA | = (1 << ADSC); // Begin A2D -omskakelings terwyl (1) // Loop Forever
{
as (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // Skakel LED1 aan
}
anders
{
PORTE & = ~ (1 << PB1); // Skakel LED1 af
}
}
terugkeer 0;
}
Publiseer eers hierdie tutoriaal Klik hier
Aanbeveel:
Covid -veiligheidshelm Deel 1: 'n Inleiding tot Tinkercad -kringe !: 20 stappe (met foto's)
Covid -veiligheidshelm Deel 1: 'n inleiding tot Tinkercad -stroombane !: Hallo, vriend! In hierdie tweedelige reeks leer ons hoe u Tinkercad's Circuits kan gebruik - 'n prettige, kragtige en opvoedkundige hulpmiddel om te leer hoe stroombane werk! Een van die beste maniere om te leer, is om te doen. Dus, ons ontwerp eers ons eie projek: die
Inleiding tot IR -kringe: 8 stappe (met foto's)
Inleiding tot IR -stroombane: IR is 'n komplekse stuk tegnologie, maar tog baie eenvoudig om mee te werk. Anders as LED's of LASER's, kan infrarooi nie met die menslike oog gesien word nie. In hierdie instruksies sal ek die gebruik van infrarooi deur drie verskillende stroombane demonstreer. Die stroombane sal nie u
Inleiding tot Arduino: 18 stappe
Inleiding tot Arduino: het u al ooit gewonder om u eie toestelle te maak, soos weerstasie, motorpaneelbord vir die monitering van brandstof, spoed- en liggingopsporing of die beheer van u huishoudelike toestelle wat deur slimfone beheer word, of het u al ooit gewonder oor die maak van gesofistikeerde
N Inleiding tot GarageBand: 9 stappe
N Inleiding tot GarageBand: GarageBand is 'n platform waarop jy musiek kan maak. Jy kan omtrent alles op hierdie platform doen, of dit nou jou droommusiek is of om 'n musiekstuk te herhaal waarvan jy hou. Maar dit is in elk geval nie maklik nie. Daarom is ek hier
Inleiding tot Arduino: 15 stappe (met foto's)
Inleiding tot Arduino: 'n Arduino is 'n oopbron-ontwikkelingsbord vir mikrobeheerders. In eenvoudige Engels kan u die Arduino gebruik om sensors te lees en dinge soos motors en ligte te beheer. Hiermee kan u programme na hierdie bord oplaai wat dan met dinge kan omgaan