Dnešní článek by klidně mohl rozšířit náš seriál "Začínáme s Arduinem", ale tam bych musel psát víc formálně a bez emotikon, tak ho raději necháme tady :-) Ohledně napájení Arduina dostávám velké množství dotazů. Pokud máte pouze samostatný vývojový kit, pak ho prostě píchnete do USBčka a máte vyřešeno. Co když ale budete mít hotový program, který se dokonce zkompiluje a nahraje do kitu a budete chtít Arduino provozovat bez PC? A co když k Arduinu budete chtít připojit nějaký externí modul, např. relátko nebo displej? A co když bude takových modulů několik? A co když nemáte mainstreamové Arduino, které má USB port? A co když chcete vyrobit nějaké přenosné zařízení na baterky? Mohl bych ještě docela dlouho s těma #ACoKdyž pokračovat. Tyto otázky totiž řeší úplně každý, kdo používá Arduino v práci nebo při svých volnočasových aktivitách, a tak je jich přirozeně hodně. Pojďme se tedy na tuto problematiku podívat detailněji.
Napájecí vstupy u Arduina
Arduino je vždy napájeno ze zdroje stejnosměrného napětí a většinou existuje několik možností, kam lze napájení na vývojový kit připojit:
- Napájení přes souosý konektor
- Napájení přes USB port
- Napájení přes dvojici pinů/padů VIN (+) a GND (–)
- Napájení přes dvojici pinů/padů 5V a GND
Existují samozřejmě výjimky – některé kity nemají USB port, některé zase souosý konektor. Všechny ale mají alespoň pinové/dutinkové lišty nebo pady (pájecí plošky). Proč je poslední bod ve výčtu škrtnutý vysvětlím níže. Mezi jednotlivými typy připojení napájení existují rozdíly, které je důležité zmínit.
Než začnu popisovat jednotlivé varianty zapojení napájení, pojďme se podívat na Obr. 1, kde je znázorněno el. schéma napájecí části Arduina Uno, na kterém si celou problematiku popíšeme. Obvod je sestaven z těchto prvků:
- Dioda D1, slouží jako ochrana proti přepólování.
- Lineární regulátor LR1, generuje na výstupu napětí 5 V DC.
- Lineární regulátor LR2, generuje na výstupu napětí 3,3 V DC.
- Komparátor a tranzistor typu P-MOSFET, slouží k automatickému výběru vstupního zdroje napětí (VIN nebo 5VDC_USB). Pokud je jako zdroj vybrán USB port, pak LR1 není funkční.
Obrázek 1: Obvod napájení Arduina Uno
Napájení přes souosý konektor
Toto napájení je ve schématu označeno jako 6–15 VDC. Všimněte si, že hned na vstupu je dioda D1, která chrání desku proti nechtěnému přepólování. Do souosého konektoru většinou připojujeme kompatibilní adaptérový zdroj (např. 1476824244), takže k přepólování nemůže dojít. Můžeme však použít nějaký alternativní zdroj, který připojíme např. přes konektor 1509460890 a zde již může k přepólování dojít velmi snadno (i když jsou svorky na konektoru označené). Pro úplnost dodávám, že u souosého konektoru je vnitřní kontakt kladný pól (+), a vnější kontakt/plášť je záporný pól (–), vizte Obr. 2.
Obrázek 2: Kontakty konektoru 1509460890
Rozsah vstupního napětí pro připojení přes souosý konektor je 6 až 15 (20 V DC). Ptáte se, proč uvádím max. hodnotu 15 V DC, když dle oficiální specifikace můžeme připojit napětí až 20 V DC? Vysvětlení je prosté. Některé klony Arduina Uno používají takový typ lineárního regulátoru LR1, pro který je 15 V DC maximum. Doporučuji vám však, abyste používali napájecí napětí v rozsahu 7–12 V DC. A jak je to s proudem? Máte-li dostatečně výkonný zdroj, pak může přes souosý konektor protékat proud až 1 000 mA. Má to ale svá omezení, o kterých se zmiňuji níže.
Napájení přes pin VIN a GND
Tato možnost je velmi podobná napájení přes souosý konektor. Koukněte znovu na schéma, konkrétně na svorku označenou jako VIN. Určitě vás hned napadlo, v čem je rozdíl – napájení přes VIN nemá na vstupu žádnou ochrannou diodu (D1). To se může hodit např. při napájení Arduina z baterie, ale musíte si dát pozor, abyste nezapojili VIN (+) a GND (–) opačně, jelikož tím byste podespali Arduinu rozsudek smrti. Velmi pravděpodobně by také explodoval 47 uF kondenzátor na vstupu. Koukněte na Obr. 3, kde je zřetelně označeno, která svorka je GND (černá) a která VIN (oranžová).
Obrázek 3: Varianty zapojení napájení Arduina Uno
Proč tedy obcházet ochranu proti přepólování? Na každé diodě je určitý úbytek napětí. V případě diody D1 je to přibližně 0,8 V. Tento úbytek je v případě napájení z baterie nežádoucí, jelikož má vliv na její výdrž (zařízení by fungovalo kratší dobu). Pro zajímavost, kdybychom z baterie odebírali konstantní proud 0,2 A, tak na diodě D1 bychom měli ztrátový výkon Pz = UI = 0,8 * 0,2 = 0,16 W.
Dioda D1 (její úbytek 0,8 V) má vliv i na rozsah vstupního napětí. Ten je při napájení přes VIN a GND 5,2–14,2 (19,2) V. Doporučený rozsah je 6,2–11,2 V. Proudové omezení je stejné, jako u souosého konektoru.
Napájení přes USB port
Pokud máte Arduino, které na sobě má USB TTL převodník (např. Nano, Uno, Mega), pak tuto variantu napájení určitě využíváte při programování. Klidně ji můžete použít i pro finální instalaci, kdy budete Arduino napájet např. pomocí zdroje 1529992740 (nabíječky na telefon). Spousta bastlířů používá pro napájení také powerbanky (když byste potřebovali bateriově napájenou aplikaci). Já jsem například dělal jeden projekt s dlouhým LED páskem, který byl napájený ze zdroje 5 V DC. Abych nemusel řešit další zdroj pro vývojový kit, připojil jsem zdroj pro LED k Arduinu přes USB konektor...
Velká výhoda této varianty napájení je, že můžete mít kromě USBčka připojený také "hlavní" (resp. další) napájecí zdroj přes souosý konektor nebo VIN+GND. Často se totiž stává situace, že chcete nahrát novější verzi kódu do Arduina, které už je instalováno ve "finálním produktu". Tento produkt je napájen např. přes souosý konektor, který není nutné odpojovat (resp. vypínat hlavní zdroj), když chcete pouze uploadnout nový kód a USBčko hned odpojit. Může také nastat situace, kdy USB zdroj je slabý a nedokáže napájet všechny moduly, které máte k Arduinu připojené. Pak také použijete silnější zdroj, který zapojíte např. přes souosý konektor a USBčko využíváte pouze k programování, nikoliv k napájení.
/* Vsuvka pro zvídavé */
Aby bylo možné zapojit k Arduinu současně dva zdroje napětí, používá se jeden velmi elegantní HW trik. Trik spočívá v tom, že Arduino pozná, zda je kromě USB zdroje připojen i jiný zdroj napětí na souosém konektoru nebo VIN+GND a pokud je, odpojí napájení přes USB port. Pokusím se stručně (a snad i jednoduše) popsat, jak toto zapojení funguje. Představte si následující situaci: Máme Arduino, ke kterému je připojen 9V akumulátor (přes souosý konektor nebo VIN+GND, je to jedno). Mohou tedy nastat tři případy zapojení napájení:
- Napájíme pouze přes USB port
- Napájíme pouze z 9V akumulátoru
- Máme připojený i 9V akumulátor i USBčko (např. kvůli tomu, že chceme desku naprogramovat)
Koukněte na schéma, jednotlivé případy si rozebereme. V prvním případě se nám na tranzistoru (P-MOSFET) objeví napětí 5 V, které "projde" přes diodu, která je uvnitř tranzistoru. V takovém případě máme na vstupu lineárního regulátoru LR2 (svorka 3, Vin) napětí přibližně 4,6 V (úbytek 0,4 V způsobuje dioda v tranzistoru). Regulátor tedy začně toto napětí "přeměňovat" a na jeho výstupu Vout bude 3,3 V. Toto napětí se nám objeví na invertujícím vstupu (–) komparátoru. Jelikož na neinvertujícím vstupu komparátoru (+) máme napětí 0 V (externí zdroj nepřipojen), komparátor bude na výstupu mít napětí přibližně 0 V. V takovém případě bude na elektrodě G (gate) tranzistoru napětí také 0 V a tranzistor se otevře. Od této chvíle už proud nepoteče přes vestavěnou diodu, ale přes otevřený tranzistor.
V druhém případě máme na vstupní svorce VIN (a tedy i na svorce Vin regulátoru LR1) napětí 9 V. Regulátor LR1 bude mít na výstupu (Vout) napětí 5 V DC, regulátor LR2 tedy bude mít na svém výstupu (Vout) napětí 3,3 V DC. Máme tedy situaci, kdy na neinvertujícím vstupu (+) komparátoru je napětí 9 V a na invertujícím vstupu (–) napětí 3,3 VDC. Jelikož na neinvertujícím vstupu je větší napětí, než na invertujícím, bude na výstupu komparátoru napětí přibližně 9 V. Je-li na elektrodě G (gate) P-MOSFET tranzistoru takové napětí, zůstane zavřený.
Třetí případ je stejný, jako druhý, akorát na svorce 5VDC_USB máme napětí cca 5 VDC. Tranzistor je tedy zavřený. Proud neteče ani přes vestavěnou diodu tranzistoru, jelikož na výstupu LR1 je také napětí 5 V DC. Pokud je na anodě i katodě diody přibližně stejné napětí, dioda není vodivá. V tomto konkrétním případě by na anodě (na svorce 5VDC_USB) muselo být napětí větší o více než 0,4 V DC než na katodě, aby dioda přešla do vodivého stavu.
/* Konec vsuvky pro zvídavé */
Pokud jste vsuvku přeskočili, tak aspoň nemáte hlavu jak pátrací balón. Pokud ne, tak se omlouvám :-) Abychom dodrželi strukturu textu, uvádím opět rozsah napájecího napětí, který je v tomto případě 4,75 až 5,25 V DC. Maximální proud, který může Arduino odebírat přes USB konektor, je 500 mA. Je to především z toho důvodu, že hned vedle USB konektoru je osazena 500 mA resetovatelná pojistka, která chrání váš počítač před případnými zkraty a jinými omyly v zapojení. Ve schématu ji nenajdete, ale na Obr. 3 ano, má označení F1.
Napájení přes pin 5V+GND
To už je podruhé, co tuto (ne)variantu zapojení napájecího zdroje škrtám a mám k tomu dobrý důvod. Běžně bych ji do tohoto textu vůbec neuváděl, ale jelikož se s ní setkávám v projektech našich zákazníků i na internetu, musím se o ní zmínit.
Předně – pin 5V+GND je určen jako výstup pro napájení modulů a komponent, které k Arduinu připojujete. Za jistých okolností lze použít i jako vstup, ale nedoporučuji to ani zkušeným bastlířům. Riskovali byste, že to nepřežije regulátor LR1 nebo i jiná součástka. Nabízí se otázka, proč tomu tak je...
Pokud byste Arduino napájeli přes 5V+GND a byl by to jediný zdroj napětí, nemělo by se nic stát. Pokud byste ale připojili další zdroj napětí přes 6–15 VDC, VIN+GND, nebo 5VDC_USB, dojde k paralelnímu propojení dvou zdrojů napětí a to nikdy nedělá dobrotu. V případě, že byste napájeli z 5V+GND (zdroj 1) a zároveň z VIN+GND (nebo 6–15 VDC), bude se regulátor LR1 (zdroj 2) snažit vyrobit na Vout (tedy i na svorce 5V) napětí 5 VDC. A máme paralelní propojení napěťových zdrojů. V případě, že byste napájeli z 5V+GND (zdroj 1) a připojii USBčko (zdroj 2), opět paralelně propojíte dva zdroje napětí. Především druhá varianta se může stát i zkušenému bastlíři – představte si, že si narychlo sestavíte nějaký arduino projekt, napájení zapojíte do svorek 5V+GND a za půl roku si vzpomenete, že chcete kód upravit. Přijdete s notebookem, připojíte USBčko a... bude vymalováno.
Protože obrázek nebo tabulka je často lepší než tisíc slov, na závěr této části článku uvádím Tab. 1 se základním přehledem.
Tabulka 1: Souhrn základních informací o napájení
Typ připojení | Rozsah napájecího napětí (V) | Max. proud (mA) |
Souosý konektor | 6 až 15 (20) | 1000 |
USB port | 4,75 až 5,25 | 500 |
VIN+GND | 5,8 až 14,8 (19,8) | 1000 |
5V + GND | 4,75 až 5,25 | 1000 |
Napájecí zdroje
Nyní si krátce rozebereme základní typy zdrojů, které se pro napájení Arduina používají. Jsou to především tyto:
- Síťové zdroje
- Spínané DC-DC měniče (step-up a step-down)
- Akumulátory a baterie
Síťové zdroje
Začneme tím nejzákladnějším typem, a to jsou "zdroje do zásuvky". Na jejich vstupu je tedy napětí 230 V AC a na jejich výstupu je stejnosměrné napětí. Tyto zdroje můžeme dále rozdělit podle různých kritérií. Napadá mě např. podle výkonu, podle výstupního napětí, stabilizované a nestabilizované, lineární a spínané, dle typu montáže. No, dalo by se ještě chvíli pokračovat :) Pro účely tohoto článku to ale není zas tak podstatné.
Až budete zdroj vybírat, soustřeďte se především na tyto parametry:
- Vstupní napětí, v ČR musí být 230 V AC
- Výstupní napětí (mějte na paměti povolené rozsahy pro Arduino), doporučuji např. 9 nebo 12 V DC
- Výstupní výkon, doporučuji používat zdroje, které mají alespoň 10 W
- Typ připojení/konektoru (např. aby vám konektor pasoval přímo do Arduina
Našim zákazníkům nejčastěji doporučuji zdroj 1476824244. Pokud byste potřebovali Arduino napájet přes USB konektor, pak doporučuji např. produkt 1529992740.
Spínané DC-DC měniče
Může se vám stát, že budete Arduino chtít přidat k již existujícímu zařízení, které má napájecí napětí mimo povolený rozsah (často 24 V DC). Nebo budete chtít Arduino napájet z tužkové baterie, která má jmenovité napětí 1,5 V DC, což je také mimo povolený rozsah. V takovém případě se vám budou hodit DC-DC měniče, které umí převést vstupní napětí na jiné, které už bude v povoleném rozsahu. Existují dva základní typy:
- Step-down měniče
- Step-up měniče
Step-down (buck) měniče vždy převádějí vstupní napětí na nižší. Tedy např. z 24 V DC na 12 V DC. Často našim zákazníkům doporučuji např. měnič 1463386307. Step-up (boost) měniče dělají přesný opak – převádějí vstupní napětí vždy na vyšší. Tedy např. z 1,5 V DC na 9 V DC. Zde uvedu jako příklad produkt 1508392613.
Při výběru správného měniče sledujte především tyto parametry:
- Rozsah vstupního napětí
- Výstupní napětí (často bývá u měničů nastavitelné)
- Výstupní proud/výkon
Dejte si pozor také na jednu důležitou věc – zdroj, ze kterého měnič napájíte musí mít větší výkon, než je příkon zátěže (Arduina) a to ideálně o více než 25 %. Pokud tuto podmínku nedodržíte, nebude vám zařízení správně fungovat. Uveďme si příklad: Budeme Arduino napájet přes měnič napětím 9 V DC, kontinuální proudový odběr bude 200 mA. Příkon zátěže Pl je tedy Pl = UI = 9 * 0,2 = 1,8 W. Výkon zdroje Pz tedy musí být Pz = 1,25*Pl = 1,25*1,8 = 2,25 W.
Doporučuji vám kouknout také na návod kolegy Luboše, kde je podrobně popsáno, jak použít zdroj 1466285515.
Akumulátory a baterie
Stejně jako u ostatních zdrojů i zde musíte dávat pozor, aby jmenovité napětí zdroje bylo v povoleném rozsahu. Musíte tedy vědět, jaké je minimální a maximální provozní napětí, které může akumulátor mít. Např. u 9 V baterie je max. provozní napětí cca 9,6 V DC a minimální cca 6 V DC (pak to samozřejmě klesne až k nule, ale to už by byla baterie úplně vyždímaná). Vzhledem k tomu, že tato napětí jsou v povoleném rozsahu pro Arduino, můžeme baterii rovnou připojit ke svorkám VIN+GND.
Uveďme si ale jiný příklad. Budeme mít baterii složenou ze čtveřice sériově zapojených AA akumulátorů. Taková baterie má při plné kapacitě napětí okolo 6 V. Mohli bychom ji tedy připojit na svorky VIN+GND. Při odběru energie z baterie klesá její napětí (až k cca 4 V DC). Na začátku by nám tedy arduino fungovalo, ale poté by ihned napětí zdroje bylo mimo specifikaci... Mohli bychom tedy použít step-down měnič (z 6 V DC na 5 V DC) a baterii připojit přes USB konektor. Stále bychom ale měli problém, že jakmile klesne pod 5 V DC, měnič přestane fungovat a tím pádem i Arduino. V takovém případě se hodí použít buď step-up měnič (můžeme vyrábět např. napětí 9 V DC, které připojíme na VIN+GND) a nebo kombinovaný step-up/step-down měnič. Ten podle potřeby napětí zvyšuje nebo snižuje. Můžeme tedy nastavit výstupní napětí na 5 V DC a připojit ho přes USB konektor. Kombinovaný měnič máme v nabídce pod číslem 1502436407.
Napadá mě ještě jeden příklad – budeme si chtít vyrobit nějaké zařízení do auta. Napětí akumulátoru se většinou pohybuje v rozmezí 11,5–14,5 V DC. Dle specifikace takové napětí můžeme rovnou připojit přes souosý konektor nebo VIN+GND. Pohybujeme se ale už na horní hranici povoleného napětí. Pokud bychom chtěli vytvořit určitou rezervu a snížit riziko poškození vývojového kitu, můžeme v tomto případě opět použít kombinovaný měnič nebo step-down měnič. Na kombinovaném bychom mohli nastavit napětí např. 12 V DC, na step-down bychom museli nastavit napětí ménší než 11 V DC, tedy např. 9 V DC.
A jaká jsou kritéria pro výběr vhodného akumulátoru?
- Jmenovité napětí
- Kapacita
- Typ (dobíjecí/nedobíjecí), u dobíjecích pak hraje roli, zda máte vhodnou nabíječku
- Tvar (kvůli dobré zástavbě do zařízení)
- Typ připojení (konektor, pájecí plošky, ...)
- Dostupnost
Arduino jako zdroj napětí
Nyní už víme, jak napájet Arduino. Zbývá nám tedy říct si něco o tom, jak využít Arduino k napájení dalších modulů. U Arduina jsou až tři možnosti, jak externí moduly napájet:
- Přes piny 5V+GND
- Přes piny 3V3+GND
- Přes piny VIN+GND (nejde to vždy)
U všech možností platí, že zdroj, který napájí Arduino, musí mít větší výkon, než je součet příkonu Arduina a externích modulů dohromady. Pokud tuto podmínku nedodržíme, zařízení bude fungovat špatně nebo vůbec.
Výstup přes piny 5V+GND
Máme-li externí modul, který potřebuje napájecí napětí 5 V DC, pak použijeme tuto možnost. Takových externích modulů je konkrétně pro Arduino většina (senzory, spínací prvky, displeje, komunikační moduly...).
Je však jedna důležitá věc, na kterou si musímě dát pozor, a to je maximální odebíraný proud. Pokud bychom překročili proudové limity, v lepším případě zařízení s Arduinem nebude fungovat, v horším případě Arduino usmažíme. Pro tento typ výstupu jsou limity následuící:
- Pokud napájíme Arduino přes USB konektor, je limit 500 mA. Z tohoto zdroje je ale napájen také linární regulátor LR2 (vizte schéma na Obr. 1), takže přesnější je říct, že součet proudů, které tečou do regulátoru LR2 a pinu 5V nesmí překročit hodnotu 500 mA.
- Pokud napájíme Arduino přes souosý konektor nebo VIN+GND, pak může být součet proudů, které tečou do pinu 5 V a regulátoru LR2, až 1000 mA. Mějte ale na paměti, že při větším proudovém odběru (řekněme přes 300 mA) budete muset velmi dobře chladit regulátor LR1.
Výstup přes piny 3V3+GND
Tento výstup využijeme pro některé typy displejů, komunikační rozhraní atp. Stejně jako v předchozím případě platí jistá proudová omezení.
- Pokud napájíme Arduino přes USB konektor, součet proudů, které tečou do regulátoru LR2 a pinu 5V nesmí překročit hodnotu 500 mA. Všímavý čtenář si jistě všiml, že tato podmínka je stejná, jako u napájení 5V+GND.
- Pokud napájíme Arduino přes souosý konektor nebo VIN+GND, pak součet proudů, které tečou do výstupu 5V a do lineárního regulátoru LR2, nesmí být větší než 1 000 mA. Opět ale počítejte s tím, že budete muset pořádně chladit lineární regulátor LR1 a také LR2. Situace, kde takový případ velmi jednoduše nastane, je, když budete přes 3V3 výstup napájet větší displej s podsvícením. Ten si bez problému řekne o více jak 300 mA.
Výstup přes piny VIN+GND
Tyto piny lze využít jako výstup pouze v případě, že napájíme Arduino přes souosý konektor. Napětí na svorce VIN (vizte schéma) je přibližně o 0,8 V DC menší, než je napětí zdroje, který zapojíme do souosého konektoru. Pro proudové omezení platí obdobná pravidla, jako u ostatních druhů výstupů – součet proudů, které tečou do výstupu 9V a regulátoru LR1, nesmí být větší než 1 000 mA.
Pro přehlednost výše uvedené informace najdete také v Tab. 2.
Tabulka 2: Proudové omezení výstupů
Napájecí vstup | Napájecí výstup | Max. proud |
Souosý konektor
|
5V+GND | až 1000 mA |
3V3+GND | až 1000 mA | |
VIN+GND | až 1000 mA | |
USB port
|
5V+GND | až 500 mA |
3V3+GND | až 500 mA | |
VIN+GND | – | |
VIN+GND
|
5V+GND | až 1000 mA |
3V3+GND | až 1000 mA | |
VIN+GND | – |
No, já myslím, že jako úvod do problematiky už bude tento text postačovat. Pokud jste se dočetli na jeden zátah až sem, tak vám gratuluji.