Page
Stránky / Arduino / Pod kapotou Arduina /
Analogově-digitální převodník provádí propojení mezi analogovým a digitálním světem v Arduinu. Okolní prostředí často poskytuje analogový signál, který ale neumíme přímo zpracovat. Potřebujeme si ho pomocí A/D převodníku přeměnit do digitální podoby. Převodník v Arduinu je desetibitový. To znamená, že dokáže analogový signál rozdělit na 1024 různých hodnot.
V Arduinu se nachází mikrokontrolér ATmega328P, který má napájení převodníku na pinu AVCC. Je připojen na stejné napájení, jak jde do pinu VCC. V Arduinu to nemáte jak ovlivnit, ale pokud byste si navrhovali vlastní desku pro Arduino, můžete tento vstup lépe oddělit od digitální části elektrického obvodu a tím dosáhnout menší šum na vstupu A/D převodníku. Příklad na to, jak pin AVCC zapojit, naleznete v datasheetu mikrokontroléru ATmega328P.
A/D převodník porovnává měřený analogový signál s referenčním napětím. Arduino má implicitně zapnuté referenční napětí AVCC. To znamená, že měří signál v rozmezí 0 - 5 V. Referenční napětí lze nastavit funkcí analogReference. Můžete si zvolit tři varianty (Některé Arduina poskytují i více možností). Ve všech případech platí, že nejprve použijete funkci pro nastavení reference a až potom měříte hodnotu.
Použití referenčního napětí vyžaduje, aby byl na pinu AREF připojen i kondenzátor 0,1 uF. Ten je připojen na desce Arduino Uno. Na deskách Arduino Pro Mini může být připojen, ale vyskytují se i varianty, které ho připojený nemají. Interní reference má výhodu v tom, že nepotřebujete žádné další součástky, ale na druhé straně se v každém mikrokontroléru liší a proto je vhodné si ji změřit na pinu AREF a ve výpočtech používat jako nastavenou konstantu v programu.
Na analogové měření se využívají následující funkce.
Na běžné situace vás stačí funkce, které poskytuje Arduino. Pokud ale požadujete něco navíc, musíte použít datasheet pro ATmega328P a nastavit si analogově-digitální měření pomocí registrů. Vzorové příklady na některé situace najdete v následujících článcích.
Pokud budete používat v Arduinu analogově-digitální převodník, implicitně bude nastaven tak, že jeho referenční napětí je AVCC. Toto implicitní nastavení umožňuje měřit s rozlišením přibližně 4 mV. Na výběr máte více možností, jak toto rozlišení měnit.
Funkce analogRead je naprogramována tak, že během měření zablokuje mikrokontrolér. Během toho času nemůžete dělat nic jiného. Pokud potřebujete lépe využít čas mikrokontroléru na zpracování jiných úloh, je vhodné upravit analogové měření tak, aby neblokovalo běh programu. V tomto příkladu si takový program navrhneme.
V předchozím článku jsme si naprogramovali analogové měření, které neblokovalo Arduino během měření. Konec měření jsme kontrolovali pomocí bitu ADSC. Konec analogového měření můžeme kontrolovat i pohodlněji pomocí přerušení, které nám Arduino na konci měření zavolá. V tomto článku si ukážeme, jak se to dá naprogramovat.
A/D převodník obsahuje jednu zajímavou možnost, jak měřit analogový signál co nejrychleji. Spuštění nového analogového měření může být vyvoláno ukončením předchozího měření. Tento mód se nazývá Free Running.
A/D převodník v Arduino Uno má rozlišení 10 bitů. Pokud nepotřebujeme takové velké rozlišení, můžeme použít i rozlišení 8 bitů. Získáme tak převod analogové hodnoty na digitální hodnotu, která má přesně 8 bitů. Dosáhneme to tak, že si upravíme zarovnání bitů ve výsledném 16 bitovém registru. Používání 8 bitového A / D převodu má výhodu v tom, že nemusíme dodržovat doporučenou frekvenci převodu 50 kHz - 200 kHz a můžeme používat i vyšší frekvence.
V článcích o A/D převodníku jsme se již věnovali internímu referenčnímu napětí. Pin AREF nám umožňuje připojit i externí referenční napětí, které si můžeme přizpůsobit svým požadavkům na měření. TL431 je součástka, která nám poskytuje takové referenční napětí. Je to levná součástka, kterou naleznete v množství výrobků. Například v zdrojích napětí, počítačích nebo LED driveru.
Tento mikrokontrolér má podobný A / D převodník jako Arduino Uno. Navíc má i několik zajímavých vlastností.
V tomto článku se budeme věnovat A/D převodníku v mikrokontroléru ATtiny85. Vycházet budeme z předchozích článků, ve kterých jsme popisovali A/D převodník v Arduinu Uno. V tomto článku si ukážeme základní použití převodníku a vyjmenujeme si odlišnosti. Odlišnostem se budeme podrobně věnovat v některém z dalších článků.
14.02.2020