Obsah:
- Krok 1: Co je to ADC?
- Krok 2: Jak funguje ADC v mikrokontroléru AVR
- Krok 3: Převodní vzorec ADC
- Krok 4: Jak konfigurovat ADC v ATmega8?
- Krok 5: Výběr ADLAR
- Krok 6: Výběr ADCSRA
- Krok 7: Pokud chcete získat hodnotu ADC, budete potřebovat nějakou práci, která je uvedena níže
- Krok 8: Nastavte hodnotu ADC
- Krok 9: Konfigurace výstupu LED dioda
- Krok 10: Konfigurace hardwaru ADC
- Krok 11: Povolte ADC
- Krok 12: Spusťte analogově digitální převod
- Krok 13: KDYŽ navždy
- Krok 14: Na konci je kompletní kód
Video: Úvod do ADC v mikrokontroléru AVR - pro začátečníky: 14 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:22
V tomto tutoriálu se dozvíte vše o ADC v mikrokontroléru AVR
Krok 1: Co je to ADC?
Převodník ADC nebo analogový digitální převodník umožňuje převést analogové napětí na digitální hodnotu, kterou může použít mikrokontrolér. Existuje mnoho zdrojů analogových signálů, které by člověk rád měřil. K dispozici jsou analogové senzory, které měří teplotu, intenzitu světla, vzdálenost, polohu a sílu, abychom jmenovali alespoň některé.
Krok 2: Jak funguje ADC v mikrokontroléru AVR
AVR ADC umožňuje mikrokontroléru AVR převádět analogová napětí na digitální hodnoty s několika až žádnými externími částmi. ATmega8 je vybaven 10bitovým postupným přibližováním ADC. ATmega8 má 7kanálový ADC na PortC. ADC má samostatný analogový napájecí napájecí kolík AVCC. AVCC se nesmí lišit o více než ± 0,3 V od VCC. Napěťová reference může být externě odpojena na pinu AREF. Jako referenční napětí se používá AVCC. ADC lze také nastavit tak, aby běžel nepřetržitě (režim s volným provozem) nebo aby prováděl pouze jednu konverzi.
Krok 3: Převodní vzorec ADC
Kde Vin je napětí na vybraném vstupním pinu a Vref zvolené referenční napětí
Krok 4: Jak konfigurovat ADC v ATmega8?
K implementaci ADC v ATmega8 se používají následující registry
Výběr multiplexeru ADC
Krok 5: Výběr ADLAR
Výsledek úpravy levého ADC Bit ADLAR ovlivňuje prezentaci výsledku převodu ADC v datovém registru ADC. Napište jeden do ADLAR a upravte výsledek vlevo. Jinak je výsledek upraven správně
Po dokončení převodu ADC je výsledek nalezen v ADCH a ADCL Při čtení ADCL není registr dat ADC aktualizován, dokud není načten ADCH. V důsledku toho, pokud je výsledek ponechán upravený a není požadována více než 8bitová přesnost, stačí přečíst ADCH. Jinak je nutné nejprve přečíst ADCL, pak ADCH. Bity pro výběr analogového kanálu Hodnota těchto bitů určuje, které analogové vstupy jsou připojeny k ADC.
Krok 6: Výběr ADCSRA
• Bit 7 - ADEN: Povolení ADC Zapisováním tohoto bitu do jednoho povolíte ADC. Zapisováním na nulu se ADC vypne
• Bit 6 - ADSC: Zahájení převodu ADC V režimu jednoduché převodu zapište tento bit do jednoho, abyste zahájili každou konverzi. V režimu Free Running zapište tento bit do jednoho, abyste zahájili první převod.
• Bit 5 - ADFR: Volný běh ADC Vyberte Pokud je tento bit nastaven (jeden), ADC pracuje v režimu volného provozu. V tomto režimu ADC průběžně vzorkuje a aktualizuje datové registry. Vymazáním tohoto bitu (nula) ukončíte režim Free Running.
• Bit 4 - ADIF: Příznak přerušení ADC Tento bit je nastaven po dokončení převodu ADC a aktualizaci datových registrů. ADC Conversion Complete Interrupt se provede, pokud je nastaven bit ADIE a I-bit v SREG. ADIF je vymazán hardwarem při provádění příslušného vektoru zpracování přerušení. Alternativně je ADIF vymazán zapsáním logické jedničky do vlajky.
• Bit 3-ADIE: Povolit přerušení ADC Je-li tento bit zapsán do jedničky a je nastaven I-bit v SREG, aktivuje se přerušení ADC Conversion Complete.
• Bits 2: 0 - ADPS2: 0: ADC Prescaler Select Bits Podle datasheetu je třeba tento prescalar nastavit tak, aby vstupní frekvence ADC byla mezi 50 KHz a 200 KHz. Hodiny ADC jsou odvozeny od systémových hodin pomocí ADPS2: 0 Tyto bity určují dělící faktor mezi frekvencí XTAL a vstupními hodinami do ADC.
Krok 7: Pokud chcete získat hodnotu ADC, budete potřebovat nějakou práci, která je uvedena níže
- Nastavte hodnotu ADC
- Konfigurace výstupního LED pinu
- Konfigurujte hardware ADC
- Povolit ADC
- Spusťte analogově digitální převod
- KDYŽ navždy
IF ADC Value Higher then Set value, Turn on LED ELSE Turn Off LED
Krok 8: Nastavte hodnotu ADC
Kód: uint8_t ADCValue = 128;
Krok 9: Konfigurace výstupu LED dioda
Kód: DDRB | = (1 << PB1);
Krok 10: Konfigurace hardwaru ADC
Konfigurujte hardware ADC
To se provádí nastavením bitů v řídicích registrech pro ADC. Nejprve nastavíme prescalar pro ADC. Podle datasheetu je třeba tento prescalar nastavit tak, aby byla vstupní frekvence ADC mezi 50 KHz a 200 KHz. Hodiny ADC jsou odvozeny od systémových hodin. Při systémové frekvenci 1MHz bude mít předzesilovač 8 za následek frekvenci ADC 125 Khz. Přednastavení je nastaveno pomocí bitů ADPS v registru ADCSRA. Podle datového listu musí být všechny tři bity ADPS2: 0 nastaveny na 011, aby se získal 8 předzesilovač.
Kód: ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
Dále nastavíme referenční napětí ADC. Toto je řízeno bity REFS v registru ADMUX. Následující nastavuje referenční napětí na AVCC.
Kód: ADMUX | = (1 << REFS0);
Chcete -li nastavit kanál procházející multiplexorem do ADC, je třeba odpovídajícím způsobem nastavit bity MUX v registru ADMUX. Protože zde používáme ADC5
Kód: ADMUX & = 0xF0; ADMUX | = 5;
Chcete-li přepnout ADC do volného provozu, nastavte vhodně pojmenovaný bit ADFR v registru ADCSRA:
Kód: ADCSRA | = (1 << ADFR);
Provede se poslední změna nastavení, aby bylo čtení hodnoty ADC jednodušší. Ačkoli ADC má rozlišení 10 bitů, tolik informací často není nutné. Tato 10bitová hodnota je rozdělena do dvou 8bitových registrů, ADCH a ADCL. Ve výchozím nastavení se v ADCL nachází nejnižší 8 bitů hodnoty ADC, přičemž horní dva jsou nejnižší dva bity ADCH. Nastavením bitu ADLAR v registru ADMUX můžeme zarovnat hodnotu ADC doleva. Tím se do registru ADCH vloží nejvyšších 8 bitů měření, zbytek do registru ADCL. Pokud potom přečteme registr ADCH, dostaneme 8bitovou hodnotu, která představuje naše měření 0 až 5 voltů jako číslo od 0 do 255. V zásadě měníme naše 10bitové měření ADC na 8bitové. Zde je kód pro nastavení bitu ADLAR:
Kód:
ADMUX | = (1 << ADLAR); Tím je v tomto případě dokončeno nastavení hardwaru ADC. Než začne ADC provádět měření, je třeba nastavit další dva bity.
Krok 11: Povolte ADC
Chcete -li povolit ADC, nastavte bit ADEN v ADCSRA:
Kód: ADCSRA | = (1 << ADEN);
Krok 12: Spusťte analogově digitální převod
Chcete -li zahájit měření ADC, je třeba v ADCSRA nastavit bit ADSC:
Kód: ADCSRA | = (1 << ADSC);
V tomto okamžiku by ADC začal nepřetržitě vzorkovat napětí uvedené na ADC5. Kód k tomuto bodu by vypadal takto:
Krok 13: KDYŽ navždy
Jediné, co musíte udělat, je otestovat hodnotu ADC a nastavit diody LED tak, aby zobrazovaly indikaci vysoké / nízké hodnoty. Protože čtení ADC v ADCH má maximální hodnotu 255, byla vybrána testovací hodnota th, aby se určilo, zda bylo napětí vysoké nebo nízké. Jednoduchý příkaz IF/ELSE ve smyčkách FOR nám umožní rozsvítit správnou LED:
Kód
if (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // Zapněte LED
}
jiný
{
PORTB & = ~ (1 << PB0); // Vypněte LED
}
Krok 14: Na konci je kompletní kód
Kód:
#zahrnout
int main (neplatné)
{
uint8_t ADCValue = 128;
DDRB | = (1 << PB0); // Nastavit LED1 jako výstup
ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // Nastavte ADC prescalar na 8 - // 125KHz vzorkovací frekvence 1MHz
ADMUX | = (1 << REFS0); // Nastavit odkaz ADC na AVCC
ADMUX | = (1 << ADLAR); // Nastavení ADC doleva umožňuje snadné čtení 8 bitů
ADMUX & = 0xF0;
ADMUX | = 5; // Aby bylo možné použít ADC0, bylo třeba změnit hodnoty MUX
ADCSRA | = (1 << ADFR); // Nastavte ADC na Free-Running Mode
ADCSRA | = (1 << ADEN); // Povolit ADC
ADCSRA | = (1 << ADSC); // Zahajte A2D převody, zatímco (1) // Loop Forever
{
if (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // Zapněte LED1
}
jiný
{
PORTE & = ~ (1 << PB1); // Vypněte LED1
}
}
návrat 0;
}
Nejprve publikovat tento návod Klikněte sem
Doporučuje:
Digitální hodiny, ale bez mikrokontroléru [hardcore elektronika]: 13 kroků (s obrázky)
Digitální hodiny, ale bez mikrokontroléru [Hardcore Electronics]: Stavět obvody s mikrokontrolérem je docela snadné, ale úplně zapomínáme na spoustu práce, kterou musel mikrokontrolér vykonat, aby dokončil jednoduchý úkol (i když bliká LED). Jak těžké by bylo vytvořit kompletní digitální hodiny
Krokový motorem řízený krokový motor bez mikrokontroléru!: 6 kroků
Krokový motorem řízený krokový motor bez mikrokontroléru !: V tomto rychlém návodu vyrobíme jednoduchý ovladač krokového motoru pomocí krokového motoru. Tento projekt nevyžaduje žádné složité obvody ani mikrokontrolér. Takže bez dalších okolků začneme
Krokový motorem řízený krokový motor bez mikrokontroléru (V2): 9 kroků (s obrázky)
Krokový motorem řízený krokový motor bez mikrokontroléru (V2): V jednom z mých předchozích Instructables jsem vám ukázal, jak ovládat krokový motor pomocí krokového motoru bez mikrokontroléru. Byl to rychlý a zábavný projekt, ale přišel se dvěma problémy, které budou v tomto Instructable vyřešeny. Takže vtip
Úvod do mikrokontroléru CloudX: 3 kroky
Úvod k mikrokontroléru CloudX: Mikrokontrolér CloudX je hardwarový a softwarový počítač s otevřeným zdrojovým kódem, který vám umožňuje vytvářet vlastní interaktivní projekty. CloudX je malá čipová deska, která umožňuje uživatelům říci, co má dělat, než podnikne jakoukoli akci, přijímá různé k
Konfigurace pojistkových bitů mikrokontroléru AVR. Vytvoření a nahrání programu Flash LED do flash paměti mikrokontroléru: 5 kroků
Konfigurace pojistkových bitů mikrokontroléru AVR. Vytvoření a nahrání do flash paměti mikrokontroléru programu LED blikání: V tomto případě vytvoříme jednoduchý program v kódu C a vypálíme ho do paměti mikrokontroléru. Napíšeme vlastní program a zkompilováme hexadecimální soubor pomocí Atmel Studio jako integrované vývojové platformy. Konfigurujeme pojistku bi