Balancing Algorithm


Since we have to implement a kind of balancing algorithm into the BMS, i wondered, which would be the best way to do it, cause there are different possibilities, e.g. voltage-level controlled bleeding or a small amount of balancing current for a certain time, etc.

So i asked Dacian Todea, who made the great SBMS4080 and SBMS100, for an expert recommendation. Here is an excerpt from his answer, which describes the balancing algorithm that is implemented within the SBMS:

The way that is done is that cells are measured and as soon as there is more than 10mV delta between cells and there is a charge current of at least 300 to 500mA then cells with highest voltage will be discharged with a 24 ohm resistor (two 12ohm 0.5W 0805 SMD Panasonic resistors in series) in the case of SBMS60 and SBMS100 so the max current is 150mA with a 3.6V cell.
The cell balancing is performed for a number of seconds say 6 seconds and then there is a break of 1 or 2 seconds where the controller can monitor the cell voltage while eliminating the voltage drop on the cell balancing wires and then start cell balancing again for 6 seconds if there is still the case.
This way with 6 second ON and 2 second off the average current will be just 112.5mA and so the power dissipated will be max 400mW with at most 7 cells out of 8 being balanced at any one time the max heat dissipated will be 2.835W and that can easily be dissipated even on a small potion of the main PCB as on the SBMS.

The cell balancing will be as effective ore more effective as using a large power resistor because the cell balancing can be done for a long period as much as a few hours depending on charge rate and how imbalanced the cells are.

Then i asked for clarification:
The balancing happens regardless of the SOC ? Meaning: not only at the end of the charging, when cells are nearly full ? So you have top-balancing as well as bottom-balancing and in-between-balancing ?

And he answered:

Yes the cell balancing is done at almost any SOC as long as there is a cell delta above the one you want to set maybe 10 or 20mV. This is always top balancing even if the balancing is done when SOC is at 60% is just that you react in time so you can use a small current for a long period of time instead of a high balancing current over a short period of time at the end.
Bottom balancing is useless in all application (is used just by DIY people that do not know much about charging Lithium cells).

Since this sounds evident to me and because i’ve made good experiences with the SBMS (the cells are always well balanced and extremely close together) i would like to use this balancing algorithm. And for purposes of a common terminology i would suggest to reference to it as „micro-balancing“.

Best regards,

here you can see a sample of the SBMS, which shows, how close the cells really are. The difference is about 3 mV and this is even while the cells are still in the „onrush“-mode … meaning: When the cells are relaxed at the bottom with no load, then its normal to see some „underlying“ differences between them. As soon as they start to get reloaded, which happens in this case according to the early morning sun starts shining at about 6:40, then they are getting very soon close together and even more, as more they move towards the top-level, which isnt even yet fully reached at 9:57.

I’m not saying that this is a result of the recent balancing which may happen at this moment during the period between 6:00 and 9:57, but i merely interpret it as a sign of health which results in general from the overall „micro-balancing“.

best regards,

I consider small currents (around 200 mA max) within a certain SOC window after a certain rest period as „normal“ balancing. This is also how it is done for automotive batteries.

Calling balancing with small currents „micro balancing“ sounds confusing to me. I don’t see the need of higher balancing currents in any application.

As an example, look at the Tesla Model S BMS slave board here:

It has 4x 158 Ohm resistors in parallel, resulting in 39.5 Ohm total and max. 100 mA balancing current. The total capacity of the Tesla cell assembly is roughly 240 Ah (=85 kWh / 350 V), which means quite a large capacity to balance.

However, I would not agree that it makes sense to switch the balancing on at any SOC. Consider a well-balanced battery pack at 90% SOC, containing one bad cell (i.e. lower capacity than the other cells). If you start balancing also at low SOC you would discharge all other cells to reach the bad cell’s potential. Afterwards, when you re-charge again, you would again have to adjust the bad cell to the other ones. Depending on how different the capacities of the cells are, you would maybe never reach a well-balanced state.

So you have to define a more or less narrow SOC window where you allow balancing.


Ok, i’ am not insisting on the term „micro“ :wink:

Yes, you are right, according to the balancing way that you described. But the other is way is meant as aplying a charging-current while balancing, what means, that none of the cells is really bleeding, but instead its merely that the top cell (or more precisely all cells with a bigger Delta than 10mV towards the bottom cell) is getting a bit less charging-current than the bottom cell (or all lower cells with a smaller Delta within the limit) so that the lower ones can recover more and therefore move towards the top cells level.

So, as conclusion i would differentiate so far between two possible kinds of balancing that we described above:

  1. Real bleeding, that happens when not charging and is controlled by voltage-thresholds.

  2. Less current while charging which is also voltage-dependent, but applied within some time-steps.

Thats maybe not a big difference, but can make some smaller differences within the software-implementation of the state-machine, thats why i mentioned it.

best regards,