Open source BMS for 48V to 400V lithium-ion battery pack

Great progress! can't wait to see production availability and user feedback.

My design thinking, is to supplement the every-charge cycle balancing with occasional as-needed maintenance sessions using either

RC "hobby" chargers, or

dedicated active balancers at higher balancing current rates,

for packs with older / worn / more imbalanced cells.

Regular usage cycling will use bulk chargers at the appropriate (lower) voltage and (earlier) termination algorithm oriented toward maximum longevity.

Hence my desire for external balancing as needed. Obviously using new, top-quality, well-matched cells, these external re-balancing sessions may be months or even years apart.

I'm thinking of a "sub-pack" modular design based on 6S units, connected serially from 12S up to 24S for now, maybe 30S later.

The serial connection between these modules needs to be broken down for the periodic testing / maintenance sessions, then reconnected for normal usage cycling.

Do you see issues with this scheme, wrt your BMS design?
 
What about with paralleling multiple strings of these modules for flexibility and redundancy? Probably no more than three maybe four strings.

An example use case: an off-grid liveaboard boat, say a 600Ah House bank with four strings of modules @150Ah each. The dinghy uses a electric motor, so disconnect one of the 150Ah strings, House bank is now 450Ah, modules reconfigured for the dinghy motor voltage, used for trips re-supplying or exploring along the coast or up a river.

When returning, depleted modules first recharged to match the SoC of the mothership House bank, then re-joined with it, restoring its capacity to 600Ah. Strings used for the dink rotated to keep wearing evenly.

Such a scheme also good for redundancy, if a module fails in a remote primitive location, or while passagemaking across an ocean.

Similarly with an off-grid home in a remote location, or a big expedition truck, and using modules from the House bank to power ebikes, a cargo trike etc for exploring or re-supply trips.

Any and all feedback welcome.
 
Well, Ennoid slaves boards are mounted on each battery module, modules can be set to 5s, 6s, 7s... up to 12S per modules with LTC6811 & up to 18S with LTC6813 based slave board.

In the software you can choose how many series & parallel modules & how many cells in series & parallel per module you have in total. You can also specify your pack Ah capacity for SOC calculation.

The system is modular, so you can change modules configuration on the fly.. Modules can be connected in series or in parallel or a combination of both as long as you configure the settings properly with the app.
 
Sounds great, so so far you see no issues?

I plan to implement a bank-level charge buss separate from the loads distribution, so that suits your separate ports design.

I do **not** plan to parallel anything at the balance-lead level, the "intra-bank" connections between each module will be through the "20V" bulk pairs only.

Will the separate-port model require doubling up those pairs, charge vs loads buss within the bank itself?

I already have coulomb-counting SoC battery monitors, so if I don't need that functionality from Ennoid BMS, I can separate out / rejoin a given string without reconfiguring anything, all the important functionality will continue if the Ah capacity is different from one hour to the next?
 
LTO?

I already have coulomb-counting SoC battery monitors, so if I don't need that functionality from Ennoid BMS, I can separate out / rejoin a given string without reconfiguring anything, all the important functionality will continue if the Ah capacity is different from one hour to the next?

A change in capacity does not interfere with the function of the BMS, but the SOC calculation will be wrong. A change in the total number of module in the pack require a change in the settings, otherwise the master BMS will detect a problem and won't operate. Contactors will stay OFF and an error will be shown on the display. Basically, if you remove or add a battery module, master needs to be informed. It takes 5 seconds through the app with a USB cable to do the modifications.

Doing it wireless with a Bluetooth app on the phone would be nice thought!

i would like to have an auto-detect function, but unfortunately, I don't see how it could be possible to implement this right now.

Wiring diagram has been updated to include parallel modules...
 
First LTC6812 tested:

Hand assemled LTC6812 slave board2.png

I tested this LTC6812 slave board connected to a 15S battery pack & connected to master board V2 through ISOSPI.
So far, it works, 15 cells voltages & 9 temperature sensors reading per slave now. ENNOID-BMS Tool app support it as well.

I'm now assembling a second LTC6812 slave board connected to a second 15S battery pack connected in series. I don't expect any bad surprise, it should still work and should be good for several of them ...
 
LTO chemistry, red-headed step-child of the LI family

example 30-40Ah Toshiba Super Charged Ion Battery (SCiB) PN# 66160

2.3V nominal cells, charge 2.6 to 2.8, maybe 2.75Vpc ideal?

maybe 2.55V resting at 100%

5S = 12.0V nominal, similar to lead GEL setpoints, 6S is a bit too high.

can go to 11S for 24V

performs well in the cold

can go to zero volts with no damage,

**very high** charge and discharge, get back to full from depleted in 5-10 minutes

crazy high cycle life(10000+)

low energy density, equivalent to NiCD

https://endless-sphere.com/forums/viewtopic.php?p=1475439#p1475439


_______

ENNOID said:
A change in the total number of module in the pack require a change in the settings, otherwise the master BMS will detect a problem and won't operate. Contactors will stay OFF and an error will be shown on the display. Basically, if you remove or add a battery module, master needs to be informed. It takes 5 seconds through the app with a USB cable to do the modifications.

Doing it wireless with a Bluetooth app on the phone would be nice thought!

i would like to have an auto-detect function, but unfortunately, I don't see how it could be possible to implement this right now.

How about user option "Do not care about module count"?

Or a physical A/B switch to signal X strings present vs Y strings?

Yes BT better than USB, think about a boat pitching in heavy weather, not great to have to boot up a laptop.

What if laptop breaks?
 
How about user option "Do not care about module count"?

It sounds like you would like to use the BMS the wrong way. The BMS must protect all cells, not taking into account modules is like saying not monitoring them... why use a BMS then?

What you want to do is to expand the capacity on the fly and not care about BMS settings. This is doable for the BMS by using a balance connector between parallel battery modules and by never changing the number of monitoring slave board or the total number of cells in series.
 
ENNOID said:
It sounds like you would like to use the BMS the wrong way. The BMS must protect all cells, not taking into account modules is like saying not monitoring them.
Not at all, if that is the case then auto-counting is requested as a future enhancement.

I have not analysed in depth where protection is taking place, what functionality is in the slaves vs the master.

I want to be able to use the modules in multiple locations, maybe "mothership" banks operating at the same time ultimately in 4-6 spots, sub-banks being rotated to wherever more energy storage is needed, those locations not actively cycled left with the minimum needed.

So, I'll need a master for each bank, and a slave for each sub-pack, and likely set up a tiny portable PC dedicated to resetting each bank as the strings are added and removed.

> What you want to do is to expand the capacity on the fly and not care about BMS settings. This is doable for the BMS by using a balance connector between parallel battery modules and by never changing the number of monitoring slave board or the total number of cells in series

Yes the voltage of each bank may well be different, in 6S increments, but will not change. Only the number of paralleled strings of sub-packs will change, Ah capacity.

Example a bigger bank may be 4P each string 150Ah so 600Ah while in active use, reduced to 150Ah while dormant, just to run safety / security minimal maintenance loads, keep the fridges going etc, on standby for bilge pumps.

The 450Ah powering the dinghy to shore or an island then used in an off-grid shack, or put on board the 4WD expedition truck / camper rig.

If smaller cells comprise the bank, probably will just monitor parallel groups at the lowest level rather than each individual cell.

But easily broken down not welded, if I see imbalances can check at the cell level manually.

What is the lowest pack voltage / series count this BMS will monitor?

And how about that LTO compatibility since I gave you their voltages?
 
why would you ever change battery capacity on the fly? i cannot see any commerical reason to make a vechicle or device that can do that wich the size of battery this bms is designed for.
 
Im working on a new agricultural machine and Im looking for a bms that can suit my needs, I need to have 3-4 lifepo4 batteries that are connected in parallel to a master bms, so Im wondering if slaves can be wired in parallel?
 
you need to treat them as separate strings and only connect the end of the strings. when doing that when 1 battery string fails you can still run the machine to limp back home for example.

or just make it 1 big battery wich is certainly the better option.
 
Im working on a new agricultural machine and Im looking for a bms that can suit my needs, I need to have 3-4 lifepo4 batteries that are connected in parallel to a master bms, so Im wondering if slaves can be wired in parallel?

How many lifepo4 in series? For parallel slaves, I'm doing it by tweaking the BMS parameters a bit... The BMS always treat the slaves assuming they are all connected in series, but user can connect the slaves ends in parallel. The pack voltage is compared to the individual cells amount in series divided by the parallel number of slaves set by the user with the app. Otherwise, the BMS will measure a voltage outside of the operation limits. I tested it and it works. This way, user can add or remove capacity to his battery bank without having to fiddle with balance cables...
 
Not at all, if that is the case then auto-counting is requested as a future enhancement

There is the wireless smartmesh from linear technologies that could do this, but the cost is very high for now. Wireless module are more expensive than the price of the whole slave board...
 
And how about that LTO compatibility since I gave you their voltages?

The question is, why using a complex BMS for a chemistry that does not require much safety? Apparently, LTO don't explode & don't care about temperature at the detriment of containing less than 1/4 of the actual power of a lithium-ion cell for a given weight...

I think for LTO, you just need a fuel gauge (voltmeter or coulomb counter) , a main manual switch and a way to balance cells once or twice a year. My BMS can do it sure, but it is not intended for this kind of application at the moment.
 
OK thanks.

Flippy I gave my reasons very clearly.

Nothing EV nor commercial is relevant
 
john61ct said:
Flippy I gave my reasons very clearly.
Nothing EV nor commercial is relevant

i understand that. but please understand as well that its simply not a good idea to have big machinery have modulair batteries and try to make some frankenstein bms style setup.

if you want something like that to work you need to treat each and every module as a separate battery with their own bms and have some sort of cut out system installed so the machine goes dead or into limp mode when running on less modues so you dont blow the remaining modules as well.
 
flippy said:
i understand that. but please understand as well that its simply not a good idea to have big machinery have modulair batteries and try to make some frankenstein bms style setup.

if you want something like that to work you need to treat each and every module as a separate battery with their own bms and have some sort of cut out system installed so the machine goes dead or into limp mode when running on less modules so you dont blow the remaining modules as well.
What "big machines" are you referring to? No such thing here.

The modules are needed where the people are consuming energy, the boat moored empty or the unused home are just ticking along like a Starter battery, hardly discharging at all.

Each bank will have its Master BMS, and the modules each have their slave board, exactly as designed.

The modules are never to be used as standalone batteries, no need for each to have its own OVC / LVC contactors etc any more than each cell does in a normal bank.

The biggest loads are maybe 0.5C, reducing total Ah capacity just means power inputs will be needed after 4-5 days instead of 10-12 days. If the loads were running, which they're not.

 
these bms are not generally cost effective for small battery banks so its reasonable to assume you have/want a big and high voltage battery and something considerably more substantial then a ebike and probably have a battery with a weight to match.

for smaller sub 100v batteries this bms is not a cost effective choice considering you can get a 130V 300A+ bms for ~100 bucks on the oriental markets.
 
ENNOID-BMS & my battery modules won't fit on an ebike for sure. More oriented toward bigger machines, like an ATV, boat, kart, etc.

for smaller sub 100v batteries this bms is not a cost effective choice considering you can get a 130V 300A+ bms for ~100 bucks on the oriental markets.

There are many dirt cheap options for small battery pack on the web and can do the job most of the time... Despite this, I think using such cheap devices as a safety guard for an expensive and potentially hazardous battery pack is a bad idea in general. Using those BMS @ 130V & 300A is really pushing the limit as well.

I don't recommend using those cheap solid state BMS and I would say, avoid them if your application goes beyond 80V. Depends always on how much risk you can take. For small applications below 12S, I'm using the original DieBieMS for my ebike & e-skateboard. A bit expensive compared to other BMS, but a nice opensource, better quality & more flexible alternative imo.
 
ENNOID-BMS Tool V1.0 is now released:

ENNOID-BMS-Tool-V1.0.png

see changelog here :

https://github.com/EnnoidMe/ENNOID-BMS-Tool/releases/tag/V1.0

Overall, many new features and many bug fixes. Work in progress!
 
ENNOID said:
ENNOID-BMS & my battery modules won't fit on an ebike for sure. More oriented toward bigger machines, like an ATV, boat, kart, etc.

I don't recommend using those cheap solid state BMS and I would say, avoid them if your application goes beyond 80V. Depends always on how much risk you can take. For small applications below 12S, I'm using the original DieBieMS for my ebike & e-skateboard. A bit expensive compared to other BMS, but a nice opensource, better quality & more flexible alternative imo.
What about a modular sub-pack design, say 6S increments, put in series to get to higher voltages, then those strings paralleled for redundancy and range?

What would you recommend for that scenario?

Overall meta-pack controls set aside, just protecting the cells within the context of the sub-packs. . .

 
ENNOID said:
ENNOID-BMS Tool V1.0 is now released:



see changelog here :

https://github.com/EnnoidMe/ENNOID-BMS-Tool/releases/tag/V1.0

Overall, many new features and many bug fixes. Work in progress!
Excellent, congratulations & thank you!

Does that v1.0 imply you feel it's all now ready for "production release"?

Could you explain, or point to more detail on what's meant by
> Persistent contactor option
?
 
Back
Top