Obsah:
- Krok 1: Čo je to ADC?
- Krok 2: Ako funguje ADC v mikrokontroléri AVR
- Krok 3: Konverzný vzorec ADC
- Krok 4: Ako nakonfigurovať ADC v ATmega8?
- Krok 5: Výber ADLAR
- Krok 6: Výber ADCSRA
- Krok 7: Ak chcete získať hodnotu ADC, budete potrebovať prácu, ktorá je uvedená nižšie
- Krok 8: Nastavte hodnotu ADC
- Krok 9: Konfigurujte pin LED výstupu
- Krok 10: Konfigurujte hardvér ADC
- Krok 11: Povoľte ADC
- Krok 12: Spustite analógovo -digitálne konverzie
- Krok 13: KEDY NAVŽDY
- Krok 14: Na konci je kompletný kód
Video: Úvod do ADC v mikrokontroléri AVR - pre začiatočníkov: 14 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:59
V tomto návode sa dozviete všetko o ADC v mikrokontroléri AVR
Krok 1: Čo je to ADC?
ADC alebo analógovo -digitálny prevodník umožňuje prevod analógového napätia na digitálnu hodnotu, ktorú môže použiť mikrokontrolér. Existuje mnoho zdrojov analógových signálov, ktoré by sa dali merať. K dispozícii sú iba analógové snímače, ktoré merajú teplotu, intenzitu svetla, vzdialenosť, polohu a silu.
Krok 2: Ako funguje ADC v mikrokontroléri AVR
AVR ADC umožňuje mikrokontroléru AVR prevádzať analógové napätie na digitálne hodnoty s niekoľkými až žiadnymi externými časťami. ATmega8 má 10-bitový ADC s postupnou aproximáciou. ATmega8 má 7-kanálový ADC v PortC. ADC má samostatný analógový kolík napájacieho napätia AVCC. AVCC sa nesmie líšiť od VCC o viac ako ± 0,3 V. Referencia napätia môže byť externe oddelená na kolíku AREF. Ako referenčná hodnota napätia sa používa AVCC. ADC je možné tiež nastaviť tak, aby bežal nepretržite (voľne spustený režim) alebo aby vykonával iba jednu konverziu.
Krok 3: Konverzný vzorec ADC
Kde Vin je napätie na zvolenom vstupnom pine a Vref zvolená referenčná hodnota napätia
Krok 4: Ako nakonfigurovať ADC v ATmega8?
Nasledujúce registre sa používajú na implementáciu ADC v ATmega8
Výber multiplexora ADC
Krok 5: Výber ADLAR
Výsledok nastavenia doľava ADC Bit ADLAR ovplyvňuje prezentáciu výsledku prevodu ADC v registri údajov ADC. Napíšte jeden do ADLARU a upravte výsledok vľavo. V opačnom prípade je výsledok upravený správne
Keď je konverzia ADC dokončená, výsledok sa nájde v ADCH a ADCL Keď sa číta ADCL, register údajov ADC sa neaktualizuje, kým sa neprečíta ADCH. V dôsledku toho, ak je výsledok ponechaný upravený a nie je potrebná viac ako 8-bitová presnosť, stačí prečítať ADCH. V opačnom prípade je potrebné najskôr prečítať ADCL a potom ADCH. Bity výberu analógového kanála Hodnota týchto bitov určuje, ktoré analógové vstupy sú pripojené k ADC.
Krok 6: Výber ADCSRA
• Bit 7 - ADEN: Povolenie ADC Zapísaním tohto bitu na jeden sa povolí ADC. Keď ho napíšete na nulu, ADC sa vypne
• Bit 6 - ADSC: Spustenie konverzie ADC V režime jednoduchej konverzie zapíšte tento bit do jednej, aby sa spustila každá konverzia. V režime voľného spustenia zapíšte tento bit do jednej a začnite prvú konverziu.
• Bit 5 - ADFR: Voľne spustený ADC Vyberte Ak je tento bit nastavený (jeden), ADC pracuje v režime voľného chodu. V tomto režime ADC priebežne vzorkuje a aktualizuje dátové registre. Vymazaním tohto bitu (nula) ukončíte režim voľného chodu.
• Bit 4 - ADIF: príznak prerušenia ADC Tento bit je nastavený, keď sa dokončí konverzia ADC a aktualizujú sa dátové registre. Prerušenie úplnej konverzie ADC sa vykoná, ak sú nastavené bity ADIE a I-bit v SREG. ADIF je vymazaný hardvérom pri vykonávaní zodpovedajúceho vektora spracovania prerušenia. Alternatívne sa ADIF vymaže zapísaním logického znaku do vlajky.
• Bit 3-ADIE: Povolenie prerušenia ADC Keď je tento bit zapísaný do jedničky a je nastavený I-bit v SREG, aktivuje sa prerušenie prerušenia ADC.
• Bits 2: 0 - ADPS2: 0: ADC Prescaler Select Bits Podľa technického listu je potrebné tento prescalar nastaviť tak, aby bola vstupná frekvencia ADC medzi 50 KHz a 200 KHz. Hodiny ADC sú odvodené od systémových hodín pomocou ADPS2: 0 Tieto bity určujú deliaci faktor medzi frekvenciou XTAL a vstupnými hodinami do ADC.
Krok 7: Ak chcete získať hodnotu ADC, budete potrebovať prácu, ktorá je uvedená nižšie
- Nastavte hodnotu ADC
- Konfigurujte výstupný LED kolík
- Konfigurujte hardvér ADC
- Povoliť ADC
- Začnite analógovo -digitálne konverzie
- KEDY navždy
AK je hodnota ADC vyššia ako nastavená hodnota, rozsvieťte LED INAK Vypnite LED
Krok 8: Nastavte hodnotu ADC
Kód: uint8_t ADCValue = 128;
Krok 9: Konfigurujte pin LED výstupu
Kód: DDRB | = (1 << PB1);
Krok 10: Konfigurujte hardvér ADC
Konfigurujte hardvér ADC
To sa deje nastavením bitov v riadiacich registroch pre ADC. Najprv si nastavme predkallar pre ADC. Podľa údajového listu je potrebné tento preskalár nastaviť tak, aby bola vstupná frekvencia ADC medzi 50 KHz a 200 KHz. Hodiny ADC sú odvodené od systémových hodín. Pri systémovej frekvencii 1 MHz bude predzvárač 8 mať za následok frekvenciu ADC 125 Khz. Predbežné meranie je nastavené bitmi ADPS v registri ADCSRA. Podľa údajového listu musia byť všetky tri bity ADPS2: 0 nastavené na 011, aby sa získal 8 predzosilňovačov.
Kód: ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
Ďalej nastavíme referenčné napätie ADC. Toto je riadené bitmi REFS v registri ADMUX. Nasledujúce nastavenie referenčného napätia na AVCC.
Kód: ADMUX | = (1 << REFS0);
Na nastavenie kanála prechádzajúceho multiplexorom do ADC je potrebné zodpovedajúcim spôsobom nastaviť bity MUX v registri ADMUX. Pretože tu používame ADC5
Kód: ADMUX & = 0xF0; ADMUX | = 5;
Aby ste ADC uviedli do voľného režimu, nastavte vhodne pomenovaný bit ADFR v registri ADCSRA:
Kód: ADCSRA | = (1 << ADFR);
Vykoná sa posledná zmena nastavení, aby bolo čítanie hodnoty ADC jednoduchšie. Aj keď má ADC rozlíšenie 10 bitov, tento počet informácií často nie je potrebný. Táto 10 -bitová hodnota je rozdelená do dvoch 8 -bitových registrov, ADCH a ADCL. V predvolenom nastavení sa v ADCL nachádza najnižších 8 bitov hodnoty ADC, pričom horné dva sú najnižšie dva bity ADCH. Nastavením bitu ADLAR v registri ADMUX môžeme zarovnať hodnotu ADC doľava. To dáva najvyšších 8 bitov merania do registra ADCH, zvyšok do registra ADCL. Ak potom prečítame register ADCH, dostaneme 8 -bitovú hodnotu, ktorá predstavuje naše 0 až 5 voltové meranie ako číslo od 0 do 255. V zásade premieňame naše 10 -bitové meranie ADC na 8 -bitové. Tu je kód na nastavenie bitu ADLAR:
Kód:
ADMUX | = (1 << ADLAR); Tým je v tomto prípade dokončené nastavenie hardvéru ADC. Predtým, ako ADC začne merať, je potrebné nastaviť ďalšie dva bity.
Krok 11: Povoľte ADC
Ak chcete povoliť ADC, nastavte v ADCSRA bit ADEN:
Kód: ADCSRA | = (1 << ADEN);
Krok 12: Spustite analógovo -digitálne konverzie
Na spustenie meraní ADC je potrebné nastaviť bit ADSC v ADCSRA:
Kód: ADCSRA | = (1 << ADSC);
V tomto mieste by ADC začal nepretržite vzorkovať napätie uvedené na ADC5. Kód do tohto bodu bude vyzerať takto:
Krok 13: KEDY NAVŽDY
Jediná vec, ktorú musíte urobiť, je otestovať hodnotu ADC a nastaviť diódy LED tak, aby zobrazovali indikáciu vysokej / nízkej hodnoty. Pretože čítanie ADC v ADCH má maximálnu hodnotu 255, bola zvolená testovacia hodnota th, aby sa určilo, či bolo napätie vysoké alebo nízke. Jednoduchý príkaz IF/ELSE v slučkách FOR nám umožní zapnúť správnu LED diódu:
Kód
if (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // Zapnite LED
}
inak
{
PORTB & = ~ (1 << PB0); // Vypnite LED
}
Krok 14: Na konci je kompletný kód
Kód:
#zahrnúť
int main (prázdny)
{
uint8_t ADCValue = 128;
DDRB | = (1 << PB0); // Nastaviť LED1 ako výstup
ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // Nastavte ADC prekalar na 8 - // 125KHz vzorkovaciu frekvenciu 1MHz
ADMUX | = (1 << REFS0); // Nastavte odkaz ADC na AVCC
ADMUX | = (1 << ADLAR); // Upravte výsledok ADC doľava, aby ste umožnili ľahké 8 -bitové čítanie
ADMUX & = 0xF0;
ADMUX | = 5; // Na používanie ADC0 bolo potrebné zmeniť hodnoty MUX
ADCSRA | = (1 << ADFR); // Nastavte ADC na Free-Running Mode
ADCSRA | = (1 << ADEN); // Povoliť ADC
ADCSRA | = (1 << ADSC); // Spustite A2D konverzie, kým (1) // Navždy budete slučkou
{
if (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // Zapnite LED1
}
inak
{
PORTE & = ~ (1 << PB1); // Vypnite LED1
}
}
návrat 0;
}
Najprv zverejnite tento návod Kliknite sem
Odporúča:
Ochranná prilba Covid, časť 1: Úvod do obvodov Tinkercad!: 20 krokov (s obrázkami)
Helma Covid Časť 1: Úvod do obvodov Tinkercad !: Dobrý deň, priateľu! V tejto dvojdielnej sérii sa naučíme používať Tinkercad's Circuits - zábavný, výkonný a vzdelávací nástroj na zoznámenie sa s fungovaním obvodov! Jeden z najlepších spôsobov, ako sa učiť, je robiť. Najprv teda navrhneme náš vlastný projekt:
Úvod do infračervených obvodov: 8 krokov (s obrázkami)
Úvod do infračervených obvodov: IR je komplexná časť technológie, s ktorou sa však veľmi ľahko pracuje. Na rozdiel od diód LED alebo laserov nie je infračervené žiarenie ľudským okom viditeľné. V tomto návode ukážem používanie infračerveného žiarenia prostredníctvom troch rôznych obvodov. Obvody nebudú
Arduino ako ISP -- Napaľujte hexadecimálny súbor v AVR -- Poistka v AVR -- Arduino ako programátor: 10 krokov
Arduino ako ISP || Napaľujte hexadecimálny súbor v AVR || Poistka v AVR || Arduino ako programátor: ……………………… REGISTRÁCIA Na môj kanál YouTube pre ďalšie videá …….. Tento článok je všetko o arduino ako isp. Ak chcete nahrať hexadecimálny súbor alebo ak chcete nastaviť poistku v AVR, nemusíte kupovať programátor, môžete to urobiť
INFRA ČERVENÝ DIAĽKOVO RIADENÝ ROBOCAR S POUŽITÍM AVR AVR (ATMEGA32): 5 krokov
ROBOCÁR S INFRA ČERVENÝM DIAĽKOM OVLÁDANÝM POUŽÍVANÍM AVR AVR (ATMEGA32): Tento PROJEKT popisuje návrh a implementáciu infračerveného (IR) diaľkovo ovládaného robota, ktoré je možné použiť pre rôzne automatizované aplikácie bez riadenia. Navrhol som diaľkovo ovládaný RoboCar (pohyb vľavo-vpravo/vpredu-vzadu). T
Robotické rameno založené na mikrokontroléri PIC: 6 krokov (s obrázkami)
Robotické rameno založené na mikrokontroléri PIC: Od montážnej linky automobilového priemyslu až po telechirurgické roboty vo vesmíre nájdete robotické zbrane všade. Mechanizmy týchto robotov sú podobné ľuďom, ktoré je možné naprogramovať na podobnú funkciu a zvyšujú