Sadržaj:
- Korak 1: Šta je ADC?
- Korak 2: Kako funkcionira ADC u AVR-mikrokontroleru
- Korak 3: ADC konverzijska formula
- 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 je
Video: Uvod u ADC u AVR mikrokontroleru - za početnike: 14 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:08
U ovom vodiču ćete znati sve o ADC -u u mikrokontroleru avr
Korak 1: Šta 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 neko ž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ćava AVR mikrokontroleru pretvaranje analognih napona u digitalne vrijednosti sa 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 kontinuirano (način rada u slobodnom hodu) ili da izvrši samo jednu konverziju.
Korak 3: ADC konverzijska formula
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
Izbor ADC multipleksera
Korak 5: ADLAR odabir
Rezultat prilagodbe lijevog ADC -a ADLAR bit utječe na prikaz rezultata konverzije ADC -a u ADC registru podataka. Napišite jedan u ADLAR kako biste lijevo prilagodili rezultat. U suprotnom, rezultat je ispravno podešen
Kad je konverzija ADC -a završena, rezultat se nalazi u ADCH -u i ADCL -u. Kada 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. U suprotnom, 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: ADC Enable Opisivanje ovog bita u jedan omogućava ADC. Ako ga upišete 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 konverzije. U načinu rada Slobodno trčanje upišite ovaj bit u jedan za početak prve konverzije.
• Bit 5 - ADFR: ADC izbor slobodnog trčanja Odabir Kad 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. Brisanje ovog bita (nula) će prekinuti 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 izvodi se ako su postavljeni ADIE bit i I-bit u SREG-u. ADIF se briše hardverom prilikom izvršavanja odgovarajućeg vektora rukovanja prekidom. Alternativno, ADIF se briše upisivanjem logičkog u zastavicu.
• Bit 3-ADIE: Omogući ADC prekid Kada je ovaj bit upisan u jedan i postavljen je I-bit u SREG-u, aktivira se prekid kompletnog pretvaranja ADC-a.
• Bitovi 2: 0 - ADPS2: 0: Odabir bitova za pretkaler ADC -a Prema podatkovnom listu, ovaj preskalar treba postaviti tako da je ulazna frekvencija ADC -a između 50 KHz i 200 KHz. ADC sat izveden je iz sistemskog takta 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ći ADC
- Pokrenite analogno -digitalnu konverziju
- DOK ZAUVEK
AKO je vrijednost ADC -a veća od zadane vrijednosti, uključite LED ELSE Isključite LED
Korak 8: Postavite vrijednost ADC -a
Kod: 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 kontrolne registre za ADC. Prvo, postavimo predskalar za ADC. Prema tablici s podacima, ovaj preskalar treba postaviti tako da ulazna frekvencija ADC -a bude između 50 KHz i 200 KHz. ADC sat izveden je iz sistemskog takta. Sa sistemskom frekvencijom od 1MHz, predskaler od 8 rezultirat će ADC frekvencijom od 125 Khz. Predkaliriranje se postavlja pomoću ADPS bitova u registru ADCSRA. Prema tablici s podacima, 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 je postavljen referentni napon na AVCC.
Šifra: ADMUX | = (1 << REFS0);
Da biste kanal koji je prošao kroz multiplekser postavili 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;
Da biste ADC prebacili u slobodni način rada, postavite odgovarajući naziv ADFR bita 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 je podijeljena 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 ADLAR bita u ADMUX registar možemo lijevo poravnati ADC vrijednost. Ovo stavlja najvećih 8 bita 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:
Šifra:
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 bi započeo kontinuirano uzorkovanje napona prikazanog na ADC5. Kod do ove tačke bi izgledao ovako:
Korak 13: DOK ZAUvijek
Jedino što treba učiniti je provjeriti vrijednost ADC -a i postaviti LED diode da prikazuju indikaciju visoke / niske. 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. Jednostavan IF/ELSE izraz u FOR petljama omogućit će nam da uključimo ispravnu LED diodu:
Kod
if (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // Uključite LED
}
else
{
PORTB & = ~ (1 << PB0); // Isključivanje LED diode
}
Korak 14: Na kraju kompletna šifra je
Šifra:
#include
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 brzina uzorkovanja 1MHz
ADMUX | = (1 << REFS0); // Postavite ADC referencu na AVCC
ADMUX | = (1 << ADLAR); // Lijevo podesite rezultat ADC -a kako biste omogućili lako čitanje 8 bita
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čite LED1
}
else
{
PORTE & = ~ (1 << PB1); // Isključivanje LED1
}
}
return 0;
}
Prvo objavite ovaj vodič Kliknite ovdje
Preporučuje se:
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 kola u 7 različitih koraka, kao što su 1) test kontinuiteta za otklanjanje problema u hardveru 2) Mjerenje istosmjerne struje 3) Testiranje diode i LED diode 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 zadnji 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 mojoj zadnjoj VBScript instrukciji, proučio sam kako napraviti skriptu za isključivanje vašeg interneta radi igranja Xbox360. Danas imam drugačiji problem. Moj računar se isključio nasumično i želim se prijaviti svaki put kada se računar