LTO BMS – zápisky z vývoje

LTO neboli Lithium Titanium Oxid baterie mají jednu obrovskou výhodu – dají se nabíjet i vybíjet při záporných teplotách. To je dělá ideální volbou například pro meteostanice, Meshtastic nody a všude, kde je potřeba napájet elektroniku ve venkovním prostředí.

Jejich použití je ale pro běžného bastlíře trochu komplikovanější protože mají nižší napětí jak běžné Li-Ion nebo Li-Pol a na jednočlánkové LTO se nedá sehnat elektronická ochrana. Proto jsem se pustil do vlastního designu, který bude kromě OVLO/UVLO/OC i průběžně měřit parametry článku a komunikovat je po I2C. V následujícím textu najdete moje poznámky z vývoje této BMS.

Trocha teorie

Porovnání různých typů baterií

Pro představu o vlastnostech LTO baterií je níže tabulka, která porovnává různé chemie Lithiových článků (a pro zajímavost i nová chemie Sodium-Ion). Hodnoty jednotlivých parametrů jsou orientační, jelikož se hodně liší výrobce od výrobce. Pro úvodní seznámení se s LTO ale stačí.

ParametrJednotkaLi-Ion/Li-PolLiFePo4Sodium-IonLTO
Min. napětíV2,5 – 3,02,51,5 – 2,01,5 – 1,7
Max. napětíV4,2 – 4,43,653,6 – 3,82,8 – 2,9
Hustota energieWh/kg150-25090-160100-16070-110
Pracovní teplota (nabíjení)°C0 – 450 – 450 – 40−10 – 55
Pracovní teplota (vybíjení)°C−20 – 60−20 – 60−20 – 60−30 – 60
Maximální nabíjecí proudC1 – 21 – 20,5 – 15 – 10
Maximální vybíjecí proudC1 – 1010 – 251 – 510 – 20
Počet cyklů500 – 15002000 – 50001000 – 20003000 – 7000
BezpečnostPrůměrná, nutné použít elektrickou ochranuVelmi bezpečnéBezpečnéVelmi bezpečné

LTO baterie mají menší hustotu energie než jiné typy, takže se do stejného pouzdra vejde méně Ah. Mají menší pracovní napětí, minimálně 1,5 V (některé zdroje a výrobci uvádějí 1,7 V) a maximálně 2.8 V (opět, někde se dočtete 2,9V). Mají velké nabíjecí a vybíjecí proudy díky malému vnitřnímu odporu. To by mělo být díky titanové nanostruktuře uvnitř, která má velkou plochu (stovky m2.g-1 na rozdíl od jednotek m2.g-1 u Li-Ion) a tím pádem se mohou elektrony pohybovat přes anodu mnohem rychleji. Další velká výhoda je větší životnost, uvádí se až 7000 cyklů.

Chemicky jsou LTO baterie velmi stabilní a nehrozí nafouknutí, hoření nebo exploze jako u Li-Ion nebo Li-Pol článků. Někteří výrobci uvádí, že je možné LTO vybít až do 0 V a přebít nad 3 V aniž by došlo k výbuchu nebo zničení. Takovéto zacházení ale zkrátí životnost článku, takže není doporučováno.

No a pak ten (pro nás) nejdůležitější parametr: rozsah pracovní teploty pro nabíjení a vybíjení. LTO jako jediné Lithiové články snesou nabíjení i při teplotách kolem −10°C aniž by došlo ke zničení baterie nebo drastickému snížení životnosti. Pro teploty ve střední Evropě je to ideální typ baterie pro venkovní použití.

Vybíjecí křivka

Napětí na LTO bateriích při vybíjení velmi rychle klesne s 2,8 V na zhruba 2,6 V a pak jen velmi pomalu klesá až na 2,3 V. Jakmile je baterie téměř vybitá, tak napětí prudce klesne z 2,3 až pod 1,7 V i při velmi malé zátěži.

Při větší zátěži (rychlejší vybíjení) je křivka obdobná, jen je položena trochu níže (cca o 0,3 V níže při 1C a 0,5 V níže při 5C) a prudký pokles v téměř vybitém stavu začne dříve.

Napětí na článku a zbývající energie při vybíjení velmi malým proudem 0,05C. Zdroj: vlastní měření na 1S3P, kapacita 4100 mAh.

Proč BMS pro 1S LTO?

Moje motivace pro návrh vlastní elektronické ochrany pro jednočlánkové LTO baterie je především použití v projektu Meshtastic. Nody napájené z baterie a nabíjené ze solárního panelu jsou typicky umístěny venku a chci, aby je bylo možné nabíjet i v zimě při nízkých teplotách, když na chvíli zasvítí slunce. V současné chvíli používám 1S Li-Pol baterie, ale s příchodem zimy je potřeba podívat se po alternativě.

Odtud vychází i mé potřeby:

  • Ochrana musí být pro 1S LTO baterie. Jednak mám pro ně nachystanou Mesthastic desku a jednak taková ochrana zatím neexistuje (všechny ochrany/BMS co jsem našel jsou od 4S LTO a více), takže vlastní vývoj dává smysl.
  • Malé vybíjecí proudy v řádu desítek mA, maximálně stovky mA.
  • Nabíjecí proudy do 1 A (resp. do maximálního výkonu solárního panelu).
  • Ochrana proti podpětí (UVLO), přepětí (OVLO) a nadproudu (OC).
  • Omezení nebo úplně vypnutí nabíjení/vybíjení při teplotách mimo povolený pracovní rozsah.
  • Cokoliv navíc (možnost konfigurace, měření, …) bude fajn, ale ne nutné.

Prototyp č. 1

První nápad bylo udělat ochranu LTO čistě analogově. Vytipoval jsem vhodný komparátor, který umí na výstupu rail-to-rail, má minimální spotřebu a zvládne rozsah napájení alespoň 1,3 až 3,0 V. Toto všechno splňuje NCS2220A od Onsemi.

Další důležitá komponenta jsou P-channel MOSFET tranzistory pro omezení proudu v jednom nebo druhém směru. Po opravdu dlouhém procházení datasheetů jsem nakonec skončil u EV3415, protože z výběru u JLCPCB byly nejlepší a hlavně skladem.

Naopak vybrat dobrou napěťovou referenci, která funguje i pro napětí kolem 1.3 V se ukázalo skoro nemožné. Vybral jsem nakonec AZ431, ale dobrá volba to není, viz dále.

Myšlenka zapojení je následující:

  • Pokud je napětí na článku menší jak 1,513 V, pak bude mít komparátor U2A na výstupu napájecí napětí, čímž se zavře Q1 a proud z baterie do zátěže přestane téct. Díky body-diode Q1 ale může pořád téct proud ve směru od zátěže do baterie a tedy je stále možné článek nabíjet. Toto je stav UVLO, neboli under-voltage lockout.
  • Pokud je napětí na článku větší jak 2,85 V, pak se aktivuje komparátor U2B a zavře tranzistor Q2. Tím přestane téct proud ze zátěže do baterie a vypne se nabíjení. Toto je stav OVLO, neboli over-voltage lockout.
  • Pokud je napětí v rozsahu 1,513 – 2.850 V, tak jsou oba komparátory neaktivní, gate obou tranzistorů je spojen s GND a tím pádem jsou otevřeny. Proud může téct oběma směry.
  • Pro nadproudové situace (over-current) je v zapojení PPTC F1, která odpojí zátěž pro proudy větší jak 3 A. Jakmile se proud sníží, PPTC opět začne fungovat normálně.
  • Pro komparátory je nutná napěťová reference, v tomto případě AZ431, která má ale přiliš velkou spotřebu a zbytečně vybíjí baterii.
  • Pokud by komparátor nebo napěťová reference přestali z jakéhokoliv důvodu fungovat, pak bude baterie odpojena od zátěže. To je výchozí stav.

Návrh zapojení byl výstup z mé „digitální“ komfortní zóny :) Alespoň jsem měl důvod oprášit znalosti. Kvůli miniaturnímu pouzdru UDNF8 komparátoru U2 jsem zvolil strojové osazení prvních 5 prototypů. Ani ne za týden jsem mohl začít testovat.

A dopadlo to neslavně, analogový mág ze mě nebude. Obvod neshořel a skoro i dělá co se od něj chce, ale:

  • Odpojování při podpětí funguje – 1,519 V @ 100 µA a 1,560 V @ 1.05 A.
  • Při přepětí k odpojení nedojde, ale je vidět změna, takže komparátor funguje. Q2 se pravděpodobně otevírá napětím S-G, protože napětí z nabíječky je vyšší, než napájení U2.
  • V obou přechodových stavech (UVLO i OVLO) obvod kmitá. To je způsobeno skokovou změnou napětí na článku při odpojení/připojení zátěže nebo nabíjení. Hystereze na vstupech komparátorů není dostatečná.
  • Spotřeba napěťové reference je příliš velká. To jsem sice čekal už při návrhu schématu, ale je nutné to zmínit.

Začal jsem s úpravou zapojení a snažil jsem se vyřešit všechny problémy, ale celý obvod se začal hodně komplikovat, přibývalo součástek a nakonec jsem ani nemohl najít lepší napěťovou referenci. Nakonec jsem se rozhodl tuto cestu zavrhnout a použít levný a malý mikrokontrolér, ve kterém bude vše: sledování napětí, směru proudu, napěťová reference, hysterezi vyřeší kód a to vše v jedné součástce za méně jak 1 USD.

Prototyp č. 2

Z prvního prototypu nakonec zůstaly jenom P-channel MOSFET tranzistory a PPTC pojistka. Vše ostatní se změnilo.

Základem zapojení je mikrokontrolér ATtiny824, který je součástí rodiny 2-series ATtiny od Microchipu. Tato rodina MCU byla uvedena do prodeje někdy v roce 2022, takže je relativně nová, programuje se pomocí UPDI rozhraní (na rozdíl od dřívějšího AVR SPI), má interní 20 MHz krystal, low-power 32,768 kHz krystal, 12-bitový vícekanálový signle-ended nebo differenciální ADC, RTC, UART, TWI a mnoho dalšího. Navíc mám s AVR velké zkušenosti a už jsem pracoval se series-0 i series-1. ATtiny824 se zdá jako ideální kandidát pro LTO BMS, jen to má jeden háček…

Pracovní napětí tohoto MCU je od 1,8 V (při maximální CPU frekvenci 5 MHz) do 5,5 V, my ale potřebujeme alespoň 1,3 V. Je nepřijatelné, aby BMS přestávala fungovat při plně vybité baterii (1,5 V). Pokud nebude fungovat MCU, neotevřou se tranzistory a nebude možné baterii nabít. Pokud se baterie nechá bez nabití delší dobu, napětí může klesnou ještě víc, klidně i k 1 V.

Ke zvýšení napětí pro MCU jsem nakonec zvolil nábojovou pumpu. Jednoduchý a rozšířený ICL7660 se dá zapojit jako zdvojovač napětí a potřebuje k tomu pouze 2 Schottkyho diody a 4 kondenzátory. Oscilátor pumpy kmitá na relativně nízkých frekvencích a pro zátěže v řádu jednotek mA se dá zpomalit až na ~1 kHz. To jsem považoval za výhodu oproti boost měniči s cívkou a spínací frekvencí kolem 1 MHz. Od zapojení jsem si sliboval lepší účinnost a menší riziko EMI.

Funkce BMS je následující:

  • ATtiny bude mít napěťovou referenci pro ADC 1,024 V. To nám při 12 bitech dává rozlišení 250 µV na LSB. Pokud se implementuje over-sampling, pak se dá přesnost ještě zvýšit (pro zvýšení přesnosti např. o 2 bity bude potřeba 16 vzorků, což zvýší přesnost na 62,5 µV/LSB).
  • Napětí na baterii sleduje ADC_BATT přes napěťový delič s poměrem 0,3. Tím se napětí 1.3 až 2.8 V na článku změní na 0,43 – 0,93 V na ADC vstupu. Napětí baterie tedy budeme schopní sledovat s přesností 187,5 µV/LSB. To je víc než dostatečné.
  • Napětí na zátěží sleduje ADC_OUT přes stejný napěťový dělič jako v předchozím případě. Platí vše výše uvedené.
  • Proud z a do článku budeme měřit pomocí ADC v diferenciálním módu přes shunt rezistor 0,1 Ω. To znamená 100 µV až 200 mV pro proudy 1 mA až 2000 mA. To je maximálně 0,4 W ztrátový výkon na rezistoru, takže je potřeba zvolit větší SMD pouzdro. Použitý rezistor je nakonec SMD1812 na 750 mW.
  • ADC převodník v ATtiny má tzv. Programmable Gain Amplifier (PGA), kterým je možné sledované napětí na shunt rezistoru nejdříve zesílit v krocích 1×, 2×, 4×, 8× a 16× a teprve pak převádět. Díky tomu můžeme dosáhnout vyšší přesnosti měření pro malé proudy.
  • Kód v ATtiny bude pravidelně měřit všechna napětí a podle nastavených pravidel vypínat nebo zapínat oba MOSFET tranzistory současně pomocí signálu CUTOFF.
  • Pojistka PPTC hlídá nadproudové stavy a pokud by došlo například ke zkratu, pak ochrání článek odpojením zátěže. V běžném provozu, kdy nedojde ke zkratu, ale jen k malému překročení povoleného proudu bude zátěž odpojovat MCU.
  • Měření teploty okolí zvládne vnitřní termistor v MCU. Ten ja napojen na jeden z kanálů ADC, takže můžeme pro měření teploty použít stejný kód jako pro napětí baterie. To nám umožní vypnout nabíjení nebo vybíjení při extrémních teplotách mimo povolený pracovní rozsah.
  • Zapojení je doplněno o konektor se sběrnicí I2C. To umožní celou BMS připojit k nadřazenému systému a sledovat vývoj napětí, proudy, zbývající kapacitu, počet cyklů a další parametry. Příjemný bonus, který nebylo možné mít v předchozí verzi zapojení.

Návrh schématu a layout PCB byl přímočarý, k desce s BMS jsem navrhnul ještě další PCB, kterou nazývám LTO-PACK. Slouží pouze k propojení 3 LTO článků do konfigurace 1S3P a následnému propojení pomocí dvou M3 šroubů k PCB LTO-BMS. Výroba a osazení opět u JLCPCB, za týden bylo vše doma a mohlo se začít s oživením a psaním kódu.

První verzi kódu, který implementuje OVLO, UVLO, OC a podle nastavených pravidel odpojuje zátěž jsem napsal asi za dva večery. Pro účely testování jsem si nechal každou sekundu vypisovat všechny měřené veličiny na UART, kde jsem přes můj USB-UART převodník (který používám i pro UPDI programování ATTiny) data sbíral v PC a ukládal do InfluxDB. Pak jedna rychlá nástěnka v Grafana a několik dní testování vybíjení/nabíjení mohlo začít.

Základní funkcionalita BMS funguje. Hurá!

Nedalo mi to a nakonec jsem implementoval i I2C rozhraní. Napodobil jsem registry pro INA260, integrovaný obvod pro měření napětí a proudu, který má podporu ve firmware Meshtastic. Díky tomu jsem mohl BMS zapojit k mojí základové desce a okamžitě jsem viděl napětí baterie a vybíjecí/nabíjecí proudy v Meshtastic aplikaci.

Když jsem se o svých dílčích úspěších pochválil na Twitteru, tak se ukázalo, že je o téma LTO a celou BMS velký zájem. Strašně moc děkuji všem, kteří mi napsali zajímavé dotazy a postřehy. Donutilo mě to zamyslet se nad několika úpravami, které chci realizovat v další revizi BMS PCB.

Dlouhodobé měření na prototypu LTO BMS revize A.

Na grafech výše je vidět několikadenní záznam napětí, proudů, energií a teplot v reálném nasazení na Meshtastic stanici. Bylo to v prosinci 2024 a během teplot i pod bodem mrazu, takže ideální testovací podmínky pro LTO baterie. Firmware se za celou dobu testování ani jednou nerestartoval a vše fungovalo podle očekávání. Mockrát děkuji Zdeňkovi M. za ochotu a čas věnovaný sběru těchto testovacích dat.

Prototyp č. 3

Schéma předchozího prototypu jsem na základě mého testování a připomínek od ostatních rozšířil o:

  • Nábojová pumpa v prototypu 2 není ideální, vyměnil jsem ji za step-up měnič, který z napětí LTO udělá stabilních 3,3 V.
  • Na I2C konektor jsem vyvedl toto stabilizované napětí přes PPTC a MOSFET tranzistor ovládaný z MCU. To umožní baterii jednoduše připojit k čemukoliv, co vyžaduje 3,3 V a maximálně 200 mA. Doufám, že to dramaticky zjednodušší použití LTO baterií ve vašich projektech.
  • Přidal jsem další shunt rezistor pro měření proudu na stabilizovaný 3,3 V výstup. To umožní měřit proud jak z nestabilizovaného výstupu baterie, tak i stabilizovaného výstupu step-up měniče zvlášť.
  • MOSFET tranzistory EV3415 jsem nahradil za SI2333. Mají o něco lepší RDS(on) a hlavně jsou dostupnější a skladem u výrobce.

Nová verze šla do výroby 7.1.2025 a o týden později jsem ji měl na stole. Od designu k výrobě uběhlo docela dost času, nejdřív jsem čekal na naskladnění ATtiny824 a pak jsem neměl během Vánočních svátků čas. Teď už mám ale vše doma a pokračuju s vývojem.

Osazené PCB nové revize B.
První test a programování revize B.

Základní funkcionalita zůstala bez změn a funguje i nadále. Stabilizovaný výstup 3,3 V na uŠup konektoru funguje, ale budu muset ještě přidat podporu do firmware, hlavně měření proudu.

Výměna nábojové pumpy za DC/DC měnič bylo velmi dobré rozhodnutí. Předchozí spotřeba samotné BMS byla v rozsahu 1-4 mA, nově je klidová spotřeba ~55 µA. Měnič samotný je velmi efektivní a MCU většinu času spí (standby režim) a probouzí se pouze 1× za sekundu kvůli měření. Během této doby (cca 10 ms) se spotřeba zvýší na 1245 µA.

Tabulka níže ukazuje přibližnou spotřebu obvodu pro různá napájecí napětí. Měření je pouze orientační a určitě se změní, jakmile upravím firmware. V kódu je stále hodně míst, které jde optimalizovat.

Napětí baterieKlidový proudProud při měření
(10 ms)
Spotřeba
2,80 V50 µA1020 µA60,2 µAh
2,45 V55 µA1245 µA67,45 µAh
1,80 V290 µA2242 µA312,42 µAh
1,40 V235 µA4115 µA276,15 µAh

Z předchozích měření (viz grafy výše) víme, že LTO baterie mají při malých vybíjecích proudech napětí na článku cca 2,45 V a tuto hodnotu drží po většinu vybíjecího cyklu. Napětí začne prudce klesat, až když je baterie téměř úplně vybitá. Můžeme tak počítat s průměrnou spotřebou BMS obvodu 67,45 µAh. Pokud necháme jeden 1300 mAh článek připojený k BMS bez zátěže, tak se vybije asi za 19 tisíc hodin, tedy asi za 2 roky.

Nyní čekám na dodávku 20 kusů 1300 mAh LTO článků od nového výrobce. Články, které momentálně používám (ty modré na všech fotografiích) jsem kupoval z Aliexpress, kde je měl prodejce popsané jako „3000 mAh LTO 25000 cycles“, což je zřejmý nesmysl a nepůsobí to důvěryhodně. Hledám proto lepšího dodavatele, abych mohl vyrobit první větší sérii kompletních baterií a konečně jimi osadit všechny svoje (i vaše) Meshtastic základny.

Závěr

To je zatím vše, jakmile budu mít něco nového, doplním článek. Mezitím mě sledujte na Twitteru nebo Bluesky. Většinou tam sdílím zajímavosti v reálném čase a teprve potom píšu delší články sem na web.

Dále bych chtěl poděkovat všem dobrovolníkům, kteří se mi na konci roku 2024 ozvali na moji „testovací výzvu“. Díky vám jsem měl dostatek měření a dat a mohl s projektem pokročit dále.

A ještě jedna zajímavost na závěr. Snažím se najít spolehlivého dodavatele LTO baterií, které bych v battery packu použil. Jak moc tristní a časově náročný proces to je ukážu na několika příhodách :)

  • První prodejce mi na moje požadavky (LTO baterie v 18650 pouzdru, kapacita kolem 1400 mAh, kovové kontakty na jedné straně) poslal datasheet k Li-Ion na 2500 mAh, technický nákres k jinému typu baterie a vybíjecí křivky k LTO, které mají maximální vybíjení 1C. Po 3 dnech diskusí a otázek jsem to vzdal, tento prodejce očividně neví, co prodává.
  • Druhý prodává 18650 LTO s 3000 mAh (!) Tyto články vidíte na fotografiích v článku a používám je pro testování. Byl jsem totiž strašně zvědavý jaké parametry doopravdy mají. LTO baterie to opravdu jsou, ale podle mého měření mají kapacitu ~1400 mAh. Na můj dotaz, jak udávanou kapacitu 3000 mAh měřili, mi nedokázal prodejce odpovědět, ale prý to jsou ty nejvíc nejlepší super-duper LTO baterie. Anebo jen používají „čínské mAh“, protože 3 Ah není technicky možné do 18650 pouzdra a váhy 39 g dostat (viz tabulka na začátku článku o hustotě energie LTO)?
  • Jeden výrobce vypadá nadějně a i datasheet k článkům vypadá jako „real deal“. Tak uvidíme.

A to je prozatím všechno.