Měření napětí jednotlivých článků LiFePO4 v baterii 70S
Moderátor: Moderátoři
Měření napětí jednotlivých článků LiFePO4 v baterii 70S
Chce to měřit docela přesně.
Napadly mně 3 řešení:
1. Arduino diferenciální měření
Problém je nedostatek AD převodníků.
2. Arduino s přepínáním AD postupně na jednotlivé články pomocí mosfet sítě
Narážím na problém s GND.
3. Na každém článku vlastní Arduino nano nebo Tinny nebo AD převodník komunikující s okolím pomocí optočleny oddělenou komunikaci I2C, SPI atd.
Prosím tedy o pomoc, radu, jak by se tento problém dal elegantně vyřešit.
Asi bych nejraději zvolil nějaký jednočip, kvůli možnosti další implementace např. balancing.
Předem děkuji za odpovědi.
https://www.vishay.com/docs/80364/isola ... voa300.pdf
Jeti Models dělá telemetrickej modul MULI6S pro měření 6S, který se dají zapojovat do kaskády na měření 6, 12,18 atd článků. Schema ale od toho nemám. Taky možná inspirace.
Proč mi nemůže všechno chodit hned ?!!
https://www.aliexpress.com/item/1005001758226775.html
Já si kdysi stavětl BMS z jednotlivých bloků co komunikovali po opticky oddělené lince.
Ale stavěl jsem to klasicky rovnou s mCU. Nevím proč na něco takového používat arduino se zbytečným balastem, když to můžu navrhnout efektivněji, levněji a vše na jedné desce včetně AD převodníku, referenčního napětí a optočlenů.
Mimochodem ty interní AD převodníky a referenční napětí stojí za starou belu. Je to dobrý maximálně na hraní.
Bohužel, se mi žádné z navrhovaných řešení moc nevyhovuje.
"bum" - taky jsem myslel na tuto variantu. Zápory moc relátek, nebude umět nic jiného.
"rnbw" - moc pěkné, určitě použitelné. Zápory dostupnost nadrobno, potažmo cena, nebude umět nic jiného.
"samec" - vím, že jsou specializované čipy. Bohužel pro mně nevím, co mám vlastně hledat. Co jsem našel(bylo toho málo), nevyhovovalo požadavkům, nebude umět nic jiného. S tím arduinem sice pravda, ale mám dotaz. Čím je zapříčiněna nepřesnost převodníku v arduinu? Je to jeho nedokonalost, nebo je to otázka courající reference?
"Celeron" - moc složité, neuniverzální. Ten telemetrický modul je pěkný, bohužel pro mně cenově mimo mísu.
Stejně děkuji za podněty.
Představoval jsem si to asi takto. Arduino jsem chtěl použít na testování, ve finále bych tam dal malý Tiny třeba 45 nebo 85. Pokud jsem datashet pochopil správně, tak uspaný má spotřebu 0.1uA. Tiny by spal a probouzel by se buď na požadavek z řídícího modulu nebo sám v nějakých intervalech( řekněme 1 minuta), při nabíjení by byl zapnut trvale, aby hlídal max. napětí a spustil při potřebě balanc.
Měl jsem napsat, že bude řídící modul (Arduino nebo RPi).
Chci to mít modulární, pro upgrady apod.
Chtěl bych to mít jako součást článku, který bude složen z 20P LiFePO4 25Ah(reálně okolo 18Ah). Z článku by tedy čouhaly jen silové vývody a komunikace.
Předem děkuji za odpovědi.
Však se podívej na to schema imax b6, tam se taky měří jen jeden článek přes analogový multiplex.
Navíc ještě u li-xx baterie mě zajímá napětí např od 2V do 4,5V. Cokoliv nad a pod je havarijní stav, kdy je vhodné veškeré zařízení od baterie odpojit.
Takže na to 10bit stačí.
Jen z mé zkušenosti je lepší použít externí AD převodník a externí zdroj referenčního napětí.
Obě tyto interní věci v mcu jsou značně nestabilní, takže jsou dobrý jen na hraní.
rnbw: jak jsem psal. Měl jsem kdysi vyrobění balancer. mCU jsem neuspával, protože byl na tak velké baterii, že mě nějaká spotřeba v řádu mA netrápila.
Balancer žil zcela autonomě a komunikace byla jen pro četní a nastavení hodnot z centrálního mCU na kterém jsem měl display.
Komunikaci jsem ukradl z ds18b20 + jsem přidal druhý signál vysílaný z mástra CLK abych to měl snažší na programování.
A i se 70 zařízeníma by to fungovalo. Jen by se hodnoty aktualizovali na displeji třeba jednou za 3 vteřiny.
Jelikož to bylo pouze pro zobrazovač a BMS fungovalo autonomě, tak interval obnovy byl celkem nedůležitý.
Jen to nebylo tak stabilní, protože jsem používal interní AD převodník s interním referenčním napětím.
Chtěl jsem udělat verzi 2 s externím AD a ref. napětím, ale dříve jsem elektrárnu zrušil.
Bohužel mi zůstal jen nějaký rozpracovaný projekt v Proteusu. O finální verzi jsem nějak přišel při výměně počítačů.
Samozřejmě, ale jsou to další obvody (spotřeba) navíc.dracekvo píše:lesana87: Jenže on se měří jeden článek. Nevidím důvod, proč měřit více článků najednou.
Však se podívej na to schema imax b6, tam se taky měří jen jeden článek přes analogový multiplex.
Při 4,5V na LiIon článku už by mě asi nejvíc zajímalo, kde je hasičák.
ano, vím, že je 10-bitový. Bude to na každý článek zvlášť, takže se mi zdá přesnost dostatečná. Nehledě k tomu, že bych tam dal přesnou referenci, třeba MCP1501, tudíž bych dosáhl rozlišení 1mV.
No, s programováním zkušenosti mám, ale přiznám, že žádná sláva. Věřím ale, že to nějak zvládnu i třeba z vaší pomocí. Budu se tomu plně věnovat až o svátcích, jen teď sbírám informace.
Než jsem to napsal, tak byly další odpovědi.
Lesana mi poskytla vlastně kvalitní řešení. Taky se mi zdá řešení s externím převodníkem lepší, pokud je skutečně vnitřní převodník v Tiny nestabilní je vlastně rozhodnuto.
Použil bych opět MCP1501 4.096V a A/D příkladně MCP3221.
Předem děkuji za odpovědi a názory.
Já měl referenci na 1.024V(nebo 2.048, už se nepamatuju) + dělič z metalických odporů.
A řídil jsem to PICem co fungoval snad od 2V, už si nepamatuju přesný typ.
Tohle mi zbylo z vývoje. Tak snad pro inspiraci.
EDIT: jak se dívám na schema, tak jsem měl asi reference dvě. Abych zvýšil rozlišení ADC, protože tě zajímá jen určitá část napětí baterie a je zbytečné tam mít rozsah od 0 do 2V.