Sadržaj:
- Korak 1: Što je ADC?
- Korak 2: Kako funkcionira ADC u AVR-mikrokontroleru
- Korak 3: Formula konverzije ADC -a
- Korak 4: Kako konfigurirati ADC u ATmega8?
- Korak 5: ADLAR odabir
- Korak 6: Odabir ADCSRA -e
- Korak 7: Ako želite uzeti ADC vrijednost, morate obaviti neki posao koji je dolje naveden
- Korak 8: Postavite vrijednost ADC -a
- Korak 9: Konfigurirajte izlazni LED pin
- Korak 10: Konfigurirajte ADC hardver
- Korak 11: Omogućite ADC
- Korak 12: Pokrenite analogno -digitalnu konverziju
- Korak 13: DOK ZAUvijek
- Korak 14: Na kraju kompletna šifra jest
Video: Uvod u ADC u mikrokontroleru AVR - za početnike: 14 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:36
U ovom vodiču ćete znati sve o ADC -u u mikrokontroleru AVR
Korak 1: Što je ADC?
ADC ili analogno -digitalni pretvarač omogućuje pretvaranje analognog napona u digitalnu vrijednost koju može koristiti mikrokontroler. Postoji mnogo izvora analognih signala koje bi netko želio izmjeriti. Dostupni su analogni senzori koji mjere temperaturu, intenzitet svjetla, udaljenost, položaj i silu, da spomenemo samo neke.
Korak 2: Kako funkcionira ADC u AVR-mikrokontroleru
AVR ADC omogućuje AVR mikrokontroleru pretvaranje analognih napona u digitalne vrijednosti s malo vanjskih dijelova ili bez njih. ATmega8 ima 10-bitni uzastopni aproksimacijski ADC. ATmega8 ima 7-kanalni ADC na PortC-u. ADC ima zasebni analogni pin naponskog napona, AVCC. AVCC se ne smije razlikovati više od ± 0,3 V od VCC -a. Referentni napon može biti vanjski odvojen na AREF pinu. Kao referentni napon koristi se AVCC. ADC se također može postaviti da radi neprekidno (način rada slobodnog rada) ili da izvrši samo jednu pretvorbu.
Korak 3: Formula konverzije ADC -a
Gdje je Vin napon na odabranom ulaznom pinu, a Vref odabrana referentna vrijednost napona
Korak 4: Kako konfigurirati ADC u ATmega8?
Za implementaciju ADC -a u ATmega8 koriste se sljedeći registri
Odabir ADC multipleksera
Korak 5: ADLAR odabir
Rezultat prilagodbe lijevog ADC -a Bit ADLAR utječe na prikaz rezultata konverzije ADC -a u ADC podatkovnom registru. Napišite jedan u ADLAR kako biste lijevo prilagodili rezultat. U suprotnom, rezultat je ispravno podešen
Kad je konverzija ADC -a dovršena, rezultat se nalazi u ADCH -u i ADCL -u. Kad se čita ADCL, ADC registar podataka se ne ažurira sve dok se ne pročita ADCH. Slijedom toga, ako je rezultat lijevo podešen i nije potrebna više od 8-bitne preciznosti, dovoljno je pročitati ADCH. Inače, prvo se mora pročitati ADCL, a zatim ADCH. Bitovi za odabir analognih kanala Vrijednost ovih bitova odabire koji su analogni ulazi spojeni na ADC.
Korak 6: Odabir ADCSRA -e
• Bit 7 - ADEN: Omogući ADC Zapisivanje ovog bita u jedan omogućuje ADC. Zapisujući ga na nulu, ADC se isključuje
• Bit 6 - ADSC: ADC Start Conversion U načinu Single Conversion, upišite ovaj bit u jedan za početak svake pretvorbe. U načinu rada Slobodno trčanje upišite ovaj bit u jedan za početak prve pretvorbe.
• Bit 5 - ADFR: Odabir slobodnog trčanja ADC -a Kada je postavljen ovaj bit (jedan), ADC radi u načinu rada slobodnog trčanja. U ovom načinu rada ADC kontinuirano uzorkuje i ažurira registre podataka. Brisanjem ovog bita (nula) prekinuti će se način rada Free Running.
• Bit 4 - ADIF: Zastavica prekida ADC -a Ovaj bit se postavlja kada se završi konverzija ADC -a i ažuriraju registri podataka. Prekid potpunog pretvaranja ADC-a izvršava se ako su postavljeni bit ADIE i I-bit u SREG-u. ADIF se briše hardverom prilikom izvođenja odgovarajućeg vektora rukovanja prekidom. Alternativno, ADIF se briše upisivanjem logičkog u zastavicu.
• Bit 3-ADIE: Omogućivanje prekida ADC-a Kada je ovaj bit upisan u jedan i postavljen je I-bit u SREG-u, aktivira se prekid dovršenog pretvaranja ADC-a.
• Bitovi 2: 0 - ADPS2: 0: Odabir bitova pretkaler ADC -a Prema podatkovnom listu, ovaj predskalar treba postaviti tako da ulazna frekvencija ADC -a bude između 50 KHz i 200 KHz. ADC sat izveden je iz takta sustava uz pomoć ADPS2: 0 Ovi bitovi određuju faktor podjele između XTAL frekvencije i ulaznog takta ADC -a.
Korak 7: Ako želite uzeti ADC vrijednost, morate obaviti neki posao koji je dolje naveden
- Postavite vrijednost ADC -a
- Konfigurirajte izlazni LED pin
- Konfigurirajte ADC hardver
- Omogućite ADC
- Pokrenite analogno -digitalnu konverziju
- DOK ZAUVIJEK
AKO je vrijednost ADC -a veća od zadane vrijednosti, uključite LED ELSE Isključite LED
Korak 8: Postavite vrijednost ADC -a
Kôd: uint8_t ADCValue = 128;
Korak 9: Konfigurirajte izlazni LED pin
Šifra: DDRB | = (1 << PB1);
Korak 10: Konfigurirajte ADC hardver
Konfigurirajte ADC hardver
To se postiže postavljanjem bitova u upravljačke registre za ADC. Prvo, postavimo preskalar za ADC. Prema podatkovnom listu, ovaj preskalar treba postaviti tako da ulazna frekvencija ADC -a bude između 50 KHz i 200 KHz. ADC sat izveden je iz takta sustava. Sa frekvencijom sustava od 1MHz, predskaler od 8 rezultirat će ADC frekvencijom od 125 Khz. Predmjer se postavlja ADPS bitovima u registru ADCSRA. Prema podatkovnom listu, sva tri bita ADPS2: 0 moraju biti postavljena na 011 da bi se dobio 8 predkalera.
Šifra: ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
Zatim postavimo referentni napon ADC -a. To se kontrolira REFS bitovima u ADMUX registru. U nastavku se referentni napon postavlja na AVCC.
Šifra: ADMUX | = (1 << REFS0);
Za postavljanje kanala koji prolazi kroz multiplekser na ADC, MUX bitovi u ADMUX registru moraju biti postavljeni na odgovarajući način. Budući da ovdje koristimo ADC5
Šifra: ADMUX & = 0xF0; ADMUX | = 5;
Kako biste ADC prebacili u slobodni način rada, postavite ADFR bit prikladnog naziva u ADCSRA registar:
Šifra: ADCSRA | = (1 << ADFR);
Učinit će se posljednja promjena postavki kako bi se čitanje vrijednosti ADC -a učinilo jednostavnijim. Iako ADC ima rezoluciju od 10 bita, toliko informacija često nije potrebno. Ova 10 -bitna vrijednost podijeljena je na dva 8 -bitna registra, ADCH i ADCL. Prema zadanim postavkama, najnižih 8 bitova ADC vrijednosti nalazi se u ADCL -u, a gornja dva su dva najniža bita ADCH -a. Postavljanjem bita ADLAR u ADMUX registar možemo lijevo poravnati vrijednost ADC -a. Ovo stavlja najvećih 8 bitova mjerenja u ADCH registar, a ostatak u ADCL registar. Ako tada pročitamo ADCH registar, dobit ćemo 8 -bitnu vrijednost koja predstavlja naše mjerenje od 0 do 5 volti kao broj od 0 do 255. U osnovi pretvaramo naše 10 -bitno ADC mjerenje u 8 -bitno. Evo koda za postavljanje ADLAR bita:
Kodirati:
ADMUX | = (1 << ADLAR); Time je dovršeno postavljanje ADC hardvera za ovaj primjer. Potrebno je postaviti još dva bita prije nego što ADC počne mjeriti.
Korak 11: Omogućite ADC
Da biste omogućili ADC, postavite ADEN bit u ADCSRA:
Šifra: ADCSRA | = (1 << ADEN);
Korak 12: Pokrenite analogno -digitalnu konverziju
Za pokretanje ADC mjerenja potrebno je postaviti ADSC bit u ADCSRA -i:
Šifra: ADCSRA | = (1 << ADSC);
U ovom trenutku, ADC će početi kontinuirano uzorkovati napon prikazan na ADC5. Kod do ove točke izgledao bi ovako:
Korak 13: DOK ZAUvijek
Jedino što treba učiniti je provjeriti vrijednost ADC -a i postaviti LED diode na prikaz visoke / niske indikacije. Budući da očitanje ADC -a u ADCH -u ima maksimalnu vrijednost 255, odabrana je testna vrijednost th kako bi se utvrdilo je li napon visok ili nizak. Jednostavna naredba IF/ELSE u FOR petljama omogućit će nam uključivanje ispravne LED diode:
Kodirati
if (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // Uključivanje LED diode
}
drugo
{
PORTB & = ~ (1 << PB0); // Isključivanje LED diode
}
Korak 14: Na kraju kompletna šifra jest
Kodirati:
#uključi
int main (void)
{
uint8_t ADCValue = 128;
DDRB | = (1 << PB0); // Postavite LED1 kao izlaz
ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // Postavite ADC prescalar na 8 - // 125KHz brzinu uzorkovanja 1MHz
ADMUX | = (1 << REFS0); // Postavite ADC referencu na AVCC
ADMUX | = (1 << ADLAR); // Lijevo podesite rezultat ADC -a kako biste omogućili jednostavno 8 -bitno čitanje
ADMUX & = 0xF0;
ADMUX | = 5; // MUX vrijednosti je potrebno promijeniti za korištenje ADC0
ADCSRA | = (1 << ADFR); // Postavite ADC na Free-Running Mode
ADCSRA | = (1 << ADEN); // Omogući ADC
ADCSRA | = (1 << ADSC); // Pokretanje A2D konverzija dok (1) // Zauvijek petlja
{
if (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // Uključivanje LED1
}
drugo
{
PORTE & = ~ (1 << PB1); // Isključivanje LED1
}
}
return 0;
}
Prvo objavite ovaj vodič Kliknite ovdje
Preporučeni:
Uvod u Visuino - Visuino za početnike .: 6 koraka
Uvod u Visuino | Visuino za početnike .: U ovom članku želim govoriti o Visuinu, koji je još jedan softver za grafičko programiranje za Arduino i slične mikrokontrolere. Ako ste elektronički hobist koji želi ući u svijet Arduina, ali nemate prethodno znanje programiranja
Kako koristiti multimetar na tamilskom jeziku - Vodič za početnike - Multimetar za početnike: 8 koraka
Kako koristiti multimetar na tamilskom jeziku | Vodič za početnike | Multimetar za početnike: Pozdrav prijatelji, U ovom vodiču objasnio sam kako koristiti multimetar u svim vrstama elektroničkih sklopova u 7 različitih koraka, kao što su 1) test kontinuiteta za otkrivanje problema u hardveru 2) Mjerenje istosmjerne struje 3) Testiranje diode i LED -a 4) Mjerenje Resi
Uvod u napon, struju, otpor i snagu objašnjen za početnike: 3 koraka
Uvod u napon, struju, otpor i snagu objašnjen za početnike: Ovaj video je povezan s osnovnim pojmovima elektronike, i lako razumljiv, pokušat ću to lako objasniti konceptom analogije vode, pa pomaže u razumijevanju teorije testa, pa pogledajte ovaj video za jasniji koncept struje, napona
Uvod u VB Script: vodič za početnike: 11 koraka
Uvod u VB Script: Vodič za početnike: *** ((((Upozorenje: Iako postoji mnogo koraka. Ovo je zapravo prilično jednostavno. Za početnike samo detaljno objašnjavam. Ako samo želite da kôd skoči na posljednji korak i tamo ćete pronaći cijeli kôd.)))) *** Puno igram Xbox
Uvod u VB Script: vodič za početnike: 2. dio: Rad s datotekama: 13 koraka
Uvod u VB Script: Vodič za početnike: 2. dio: Rad s datotekama: U zadnjoj uputi za VBScript, proučio sam kako napraviti skriptu za isključivanje vašeg interneta radi igranja Xbox360. Danas imam drugačiji problem. Moje se računalo nasumično gasilo i želim se prijaviti svaki put kad se računalo