V tomto blogu si priblížime aké súčiastky sa nachádzajú na typickej doske Arduino, povieme si ich funkciu a pozrieme sa na to, ako také Arduino vlastne funguje.
Vývojová doska – hardvér
Každá vývojová doska Arduino má hlavný čip, podporné súčiastky a vstupno/výstupné konektory a piny.
Najpopulárnejšou vývojovou doskou Arduino je bezpochyby Arduino UNO R3 (revízia 3, existujú aj staršie už nevyrábané verzie). Na doske sa nachádza hlavný čip ATMega328P-PU, ktorý dokážeme naprogramovať, regulátor napätia, konektory a po okrajoch dosky aj piny vyvedené z hlavného čipu.
Vstupné konektory
Hlavný strieborný konektor slúži pre napájanie dosky a môže byť použitý aj na jej programovanie z PC. Jedná sa o USB-B konektor, často ho nájdete napríklad aj na tlačiarňach.
Čip ATMega328P na doske Arduino pracuje na 5V. Dosku je síce možné napájať aj z 9V batérie cez čierny DC005 konektor, avšak napätie je v takom prípade znížené na 5V prostredníctvom zabudovaného regulátora.
Na vrchnej a spodnej strane vývojovej dosky sa nachádzajú vyvedené piny z hlavného čipu. Vo vrchnej časti sú digitálne piny, teda také, ktoré reprezentujú signál len ako 1 alebo 0. Napätie 5V je interpretované ako logická 1 a napätie 0V je interpretované ako logická 0. Digitálne piny umožňujú aj 5V výstup, teda môžeme na výstupe napájať napríklad LED-diódy alebo iné nenáročné zariadenia. Maximálny vstupný/výstupný prúd z týchto pinov je len asi 30mA, takže motorčeky alebo iné výkonné zariadenia nie je možné napájať. Jednoducho ich neutiahnu.
Hodinový signál
Aby dokázal hlavný čip pracovať správne a všetky obvody zabudované v tomto čipe boli synchronizované, je na doske generátor hodinového signálu 16 MHz. 16 megaherzov udáva, ako rýchlo daný hodinový signál “tiká”. Za jednu sekundu je to až 16 miliónov krát. Hodinový signál je vlastne len zmena napätia z logickej 1 (5V) na logickú 0 (0V). Takáto vysoká rýchlosť umožňuje čipu vykonávať aj zložitejšie operácie v zlomku sekundy. Napríklad operácia sčítania dvoch čísel trvá jeden hodinový cyklus, to znamená, že za jednu sekundu dokáže čip sčítať 16 000 000 rôznych čísel.
Hodinový signál teda slúži na synchronizáciu. Čo to ale je tá synchronizácia? V samotnom čipe ATMega328 je zabudovaných niekoľko malých modulov, napríklad výpočtový procesor, modul riadenia vstupných/výstupných pinov, vyššie spomínaný PWM driver, ADC prevodník a množstvo ďalších. Aby všetky tieto moduly vedeli spolupracovať, je nutné, aby všetky pracovali rovnako rýchlo.
Čo by sa teda stalo keby sme hodinový signál zvýšili na dvojnásobok? Čip by dokázal pracovať 2-krát tak rýchlo. Prečo sa to nerobí? Pretože čip by pri tak vysokom hodinovom signále (nad 20 MHz) zhorel. Jednotlivé moduly v čipe by nedokázali pracovať tak rýchlo a došlo by k ich poškodeniu. Moderné počítače v notebookoch pracujú s frekvenciami rádovo v Gigaherzoch, teda asi 500-krát rýchlejšími, sú na to však uspôsobené a používajú nižšie napätia. Procesory v notebookoch fungujú približne na 1V, niekedy aj menej.
Ostatné súčiastky na doske
Okrem týchto hlavných súčiastok nájdete aj malé obdĺžnikové súčiastky.
Nachádzajú sa tam 4 kusy LED diód
– pre indikáciu napájania (označená ON)
– pripojená na pin 13, teda túto môžeme používať v kóde (označená L)
– TX je pre indikáciu, že na pine TX nám odchádzajú nejaké signály, je teda priamo pripojená k pinu 1. Táto LED sa rozbliká keď dosku programujeme cez USB konektor, keďže prevodník je pripojený na piny 0/1 (transmit)
– RX, funkcia je podobná ako pri TX, avšak RX je pripojený na pin 0 a indikuje prijímanie dát (receive)
Na doske sú ešte ďalšie malé SMD súčiastky. Napríklad zlatá súčiastka medzi konektormi je dióda, čierne SMD súčiastky sú malé rezistory a biele sú kondenzátory. Kondenzátory sú aj väčšie okrúhle súčiastky na spodnej strane. Tie sú nevyhnutné pre správnu funkciu jednotlivých komponentov a zabezpečujú aby napríklad nezhoreli LED diódy (rezistory) alebo stabilizujú napájanie (kondenzátory). Cez dosku sú prevŕtané malé dierky (via), ktoré vodivo spájajú medenú vrstvu vrchnej a spodnej strany
Na doske je aj resetovacie tlačídlo a zaujímavosťou sú 6-tice pinov nad hlavným čipom, označené ako ICSP a pri resetovacom tlačidle. Tieto piny sú rezervované pre USBasp programátory, ak by sme chceli čipy programovať inak, ako cez USB káblik. Na to existujú špeciálne programovacie dosky, o ktorých sme písali napríklad tu. Jedna šetica pinov je pre hlavný čip a druhá šestica pinov je pre konfiguráciu USB-UART prevodníku.
Pulzná šírková modulácia (PWM)
Tak to znie naozaj strašidelne. Čo to teda je?
Niektoré z digitálnych pinov majú funkciu PWM a sú označené malou vlnovkou na doske. Pomocou tejto funkcie vieme mať na výstupe aj napätie medzi 0V a 5V. Funkcia PWM (pulse width modulation) funguje na princípe rýchleho vypínania a zapínania výstupného 5V napätia. Jedná sa o digitálne piny, takže pomocou nich nevieme mať iné napätie ako 0V alebo 5V, avšak môžeme použiť malý trik. Piny vieme zapínať a vypínať pomerne rýchlo (keby sme veľmi chceli, aj niekoľko sto tisíckrát za sekundu). PWM frekvencia na Arduino UNO je približne 500Hz (asi 500 krát za sekundu), čiže v priebehu 1/500 sekundy rýchlo vypneme alebo zapneme 5V výstup. Ak je zopnutý polovičnú dobu (teda asi 1/1000 sekundy), efektívne získame na výstupe 2.5V. Ak je zopnutý jednu pätinu, tak je na výstupe efektívne 1V a tak ďalej. Doba, po ktorú je signál aktívny sa označuje ako DUTY CYCLE a vyjadruje sa v percentách.
Je to zaujímavý trik, no naozaj funguje, nižšie napätie môžete zmerať aj pomocou multimetra. Má to však háčik, PWM umožňuje len schodkovité ladenie výstupného napätia takým spôsobom, že si výstup rozdelí na 256 rôznych úrovní (toto platí pre ATMega328, iné čipy môžu mať iný počet “schodov”). 5V/256 = približne 0.02V, takže na výstupe vieme mať aj napätie 0V, 0.02V, 0.04V, 0.06V ….. 4.96V, 4.98V až 5V. Ak by sme chceli mať na výstupe 0.01V, tak to Arduino na digitálnych pinoch nedokáže a niektoré moduly sa môžu správať nespoľahlivo pri PWM signáloch. Na aplikácie kde je nutné presné napätie sa využívajú špeciálne DAC prevodník (digital to analog converter).
Zdroje a ďalšie čítanie:
- https://en.wikipedia.org/wiki/ATmega328
- https://www.indiamart.com/proddetail/arduino-uno-board-20238835133.html
- https://www.sparkfun.com/standard_arduino_comparison_guide
- https://en.wikipedia.org/wiki/Pulse-width_modulation
- https://learn.circuitverse.org/docs/seq-ssi/clock-signals.html