# Battery emulator based on an array of buck converters for BMS testing

Problem: How to quickly and cheaply test if a given BMS (Brand: Daly / Tiny BMS / etc) or battery-powered system behaves as intended for various cell voltage combinations without waiting for actual cells to (dis)charge. For example, if one cell voltage drops w.r.t the others, then this unbalance should trigger the BMS to take some predefined protective action.

Background: I want to use sixteen 206Ah 3.2Vnom LiFePO4 cells in series. I do not have the background to design or quickly understand circuits with many inductive or capacitive components.

Conceptual idea: Use an array of buck converters (e.g. this one) as shown in the figure. To reduce the voltage, for example, of only emulated cell 3 ($$\\Delta \mathrm{V}_3\$$) with 0.2V, both buck 4 AND 3 have to be decreased by 0.2V.

Question: Will this work without destroying the BMS, assuming proper wiring, generally speaking? Also if the BMS starts passive balancing? If not, what adjustments would you recommend?

• I find it rather difficult to emulate a battery in its totality. It is too dynamic. If BMS is charging, we don't have a place to dump that energy also. – mehmet.ali.anil Dec 4 '19 at 1:57
• I take the following back, they are connected through the input, since Buck is not isolated. But, I also see that the output return paths (grounds) are floating. ~~The buck controller will control the voltage between ots terminals. So unless you connect the outputs such that + of V1 is connected to - of V2 and on, the voltages won't add up.~~ – mehmet.ali.anil Dec 4 '19 at 1:59
• Nominating a specific BMS would be better - they MAY vary in action. Presumably you are "top balancing". As shown each buck converter nees to provide progressively higher voltage and power - eg if BMS conducts at say 3.6V and up to 1A - 1st buck supplies up to 3.6w, 2nd 7.2W ... and 16th at 16*3.6 = 57.6V supplies 57.6A. For a 206 Ah cell the balance currents may be some amps and your top buck handles hundreds of watts. | IF you can use isolated bucks each handles only Vcell_max x I balance = much less watts. You could use 16 x isolated psus. Consider microwave oven transformer with ... – Russell McMahon Dec 4 '19 at 2:37
• HV secondary removed, magnetic shunt removed and 16 low voltage secondaries. Also add about 10% more turns to primary as core tends to run well into saturation usually. Separate psus may be easier. || Also consider a string or 16 resistor pairs in series with a switch allowing one // R to be removed. If usually dropping say 3.55V each. opening the switch on one R pair will raise the voltage on that resistor.... – Russell McMahon Dec 4 '19 at 2:41
• ... || consider using 16 series resistors and add an isolate psu across ant one R to oncreases its voltage. Wind up main voltage until all R's are JUST at BMS start point and then add extra I to one R. All extra I should exit via BMS. – Russell McMahon Dec 4 '19 at 2:41

Nominating a specific BMS would be better - they MAY vary in action.

Presumably you are "top balancing". As shown each buck converter needs to provide progressively higher voltage and power -
eg if BMS conducts at say 3.6V and up to 1A - 1st buck supplies up to 3.6w,
2nd 7.2W ...
and 16th at 16*3.6 = 57.6V supplies 57.6W.

For a 206 Ah cell the balance currents may be some amps and your top buck handles hundreds of watts.

IF you can use isolated bucks each handles only Vcell_max x I balance
= much less watts.
You could use 16 x isolated psus.

Consider microwave oven transformer with HV secondary removed, magnetic shunt removed and 16 low voltage secondaries. Also add about 10% more turns to primary as core tends to run well into saturation usually.
Separate psus may be easier.

Also consider a string or 16 resistor pairs in series with a switch allowing one // R to be removed. If usually dropping say 3.55V each. opening the switch on one R pair will raise the voltage on that resistor.

Consider using 16 series resistors and add an isolate psu across any one R to increases its voltage. Wind up main voltage until all R's are JUST at BMS start point and then add extra I to one R. All extra I should exit via BMS

Most balancers work by switching resistors across the cells whose voltages need be to reduced. This may not play well your circuit because the buck converters cannot sink significant current, so an attempt to balance one of the higher cells will simply raise the voltage of the converter below it.

Some balancers only draw current from the cell when it exceeds the maximum permitted voltage. If you set one 'cell' to a higher voltage the 'cells' below it will have their outputs pulled up when the balancer kicks in, causing their balancers to also kick in. This not quite the same as a real battery, where the other cell voltages would only rise slowly as they continued to charge.

This type of 'top' balancer is often powered by the cell itself, which may have consequences when powered by ground-referenced supplies. If the quiescent currents are not exactly equal the voltage won't be shared equally among them, and the 'battery' will appear to be grossly unbalanced.

Other balancers periodically compare the cell voltages and draw down those that are highest, even before they reach full charge. To measure and compare the cells without interference from balancing currents the balancers are all turned off for a bit, then those that need to be are turned on again for a fixed period after the measurement. With this balancing method there could be extreme variations in 'cell' voltage as each balancer is turned on and off.

LiFePO4 has a very flat voltage curve until almost fully charged, then shoots up rapidly at the end. This suits 'top' balancing better than progressive balancing, so a balancer designed for LiFePO4 is more likely to use this method.

Since most balancers only discharge by a few hundred milliamps, loading each power supply output with a resistor that draws more than the maximum balancing current (eg. 0.5A) should be sufficient to keep the voltage down when current is being pushed into the output.