Innehållsförteckning:
- Steg 1: Vad är en ADC?
- Steg 2: Hur fungerar ADC i AVR-Microcontroller
- Steg 3: ADC -konverteringsformel
- Steg 4: Hur konfigurerar jag ADC i ATmega8?
- Steg 5: ADLAR -urval
- Steg 6: Urval av ADCSRA
- Steg 7: Om du vill ta ADC -värde måste du ha lite arbete gjort som anges nedan
- Steg 8: Ange ADC -värde
- Steg 9: Konfigurera Output LED Pin
- Steg 10: Konfigurera ADC -maskinvara
- Steg 11: Aktivera ADC
- Steg 12: Starta analog till digital konvertering
- Steg 13: WILE Forever
- Steg 14: I slutet Komplett kod är
Video: Introduktion till ADC i AVR Microcontroller - för nybörjare: 14 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
I denna handledning kommer du att veta allt ADC i avr -mikrokontroller
Steg 1: Vad är en ADC?
En ADC, eller Analog to Digital Converter, tillåter en att konvertera en analog spänning till ett digitalt värde som kan användas av en mikrokontroller. Det finns många källor till analoga signaler som man kanske vill mäta. Det finns analoga sensorer som mäter temperatur, ljusintensitet, avstånd, position och kraft, för att bara nämna några.
Steg 2: Hur fungerar ADC i AVR-Microcontroller
AVR ADC tillåter AVR -mikrokontrollern att konvertera analoga spänningar till digitala värden med få eller inga externa delar. ATmega8 har en 10-bitars successiv approximation ADC. ATmega8 har 7 kanals ADC vid PortC. ADC: n har en separat analog matningsspänning, AVCC. AVCC får inte skilja sig mer än ± 0,3V från VCC. Spänningsreferensen kan kopplas externt från AREF -stiftet. AVCC används som spänningsreferens. ADC: n kan också ställas in för att köras kontinuerligt (frilöpningsläget) eller att endast göra en konvertering.
Steg 3: ADC -konverteringsformel
Där Vin är spänningen på den valda ingångsstiftet och Vref den valda spänningsreferensen
Steg 4: Hur konfigurerar jag ADC i ATmega8?
Följande register används för implementering av ADC i ATmega8
Val av ADC -multiplexer
Steg 5: ADLAR -urval
ADC vänsterjustera resultat ADLAR -biten påverkar presentationen av ADC -konverteringsresultatet i ADC -dataregistret. Skriv en till ADLAR till vänster justera resultatet. Annars är resultatet rättjusterat
När en ADC -konvertering är klar hittas resultatet i ADCH och ADCL När ADCL läses uppdateras inte ADC -dataregistret förrän ADCH läses. Följaktligen, om resultatet lämnas justerat och inte mer än 8-bitars precision krävs, är det tillräckligt att läsa ADCH. Annars måste ADCL läsas först, sedan ADCH. Analoga kanalvalsbitar Värdet på dessa bitar väljer vilka analoga ingångar som är anslutna till ADC.
Steg 6: Urval av ADCSRA
• Bit 7 - ADEN: ADC Aktivera Att skriva denna bit till en aktiverar ADC. Genom att skriva det till noll stängs ADC av
• Bit 6 - ADSC: ADC Start Conversion I Single Conversion mode, skriv denna bit till en för att starta varje konvertering. I Free Running -läge, skriv den här biten till en för att starta den första konverteringen.
• Bit 5 - ADFR: ADC Free Running Select När denna bit är inställd (en) fungerar ADC i Free Running -läge. I det här läget samlar och uppdaterar ADC dataregistren kontinuerligt. Om du rensar denna bit (noll) avslutas Free Running -läget.
• Bit 4 - ADIF: ADC Interrupt Flag Denna bit ställs in när en ADC -konvertering är klar och dataregistren uppdateras. ADC-konverteringens fullständiga avbrott körs om ADIE-biten och I-biten i SREG är inställda. ADIF rensas av hårdvara när motsvarande avbrottshanteringsvektor körs. Alternativt rensas ADIF genom att skriva en logisk till flaggan.
• Bit 3-ADIE: ADC Interrupt Enable När denna bit skrivs till en och I-bit i SREG är inställd, aktiveras ADC Conversion Complete Interrupt.
• Bit 2: 0 - ADPS2: 0: ADC Prescaler Välj bitar Enligt databladet måste denna prescalar ställas in så att ADC -ingångsfrekvensen ligger mellan 50 KHz och 200 KHz. ADC -klockan härleds från systemklockan med hjälp av ADPS2: 0 Dessa bitar bestämmer delningsfaktorn mellan XTAL -frekvensen och ingångsklockan till ADC.
Steg 7: Om du vill ta ADC -värde måste du ha lite arbete gjort som anges nedan
- Ställ in ADC -värde
- Konfigurera utgångs -LED -stift
- Konfigurera ADC -maskinvara
- Aktivera ADC
- Starta analoga till digitala omvandlingar
- WILE Forever
OM ADC -värde högre än inställt värde, Slå på LED ELSE Stäng av LED
Steg 8: Ange ADC -värde
Kod: uint8_t ADCValue = 128;
Steg 9: Konfigurera Output LED Pin
Kod: DDRB | = (1 << PB1);
Steg 10: Konfigurera ADC -maskinvara
Konfigurera ADC -maskinvara
Detta görs genom att ställa in bitar i kontrollregistren för ADC. Låt oss först ställa in prescalaren för ADC. Enligt databladet måste denna prescalar ställas in så att ADC -ingångsfrekvensen ligger mellan 50 KHz och 200 KHz. ADC -klockan härleds från systemklockan. Med en systemfrekvens på 1 MHz resulterar en förkalkylator på 8 i en ADC -frekvens på 125 kHz. Förskalningen ställs in av ADPS -bitarna i ADCSRA -registret. Enligt databladet måste alla tre ADPS2: 0 -bitarna vara inställda på 011 för att få 8 -förkalkningsapparaten.
Kod: ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
Låt oss sedan ställa in ADC -referensspänningen. Detta styrs av REFS -bitarna i ADMUX -registret. Följande anger referensspänningen till AVCC.
Kod: ADMUX | = (1 << REFS0);
För att ställa in kanalen som passerar genom multiplexorn till ADC måste MUX -bitarna i ADMUX -registret ställas in i enlighet därmed. Eftersom vi använder ADC5 här
Kod: ADMUX & = 0xF0; ADMUX | = 5;
För att sätta ADC: n i frikörningsläge, ställ in den lämpliga ADFR-biten i ADCSRA-registret:
Kod: ADCSRA | = (1 << ADFR);
En sista inställningsändring kommer att göras för att göra läsning av ADC -värdet enklare. Även om ADC har en upplösning på 10 bitar, är denna mycket information ofta inte nödvändig. Detta 10 bitars värde är uppdelat på två 8 bitars register, ADCH och ADCL. Som standard finns de lägsta 8 bitarna av ADC -värdet i ADCL, där de två översta är de två lägsta bitarna i ADCH. Genom att ställa in ADLAR -biten i ADMUX -registret kan vi vänsterjustera ADC -värdet. Detta sätter de högsta 8 bitarna av mätningen i ADCH -registret, med resten i ADCL -registret. Om vi sedan läser ADCH -registret får vi ett 8 bitars värde som representerar vår 0 till 5 volt mätning som ett tal från 0 till 255. Vi gör i princip vår 10 bitars ADC -mätning till en 8 bitars. Här är koden för att ställa in ADLAR -biten:
Koda:
ADMUX | = (1 << ADLAR); Det slutför installationen av ADC -hårdvaran för detta exempel. Ytterligare två bitar måste ställas in innan ADC: n börjar ta mätningar.
Steg 11: Aktivera ADC
För att aktivera ADC, ställ in ADEN -biten i ADCSRA:
Kod: ADCSRA | = (1 << ADEN);
Steg 12: Starta analog till digital konvertering
För att starta ADC -mätningarna måste ADSC -biten i ADCSRA ställas in:
Kod: ADCSRA | = (1 << ADSC);
Vid denna tidpunkt skulle ADC börja kontinuerligt sampla spänningen som presenteras på ADC5. Koden till denna punkt skulle se ut så här:
Steg 13: WILE Forever
Det enda som återstår att göra är att testa ADC -värdet och ställa in lysdioderna för att visa en hög / låg indikation. Eftersom ADC -avläsningen i ADCH har ett maximivärde på 255 valdes ett testvärde på th för att avgöra om spänningen var hög eller låg. Ett enkelt IF/ELSE -uttalande i FOR -slingorna gör att vi kan slå på rätt LED:
Koda
om (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // Slå på LED
}
annan
{
PORTB & = ~ (1 << PB0); // Stäng av lysdioden
}
Steg 14: I slutet Komplett kod är
Koda:
#omfatta
int main (void)
{
uint8_t ADCValue = 128;
DDRB | = (1 << PB0); // Ställ in LED1 som utgång
ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // Ställ in ADC prescalar på 8 - // 125KHz samplingsfrekvens 1MHz
ADMUX | = (1 << REFS0); // Ställ in ADC -referens till AVCC
ADMUX | = (1 << ADLAR); // Vänsterjustera ADC -resultat för att möjliggöra enkel 8 -bitars avläsning
ADMUX & = 0xF0;
ADMUX | = 5; // MUX -värden måste ändras för att använda ADC0
ADCSRA | = (1 << ADFR); // Ställ in ADC på Free-Running Mode
ADCSRA | = (1 << ADEN); // Aktivera ADC
ADCSRA | = (1 << ADSC); // Starta A2D -konverteringar medan (1) // Loop Forever
{
om (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // Slå på LED1
}
annan
{
PORTE & = ~ (1 << PB1); // Stäng av LED1
}
}
returnera 0;
}
Publicera först denna handledning Klicka här
Rekommenderad:
Covid -hjälm del 1: ett introduktion till Tinkercad -kretsar !: 20 steg (med bilder)
Covid -hjälm del 1: ett introduktion till Tinkercad -kretsar !: Hej, vän! I den här tvådelade serien lär vi oss hur du använder Tinkercads kretsar - ett roligt, kraftfullt och lärorikt verktyg för att lära dig hur kretsar fungerar! Ett av de bästa sätten att lära sig är att göra. Så vi ska först designa vårt eget projekt:
Introduktion till IR -kretsar: 8 steg (med bilder)
Introduktion till IR -kretsar: IR är en komplex teknik men ändå mycket enkel att arbeta med. Till skillnad från lysdioder eller LASER kan infraröd inte ses med det mänskliga ögat. I denna instruktionsbok kommer jag att demonstrera användningen av infraröd genom 3 olika kretsar. Kretsarna kommer inte att vara
Introduktion till Arduino: 18 steg
Introduktion till Arduino: Har du någonsin undrat över att göra dina egna enheter som väderstation, bilens instrumentbräda för övervakning av bränsle, hastighet och platsspårning eller att styra dina hushållsapparater som styrs av smartphones eller har du någonsin undrat om att göra sofistikerade r
En introduktion till GarageBand: 9 steg
En introduktion till GarageBand: GarageBand är en plattform där du kan göra musik. Du kan göra i stort sett vad som helst på denna plattform, oavsett om det är att skapa din drömmusik eller att replikera ett musikstycke du gillar. Men det är inte lätt i alla fall. Det är därför jag är här
Introduktion till CloudX Microcontroller: 3 steg
Introduktion till CloudX Microcontroller: CloudX microcontroller är en hårdvara med mjukvara och mjukvara för en dator med öppna källor som låter dig skapa dina egna interaktiva projekt. CloudX är ett litet kretskort som tillåter användare att berätta vad de ska göra innan de vidtar några åtgärder, det accepterar olika funktioner