Indholdsfortegnelse:
- Trin 1: Hvad er en ADC?
- Trin 2: Hvordan fungerer ADC i AVR-Microcontroller
- Trin 3: ADC -konverteringsformel
- Trin 4: Sådan konfigureres ADC i ATmega8?
- Trin 5: ADLAR -valg
- Trin 6: Valg af ADCSRA
- Trin 7: Hvis du vil tage ADC -værdi, skal du have noget arbejde udført, der er angivet nedenfor
- Trin 8: Indstil ADC -værdi
- Trin 9: Konfigurer Output LED Pin
- Trin 10: Konfigurer ADC -hardware
- Trin 11: Aktiver ADC
- Trin 12: Start analog til digital konvertering
- Trin 13: WHILE Forever
- Trin 14: I slutningen Komplet kode er
Video: Introduktion til ADC i AVR Microcontroller - for begyndere: 14 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:29
I denne vejledning vil du vide alt ADC i avr mikrokontroller
Trin 1: Hvad er en ADC?
En ADC eller Analog to Digital Converter tillader en at konvertere en analog spænding til en digital værdi, der kan bruges af en mikrokontroller. Der er mange kilder til analoge signaler, som man måske vil måle. Der findes analoge sensorer, der måler temperatur, lysintensitet, afstand, position og kraft, for blot at nævne nogle få.
Trin 2: Hvordan fungerer ADC i AVR-Microcontroller
AVR ADC tillader AVR -mikrokontrolleren at konvertere analoge spændinger til digitale værdier med få eller ingen eksterne dele. ATmega8 har en 10-bit successiv tilnærmelse ADC. ATmega8 har 7 kanals ADC på PortC. ADC har en separat analog forsyningsspændingsstift, AVCC. AVCC må ikke afvige mere end ± 0,3V fra VCC.. Spændingsreferencen kan frakobles eksternt ved AREF -stiften. AVCC bruges som spændingsreference. ADC'en kan også indstilles til at køre kontinuerligt (fritgående tilstand) eller kun udføre en konvertering.
Trin 3: ADC -konverteringsformel
Hvor Vin er spændingen på den valgte indgangsstift og Vref den valgte spændingsreference
Trin 4: Sådan konfigureres ADC i ATmega8?
Følgende registre bruges til implementering af ADC i ATmega8
Valg af ADC -multiplexer
Trin 5: ADLAR -valg
ADC Venstre Juster resultat ADLAR -bit påvirker præsentationen af ADC -konverteringsresultatet i ADC -dataregistret. Skriv en til ADLAR til venstre for at justere resultatet. Ellers er resultatet korrekt justeret
Når en ADC -konvertering er fuldført, findes resultatet i ADCH og ADCL Når ADCL læses, opdateres ADC -dataregistret ikke, før ADCH er læst. Hvis resultatet efterlades justeret, og der ikke kræves mere end 8-bit præcision, er det derfor tilstrækkeligt at aflæse ADCH. Ellers skal ADCL først læses, derefter ADCH. Analoge kanalvalgsværdier Værdien af disse bits vælger, hvilke analoge indgange der er forbundet til ADC.
Trin 6: Valg af ADCSRA
• Bit 7 - ADEN: ADC Aktivering Ved at skrive denne bit til én aktiveres ADC. Ved at skrive det til nul, deaktiveres ADC
• Bit 6 - ADSC: ADC Start Conversion I Single Conversion mode, skriv denne bit til en for at starte hver konvertering. I tilstanden Frit løb, skriv denne bit til en for at starte den første konvertering.
• Bit 5 - ADFR: ADC Free Running Vælg Når denne bit er indstillet (en), fungerer ADC i Free Running mode. I denne tilstand prøver og opdaterer ADC løbende dataregistrene. Sletning af denne bit (nul) vil afslutte gratis driftstilstand.
• Bit 4 - ADIF: ADC Interrupt Flag Denne bit indstilles, når en ADC -konvertering er fuldført, og dataregistrene opdateres. ADC-konverteringen fuldført afbrydelse udføres, hvis ADIE-bit og I-bit i SREG er indstillet. ADIF ryddes af hardware, når den tilsvarende afbrydelseshåndteringsvektor udføres. Alternativt ryddes ADIF ved at skrive en logisk til flaget.
• Bit 3-ADIE: ADC Interrupt Enable Når denne bit skrives til en og I-bit i SREG er indstillet, aktiveres ADC Conversion Complete Interrupt.
• Bits 2: 0 - ADPS2: 0: ADC Prescaler Vælg bits I henhold til databladet skal denne prækalar indstilles, så ADC -inputfrekvensen er mellem 50 KHz og 200 KHz. ADC -uret er afledt af systemuret ved hjælp af ADPS2: 0 Disse bits bestemmer divisionsfaktoren mellem XTAL -frekvensen og input -uret til ADC'en.
Trin 7: Hvis du vil tage ADC -værdi, skal du have noget arbejde udført, der er angivet nedenfor
- Indstil ADC -værdi
- Konfigurer output LED -pin
- Konfigurer ADC -hardware
- Aktiver ADC
- Start analog til digital konvertering
- MENS for altid
HVIS ADC -værdi højere end Indstil værdi, Tænd LED ELSE Sluk LED
Trin 8: Indstil ADC -værdi
Kode: uint8_t ADCValue = 128;
Trin 9: Konfigurer Output LED Pin
Kode: DDRB | = (1 << PB1);
Trin 10: Konfigurer ADC -hardware
Konfigurer ADC -hardware
Dette gøres ved at indstille bits i kontrolregistrene for ADC. Lad os først indstille prescalaren for ADC. Ifølge databladet skal denne prækalar indstilles, så ADC -indgangsfrekvensen er mellem 50 KHz og 200 KHz. ADC -uret er afledt af systemuret. Med en systemfrekvens på 1MHz resulterer en forkalkaler på 8 i en ADC -frekvens på 125 Khz. Forskalingen indstilles af ADPS -bitene i ADCSRA -registret. Ifølge databladet skal alle tre ADPS2: 0 bits indstilles til 011 for at få den 8 forkalkningsmaskine.
Kode: ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
Lad os derefter indstille ADC -referencespændingen. Dette styres af REFS -bitene i ADMUX -registret. Følgende sætter referencespændingen til AVCC.
Kode: ADMUX | = (1 << REFS0);
For at indstille kanalen, der føres gennem multiplexeren til ADC, skal MUX -bitene i ADMUX -registret indstilles i overensstemmelse hermed. Da vi bruger ADC5 her
Kode: ADMUX & = 0xF0; ADMUX | = 5;
For at sætte ADC'en i fritgående tilstand skal du indstille den passende navngivne ADFR-bit i ADCSRA-registret:
Kode: ADCSRA | = (1 << ADFR);
En sidste ændring af indstillinger foretages for at gøre læsning af ADC -værdien lettere. Selvom ADC har en opløsning på 10 bit, er denne mange information ofte ikke nødvendig. Denne 10 bit værdi er delt på to 8 bit registre, ADCH og ADCL. Som standard findes de laveste 8 bit af ADC -værdien i ADCL, hvor de to øverste er de laveste to bits i ADCH. Ved at indstille ADLAR -bit i ADMUX -registret kan vi venstrejustere ADC -værdien. Dette placerer de højeste 8 bit af målingen i ADCH -registret, med resten i ADCL -registret. Hvis vi derefter læser ADCH -registret, får vi en 8 bit værdi, der repræsenterer vores 0 til 5 volt måling som et tal fra 0 til 255. Vi gør i bund og grund vores 10 bit ADC måling til en 8 bit en. Her er koden til at indstille ADLAR -bit:
Kode:
ADMUX | = (1 << ADLAR); Det fuldender opsætningen af ADC -hardware til dette eksempel. Yderligere to bits skal indstilles, før ADC'en begynder at tage målinger.
Trin 11: Aktiver ADC
For at aktivere ADC skal du indstille ADEN -bit i ADCSRA:
Kode: ADCSRA | = (1 << ADEN);
Trin 12: Start analog til digital konvertering
For at starte ADC -målingerne skal ADSC -bit i ADCSRA indstilles:
Kode: ADCSRA | = (1 << ADSC);
På dette tidspunkt ville ADC begynde løbende at sampler spændingen, der blev præsenteret på ADC5. Koden til dette punkt ville se sådan ud:
Trin 13: WHILE Forever
Det eneste, der er tilbage at gøre, er at teste ADC -værdien og indstille lysdioderne til at vise en høj / lav indikation. Da ADC -aflæsningen i ADCH har en maksimalværdi på 255, blev en testværdi på th valgt for at bestemme, om spændingen var høj eller lav. En simpel IF/ELSE -sætning i FOR -loops giver os mulighed for at tænde den korrekte LED:
Kode
hvis (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // Tænd LED
}
andet
{
PORTB & = ~ (1 << PB0); // Sluk LED
}
Trin 14: I slutningen Komplet kode er
Kode:
#omfatte
int main (tomrum)
{
uint8_t ADCValue = 128;
DDRB | = (1 << PB0); // Indstil LED1 som output
ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // Indstil ADC prescalar til 8 - // 125KHz sample rate 1MHz
ADMUX | = (1 << REFS0); // Indstil ADC -reference til AVCC
ADMUX | = (1 << ADLAR); // Venstre juster ADC -resultat for at tillade let 8 bit læsning
ADMUX & = 0xF0;
ADMUX | = 5; // MUX -værdier skulle ændres for at bruge ADC0
ADCSRA | = (1 << ADFR); // Indstil ADC til Free-Running Mode
ADCSRA | = (1 << ADEN); // Aktiver ADC
ADCSRA | = (1 << ADSC); // Start A2D -konverteringer, mens (1) // Loop Forever
{
hvis (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // Tænd for LED1
}
andet
{
PORTE & = ~ (1 << PB1); // Sluk for LED1
}
}
returnere 0;
}
Udgiv først denne vejledning Klik her
Anbefalede:
Introduktion til Visuino - Visuino for begyndere .: 6 trin
Introduktion til Visuino | Visuino for begyndere .: I denne artikel vil jeg tale om Visuino, som er en anden grafisk programmeringssoftware til Arduino og lignende mikrokontrollere. Hvis du er en elektronisk hobbyist, der ønsker at komme ind i Arduinos verden, men mangler forudgående programmeringskendskab
Introduktion til CloudX Microcontroller: 3 trin
Introduktion til CloudX Microcontroller: CloudX microcontroller er en opensource-hardware og softwaremikrocomputer, der giver dig mulighed for at oprette dine egne interaktive projekter. CloudX er et lille chipboard, der giver brugerne mulighed for at fortælle det, hvad de skal gøre, før de foretager sig noget, det accepterer forskellige k
Introduktion til robotik til folkeskoleelever med kolibri -controllere: 18 trin
Introduktion til robotik til folkeskoleelever med kolibri -controllere: De fleste robotværktøjer på markedet i dag kræver, at brugeren downloader specifik software på deres harddisk. Skønheden ved Hummingbird Robotic Controller er, at den kan køres ved hjælp af en webbaseret computer, f.eks. En chromebook. Det har også været
Introduktion til spænding, strøm, modstand og effekt forklaret for begyndere: 3 trin
Introduktion til spænding, strøm, modstand og effekt forklaret for begyndere: Denne video er relateret til grundlæggende elektroniske termer, og let at forstå, jeg vil prøve at forklare let med vandanalogikoncept, så det hjælper at forstå batter og derefter teori, så se venligst denne video for at afklare dit koncept om strøm, spænding
Introduktion til CamScanner til Android: 11 trin
Introduktion til CamScanner til Android: Introduktion til CamScanner til Android