A/D prevodník

Page

Stránky / Arduino / Pod kapotou Arduina /

Analógovo-digitálny prevodník vykonáva prepojenie medzi analógovým a digitálnym svetom v Arduine. Okolité prostredie často poskytuje analógový signál, ktorý ale nevieme priamo spracovať. Potrebujeme si ho pomocou A/D prevodníka premeniť do digitálnej podoby. Prevodník v Arduine je desaťbitový. To znamená, že dokáže analógový signál rozdeliť na 1024 rôznych hodnôt.

Napájanie A/D prevodníka

V Arduine sa nachádza mikrokontrolér ATmega328P, ktorý má napájanie prevodníka na pine AVCC. Je pripojený na rovnaké napájanie, ako ide aj do pinu VCC. V Arduine to nemáte ako ovplyvniť, ale pokiaľ by ste si navrhovali vlastnú dosku pre Arduino, môžete tento vstup lepšie oddeliť od digitálnej časti elektrického obvodu a tým dosiahnuť menší šum na vstup A/D prevodníka. Príklad na to, ako pin AVCC zapojiť, nájdete v datasheete mikrokontroléra ATmega328P.

Referenčné napätie

A/D prevodník porovnáva meraný analógový signál s referenčným napätím. Arduino má implicitne zapnuté referenčné napätie AVCC. To znamená, že meria signál v rozpätí 0 - 5 V. Referenčné napätie môžete nastaviť funkciou analogReference. Môžete si zvoliť tri varianty (Niektoré Arduina poskytujú aj viac možností). Vo všetkých prípadoch platí, že najprv použijete funkciu na nastavenie referencie a až potom meriate hodnotu.

  • Napájacie napätie mikrokontroléra.
  • Interná referencia 1,1 V
  • Externá referencia na pine AREF.

Použitie referenčného napätia si vyžaduje, aby bol na pine AREF pripojený aj kondenzátor 0,1 uF. Ten je pripojený na doske Arduino Uno. Na doskách Arduino Pro Mini môže byť pripojený, ale vyskytujú sa aj varianty, ktoré ho pripojený nemajú. Interná referencia má výhodu v tom, že nepotrebujete žiadne ďalšie súčiastky, ale na druhej strane sa v každom mikrokontroléri líši a preto je vhodné si ju odmerať na pine AREF a vo výpočtoch používať ako nastavenú konštantu v programe.

Funkcie

Na analógové merania sa využívajú nasledovné funkcie.

Pokročilé analógovo-digitálne meranie

Na bežné situácie vás stačia funkcie, ktoré poskytuje Arduino. Pokiaľ ale požadujete niečo navyše, musíte použiť datasheet pre ATmega328P a nastaviť si analógovo-digitálne meranie pomocou registrov. Vzorové príklady na niektoré situácie nájdete v nasledujúcich článkoch.

A/D prevodník - Interné referenčné napätie

Pokiaľ budete používať v Arduine analógovo-digitálny prevodník, implicitne bude nastavený tak, že jeho referenčné napätie je AVCC. Toto implicitné nastavenie vám umožňuje merať s rozlíšením približne 4 mV. Na výber máte viac možností, ako toto rozlíšenie meniť.

A/D prevodník - Meranie bez blokovania

Funkcia analogRead je naprogramovaná tak, že počas merania zablokuje mikrokontrolér. Počas toho času nemôžete robiť nič iné. Ak potrebujete lepšie využiť čas mikrokontroléra na spracovanie iných úloh, je vhodné upraviť analógové meranie tak, aby neblokovalo beh programu. V tomto príklade si takýto program navrhneme.

A/D prevodník - Meranie pomocou prerušenia

V predchádzajúcom článku sme si naprogramovali analógové meranie, ktoré neblokovalo Arduino počas merania. Koniec merania sme kontrolovali pomocou bitu ADSC. Koniec analógového merania môžeme kontrolovať aj pohodlnejšie pomocou prerušenia, ktoré nám Arduino na konci merania zavolá. V tomto článku si ukážeme, ako sa to dá naprogramovať.

A/D prevodník - Free Running mód

A/D prevodník obsahuje jednu zaujímavú možnosť, ako merať analógový signál čo najrýchlejšie. Spustenie nového analógového merania môže byť vyvolané ukončením predchádzajúceho merania. Tento mód sa nazýva Free Running.

A/D prevodník - osembitové rozlíšenie

A/D prevodník v Arduino Uno má rozlíšenie 10 bitov. Ak nepotrebujeme také veľké rozlíšenie, môžeme použiť aj rozlíšenie 8 bitov. Získame tak prevod analógovej hodnoty na digitálnu hodnotu, ktorá má presne 8 bitov. Dosiahneme to tak, že si upravíme zarovnanie bitov vo výslednom 16 bitovom registri. Používanie 8 bitového A/D prevodu má výhodu v tom, že nemusíme dodržiavať doporučenú frekvenciu prevodu 50 kHz - 200 kHz a môžeme používať aj vyššie frekvencie.

A/D prevodník - TL431 externé referenčné napätie

V článkoch o A/D prevodníku sme sa už venovali internému referenčnému napätiu. Pin AREF nám umožňuje pripojiť aj externé referenčné napätie, ktoré si môžeme prispôsobiť svojim požiadavkám na meranie. TL431 je súčiastka, ktorá nám poskytuje takéto referenčné napätie. Je to lacná súčiastka, ktorú nájdete v množstve výrobkov. Napríklad v zdrojoch napätia, počítačoch alebo LED driveroch.

ATtiny85

Tento mikrokontrolér má podobný A/D prevodník ako Arduino Uno. Navyše má aj niekoľko zaujímavých vlastností.

ATtiny85 - A/D prevodník

V tomto článku sa budeme venovať A/D prevodníku v mikrokontroléri ATtiny85. Vychádzať budeme z predchádzajúcich článkov, v ktorých sme popisovali A/D prevodník v Arduine Uno. V tomto článku si ukážeme základné použitie prevodníka a vymenujeme si odlišnosti. Odlišnostiam sa budeme podrobne venovať v niektorom z ďalších článkov.


14.10.2018


Menu