Yet another homebrew BMS: functionally simple, modular, displays cell voltage

lerneaen_hydra

100 µW
Joined
Apr 8, 2019
Messages
8
So for a few different projects I've been working on I eventually caved in and made yet another homebrew BMS. IMO it turned out pretty well (i.e. works for me and no battery fires to date), and someone else here might also have a use for it.

Unlike most BMSs I've seen so far, this one;
  • Is not made for any given number of cells, each cell has it's own submodule, which are connected together to form the entire BMS. This allows for however many cells the given project needs.
  • By setting some statements in the source code all voltage thresholds can be adjusted in software. This allows the BMS to be used for any cell chemistry (in the range 2.5 - 5.1V).
  • It displays the current cell voltage continously (measured around once per second).
  • Draws very little standby current, typically on the order of 20-40uA, including the current needed for the display.
  • Is not in series with the high-current path of the battery, so the BMS does not limit the maximum allowable current drain. (However, this of course means that the BMS can not disconnect the batteries from the load, which would have been nice when overly discharged).

Functionally, the BMS does the following actions:
  • Undervoltage/overvoltage alarm with a piezo buzzer
  • Active cell balancing during charge termination using some power resistors
  • A common output allows for disconnecting a CC/CV charger from the battery on cell overvoltage

There's schematics, source code, and documentation available here: https://gitlab.com/lerneaen_hydra/rabidmantis/tree/master/modular_bms

EDIT: in particular, there's pretty extensive documentation available here: https://gitlab.com/lerneaen_hydra/rabidmantis/blob/master/modular_bms/doc/modular-bms_manual_v1.1.1_2019-04-23.pdf This covers how to assemble, configure, program, and wire up the boards to form a complete BMS.
 
Wow, fantastic contribution, hope my skillz get up to speed to check it out and build.

Love the N-count cell modules, what's the upper limit?

A relay/switch opening a contactor for over current / LVC?

But my preference is standalone LVCs on the various load circuits anyway, set to different SoC stages, high-current load circuits vs low, auxiliary/entertainment gear vs essentials.
 
What would you estimate the cost for a 20s setup?

This is one drawback of the design, I haven't really made much of an effort to keep things super cheap (though by no means are any of the parts ridiculously expensive). A rough estimate (+/- 30%) is around $10 for the master device (which you need one of) and around $8 for slaves (which you would need 19 of). For a 20s setup this would give around $160 in total. I'd also estimate that you'd need around two days to assemble all the boards. FWIW I assembled a 12s setup in around 6 hours, but then I knew exactly what to do at any given time (i.e. no misunderstanding the manual).

EDIT: if cost is an issue, one option is to assemble the boards without the displays. This reduces cost by around $3 per board, giving a rough 20s cost of around $100.

Wow, fantastic contribution, hope my skillz get up to speed to check it out and build.

Love the N-count cell modules, what's the upper limit?

A relay/switch opening a contactor for over current / LVC?

But my preference is standalone LVCs on the various load circuits anyway, set to different SoC stages, high-current load circuits vs low, auxiliary/entertainment gear vs essentials.

Thanks! There's no practical upper limit to the number of cells, but the entire battery voltage should probably be no more than 2kV to keep the optoisolators happy ;)

So one issue with over-current LVC is that a switch would need to be sized for a given pack voltage/current, but my goal was to make a general system that could be used for any pack setup. Also, relays draw a lot of current to keep active, which would completely blow up the power budget (~30uA per cell at the moment). That said, there is a buzzer that activates when any given cell is below a configurable threshold that at least lets you know something has happened (if you're nearby and listening). Sounds like we've got similar approaches to the LVC protection problem.
 
OCP overcurrent protection is of course unrelated to LV low voltage.

The current can be measured at whole-bank level, using a shunt with OTS gear.

BMS does not need to be one component, one size fits all, it is required functionality and distributed / layered for redundancy as desired.
 
Back
Top