Arduino ako vybíjačka NiMH akumulátorov

Vybíjačka NiMH akumulátorov slúži na vybitie jednej batérie na definovanú hodnotu napätia 1 V. Ak takto postupne vybijeme dva kusy, môžeme ich opäť nabiť v bežnej nabíjačke, ktorá nabíja po dvoch kusoch. Pretože sú oba akumulátory vybité na rovnaké napätie, nabijú sa teraz na svoju maximálnu kapacitu bez toho, aby sa v nich diali podivné chemické reakcie, ktoré spôsobujú dve nerovnako nabité batérie.

Myšlienka

Začali sa nám doma hromadiť akumulátory, ktoré sa vybili na rôznu úroveň napätia vďaka tomu, že doma používame veľa hodín, ktoré sa od seba líšia. Dávame do nich lacné čínske akumulátory, ktoré síce veľa energie do seba nepoberú, ale aj napriek tomu pár týždňov pracujú.
Keďže ale doma nemáme nabíjačku, ktorá by ich vedela nabíjať po jednom, vymyslel som, že bude najjednoduchšie tie akumulátory, ktoré sa vybijú na rôzne hodnoty, blízke 1 V, vybiť na hodnotu jedného voltu a potom ich zase klasicky po dvoch nabiť.
Vybíjanie nám poslúžilo ešte na niekoľko ďalších činností:
  • Odmeranie napätie batérie pod záťažou.
  • Vizuálna kontrola podľa svietiacich LED, ako sú akumulátory momentálne nabité.

Simulácia v LTspice IV

Simuláciu som nastavil tak, aby sa napätie akumulátora V1 pohybovalo medzi 0.6-1,4 V. V2 predstavuje digitálny pin z Arduina, ktorým sa zapína a vypína tranzistor. Akumulátor sa vybíja cez odpor R1, na ktorom sa merajú napätia. Meranie napätie slúži na určenie toho, či je akumulátor potrebné vybíjať a počíta sa podľa neho aj pretekajúci prúd.
Na priloženom obrázku sú vypočítané aj výkony, ktoré sa spaľujú v rezistoroch. Podľa výpočtov na to stačia štvrťwatové rezistory.

Schéma

Na obrázku je schéma, ktorá je použitá na univerzálnom dierovanom plošnom spoji.
  • A1, A0, GND - Tento konektor slúži na pripojenie merania napätia v Arduine. V skutočnom programe je mierna zmena, kde napätie akumulátora meriam cez A1 a úbytok napätia na rezistore R1 meriam cez A2. Ten úbytok sa v programe meria ako A1-A2 a používa sa na výpočet prúdu, ktorý tečie cez rezistor R1.
  • Pull-down rezistory - Sú použité dva rezistory. R4 s hodnotou 4,7K slúži na to, aby v prípade odpojeného akumulátora bol na analógovom vstupe A1 nameraná 0. R3 s hodnotou 4,7K slúži na to, aby sa pri resete Arduina neobjavovali na báze tranzistora náhodné napätia, ktoré by na chvíľu spúšťali nekontrolovateľné vybíjanie.
  • Tranzistor BC337-25 - Tranzistor znesie až 500 mA, preto je použiteľný v našom prípade, keď očakávame na rezistore R1 maximálny prúd 140 mA. Jeho báza je ovládaná rezistorom R2 s hodnotou 120R. Je to dosť malá hodnota a tečie cezeň 30 mA, čo je dosť veľa. Arduino znesie na pine 40 mA, takže je to bezpečné. Tu sa priznám, že sa mi to dosť nezhoduje s teoretickým výpočtom, pretože najhoršie hFE tranzistora malo byť 160. Výpočtom sa javilo, že by tam mal stačiť 1K rezistor. Dôvod, prečo je to tak, nepoznám. Snáď jedného dňa na to prídem, keď budem mať viac skúseností.
  • D0 - Digitálny pin z Arduina, ktorý zapína a vypína tranzistor. V skutočnom programe je pripojený na pin D8.
  • D1-D4 - Signalizácia napätia na akumulátore. V Skutočnom programe je to zapojené takto:
    • D7 - Napätie pod záťažou je väčšie ako 1,3 V. Ak dióda bliká, nie je vložený akumulátor a program čaká na jeho vloženie.
    • D6 - Napätie pod záťažou je väčšie ako 1,2 V.
    • D5 - Napätie pod záťažou je väčšie ako 1,1 V.
    • D4 - Napätie pod záťažou je väčšie ako 1,0 V.
  • D5 - Signalizácia vybitého akumulátora. V skutočnom programe je pripojená na pin D3. Zelená dióda sa rozsvieti, ak bol akulátor pri záťaži pod 1 V.
  • LED Diódy - Sú to malé diódy, ktoré slúžia len na signalizáciu. Odpory ku nim majú hodnotu 330R a tečie cez ne 9 mA.

Programovanie Arduina

Arduino je naprogramované ako stavový automat. Vždy sa nachádza v nejakom stave:
  • Čakanie na vloženie batérie - To sa meria pomocou pull-down rezistora, ktorý zabezpečuje, aby sme namerali 0 V vtedy, ak nie je akumulátor pripojený. Ak sa objaví na vstupe napätie, ktoré má viac ako 0,6 V, prepne sa do nasledovného stavu.
  • Odmeranie napätia pod záťažou - V tomto stave zapne tranzistor a odmeria napätie pod záťažou. Ak nameria viac ako 1,0 V, prepne sa do nasledovného stavu.
  • Vybíjanie - V tomto stave je zapnutý tranzistor a akumulátor sa vybíja. Stále sa sleduje napätie a v okamihu, ako klesne pod 1,0 V, prepne sa do nasledovného stavu.
  • Čakanie na vybratie batérie - Tu už iba meria napätie na nezaťaženom akumulátore a čaká, kým sa neodmeria napätie 0 V, čo chápe ako vytiahnutie akumulátora a prepne sa do prvého stavu.

Komunikácia s okolím

...text bude pokračovať.
ċ
battery_meter.ino
(3k)
Robo Ulbricht,
9. 11. 2013, 10:40
ċ
Robo Ulbricht,
9. 11. 2013, 10:39
Comments