. : New eShop! - Mobilní verze - Pandatron.cz - Pandatron.sk - Diskuzní fórum - Zakázkový vývoj : .
 
Tiny nabíječ NiMH
2. prosince 2008 | Tomáš Solarski | Tiny nabíječ NiMH | Komentářů: 5  

Tiny nabíječ NiMH

Inteligentní nabíječ NiMH akumulátorů řízený procesorem ATtiny. Nabíječ je určen pro nabíjení až čtyř akumulátorů nabíjených samostatně.

Nabíječ je uřčen k nabíjení sekundárních 1 až 4 článků. Nabíjen je každý článek/akumulátor samostatně (nesdružují se) a každý má vlastní algoritmus ukončení po plném nabití. Detekce plného nabití je provedena vyhodnocováním nabíjecí charakteristiky a to hlavně její sestupná část, kdy článek vykazuje zápornou diferenci -dV.

Charakteristika obecného NiMH:


Obr. 1: Charakteristika obecného NiMH článku

Metoda vyhodnocení nabíjecího cyklu -dV je založena na měření a vyhodnocování poklesu napětí na článku po dosažení plného nabití - vrchol charakteristiky Vmax. Pokud bychom chtěli akumulátor nabíjet na tuto hodnotu napětí (vypínat nabíjení po dosažení tohoto vrcholu) bylo by jí potřeba nejprve stanovit a tím bychom také získali nabíječ jen pro jeden daný akumulátor. Navíc ono maximum se může měnit např. s časem, teplotou, stářím ... Pro univerzální použití je lepší ukončovat nabíjení po vyhodnocení -dV (nebo jiné metody detekce plného nabití založené na vyhodnocování nabíjecí charakteristiky) Takto lze nabíjet akumulátory libovolné proudové kapacity - charakteristiky budou relativně stejné jen se bude radikálně lišit nabíjecí proud.

U metody -dV se jedná o vypnutí nabíjení "těsně" po jeho plném nabití. Takto lze článek nabít z jakéhokoli stavu (míní se např. 50% vybití) a není nutné jej předem úplně vybíjet. Zde je na místě vyvrátit dogma o "paměťovém efektu"! Takovýto jev existuje, nicméně nemá takové katastrofální následky jaké se mu připisují a v běžné praxi se dá zanedbat, jelikož jeho vliv je velmi malý. Navíc se dá jedním úplným vybíjecím a nabíjecím cyklem odstranit. Nelze tudíž hovořit o tom, že nám paměťový efekt zkrátil životnost nebo zmenšil kapacitu. Omezení kapacity nebo životnosti lze dosáhnout špatným nabíjením, což tímhle nabíječem eliminujeme (ono nekorektní nabíjení se stává u nabíječů s ukončením po přesně dané době, kdy se nepoužívá akumulátor s danou proudovou kapacitou nebo není plně vybit - typicky nabíječe s časovačem) nebo špatným použitím, hlavně nadměrným vybíjecím proudem nebo hlubokým vybitím.

Velmi obdobné charakteristiky nabíjení mají i sekundární články NiCd, rozdíl je v jejich strmějším poklesu po dosažení maximálního napětí (-dV/dt), proto je lze také tímto nabíječem nabíjet. Dokonce lze říci, že se tímto nabíječem budou nabíjet lépe než NiMH. Nicméně konstrukci jsem navrhoval/vyvíjel a ladil jen na NiMH.

Schéma:


Obr. 2: Schéma zapojení

Konkrétní obvodové řešení jsem stvořil s MCU Atmel ATtiny26L-8PI, jež pro tuto aplikaci obsahuje dostatečný počet I/O linek, kapacitu paměti a hlavně 10ti bitový AD převodník s 11ti násobným multiplexem a interní referencí 2,56V. Celá přesnost měření je závislá na tomto vnitřním napětí, nicméně požadujeme jen přesnost u -dV. MCU pracuje s vnitřním RC clockem 8MHz.

MCU pomocí linek PA[0..3] přímo řídi báze výkonových PNP tranzistorů BD140 (Uce = -80V; Ic = -1,5A; Ib = -0,5A; Pc = 12,5W). Napětí na akumulátorech se měří piny PA[4..7], která se postupně multiplexerem připojují k AD převodníku. Piny PB[0..3] ovládají svit signalizačních zelených LED. Odpory R1 - R4 stanovují Ib přibližně na 13mA. Odpory R10 až R13 stanovují udržovací proud po ukončení nabíjení, jelikož nabíječ po dosažení plného nabití akumulátory úplně neodpojí, ale napájí je udržovacím proudem, čímž jsou hrazeny ztráty způsobené samočinným vybíjením. Vliv na udržovací proud mají i hlavní nabíjecí odpory RA1 až RA4 avšak jejich velikost je řádově desetkrát menší dá se jejich vliv zanedbat.

Nabíjecí proud je stanoven pomocí odporů RA1 až RA4 a jejich volba je závislá na proudové kapacitě použitých akumulátorů. Diody D6 až D9 zabraňují vybíjení akumulátorů do obvodu nabíječe při vypnutém napájení.

Hodnoty R1x a RAx stanovíme takto:

Kde:
Inab - požadovaný nabíjecí proud
Iudr - požadovaný udržovací proud
Ucc - napájecí napětí - cca 5,3V
Uce - úbytek na sepnutém BD140 - cca 0,2V
Uak - úbytek na diodě - cca 0,8V
Uaku - napětí na akumulátoru - cca 1,3V

Takto stanovíme hodnoty jen přibližně, nicméně je to postačující jelikož akumulátory nejsou citlivé na hodnotu nabíjecího proudu (teda pokud není až moc velký). S použitými součástkami (BD140, 1N4007) je maximální nabíjecí proud 0,8 - 1A. Doporučuji spíše volit do 0,5A aby se nemusely BD140 příliš chladit (také diody 1N4007 se značně zahřívají). Při vyšších nabíjecích proudech je také nutno snížit hodnoty rezistorů v bázi tranzistorů BD140, tak aby se zvětšil proud do báze a tak se zmenšil úbytek Uce. Maximální hodnota proudu z pinu MCU je 40mA a celková hodnota proudu přes MCU je 200mA! U rezistorů RAx je nutno ještě stanovit jejich výkonovou ztrátu a vhodně je dimenzovat.

Mnou používané hodnoty jsou pro AA: Inab = 0,36A (proudová kapacita akumulátorů je 1800mAh) => RAx = 8R2/2W, Iudr = 36mA => R1x = 82R a pro AAA: Inab = 0,15A (750mAh) => RAx = 18R/2W, Iudr = 15mA => R1x = 180R. Tudíž nabíjím proudem odpovídajícím 20% proudové kapacity. Pro úplně vybitý akumulátor pak platí doba nabíjení cca 6 - 7 hodin.

Algoritmus
Hlavní části algoritmu nabíjení jsou časovač a AD převodník. Pro dosažení eliminace vlivu úbytku napětí na přechodových odporech vedoucích od a k akumulátoru se napětí na akumulátoru měří jen při odpojeném nabíjení (BD140 jsou dočasně vypnuty - do akumulátorů teče jen proud udržovací). Tím se zajistí vysoká přesnost měření napětí, jelikož přechodové odpory se neuplatní. Doba nabíjení je proto 1,98s, pak se nabíjení přeruší a za 0,02s se 100krát změří jednotlivá napětí a nabíjení se opětovně obnoví.

Posléze se vyhodnocuje naměřené údaje. Stanoví se hodnota napětí a to jako průměr z oněch 100 naměřených hodnot (při měření docházelo k poskakování hodnoty ve velkém intervalu, tímto průměrem se ono poskakování eliminovalo do rámce 1bitu). Pokud je napětí na vstupu PA[4..7] vyšší než 1,7V jedná se o rozpojenou smyčku - není připojen žádný akumulátor a nenabíjí se. Hodnota menší než 0,7V signalizuje zkrat na výstupu nebo vadný akumulátor (hluboké vybití) - signalizace tohoto stavu zajišťuje svým blikáním příslušné LED (Aku1 - D2, Aku2 - D3 ...) a taktéž se nenabíjí.

Pokud je napětí na vstupech PA[4..7] v intervalu <0,7;1,7>V spustí se nabíjení (sepne příslušný BD140) a jako signalizace se rozsvítí LED. Toto nabíjení se však nezapne pokud již akumulátor v nabíječi byl! Takže postup je nejprve zapnout nabíječ a pak do něj vložit akumulátor. Pokud nejprve vložíme akumulátor a až pak zapneme celý nabíječ nic se nestane.

Jelikož při zahájení nabíjení docházelo velmi často k chybnému vyhodnocení -dV, které je stanoveno na 8mV, je algoritmus doplněn o funkci HoldOff, která na prvních 8 minut po zahájení nabíjení kompletně vyřadí ukončení nabíjení. V těchto 8 minutách lze nabíjení ukončit jen vytažením akumulátoru z nabíječe. Onen jev (kolísání napětí akumulátoru) se eliminuje zahřáním akumulátoru a prakticky na to stačilo 5 minut. Zde je nutno dbát na to aby akumulátor nebyl nabit, jelikož těchto 8 minut bude přebíjen a tudíž poškozován!

Takže po vložení vybitého (nebo částečně vybitého) akumulátoru a po uplynutí doby časovače HoldOff se začne stanovovat maximum. Maximum je de facto předešlá změřená hodnota, která se srovnává s aktuálně změřenou hodnotou a pokud je menší stanoví se maximum nové z aktuálně změřené hodnoty. Tímto způsobem se v průběhu nabíjení nalezne maximum charakteristiky akumulátoru. Od maxima se poté odečítá aktuální hodnota a onen rozdíl je -dV a pokud je větší než 8mV nabíjení se ukončí.

Jako doplněk k algoritmu -dV je ještě přidán 30ti minutový časovač, který měří dobu kdy je napětí menší než maximum po uplynutí těchto 30ti minut se nabíjení taktéž ukončí. Funkce byla přidána jelikož u NiMH není onen pokles až tak radikální a aby nedošlo k zbytečnému přebíjení. Při každém novém stanovení maxima se vždy tento časovač nuluje.

Přesnost hodnoty -dV, je závislá na přesnosti referenčního napětí AD převodníku a přesnosti měření AD převodníku. Reference je 2,56V a AD převodník je 10ti bitový, to znamená že nejmenší skoková změna s jakou lze měřit vstupní napětí je 2,5mV ( = 2,56V/1024) takže -dV lze změřit jen jako 7,5mV nebo 10mV. Zde se uplatní ono poskakování hodnoty, totiž změřením -dV = 7,5mV (ještě se zde uplatní "strojové zaokrouhlení" takže je to 7mV) stačí aby hodnota jednou poskočila o bit na 10mV a nabíjení se ukončí => nečeká se na dosažení hodnoty 10mV.

MCU nemá plně vytížené všechny I/O piny, proto tři zbývající PB[4..6] slouží jako diagnostické výstupy stavu systému. PB6 slouží pro signalizaci četnosti přerušení časovače 1, přerušení nastává každých 10ms (frekvence je tudíž 50Hz - pin se vždy neguje). PB5 signalizuje stav subalgoritmu pro HoldOff smyčky 1 (T1, R10, RA1 ...), log.1 vyřazen z činnosti, log.0 zapnut. PB4 signalizuje zatížení hlavní nekonečné smyčky programu ( while(1){} ). Tyto diagnostické výstupy nemají žádný vliv na nabíjení, jejich hlavní smysl byl při vývoji a následném ladění kódu.


Obr. 3: Nastavení pojistek procesoru pro použití interního RC oscilátoru 8MHz

Napájení
Nabíječ byl od počátku vyvíjen s ohledem na napájení z PC zdroje AT. 5V/20A je naprosto postačující pro nabíjení jednotlivých akumulátorů. Jelikož se jedná o zdroj spínaný a ještě navíc se přerušuje nabíjení kvůli přesnosti měření je napájení MCU doplněno o D1, C1 a C8 a pro AD převodník je ještě přidáno L1 a C2.

Závěr
Nabíječ byl vyvíjen s ohledem na potřebu separovaného nabíjení článků NiMH. Jako vzor pro vývoj byly brány principy a funkce obvodu Motorola MC33340, jenž je monolitický rychlonabíjecí obvod pro akumulátory NiMH a NiCd. Tvořit nabíječ s tímto obvodem se mi nechtělo protože umí nabíjet jen jeden akumulátor (akupack) a cenově je srovnatelný s MCU ATtiny26 (cca 40-50Kč).


Obr. 4: Fotografie nabíječe
 
Obr. 5: Fotografie nabíječe
Seznam součástek
R1             330R
R2             330R
R3             330R
R4             330R
R5             100k
R6             560R
R7             560R
R8             560R
R9             560R
R10            viz text
R11            viz text
R12            viz text
R13            viz text
RA1            viz text
RA2            viz text
RA3            viz text
RA4            viz text
C1             100n
C2             100p
C8             470u/16V
L1             10uH
D1             BAT48
D2             LED
D3             LED
D4             LED
D5             LED
D6             1N4007
D7             1N4007
D8             1N4007
D9             1N4007
T1             BD140
T2             BD140
T3             BD140
T4             BD140
IO1            ATtiny26-8PI

Autor: Tomáš Solarski

Odkazy & Download:
Domovská stránka autora konstrukce - http://www.solarskit.wz.cz

Firmware pro procesor - tinynabij_fw.zip







GooglePlus1 FaceBook Twitter del.icio.us DiGG Google StumbleUpon Google Buzz Email RSS PDF Tisk

Komentáře (5):

Zobrazit starší 30 dnů (5)...



Název příspěvku: Vaše jméno: host
                 
  Zakázat formátování [Zakáže kódování a nahrazování smajlíky.]
Připojit soubory
reklama:
USB I/O modul s MCP2200
Malý modul USB I/O a UART s obvodem Microchip MCP2200
Skladem od 243 Kč

Informace uvedené v článcích jsou platné v době jejich vydání a samotné články jsou určeny pouze jako zdroj informací. Autor článku ani správce webu nenesou žádnou zodpovědnost za případné újmy na majetku a zdraví. Názvy společností a výrobků, loga a další multimediální materiál mohou být ochrannými známkami příslušných společností.
RSS kanály: | |
+420 723 846 377
info@pandatron.cz
Všechna práva vyhrazena | mobilní verze | © Copyright 2000 - 2016 ISSN 1803-6007