Technologie

Kurz AVR. Analogový komparátor.

Jedním z nejjednodušších modulů mikrokontrolérů AVR je analogový komparátor. Porovnává dvě napětí a ukládá výsledek porovnání do registru. Může také způsobovat přerušení, pokud se výsledek porovnání změnil, a řídit obvod pro zachycení časovače T1 (pokud samozřejmě existuje).

Analogový komparátor se obvykle používá jako jednobitový ADC. Například komparátor může sledovat úroveň nabití baterie nebo okamžik, kdy střídavé napětí překročí nulu. Lze jej také použít k měření trvání analogových signálů a v řadě nestandardních řešení, jako je například vícebitový ADC se sekvenční aproximací.

V tomto článku se podíváme na to, jak použít analogový komparátor na příkladu ATmega16.

Princip činnosti komparátoru AVR se neliší od diskrétního analogového komparátoru. Má dva vstupy: neinvertující – AIN0 a invertující – AIN1. Pokud je napětí na pinu AIN0 větší než napětí na AIN1, výstup komparátoru bude jedna. Pokud je napětí na AIN0 menší než napětí na AIN1, výstup bude nula.

AIN0 lze připojit k univerzálnímu pinu PB2 nebo k internímu zdroji referenčního napětí 1.2 V. AIN1 — k pinu PB3 nebo k jednomu z 8 vstupů modulu ADC. Pokud jsou vstupy komparátoru připojeny k univerzálním pinům, musí být tyto piny konfigurovány jako vstupy a pull-up rezistory musí být deaktivovány.

Hlavním řídicím registrem komparátoru je ACSR (Analog Comparator
Řídicí a stavový registr). Konfiguruje komparátor a ukládá stavové příznaky.

ACD (Vypnutí analogového komparátoru) — povolení komparátoru. 1 — zakázání analogového komparátoru, 0 — povolení. Ve výchozím nastavení je komparátor vždy povolen. Pro snížení spotřeby energie v režimech spánku se doporučuje jej zakázat. Při změně bitu ACD je nutné zakázat přerušení komparátoru resetováním bitu ACIE. Jinak může dojít k přerušení.

ACBG (Volba pásmové mezery analogového komparátoru) — připojení interního zdroje referenčního napětí (IRV) s napětím 1.23 V ke kladnému vstupu komparátoru (AIN0). 1 — připojuje IRV, 0 — odpojuje.

ACO (Výstup analogového komparátoru) — tento bit ukládá stav výstupu analogového komparátoru, tj. výsledek porovnání vstupních napětí.

ACI (Příznak přerušení analogového komparátoru) — příznak přerušení. Je nastaven hardwarem, když nastane událost definovaná bity ACIS1 a ACIS0. Pokud jsou povolena přerušení komparátoru, je volána obslužná rutina. Příznak ACI je hardwarem vymazán při spuštění obslužné rutiny. Lze jej také vymazat softwarově zápisem 1 do něj.

ACIE (Povoleno přerušení analogového komparátoru) — povolení přerušení komparátoru. Pokud je tento bit nastaven na 1 a přerušení jsou globálně povolena (je nastaven příznak I registru SREG), komparátor generuje požadavek na přerušení při změně stavu svého výstupu.

ACIC (Povolení zachycení vstupu analogového komparátoru) — připojuje výstup komparátoru k obvodu snímání časovače T1. 1 — výstup komparátoru je připojen k obvodu snímání, 0 — nepřipojen.

ACIS1, ACIS0 (Volba režimu přerušení analogového komparátoru) — tyto bity definují událost, která spustí přerušení komparátoru. Všechny možnosti jsou uvedeny v tabulce.

Přečtěte si více
Můžete pít čínský růžový čaj? Odpovědi na otázku: 25

Níže uvedené blokové schéma vysvětluje činnost komparátoru a účel konfiguračních bitů registru ACSR.

Pokud je třeba invertující výstup komparátoru připojit k výstupu multiplexeru ADC, použijí se další dva registry – SFIOR a ADMUX

Pokud je bit ACME registru SFIOR nastaven na 1 a modul ADC je zakázán (bit ADEN registru ADCSRA je vynulován), je záporný vstup komparátoru připojen k výstupu multiplexeru ADC. Pokud je bit ACME vynulován, je vstup komparátoru připojen k pinu AIN1. Registr ADMUX lze použít k výběru, který z osmi pinů ADC7 – ADC0 bude připojen k zápornému vstupu komparátoru.

Jako příklad jsem si vytvořil projekt měření doby trvání signálu (doba od kladné do záporné hrany). Projekt používá komparátor a 16bitový časovač T1.

Program funguje na následujícím principu. Neinvertující vstup komparátoru je připojen k internímu referenčnímu zdroji a na invertující vstup je přiveden analogový signál. Přerušení komparátoru jsou konfigurována tak, aby se spouštěla při záporné hraně signálu na jeho výstupu. Časovač T1 nepřetržitě počítá na maximální frekvenci (s předděličkou = 1), přerušení a zachycovací obvod se nepoužívají.

Když dojde k přerušení komparátoru, mikrokontrolér uloží hodnotu čítacího registru časovače T1 a přepne přerušení komparátoru na spuštění na kladné hraně (jeho výstupního signálu!). Při dalším přerušení komparátoru mikrokontrolér opět uloží hodnotu čítacího registru, změní režim a nastaví příznak. V hlavním programovém cyklu se na signál tohoto příznaku uložené hodnoty časovače T1 přepíší do bufferů, vypočítá se délka impulsu a zobrazí se výsledek. Poté se cyklus opakuje.

Projekt je vzdělávací a netvrdí, že je přesný nebo má široký rozsah měření. Program dokáže měřit doby trvání od 5 do 2000 us. Při kratších dobách trvání nestihne zpracovat vstupní signál, při delších dobách dochází k přetečení čítacího registru časovače. Odkazy na projekty jsou níže.

Zbytek projektů přidám později.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Back to top button