Digitální měřič kapacity a vnitřního odporu baterií. Zařízení pro měření kapacity baterie. Základní metody Obvod pro měření kapacity li ion baterie

Toto zařízení je určeno k měření kapacity Li-ion a Ni-Mh akumulátorů a také k nabíjení Li-ion akumulátorů s volbou počátečního nabíjecího proudu.

Řízení

Zařízení připojíme na stabilizovaný zdroj 5V a proud 1A (například z mobilu). Indikátor zobrazí na 2 sekundy výsledek předchozího měření kapacity „xxxxmA/c“ a na druhém řádku hodnotu registru OCR1A „S.xxx“. Vložíme baterii. Pokud potřebujete nabít baterii, stiskněte krátce tlačítko CHARGE, pokud potřebujete změřit kapacitu, pak krátce stiskněte tlačítko TEST. Pokud potřebujete změnit nabíjecí proud (hodnotu registru OCR1A), stiskněte dlouze (2 sekundy) tlačítko CHARGE. Přejděte do okna úpravy registru. Pustíme tlačítko. Krátkým stisknutím tlačítka CHARGE měníme hodnoty registru v kruhu (50-75-100-125-150-175-200-225), první řádek ukazuje nabíjecí proud prázdné baterie při zvolená hodnota (za předpokladu, že máte v obvodu odpor 0,22 Ohm). Krátce stiskněte tlačítko TEST; hodnoty registru OCR1A se uloží do energeticky nezávislé paměti.
Pokud jste se zařízením prováděli různé manipulace a potřebujete resetovat hodiny nebo naměřenou kapacitu, pak dlouze stiskněte tlačítko TEST (hodnoty registru OCR1A se neresetují). Jakmile je nabíjení dokončeno, podsvícení displeje zhasne, pro zapnutí podsvícení krátce stiskněte tlačítko TEST nebo CHARGE.

Provozní logika zařízení je následující:

Po připojení napájení indikátor zobrazí výsledek předchozího měření kapacity baterie a hodnotu registru OCR1A, uloženou v energeticky nezávislé paměti. Po 2 sekundách přejde zařízení do režimu určování typu baterie na základě napětí na svorkách.

Pokud je napětí větší než 2V, pak se jedná o Li-ion baterii a napětí do úplného vybití bude 2,9V, v opačném případě se jedná o baterii Ni-MH a napětí do úplného vybití bude 1V. Ovládací tlačítka jsou dostupná pouze po připojení baterie. Dále zařízení čeká na stisknutí tlačítka Test nebo Charge. Na displeji se zobrazí "_STOP". Když krátce stisknete tlačítko Test, zátěž se připojí přes MOSFET.

Velikost vybíjecího proudu je určena napětím na rezistoru 5,1 Ohm a každou minutu se sčítá s předchozí hodnotou. Zařízení používá k provozu hodin 32768 Hz quartz.

Displej zobrazuje aktuální hodnotu kapacity baterie "xxxxmA/s" a torus vybití "A.xxx" a také čas "xx:xx:xx" od okamžiku stisknutí tlačítka. Zobrazí se také animovaná ikona slabé baterie. Na konci testu pro Ni-MH baterii se zobrazí zpráva „_STOP“, výsledek měření se zobrazí na displeji „xxxxmA/c“ a uloží se.

Pokud je baterie Li-ion, pak se výsledek měření zobrazí také na displeji „xxxxmA/c“ a je zapamatován, ale okamžitě se aktivuje režim nabíjení. Na displeji se zobrazí obsah registru OCR1A "S.xxx". Zobrazí se také animovaná ikona nabíjení baterie.

Nabíjecí proud je nastaven pomocí PWM a je omezen odporem 0,22 Ohm. V hardwaru lze nabíjecí proud snížit zvýšením odporu z 0,22 Ohm na 0,5-1 Ohm. Na začátku nabíjení se proud postupně zvyšuje až na hodnotu registru OCR1A nebo dokud napětí na svorkách baterie nedosáhne 4,22V (pokud byla baterie nabitá).

Velikost nabíjecího proudu závisí na hodnotě registru OCR1A – čím větší hodnota, tím větší nabíjecí proud. Když napětí na svorkách baterie překročí 4,22V, hodnota registru OCR1A se sníží. Proces dobíjení pokračuje, dokud není hodnota registru OCR1A 33, což odpovídá proudu asi 40 mA. Tím nabíjení končí. Podsvícení displeje se vypne.

Nastavení

1. Připojte napájení.
2. Připojte baterii.
3. Připojte voltmetr k baterii.
4. Pomocí dočasných tlačítek + a - (PB4 a PB5) zajistíme shodu údajů voltmetru na displeji a referenčního voltmetru.
5. Dlouze stiskněte tlačítko TEST (2 sekundy), dojde k uložení do paměti.
6. Vyjměte baterii.
7. Připojte voltmetr k rezistoru 5,1 Ohm (podle schématu poblíž tranzistoru 09N03LA).
8. Připojte nastavitelný zdroj na svorky baterie, nastavte napájení na 4V.
9. Krátce stiskněte tlačítko TEST.
10. Změříme napětí na rezistoru 5,1 Ohm - U.
11. Vypočítejte vybíjecí proud I=U/5,1
12. Pomocí dočasných tlačítek + a - (PB4 a PB5) nastavíme vypočítaný vybíjecí proud I na indikátoru „A.xxx“.
13. Dlouze stiskněte tlačítko TEST (2 sekundy), dojde k uložení do paměti.

Zařízení je napájeno ze stabilizovaného zdroje s napětím 5 Voltů a proudem 1A. Quartz na 32768Hz je navržen pro přesné měření času. Řadič ATmega8 je taktován z interního oscilátoru s frekvencí 8 MHz a dále je nutné nastavit ochranu proti vymazání EEPROM s příslušnými konfiguračními bity. Při psaní ovládacího programu byly použity vzdělávací články z tohoto webu.

Aktuální hodnoty napěťových a proudových koeficientů (Ukof. Ikof) lze vidět, pokud na třetím řádku připojíte displej 16x4 (pro ladění je vhodnější 16x4). Nebo v Ponyprog, pokud otevřete soubor firmwaru EEPROM (načtete z řadiče EEPROM).
1 byte - OCR1A, 2 byty - I_kof, 3 byty - U_kof, 4 a 5 bytů jsou výsledkem předchozího měření kapacity.

Video ze zařízení:


Navržený přístroj je určen pro měření kapacity a vnitřního odporu Ni-Cd a Ni-MH akumulátorů. Je zde zvuková indikace příliš nízkého napětí baterie a také okamžik konce jejího vybití.

Měření kapacity baterie je založeno na jejím vybíjení ustáleným proudem, měření doby vybíjení a vynásobení těchto hodnot. Při měření vnitřního odporu přístroj měří napětí baterie bez zátěže, následně při zátěži proudem 1A a na základě těchto údajů vypočítá vnitřní odpor baterie.

Schéma zařízení je na obr. 1. Jeho základem je mikrokontrolér ATmedav (DD1). Klávesnice s jednodrátovým rozhraním se skládá ze šesti tlačítek SB1-SB6. Informace o naměřených parametrech baterie se zobrazuje na devítimístném LED indikátoru HG1. K vybití připojené baterie je použit napěťově řízený zdroj proudu (VTUN) na operačním zesilovači DA2, tranzistoru VT1, rezistorech R9, R10, R19-R21, R23 a kondenzátorech C7, C9.

Pokud je napětí připojené baterie pod 1 V, klávesnice zařízení se zablokuje a kapsle BF1 vydává tři přerušované zvukové impulsy o frekvenci 600 Hz. Pokud je napětí baterie vyšší než 1 V, kapsle BF1 vydává dva přerušované zvukové impulzy o frekvenci 3000 Hz, když je baterie připojena, a také po dokončení vybíjení na nastavené napětí

Po připojení akumulátoru nastavte napětí, na které se má vybít, pomocí tlačítek SB3 a SB4. Krok nastavení při krátkém stisknutí je 0,1 V. Při přidržení tlačítka je prvních deset hodnot kroku 0,1 V, poté 1 V. Poté se stisknutím tlačítek SB1 a SB2 nastaví vybíjecí proud. Pokud tato tlačítka podržíte méně než pět sekund, aktuální hodnota se nezmění a zobrazí se její aktuální hodnota, jak je znázorněno na fotografii na Obr. 2 (symbol і ve spodní poloze). Pokud tlačítka SB1 a SB2 podržíte déle než pět sekund, aktuální hodnota se bude měnit v proměnlivých krocích: nejprve 50 mA, poté 150 mA. V tomto případě se symbol і zobrazí v horní poloze, jak je znázorněno na fotografii na Obr. 3.

Maximální hodnota vybíjecího proudu je 2,55 A Jakmile vybíjecí proud dosáhne hodnoty větší než nula (když je napětí baterie větší než nastavená prahová hodnota nebo jí rovné), zvukový signál zmizí a rozsvítí se LED HL1 blikat s frekvencí 0,25 Hz. Po stisknutí tlačítka SB5 se změří a uloží napětí bez zátěže, poté se při zátěži vypočítá vnitřní odpor v ohmech, který se zobrazí v nižších číslicích indikátoru se symbolem g, jak je znázorněno na fotografii na Obr. 4.

Když stisknete tlačítko SB6, nejvyšší číslice indikátoru HG1 zobrazí aktuální napětí baterie. Pokud není stisknuto žádné tlačítko, vysoké číslice indikátoru HG1 ukazují napětí, na které je třeba baterii vybít, a nízké číslice ukazují kapacitu ve formátu XX,XX ampérhodin. Bezvýznamné nuly v řádu desítek voltů a ampérhodin jsou softwarově zrušeny.

Většina dílů je osazena na desce plošných spojů ze sklolaminátu potaženého jednostrannou fólií, jejíž nákres je na Obr. 5 Tenké obdélníky zobrazují součásti R7, R8 a C5 pro povrchovou montáž nainstalované na straně vodičů tištěných spojů.

Pro zajištění linearity proudu ITUN v celém intervalu je nutné použít operační zesilovač DA2 s co nejnižším napětím nulového offsetu a tranzistor VT1 s nízkým prahovým napětím. V autorské kopii je nulové předpětí operačního zesilovače DA2 asi 4 mV a tranzistoru VT1 s prahovým napětím 1,85 V při odběrovém proudu 1 A, nelinearita proudu ITUN nepřesáhla 10%. Minimální hodnota proudu ITUN není větší než 2 mA. Tranzistor VT1 je instalován bez chladiče. K jeho chlazení slouží ventilátor z počítačového procesoru. Ventilátor a zařízení jsou napájeny z nestabilizovaného síťového adaptéru s výstupním napětím 9..12 V a zatěžovacím proudem minimálně 0,5 A.

Nastavení se skládá z výběru rezistorů R6 a R9. Výběrem odporu R6 se pomocí standardního voltmetru určují hodnoty nejvýznamnějších číslic indikátoru HG1. Dále stisknutím tlačítek SB1 a SB2 se na indikátoru HG1 zobrazí požadovaná hodnota vybíjecího proudu, změřte proud ITUN standardním ampérmetrem a vyberte rezistor R9 a nastavte měřený proud na hodnotu rovnající se hodnotám indikátoru HG1. .

P.S. Pokud nedochází k samobuzení generátoru hodin mikrokontroléru, jeho piny 9 a 10 by měly být připojeny ke společnému vodiči přes kondenzátory o stejné kapacitě 12...22 pF.

Programy pro mikrokontroléry lze stáhnout.


Datum publikace: 07.06.2012


Názory čtenářů
  • [e-mail chráněný] / 18.07.2019 - 21:40
    Vážený Ozolin M.A. Postavil jsem rozložení vašeho obvodu Rádio č. 7, 2015 na ATtiny26 Jak jsem pochopil, v obvodu je chyba s křemenem. Diagram ukazuje hodinový rezonátor 32768Hz. A pojistky (H-17, L-EE) začaly pracovat se 4 MHz quartz. Možná jsou pojistky označeny špatně? Prosím, řekněte mi.. Kde je překlep? Tak, aby LED blikala frekvencí 0,5Hz jako v popisu. Možná potřebujete méně křemene? Typ 3,2MHz/3,579575/3,68640/ Piezokeramický rezonátor ZTA 3,58 MHz? Schéma je jednoduché a cool. Není nic nadbytečného. Zatím funguje na 4MHz. Díky tobě. Když mi řekneš o quartzu, bude to naprosto skvělé. S úctou, Romane.
  • Ozolin M. A / 5. 11. 2015 - 10:26
    Odpor R8 by měl být 1, ne 10 kOhm! OMYL REDAKCE ROZHLASOVÉHO ČASOPISU A TEN, KTERÝ ABY SE PODÍVAL, ZDE ČLÁNEK VLOŽIL. Na tuto chybu jsem je upozornil ihned po zveřejnění článku a zveřejnění opravy v sekci „naše konzultace“. Odkaz na pracovní schéma http://maxoz.ru/newAk/newAk.gif
  • Ozolin M. A / 5. 11. 2015 - 10:13
    Pánové Boris a Alexander K.G, zkontrolujte provozuschopnost dílů nebo hledejte chyby v instalaci! Firmware funguje a byl mnohokrát testován!
  • Alexander G.K. / 23. 4. 2015 - 10:02
    Souhlasím s Borisem - schéma NEFUNGUJE! Po „tančení s tamburínou“ to už nikdy nezačalo. Jediné, co lze zjistit, je napětí nad nebo pod 1 V. (tři nebo dvě „pípnutí“) Pane M. Ozolin, nereagujte (!) - *.HEX nebudu se ptát. Špatný obchod....
  • Sergey / 18.09.2013 - 07:36
    Jak nastavit pojistky pro firmware ovladače?
  • Boris / 28.05.2013 - 06:59
    Obvod nefunguje, když je stisknuto, všechna tlačítka zobrazují stejná čísla ve dvou nejméně významných číslicích. Pane M. Ozolin, odpovíte?
  • Vitalij / 16. 11. 2012 - 03:55
    B (ITUN) - pro dosažení dobré linearity je lepší nahradit operační zesilovač LM357N MCP601.
  • Alexander / 22.10.2012 - 17:10
    Lze tímto měřičem kontrolovat Li-ion a Li-pol baterie?

Zdravím vás, občané Datagorie! Dovolte mi, abych vám představil svůj další výtvor – tester kapacity baterie. Zařízení samozřejmě není pro každý den, ale někdy se bez něj neobejdete!

Potřeboval jsem změřit zbývající kapacitu kyselinové baterie, v zimě se přece počítá každý Ampér, možná je čas baterii vyměnit? Jednoduché testy se zátěžovou vidlicí a měřením hustoty mi nevyhovovaly, nedaly mi informaci, zda budu mít dostatek energie na zahřátí auta na 40 minut na RV (asi 8 A/h) a následné nastartování vozu; se startérem.

Obvod testeru kapacity baterie

Jako každé dítě se narodilo v bolestech. Především chybami „porodníka“.

Fragment vyloučen. Náš časopis existuje z darů čtenářů. K dispozici je pouze plná verze tohoto článku



Řízený regulátor vybíjení



Umístění pojistky při programování ATmega8A MK


5. Všechny jmenovité hodnoty součástí jsou uvedeny v softwaru.

--
Děkuji za pozornost!
Igor Kotov, šéfredaktor časopisu Datagor


Deska plošných spojů v LayOut: ▼ 🕗 24. 10. 14 ⚖️ 144,03 Kb ⇣ 124 Dobrý den, čtenáři! Jmenuji se Igor, je mi 45, jsem Sibiřan a nadšený amatérský elektroinženýr. Vymyslel jsem, vytvořil a udržuji tento nádherný web od roku 2006.
Již více než 10 let existuje náš časopis pouze na mé náklady.

Dobrý! Dárek je u konce. Pokud chcete soubory a užitečné články, pomozte mi!

Nedávno jsem si začal všímat, že se můj smartphone začal rychleji vybíjet. Hledání softwarového „žrouta energie“ nepřineslo ovoce, a tak jsem začal přemýšlet, zda není čas na výměnu baterie. Nebyla však absolutní jistota, že příčinou byla baterie. Proto jsem se před objednávkou nové baterie rozhodl zkusit změřit reálnou kapacitu té staré. Za tímto účelem bylo rozhodnuto sestavit jednoduchý měřič kapacity baterie, zejména proto, že tato myšlenka byla inkubována dlouhou dobu - existuje mnoho baterií a akumulátorů, které nás obklopují v každodenním životě, a bylo by hezké mít možnost aby je čas od času otestovali.

Samotná myšlenka fungování zařízení je extrémně jednoduchá: je zde nabitá baterie a zátěž ve formě rezistoru, stačí změřit proud, napětí a čas během vybíjení baterie a na základě získaných dat , vypočítat jeho kapacitu. V zásadě si vystačíte s voltmetrem a ampérmetrem, ale sedět několik hodin u přístrojů je pochybné potěšení, takže to můžete udělat mnohem snadněji a přesněji pomocí dataloggeru. Jako takový rekordér jsem použil platformu Arduino Uno.

1. Schéma

S měřením napětí a času v Arduinu nejsou žádné problémy - je tam ADC, ale k měření proudu potřebujete bočník. Měl jsem nápad použít samotný zátěžový odpor jako bočník. To znamená, že když známe napětí na něm a předem změříme odpor, můžeme vždy vypočítat proud. Nejjednodušší verze obvodu se tedy bude skládat pouze ze zátěže a baterie, připojené k analogovému vstupu Arduina. Ale bylo by hezké zajistit vypnutí zátěže při dosažení prahového napětí na baterii (pro Li-Ion je to obvykle 2,5-3V). Proto jsem do obvodu zařadil relé, ovládané digitálním pinem 7 přes tranzistor. Konečná verze obvodu je znázorněna na obrázku níže.

Všechny prvky obvodu jsem umístil na kus prkénka, které je instalováno přímo na Uno. Jako zátěž jsem použil spirálu z nichromového drátu o tloušťce 0,5 mm s odporem asi 3 Ohmy. To dává vypočítaný vybíjecí proud 0,9-1,2A.

2. Měření proudu

Jak bylo uvedeno výše, proud se vypočítá na základě napětí na spirále a jejího odporu. Ale stojí za zvážení, že spirála se zahřívá a odpor nichromu poměrně silně závisí na teplotě. Pro kompenzaci chyby jsem jednoduše vzal charakteristiku proudového napětí cívky pomocí laboratorního zdroje a nechal jsem ji před každým měřením zahřát. Dále jsem v Excelu vygeneroval rovnici trendové čáry (graf níže), která dává poměrně přesnou závislost i(u) s přihlédnutím k vytápění. Je vidět, že čára není rovná.

3. Měření napětí

Protože přesnost tohoto testeru přímo závisí na přesnosti měření napětí, rozhodl jsem se tomu věnovat zvláštní pozornost. V jiných článcích již byla opakovaně zmíněna metoda, která umožňuje nejpřesněji měřit napětí pomocí regulátorů Atmega. Zopakuji jen krátce - podstatou je určení vnitřního referenčního napětí pomocí samotného regulátoru. Použil jsem materiály v tomto článku.

4. Program

Kód není nic složitého:

Text programu

#define A_PIN 1 #define NUM_READS 100 #define pinRelay 7 const float typVbg = 1,095; // 1,0 -- 1,2 float Voff = 2,5; // vypínací napětí float I; plovákový uzávěr = 0; plovák V; plovák Vcc; floatWh = 0; unsigned long prevMillis; nepodepsaný dlouhý testStart; void setup() ( Serial.begin(9600); pinMode(pinRelay, OUTPUT); Serial.println("Stiskněte libovolnou klávesu pro spuštění testu..."); while (Serial.available() == 0) ( ) Serial.println("Test je spuštěn..."; print("mA"); Vcc"); digitalWrite(pinRelay, HIGH); testStart = millis(); prevMillis = millis(); void loop() ( Vcc = readVcc(); //přečtení referenčního napětí V = (readAnalog(A_PIN) ) * Vcc) / 1023.000 //čtení napětí baterie if (V > 0.01) I = -13.1 * V * V + 344.3 * V + 23.2 //výpočet proudu podle I-V charakteristiky spirály else I=0; millis() - prevMillis) / 3600000 //výpočet kapacity baterie v mAh Wh += I * V * (millis() - prevMillis) / 3600000000 //výpočet kapacity baterie ve Wh prevMillis = millis(); ); // odeslání dat na sériový port if (V< Voff) { //выключение нагрузки при достижении порогового напряжения digitalWrite(pinRelay, LOW); Serial.println("Test is done"); while (2 >1) ( ) ) ) void sendData() ( Serial.print((millis() - testStart) / 1000); Serial.print(" "); Serial.print(V, 3); Serial.print(" ") Serial.print(I, 1) Serial.print(" ") float readAnalog(int pin); hodnoty a seřaďte je do režimu int sortValues ​​for (int i = 0; i< NUM_READS; i++) { delay(25); int value = analogRead(pin); int j; if (value < sortedValues || i == 0) { j = 0; //insert at first position } else { for (j = 1; j < i; j++) { if (sortedValues <= value && sortedValues[j] >= hodnota) ( ​​// j je vložení zalomení pozice; ) ) ) pro (int k = i; k >< (NUM_READS / 2 + 5); i++) { returnval += sortedValues[i]; } return returnval / 10; } float readVcc() { // read multiple values and sort them to take the mode float sortedValues; for (int i = 0; i < NUM_READS; i++) { float tmp = 0.0; ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); ADCSRA |= _BV(ADSC); // Start conversion delay(25); while (bit_is_set(ADCSRA, ADSC)); // measuring uint8_t low = ADCL; // must read ADCL first - it then locks ADCH uint8_t high = ADCH; // unlocks both tmp = (high << 8) | low; float value = (typVbg * 1023.0) / tmp; int j; if (value < sortedValues || i == 0) { j = 0; //insert at first position } else { for (j = 1; j < i; j++) { if (sortedValues <= value && sortedValues[j] >= hodnota) ( ​​ // j je vložení zalomení pozice; ) ) ) pro (int k = i; k > j; k--) ( // přesunout všechny hodnoty výše než aktuální čtení nahoru o jednu pozici sortedValues[k ] = seřazenéHodnoty ) seřazenéHodnoty[j] = hodnota; //vložení aktuálního čtení ) //return scaled mode of 10 values ​​​​float returnval = 0; for (int i = NUM_READS / 2 - 5; i< (NUM_READS / 2 + 5); i++) { returnval += sortedValues[i]; } return returnval / 10; }

Každých 5 sekund jsou na sériový port přenášeny údaje o čase, napětí baterie, vybíjecím proudu, aktuální kapacitě v mAh a Wh a napájecím napětí. Proud se vypočítá pomocí funkce získané v kroku 2. Když je dosaženo prahového napětí Voff, test se zastaví.
Podle mého názoru je jediným zajímavým bodem v kódu použití digitálního filtru. Faktem je, že při čtení napětí hodnoty nevyhnutelně „tančí“ nahoru a dolů. Nejprve jsem se snažil tento efekt snížit tím, že jsem jednoduše provedl 100 měření za 5 sekund a vzal průměr. Ale výsledek mě stále neuspokojoval. Při svých pátráních jsem narazil na takový softwarový filtr. Funguje to podobně, ale místo průměrování seřadí všech 100 naměřených hodnot vzestupně, vybere středních 10 a vypočítá z nich průměr. Výsledek na mě udělal dojem – kolísání měření se úplně zastavilo. Rozhodl jsem se jej použít k měření vnitřního referenčního napětí (funkce readVcc v kódu).

5. Výsledky

Data z monitoru sériového portu se importují do Excelu několika kliknutími a vypadají takto:

V případě mého Nexusu 5 je deklarovaná kapacita baterie BL-T9 2300 mAh. Ten, který jsem naměřil, je 2040 mAh s vybíjením do 2,5 V. Reálně ovladač pravděpodobně neumožní vybití baterie na tak nízké napětí, s největší pravděpodobností je prahová hodnota 3V. Kapacita je v tomto případě 1960 mAh. Rok a půl telefonní služby vedl ke ztrátě kapacity asi o 15 %. Bylo rozhodnuto odložit nákup nové baterie.
Pomocí tohoto testeru již bylo vybito několik dalších Li-Ion baterií. Výsledky vypadají velmi realisticky. Naměřená kapacita nových baterií se shoduje s deklarovanou kapacitou s odchylkou menší než 2 %.
Tento tester je také vhodný pro metal hydridové AA baterie. Vybíjecí proud v tomto případě bude asi 400 mA.