Obsah:

Další tester kapacity baterie: 6 kroků
Další tester kapacity baterie: 6 kroků

Video: Další tester kapacity baterie: 6 kroků

Video: Další tester kapacity baterie: 6 kroků
Video: Tester kapacity Motobatt MB-BCT 2024, Červenec
Anonim
Další tester kapacity baterie
Další tester kapacity baterie
Další tester kapacity baterie
Další tester kapacity baterie

Proč ještě jeden tester kapacity

Přečetl jsem spoustu různých pokynů k sestavení testeru, ale žádný z nich nevyhovuje mým potřebám. Chtěl jsem mít možnost vyzkoušet také více než jen samostatné články NiCd/NiMH nebo Lion. Chtěl jsem mít možnost vyzkoušet baterii elektrického nářadí, aniž bych ji nejprve rozebral. Rozhodl jsem se tedy, že se na věc podívám blíže a navrhnu vlastní. Jedna věc vede k druhé a nakonec jsem se rozhodl napsat instruktáž sám. Také jsem se rozhodl, že nepůjdu do všech podrobností o tom, jak skutečně postavit tester, protože každý se může rozhodnout pro určité volby, jako je velikost rezistoru, který má použít, nebo zda je zapotřebí PCB nebo je dostatečně Veroboard a existuje také spousta instrukcí, jak nainstalovat orla nebo jak vyrobit DPS. Jinými slovy, soustředím se na schémata a kód a na to, jak kalibrovat tester.

Krok 1: Historie - verze 1

Historie - verze 1
Historie - verze 1

Nahoře je první verze s níže zmíněnou přidanou podporou vstupu 10V (R12 a R17 a Q11 a Q12).

První verze byla víceméně převzata z instructable od deba168 (bohužel nemohu najít jeho instructable, aby poskytl odkaz). Byly provedeny pouze některé drobné změny. V této verzi jsem měl jeden 10 ohmový zatěžovací odpor ovládaný mosfetem. To však přineslo určité problémy. Při testování jednoho článku NiCd nebo NiMH byl potřebný čas snadno změřen v hodinách, ne -li dnech. Baterie 1 500 mAh trvala více než 12 hodin (proud byl pouze 120 mA). Na druhou stranu první verze mohla testovat pouze baterie pod 10V. A plně nabitá 9,6V baterie může být ve skutečnosti až 11,2V, což nebylo možné testovat kvůli limitu 10V. Bylo třeba něco udělat. Nejprve jsem přidal pár mosfetů a odporů, aby děliče napětí dokázaly umožnit více než 10V. To ale na druhou stranu přineslo další problém. Plně nabitá baterie 14,4 V může mít až 16,8 V, což s odporem 10 ohmů znamenalo proud 1,68 A a samozřejmě ztrátový výkon ze zatěžovacího odporu téměř 30 W. Takže s nízkým napětím příliš dlouhá doba testu a s vysokým napětím příliš vysoký proud. Očividně to nebylo adekvátní řešení a byl zapotřebí další vývoj.

Krok 2: Verze 2

Chtěl jsem řešení, kde proud zůstane v určitých mezích bez ohledu na napětí baterie. Jedním z řešení by bylo použít PWM a jen jeden odpor, ale já jsem preferoval řešení bez pulzujícího proudu nebo potřebu odvádět teplo mosfetu. Vytvořil jsem tedy řešení s 10 napěťovými sloty, každý o šířce 2 V, s použitím 10 3,3 ohmových odporů a mosfetu pro každý odpor.

Krok 3: Takto to dopadlo

Takto to dopadlo
Takto to dopadlo

Někdo by mohl tvrdit, že ztráta napětí přes mosfet je zanedbatelná, protože odpor mosfetu je tak nízký, ale ponechal jsem výběr mosfetu na čtečce, a proto může odpor jít i přes 1 ohm, kde začíná hmota. Ve verzi jedna výběr správného mosfetu by odstranil potřebu měření v nižších bodech, ale ve verzi 2 jsem se rozhodl měřit napětí pouze na jednom rezistoru, což pak dělá důležité mít skutečně dva měřicí body. A důvodem volby byla jednoduchost zapojení Veroboardu. To přidává určitou chybu přesnosti, protože naměřené napětí na jednom rezistoru je výrazně menší než měření na všech rezistorech. Při výběru komponent jsem se rozhodl použít to, co jsem již měl po ruce, nebo co jsem mohl snadno získat. To vedlo k následujícímu kusovníku:

  • Arduino Pro Mini 5V! DŮLEŽITÉ! Použil jsem 5V verzi a vše je na ní založeno
  • 128x64 I2C OLED displej
  • Rezistory 10 x 5 W 3,3 Ohm
  • 3 x 2n7000 mosfety
  • 10 x mosfety IRFZ34N
  • Rezistory 6 x 10 kOhm
  • 2 x 5 kOhm odpory
  • 16V 680uF kondenzátor
  • 1 starý ventilátor CPU

Do schémat jsem nepřidal následující

  • výsuvné odpory na linkách I2C, kterých jsem si všiml, učinily displej stabilnějším
  • elektrické vedení
  • kondenzátor v 5V řádku, který také stabilizoval displej

Při testování jsem si všiml, že zátěžové odpory se dost zahřejí, zvláště pokud byly všechny používány. Teplota se zvýšila na více než 100 stupňů Celsia (což je více než 212 stupňů Fahrenheita) a pokud má být celý systém uzavřen v krabici, mělo by existovat nějaké chlazení. Rezistory, které jsem použil, jsou 3,3 ohmů / 5 W a maximální proud by měl nastat s asi 2 V na odpor, což dává 2 V / 3,3 = 0,61 A, což má za následek 1,21 W. Nakonec jsem do krabice přidal jednoduchý ventilátor. Většinou proto, že jsem náhodou měl kolem sebe nějaký starý ventilátor CPU.

Schematická funkčnost

Je to docela přímočaré a samo vysvětlující. Testovaná baterie je připojena k sérii odporů a uzemnění. Body měření napětí jsou připojení baterie a první odpor. Rozdělovače napětí se pak používají k poklesu napětí na úroveň, která lépe vyhovuje Arduinu. Jeden digitální výstup slouží k výběru rozsahu děličů 10 V nebo 20 V. Každý odpor v zátěži lze jednotlivě uzemnit pomocí mosfetů, které jsou poháněny přímo Arduinem. A nakonec je displej připojen k pinům Arduino I2C. O schématu není moc co říct

Krok 4: Kód

Kód
Kód

Nahoře je vidět hrubá funkčnost kódu. Podívejme se tedy na kód blíže (soubory arduino ino jsou připojeny). Existuje řada funkcí a poté hlavní smyčka.

Hlavní smyčka

Když je měření připraveno, zobrazí se výsledky a provádění zde končí. Pokud měření ještě není provedeno, nejprve se zkontroluje, který typ baterie je vybrán, a poté napětí na vstupu. Pokud napětí překročí 0,1 V, musí být připojen alespoň nějaký druh baterie. V tomto případě je povolán podprogram, aby se pokusil zjistit, kolik článků je v baterii, aby rozhodl, jak testovat. Počet buněk je víceméně informací, které by bylo možné lépe využít, ale v této verzi je hlášeno pouze prostřednictvím sériového rozhraní. Pokud je vše v pořádku, zahájí se proces vybíjení a v každém kole hlavní smyčky se vypočítá kapacita baterie. Na konci hlavní smyčky je displej naplněn známými hodnotami.

Postup při zobrazování výsledků

Funkce showResults jednoduše nastaví řádky, které se mají zobrazit na displeji, a také řetězec, který se má odeslat do sériového rozhraní.

Postup měření napětí

Na začátku funkce se měří Vcc Arduina. Je nutné, aby bylo možné vypočítat napětí naměřená pomocí analogových vstupů. Poté se napětí baterie měří pomocí rozsahu 20 V, aby bylo možné rozhodnout, který rozsah použít. Poté se vypočítá napětí baterie i napětí rezistoru. Měření napětí baterie využívá třídu DividerInput, která má metody čtení a napětí pro získání hrubého odečtu nebo vypočítaného napětí dotyčného analogového vstupu.

Postup při výběru použitých hodnot

Ve funkci selectUsedValues se uhodne počet článků a nastaví se horní a dolní mez baterie pro použití s postupem vybíjení. Také měření je označeno jako spuštěné. Limity pro tento postup jsou nastaveny na začátku globálních proměnných. Ačkoli by mohly být konstantní a mohly by být také definovány uvnitř procedury, protože se nepoužívají globálně. Ale vždy je co zlepšovat:)

Postup pro výpočet kapacity baterie

Funkce vybíjení se stará o skutečné počítání kapacity baterie. Jako parametry dostává nízké a vysoké limity napětí pro testovanou baterii. Vysoká hodnota se v této verzi nepoužívá, ale nízká hodnota se používá k rozhodnutí, kdy zastavit testování. Na začátku funkce je počet použitelných rezistorů zjištěn pomocí funkce vytvořené pro tento účel. Funkce vrací počet odporů a současně spustí vybíjení a resetuje čítač. Poté se měří napětí a používají se společně se známou hodnotou odporu k výpočtu proudu. Nyní, když známe napětí a proud a čas od posledního měření, můžeme vypočítat kapacitu. Na konci procesu vybíjení se napětí baterie porovnává s dolním limitem a pokud klesne pod limit, fáze vybíjení se zastaví, mosfety jsou uzavřeny a měření je označeno jako připravené.

Postup pro zjištění počtu rezistorů, které se mají použít

Ve funkci selectNumOfResistors se provádí jednoduché srovnání napětí s přednastavenými hodnotami a na základě výsledku se rozhodne o počtu rezistorů, které mají být použity. Otevře se příslušný mosfet, aby se přeskočily některé odpory. Napěťové sloty jsou vybrány tak, aby maximální proud kdykoli během vybíjení zůstal mírně nad 600mA (2V/3,3Ohm = 606mA). Funkce vrací počet použitých rezistorů. Protože je ventilátor poháněn ze stejné řady jako první mosfet, musí být vždy otevřen, když probíhá vypouštění.

Krok 5: Kalibrace měřiče

Kalibrace měřiče
Kalibrace měřiče

Aby byl měřič zkalibrován, vytvořil jsem další aplikaci (přiloženou). Používá stejný hardware. Na začátku jsou hodnoty děliče korekcí nastaveny na 1000.

const int divCorrectionB10V = 1000; // multiplikátor korekce děliče v rozsahu 10V const int divCorrectionR10V = 1000; // multiplikátor korekce děliče v rozsahu 10V const int divCorrectionB20V = 1000; // multiplikátor korekce děliče v rozsahu 20V const int divCorrectionR20V = 1000; // multiplikátor korekce děliče v rozsahu 20V

ve funkci readVcc () závisí výsledné napětí Vcc na nastavení hodnoty na posledním řádku funkce před návratem. Na internetu obvykle najdete hodnotu 1126400L, která bude použita pro výpočet. Všiml jsem si, že výsledek není správný.

Kalibrační proces:

  1. Stáhněte si měřicí aplikaci do Arduina.
  2. V Arduinu (a v sériovém výstupu a v případě, že se ventilátor otáčí) můžete vidět, zda je zapnuto zatížení. Pokud je, otočte přepínač výběru typu baterie.
  3. Upravte hodnotu v readuVCC (), abyste získali správný výsledek. Vezměte hodnotu, kterou funkce dává (což je v milivoltech), a rozdělte s ní dlouhou hodnotu. Získáte surovou hodnotu interní reference. Nyní změřte skutečné napájecí napětí v milivoltech pomocí multimetru a vynásobte jej dříve vypočítanou hodnotou a získáte novou opravenou dlouhou hodnotu. V mém případě funkce vrátila 5288 mV, když skutečný Vcc byl 5,14 V. Výpočet 1126400/5288*5140 = 1094874, který jsem přednastavil na zkoušku. Vložte novou hodnotu do kódu a nahrajte ji znovu do Arduina.
  4. K úpravě korekčních hodnot děliče analogového vstupního rezistoru dochází pomocí nastavitelného zdroje energie, který slouží k napájení vstupu měřiče. Nejjednodušší je použít napětí od 1 V do 20 V s kroky 1 V a zaznamenávat výsledky do tabulky. V tabulce je průměr. Opravené hodnoty se vypočítají podle následujícího vzorce: „raw_value*range*Vcc/Vin“, kde raw_value je hodnota v 10VdivB, 10VdivR, 20VdivB nebo 20VdivR v závislosti na tom, která korekce se má vypočítat.

Podívejte se na tabulku, jak to pro mě vypadalo. Průměry se vypočítávají pouze z hodnot, které mají být v rozsahu, a tyto hodnoty se pak nastavují ve skutečné aplikaci měřiče.

Takhle

const int divCorrectionB10V = 998; // dělič korekce děliče v rozsahu 10V const int divCorrectionR10V = 1022; // dělič korekce děliče v rozsahu 10V const int divCorrectionB20V = 1044; // dělič korekce děliče v rozsahu 20V const int divCorrectionR20V = 1045; // dělič korekce děliče v rozsahu 20V

Úpravu hodnoty odporu lze provést poskytnutím určitého napětí na vstup (tj. 2 V), přepnutím přepínače typu bat (pro zapnutí zátěže) a měřením vstupujícího proudu a napětí přes první odpor a rozdělením napětí proudem. Pro mě 2V dalo 607mA, což dává 2/0,607 = 3,2948 ohmů, které jsem zaokrouhlil na 3,295 ohmů. Nyní je kalibrace hotová.

Krok 6: Poslední POZNÁMKA

Tady jedna důležitá poznámka. Je nezbytné mít všechna připojení v prvotním stavu od baterie k odporům. Měl jsem jedno špatné připojení a přemýšlel jsem, proč jsem dostal v odporové mřížce o 0,3 V méně voltů než na baterii. To znamenalo, že proces měření skončil téměř okamžitě s 1,2V NiCd články, protože spodní hranice 0,95V byla dosažena rychle.

Doporučuje: