FlexiBMS - 0.2 HW under work - Flexible configuration and charging BMS

Github Repo: https://github.com/SimosMCmuffin/FlexiBMS_hardware

Connector poll on post #78 (http://www.electric-skateboard.builders/t/flexibms-poll-come-vote-on-key-design-choice-flexible-configuration-and-charging-bms/46117/78)

First prototype KiCad project files released! #148 (http://www.electric-skateboard.builders/t/flexibms-first-prototype-kicad-project-files-released-flexible-configuration-and-charging-bms/46117/148)

Licensing and my goals for the project #197 (http://www.electric-skateboard.builders/t/flexibms-license-discussion-come-give-your-feedback-flexible-configuration-and-charging-bms/46117/197)

So I’ve been working on my own BMS derivative from @raphaelchang (Raphael Chang’s) Battman BMS (https://raphaelchang.com/#projects/bms). This is an announcement which I want to use to have a discussion with people about FlexiBMS and answer questions and listen to thoughts and ideas.

Anyway, who/what is this BMS for? (I’ll update this list if I remember something missing from it)

  • Supports 4S-12S battery stacks
  • Easier and simpler charging for different battery configs with only single charger ** 12 V charger can charge 4S-12S configurations ** 15 V, 5S-12S ** 18 V, 6S-12S ** 21 V, 7S-12S ** 24 V, 8S-12S and so on
  • Still supports Bulk chargers with built-in CC-CV feature. Faster charging for specific series cell battery pack configuration. (for example, a 42V 2A charger for 10S pack)
  • Gives more flexibility to newcomers with their first battery packs to later change/upgrade their battery packs later without changing the BMS
  • Adjustable limiting of charging power when using integrated boost charger
  • Adjustable end-point voltages
  • Support for multiple power switch types (momentary buttons or toggle switches)
  • Balance current 100mA @ 4,20 Vcell
  • Load Short-circuit detection (pre-charge voltage monitor and overcurrent detection during discharge)
  • Overdischarge protection (can be pack voltage or individual cell voltage)
  • Overcurrent protection
  • Overcharge protection during charging (Load is still able to push current to battery for example during regen braking even if cell voltages exceed limits)
  • Auto load cut off feature with configurable timeout
  • Deep sleep mode for super-low standby current
  • Battery storage discharge feature, for long time storage
  • Audio warning and cues on configurable events (for example, cell voltage low warning when cell < 3,00)
  • Status LED output for power-switch integrated or separate LEDs
  • Bluetooth comms (HM-10) support for wireless diagnosis and monitoring of cell voltages and pack current during rides.
  • Firmware flashing through USB via STM’s built-in bootloader
  • BMS configuration via USB on a graphical UI

The BMS is going to be built as 2 modules: Main module and a switch module. Main module is mandatory and will handle charging and battery pack voltage monitoring (pictured below), then if the user wants, they can add the switch module, which functions as a E-switch between the battery pack and the load and can measure discharge currents.

image image

Old concept photo:

I have been testing my earlier prototype with my board’s 10S5P pack and using the boost charger to charge the battery with a 16V replacement laptop power supply to 41,9 V (4,19V per cell)

Here are graphs of the pack voltage and charge current over the charging cycle: image image


Very interesting. Bookmarked!

This is great, except we’re all looking for a high current discharge BMS… 60-120A.


Nah, most of us are only using the BMS for charging, not discharging

Noted. At those currents you are most likely going to need to use a combination of multiple discharge FETs with a heatsink, a bit of a challenge/problem if you want to keep your design small.

I suppose as a concept it would be possible to split the BMS into two parts. Other one having most of the ICs and a separate module for the discharge FETs. That way you can have more flexibility in it’s heatsinking design and what current it’s rated continuous for.

Thoughts on this? Would rather have a big, one piece BMS unit with heftier current handling or a main BMS unit with changeable discharge module for different currents?

We’d rather have a BMS that only handles charging and is real small. Also there can be an optional breakout board that plugs in to handle 120A discharge as well to those who don’t bypass their BMS for discharging

That’d be awesome

And I see a microUSB on there at J1, does that mean charging from a phone charger? Because that’d be awesome even if it was really, really slow

At this point the microUSB is only for PC comms and can’t output 5V. It’s regulated down to 3V3 for on-board logic, because I want the BMS to be able to be configured while only being connected to a PC without a battery.

Now if it didn’t need to be able to do that (you need to have battery connected to use USB), then I could put a 5V regulator from the battery to the USB.

No, I mean charge the battery from a phone charger, not charge a phone from the BMS

Ah, otherway around. ok.

As a concept, it’s doable, but in practice I think it’s going to be just too slow to be practical.

One of the main points of having the boost charger integrated into the BMS itself is the ability to buy and use inexpensive and small sized laptop chargers, which are easily carried around and can then just be plugged in to charge your board at 50+ Watts. Charging through USB in this case doesn’t make enough sense to me.

Li-po chargers are also a bit cumbersome because they often need their own external DC supply, can often charge upto 6S only and then you need have the access to both power and balance connector to charge safely.

Picture 5 electric skateboards and you begin to notice how slow isn’t a problem but sometimes preferred :stuck_out_tongue:

For 1, yeah definitely too slow. I mean we have fast charging options but flexible slow-charging options using stuff already in the home and office (and easy/light/cheap to carry in a backpack) is what we’re missing.

I think at that point there are some other problems you need to be solving at that point :smile:

Let me preface my perspective that I have done charge/discharge cycles on my board’s 10S5P 600Wh battery pack and at 40 Watts it takes 15 hours (which it did). Discharge was done to 28 V and then charged back up to 41,9 V.

Now compared to USB 2, which can according to spec supply at max while using a dedicated charging port (DCP) 1,5 Amps at 5 V = 7,5 Watts + boost charger losses with big step up. I can’t see it being viable, if charging a boosted board pack (~100Wh) would take over 13,3 hours at best.

It would start to make sense if you were using USB-C with power delivery mode which can provide 20 V @ 5 A = 100W and at that voltage the boost charger would also start to work quite efficiently.

EDIT: USB Battery Charging 1.2 (https://en.wikipedia.org/wiki/USB) support up to 5 A @ 5 V, but still 25 Watts (optimal) is not great and would need a pre-boost charger to first up the voltage for the boost charging circuit that I’m using. IMHO it’s just not a good starting point for higher voltage battery charging.

1 Like

Like I said, picture 5 electric skateboards that you use instead of a car, a couple on standby in case one breaks. Because telling your boss you can’t work because your skateboard broke is not okay, and polluting on the way to work is not okay either, and I don’t want to deal with parking (like ebike).

There are definitely use cases; I’d like one right now :slight_smile:

I’d say there are problems other people need to be solving, not me, because I don’t emit greenhouse gases on the roadway…

Don’t get me wrong, not adding the feature because it doesn’t make sense is one thing, but saying nobody needs it just isn’t true

Noted. I’m not saying nobody would need it, but I’m advocating that there are better solutions, which would also fit better for more people (I’m guessing/assuming that most/more people would want faster charging). I’m seeing this case in this point in time, as a bit of a niche in a niche market.

Lithium batteries need to be charge at minimum 0.5C to protect them from bad chemical issues. Micro-USB standard states a maximum of 2.1A current. That makes 5x 2.1A = 10.5W. Not that much :wink:

@SimosMCmuffin : did you write your own firmware ? I’m still working on the Battman FW. My bench battery will be ready soon so the tests will start soon as well. :grin: I’ll be more than curious to read how you coded some functions that was a pain for me (due to my lack of coding knowledge).


But that’s because we can’t find a decent small enough BMS that can handle high current right? We’d much prefer to let the BMS handle discharge too as it’s much safer than relying on our VESCs right? I can already find had decent small enough BMS’ to handle charge only… :confused:

This the first time I have heard of a minimum of 0.5C charge current for Lithium chemistry (this would mean I would have to charge my battery pack with ~8 amps…) Can you link to where you read that?


Samsung charges at max 0.5C and then ramp down to 0.02C in the CV stage at which point they terminate the charging.

I write my own firmware for my own hardware. The current prototype has very basic firmware, mainly because it’s only used to test the limitations of the hardware, so I need to able to perturb the behavior through serial Comms.

You can ask away, if you’re pondering how I would code some function or a feature. I’ll share my two cents.

A splitted design would be great. Imagine a main board with like a 40A discharge and then add a second board according to your needs. Like a small addition for 60A, a medium one for 80A and a bigger one for 120A.

Running this through my head and thinking about the actual design challenges, it would make more sense to me to have the high side FETs and current measuring on the other module, with the main module not having any FETs on it. Mainly due to the problem of how to carry the current between both main and switch module if both of them have some high side FETs. It would be just easier to dedicate the switch module completely to the FETs.

or like that. But it would be a problem if you want to handle charging if you want to bypass discharging wouldn´t it? So you are required to take a second piece for that.

Can you reformat that sentence, because I can’t figure out what exactly you mean with that? When charger is detected -> shut off discharge FET and open charge FET.

Quick concept drawing of what is on what board:

You can carry through the board-to-board connector all the necessary signals and charger’s charging current to battery.