Tuesday, June 13, 2017

Low Cost Active Battery Balancer

You might have noticed in my last posts that I used 120 pieces of recycled 18650 lithium cells alongside with 4S Lipo pack to power my ebike.

This introduces large variance in terms of practical charge capacity and coulometric efficiency. As the result, charging them all in series configuration (14S pack) can be very challenging because each individual cell accepts charge at a different rate, meaning, all 14S will sit at different voltage levels.

The issue arises when at least one of them reached overvoltage condition. For my case, anything above 4.2V per cell is deemed to be very dangerous as it might explode and catch on fire. The tragedy happened to me once before (fault charger) and I learned the hard way to respect the voltage limit.

I then constructed a passive battery balancer which was TL431-based shunt regulator (refer to my Hackaday link below). It works fine and dandy, but, the shunt transistor overheats pretty much all of the time. Dissipating 300mA as the balancing current at 4.2V (that's 1.26W) proven to be stressful for the design.

Not to mention the fact the balancer needs all cells in the pack to reached 4.2V before the actual balancing can be performed (this is commonly called as top-balancing).

Googling for an active balancer solution lead me to expensive proprietary solutions that I cannot afford at the moment.

Hence, I decided to give it a go by designing it myself using low cost parts.

This is what I come out with:

The schematic.

The principle is quite straight forward really. All I did was converting the synchronous buck converter module (MP2307) to become a voltage follower (look at R4 and R5). In this case, the voltage that it is following is the half of the battery voltage.

In theory, I can make the power converter module to follow any voltage that I want (within limits of course). This is a very simple way of modifying the voltage regulator to instead of having the voltage to be set by an internal voltage reference (0.925V in this case) and a resistor-network, this technique forces the chip to follow an external voltage reference instead.

In other words, the circuit forces the voltage regulation to be governed by an external voltage reference, instead of the internal one.

The circuit constructed on a perfboard.

I originally intent to manufacture and sell on it Tindie, but, before I do that, I thought it would be nice to have a review by a friend of mine in the community (Vanarian from Endless-Sphere). 

Unfortunately, the board that I posted to him in France was lost during shipment and the board does not reach to him.

I lost my motivation and decided to open source this instead with the hope that the community can benefit from it and made some enhancement to it.

I believe this is the first of its kind: simple and low-cost. Maybe someone can prove me otherwise? ;)

The design files can be found in the links below.

Github: https://github.com/AfdhalAtiffTan/LowCostActiveBatteryBalancer
Endless-Sphere: https://endless-sphere.com/forums/viewtopic.php?f=14&t=87372
Hackaday: https://hackaday.io/project/20825-low-cost-non-dissipative-active-battery-balancer
Banggood: https://www.banggood.com/5Pcs-Mini-DC-Adjustable-Power-Supply-Buck-Module-Step-Down-Module-p-952402.html?p=3117141642416201505D


Shawn McCarty said...

Hi Afdhal,

I am seeking an active balancer for my companies products, BatteryBlocs.


I would be interested in supporting this project financially and working with you to achieve a modular active balancing board. It is a superior concept to my Balance Blocs.



Afdhal Atiff Tan said...

Hi Shawn,

I do have plans to improve the circuit:
- lower quescient current
- faster balancing
- lower price

But, I only have weekends to work on my hobby projects, so, I don't think I can finalise the design within 2 months.

As for now, feel free to use current circuit. A small mention of me would be appreciated.

Kind regards,

Unknown said...

Hey Afdhal

I love the simplicity of the analogue circuit.

Did you try the circuit on more than two cells by any chance?

What was the quiescent current like?

I could get these manufactured easily in china cheaply.


Shawn McCarty said...

Hi Anthony,

There is a similar product:


Do you think these could be made for less? If so, I would like to join you in making a trial batch in China- maybe by Seeed- if Afdhal supports this.


Afdhal Atiff Tan said...

No, I only tested it on 2S-cell. I did test the quiescent current, but I lost the log file. Feel free to manufacture it.

Thank you for the link, that is one interesting product indeed. I wonder what topology they used. My version can be made for under $3 per cell, maybe Anthony can make it cheaper?

Shawn McCarty said...


Are you still working on this? When I look at your KiCad schematic I see four separate circuits. I don't see how they fit together. (I'm not good at this) I have someone who will draw the PCB if I can get him a good schematic. Can you help?

As always, I understand your time is valuable and am happy to pay you for it.



Afdhal Atiff Tan said...

Hi Shawn,

The 4 circuits you mentioned is connected via the node names. For example, all nodes named VCOM are connected together.

I plan to restart this project in 4 weeks, I'll let you know if I have any updates.


Shawn McCarty said...

Hi Afdhal,

Ahh, that makes sense, connect the nodes.

Happy to hear you are still interested. Do you have ideas for improvement?

There is a real need for a low cost modular balancer. My goal is to build one into each BatteryBloc so DIY people can assemble batteries like Legos.

I would be happy to see an open source schematic. I would make them and sell them with my BatteryBlocs, and at the same time have links to the schematic for the DIY people.

The best on the market are from Deligreen and cost $21 each: I believe they use flyback topology.


The product needs to be as efficient as possible, balancing accuracy is less important. .05 of a volt difference could be the limit.

Let me know if I can help your effort with funding.



Afdhal Atiff Tan said...

Hi Shawn,
How fast does it need to be? With current design, 50mV will take days.
Flyback topology might solve this, but, I'm not sure about the BOM cost yet.

Malcom said...

Hi Afdhal,

What would the balance current be between cells?


Rodrigo said...

I'm not sure if your circuit works well, because if you use a buck topology you can only transfer power by one direction, so in this case, from top to bottom battery. If your upper battery has a bigger voltage than the lower, the circuit will transfer power (with no limit apparently) to reach a equal voltage. But if the bottom battery has a bigger voltage than the upper, your circuit cant do anything to equalize them.
Sorry for my bad english. I expect some reply from you.

Afdhal Atiff Tan said...

@Rodrigo Have you considered that current will flow when there is a voltage difference? If Vcom is always at 1/2VBatt, it will force both cells to equalise.

Miftah said...

Hi Afdhal, could you tell us how did you get 0.925V ? thank you for your reply

drevz556 said...

Hi there! I am intending to take inspiration from your design for my final year project. Can i have your permission to do so? Credits and mentions will of course be presented in my report!


Afdhal Atiff Tan said...


Sure, wish you all the best!

niko_20010 said...
This comment has been removed by the author.
niko_20010 said...

@Rodrigo this thing works because the buck used is a SYNCHRONOUS one!
Sync Bucks are capable of transferring energy in both directions.
Means: if you let current flow into the output, it will be transformed back to the input at a ratio determined by the duty cycle of the two FETs...

Afdhal Atiff Tan said...

The 0.925V is from MP2307 datasheet. Sorry for the late reply!

Thank you for clarifying it for others!

Koray said...

There are two big capacitor in your pcb . Do they exist in the shematic?

Afdhal Atiff Tan said...

Yes, C1 & C5. The values are not critical.

Anonymous said...

The converter chip MP2307 requires 0.925V in feedback pin (5) to be set in order to turn the converter into an "idle" state, which means that batteries are balanced and no current is transferred between them. Opamp working as a comparator gives at its output +Vcc or -Vcc depends on comparison results, simplifying of course. In your circuit, it is impossible to set the converter into mentioned idle (means the balanced) state because the opamp never gives required 0.925V on the MP2307 feedback pin (5) when opamp input voltage comparison takes result: both are the same (1/2 Vcc as a reference from resistors divider and the voltage from the middle point between batteries). Your balancer is constantly jumping from one extreme state into the second one and never achieves stability.

The overall idea is great but requires to be little improved.


Afdhal Atiff Tan said...

I think you might want to reanalyse the circuit. The opamp is working as a summing amplifier which will drive the output in the linear range, i.e. it is not a comparator. The other opamp smoothes the output so that a stable offset 0.925V can be removed.

No comparator here, just pure analogue. You can look at my Hackaday entry for the voltage curves.

Robert said...

@Afdhal Atiff Tan
Thank You for the explanation. If I understand well, disconnecting VCom from the battery stack should set the converter into stable 1/2 +Batt voltage on the VCom output. That makes sense. Beer for you! :) I have to build a prototype and next balance 14S battery stack in my DIY powerwall.


Afdhal Atiff Tan said...

Sounds interesting, keep me posted!

pk s said...
This comment has been removed by the author.
pk s said...

@Afdhal Atiff Tan
In the datasheet of the MP2307, the parmeter "Lower Switch Current" is given only 0.9A. Does this mean that balancing current is limited to 0.9A?

Afdhal Atiff Tan said...

@pk s
I believe the number is for the low-side mosfet current limit.
Since the chip is a synchronous buck converter, it uses the bottom mosfet as the "flyback diode".

Tbh, I am not sure what is the exact current limit, but, you may be right.