Celé zařízení (klikněte pro plné rozlišení)
Jedná se o zařízení na měření kapacity (mAh, Ah) a vnitřního odporu akumulátorů. Je zde i možnost provozu v režimu proudové zátěže, například pro testování zdrojů.
Celé zařízení je rozděleno na dvě desky: řídící a vybíjecí. Na řídící desce je osazen osmibitový mikrořadič Atmel ATmega328P. Ten je umístěn v patici pro možnost případné jednoduché výměny při jeho poškození. Dále jsou zde osazeny konektory pro připojení displeje, dvoubarevné LED (nevyužito), tlačítek pro vstup od uživatele, bzučáku, napájení a programování (10-pinový ISP konektor, pro programování jsem použil programátor USBasp). Na této desce jsou také osazeny stabilizátory napětí (9 V pro vybíjecí desku a 5 V pro zbytek elektroniky). Na vybíjecí desce je operační zesilovač, výkonový MOSFET, konektory (pro připojení akumulátoru, ventilátoru a řídící desky).
Jako displej je zde použit znakový displej 20x4 s řadičem HD44780 (respektive jeho ekvivalentem).
Myšlenku a část zapojení (převážně okolo vybíjecí části) jsem převzal od Danyka (odkaz zde) - parametry (vybíjecí parametry a rozsah napětí) jsou téměř stejné, má verze má kompletně jiný kód, více funkcí a podstatná část zapojení je rozdílná - viz dále.
Princip funkce v režimu měření kapacity je jednoduchý - akumulátor se vybíjí na předem stanovené napětí konstantním proudem, z tohoto se vypočítá kapacita podle vzorce C=T*I [Ah, h, A]. V režimu měření vnitřního odporu se změří napětí při dvou různých proudech, odpor se vypočítá takto: Ri=ΔU/ΔI.
Vnitřnosti (klikněte pro plné rozlišení)
Řídící deska a chladič (přidělaný na plastové destičce) jsou přidělány pomocí šroubků M3 - chladič je přilepen na plastovou destičku, která je přišroubovaná ke spodní straně krabičky. V krabičce jsou vyvrtány díry, do nich vloženy šrouby, z druhé strany jsou jednotlivé části přidělány matičkami.
Celé zařízení je umístěno v krabičce KP 9 V (čtyřdílná plastová krabička s větracími otvory, 150x179x70 mm)
Přední panel (klikněte pro plné rozlišení)
Na předním panelu je umístěn displej a tlačítka.
Zadní panel (klikněte pro plné rozlišení)
V zadní části zařízení je chladič a v zadní desce je díra pro ventilátor (SUNON EE50101S1-999). Vedle něj je napájecí konektor a konektor pro připojení testovaného akumulátoru.
Schéma řídící desky (klikněte pro plné rozlišení)
Na této desce se nachází mikrořadič ATmega328P, konektory (napájení, programovací konektor, konektor pro připojení vybíjecí desky, konektor pro displej, vyvedené UART rozhraní - zatím nevyužito, konektory pro tlačítka a bzučák), napájecí a další podpůrná elektronika.
Napájecí část se skládá z konektoru P3, vratné pojistky F1 a stabilizátorů U1, U2 (9 V pro OZ a 5 V pro mikrořadič). Blízko nich jsou osazeny kondenzátory C8, C9, C16, C17 (blokovací). Stabilizátor U2 by měl být co nejpřesnější, na jeho přesnosti závisí přesnost vybíjecího proudu.
Na mikrořadič je připojen krystal Y1, okolo mikrořadiče jsou opět blokovací/filtrační kondenzátory C3-C6, C10, C11, blokující napájení a odrušující vstupy ADC. Dále jsou zde tranzistory pro spínání bzučáku a ventilátoru.
Rozlišení zabudovaného 10b ADC (0-1023) nebylo dostatečně vysoké, takže se zde používá oversampling k získání 11b rozlišení (0-2046).
Ke konektoru P6 je přivedeno UART rozhraní, zatím ale není využito.
Displej je připojen ke konektoru P2. Číslování jeho pinů odpovídá standardnímu zapojení 16-pinových znakových LCD.
Dále je zde programovací konektor P4, ke kterému lze připojit programátor - USBasp či podobný.
Ke konektoru P7 jsou připojena tlačítka (GND OK Down Up ESC), tlačítka spínají proti zemi.
Bzučák (zde používám běžný magnetoelektrický z ATX desky, pro použití pieza připojte paralelně 1kΩ rezistor) se připojuje ke konektoru P9.
Jsou zde dva trimry: RV2 na nastavení děliče napětí z baterie (aby bylo měření napětí přesné), RV1 na nastavení kontrastu displeje.
Schéma vybíjecí desky (klikněte pro plné rozlišení)
Tato deska je připojena k řídící desce pomocí plochého kabelu (připojeného ke konektoru P1) - měl by být pokud možno krátký.
Jako vybíjecí prvek je zde použit výkonový MOSFET pracující v lineárním režimu.
Deska je napájena napětím 9 V, 5 V nemusí stačit k plnému otevření běžných MOSFETů. Zde je osazen IRFP250N. Max. výkon, co zde protopí, je 51 W - je tedy potřeba ho dobře chladit, použil jsem chladič z osobního počítače ve spojení s ventilátorem (ten by měl být připojen ke konektoru P6). Je zde ještě 5A pojistka pro případ selhání MOSFETu.
Regulace je zajištěna pomocí operačního zesilovače. PWM signál z mikrořadiče je převeden na napětí pomocí dolní propusti ve formě RC článku tvořeného kondenzátorem C4, rezistorem R3 a děličem napětí (R4, R5, RV1). Trimrem RV1 se ladí vybíjecí proud. Hodnota kondenzátoru C4 by měla být zvolená tak, aby časová konstanta RC článku (C4, R3) byla alespoň 30x vyšší než perioda PWM (v tomto případě cca 30 kHz, tzn. perioda 33 µs), tzn. minimálně okolo 100 nF. Byl by asi lepší ještě větší, ale s hodnotami nad 1 µF se už podstatně zpomalí odezva. Používám zde 1 µF.
Proud se snímá na rezistorech R8-R10 pod sourcem MOSFETu. Napětí na těchto rezistorech bude odpovídat cca 0,28 V při plné zátěži. Toto napětí se přivádí na invertující vstup OZ.
Zde použitý OZ (LM358) má poměrně špatné parametry (offset), takže je proud na nízkých hodnotách dost nepřesný, bylo by vhodné použít podstatně lepší operační zesilovač.
Ke konektoru P7 lze připojit například teplotní senzor. Zatím zde není využit.
Trimrem RV1 se zde dolaďuje vybíjecí proud.
Rezistory R1, R2 mohou oba mít 100 kΩ, slouží jako část děliče napětí ze vstupu pro ADC.
Zařízení je ovládáno pomocí čtyř tlačítek (OK/←, Up, Down, ESC/→). Tlačítkem OK/← se potvrzuje položka v menu/posouvá se doleva při zadávání hodnot, tlačítko ESC/→ slouží k ukončení vybíjení, posunu doprava a výstupu z menu. Tlačítky Up/Down se nastavuje příslušná hodnota.
Po zapnutí se na displeji vypíše text "Battery analyzer (mAh meter)" a verze firmwaru. Dále se zobrazí hlavní menu s položkami "Measure capacity", "Constant current", "Measure internal R" a "Settings". Položku vybíráme pomocí tlačítek UP a DOWN, potvrdíme OK/←.
První položka vede do podmenu vybíjení akumulátoru a měření kapacity. Zde můžeme nastavit vybíjecí proud a konečné napětí, na kterém se vybíjení s pípnutím bzučáku zakončí. Tlačítky UP/DOWN se zde nastavuje vybíjecí proud či konečné napětí. Tlačítky OK/← a ESC/→ se pohybujeme mezi nastavováním napětí/proudu a jednotlivými číslicemi obou hodnot, případně potvrzujeme, či vystupujeme z menu. Během vybíjení není možné měnit vybíjecí proud. Na displeji se zobrazuje momentální hodnota napětí, hodnota proudu a naměřená kapacita v mAh.
Druhá položka vede do podmenu režimu konstantního proudu. Zde si můžeme nastavit proud, kterým se bude zařízení snažit zatěžovat zdroj/akumulátor i při změně napájecího napětí. Proud jde za běhu měnit. Na displeji se během funkce tohoto režimu zobrazuje momentální napětí, proud a výkon.
Druhá položka vede do podmenu režimu konstantního proudu. Zde si můžeme nastavit proud, kterým se bude zařízení snažit zatěžovat zdroj/akumulátor i při změně napájecího napětí. Proud jde za běhu měnit. Na displeji se během funkce tohoto režimu zobrazuje momentální napětí, proud a výkon.
Třetí položka vede do podmenu měření vnitřního odporu zdroje. Zde je možné zvolit dva vybíjecí proudy (volí se pomocí Up/Down s předdefinovaných hodnot). Postupně se nastaví oba z nich, jeden na 1 s a druhý na 150 ms. Zaznamená se napětí v obou bodech a z těchto hodnot se spočítá rozdíl proudu a rozdíl napětí, z čehož se spočítá výsledný odpor.
Ještě je zde podmenu s nastaveními, kde lze zapnout/vypnout zvuk, nastavit kompenzaci offsetu AD převodníku (testoval jsem několik mikroprocesorů a offset měření byl cca - 60mV, pro co je tedy nadefinovaná i základní hodnota pro kompenzaci, ale nepovedlo se mi zjistit, co přesně tuto chybu způsobuje) a potvrdit uložení těchto nastavení do paměti EEPROM.
Firmware pro mikrořadič je napsán v programovacím jazyku C. Používal jsem vývojové prostředí Code::Blocks, kompilátor AVR-GCC a nástroj na programování avrdude spolu s programátorem USBasp.
Firmware je ke stažení na konci stránky.
V této verzi firmware jsem přidal podporu pro teplotní senzor (lze připojit teplotní senzor LM35 ke konektoru na výkonové desce. +5V přijde na Vcc senzoru, GND na GND a TFB na výstup senzoru. Je nutné ještě připojit rezistor cca 2-10 kΩ mezi výstup senzoru a zem. Ve firmwarovém balíčku jsou dva různé HEX soubory, jeden pro použití se senzorem, druhý pro použití bez senzoru) a pro indikační RG LED.
Při použití teplotního senzoru a příslušného firmwaru je ventilátor ovládán podle teploty. >55°C = úroveň zapnutí ventilátoru, <48°C = úroveň vypnutí ventilátoru, ≥78°C = úroveň nouzového zastavení vybíjení. Tyto úrovně jdou změnit v souboru config.h (po úpravě souboru je potřeba projekt rekompilovat).
Je zde nějaká velmi základní/testovací podpora pro češtinu, tu lze nastavit v souboru config.h.
Je zde přidáno měření mWh a zobrazení výkonu (při vybíjení či na obrazovce s naměřenými údaji po dokončení se na toto přepnete tlačítky UP/DOWN).
Přesnost měření odporu (i celková přesnost měření) je zde zlepšená - oversampling/průměrování používá mnohem vyšší počet vzorků. Také jsem zobrazil kritickou chybu při měření delších časů/vyšších kapacit.
I po hardwarové stránce jsem provedl nějaké úpravy - byla přidána indikační LED a tepelný senzor. Dále byly přidány banánky a svorkovnice na přední panel.
Celé zařízení (klikněte pro plné rozlišení)
Montáž senzoru LM35 (klikněte pro plné rozlišení)
Ukázka měření vnitřního odporu (klikněte pro plné rozlišení)
Ukázka měření včetně mWh (klikněte pro plné rozlišení)