Alternative balancing ideas and charging from solar

As you have pointed out, unless you have a silly ratio of modules to cell size, the modules cannot bleed enough power to prevent the cell from being overcharged.

Scroll up and find my posting about “better balance algorithm”. But I am repeating it here because I did not receive anything that discouraged this plan, and received no encouragement.

If you set the relays to shut off charging when an individual cell reaches the max, then your cells are being protected, but they aren’t being balanced. If you set the relays to shut of charging when the whole pack reaches that max times the number of cells, then you are abusing the top cells but you can do some balancing. If you stop charging when any one cell reaches the max, the only benefit to balancing is additional pack capacity.

The more time a cell is at max, the more abuse it is taking. I have no feel for the volts, the time, and the degradation, but the algorithm that is currently used where a cell is bypassed when it reaches max V, is going to single out a cell for abuse. That cell will lose capacity every time it hits max, and will more likely be the top cell next time. The modules have no ability to bring that top cell below the others so it will not be the next abused cell.

If you monitor the amps going in/out, you can have a state of charge measure and you can stop charging at say 90% and thus stop before any cell approaches max. The only downside to this is the accumulated error of amp counting. To solve that, have the cells run up to max every so many days or weeks or whatever. In this design, the controller will read the voltages of the modules before it shuts off charging, then instruct a module(s) to bleed power if they are out of balance. This enables the controller to bring that cell below the others so it is not the victim the next time the cells are run up to max.

I will be implementing this algorithm in the next days or weeks.

I don’t see why. When measuring the voltage, the amps will be nil, thus the voltage drop should be insignificant. During bypass, I don’t see why we care that a long cable is adding resistance. The module will not measure the V (or rather should not measure) while it is bypassing.

The ampacity tables tell us the max amps to run through a cable to ensure the cable does not melt, and that is length independent.

Because resistance of a long cable will introduce voltage drop, which in turn makes the voltage reading incorrect.

During bypass the resistance in the cable will also generate heat.

1 Like

Don’t forget you will want to stop charging when a cell hits a certain voltage to prevent over charging or worse.

Just to demonstrate, don’t forget that all ethernet cables are not created equal. I’ve done two examples one with copper cable, the other with cheaper aluminium cable both with 24AWG. With a cell at 4V, and a current of 0.85A. So as soon as you turn on the balancing resistor you’ll get a voltage drop due to resistance of the cable.

1 Like

@stuart and @GadgetUK, what am I missing?
When measuring the voltage, the amps will be nil, thus the voltage drop should be insignificant. During bypass, I don’t see why we care that a long cable is adding resistance. The module will not measure the V (or rather should not measure) while it is bypassing.

The ampacity tables tell us the max amps to run through a cable to ensure the cable does not melt, and that is length independent.

I do not understand why my writing is so poor or nobody seems to be able to read it.

I am certainly doing that. That is the whole point of my thinking. I do not care about pack voltage. That is a recipe to single out a cell for abuse. I am shutting of charging based on cell voltage and better yet, pack SOC e.g. 90% before any votage gets near the knee.

It was a really long post, the detail got lost!

I would avoid using S.O.C for anything meaningful, its wildly inaccurate, energy counting is never an exact science.

1 Like

@John_Taves No need to shout. There seem to be very few reports of battery damage in the forum. Which suggest that you have implemented the use of diyBMS incorrectly.
You certainly seem to be of the opinion that you are always right, and those offering advice are either wrong or don’t understand what you are trying to do / say.


IF SO @John_Taves , don’t copy @stuart’s DIYBMS - create You own design , build, test , share results and let us evaluate Your solution.

1 Like

I did…

I am shutting of charging based on cell voltage and better yet, pack SOC e.g. 90%**

If you think you have a great way forward, experiment, try it, learn from it and then let us all know how we can benefit from the idea, as part of the open source community.

Using SHOUTING on a forum is just poor form.

The key thing is experimentation (safely!), I’ve lost count of the number of failed attempts I’ve had at certain projects, but each one moves you forward with a new skill or a lesson learnt.


There is no point to attempting to contribute to this project, if others are determined to take my sentences out of context and wreck the meaning. I am just not skilled at writing to put several complex engineering concepts into short sentences that can be isolated from the others. Plus, I have no desire to discuss bold and CAPs on an engineering forum.

If anyone reading this forum wants to understand the concepts I wrote about above (search this thread for “better balance algorithm”, you’ll find the description 2x times) feel free to PM me. I am eager for feedback to understand if I am on the right track, and I am eager to explain the thinking if it is not clear.

I apologize for wasting the other forum member’s time.

@John_Taves with the greatest of respect, from what I’ve read on this thread, and others. You’re trying to take diyBMS from being a relatively simple monitoring and management tool, and turn it into a full fledged BMS with active balancing , and a charge controller.

People have repeatedly point you to information to help you to do this, yet you then openly criticise both current design of diyBMS as hand soldering of SMT components is required, and it’s apparently trashed your battery.

Perhaps if you provided details of your current setup, what you’ve done already, and exactly what you’re trying to do as a ‘whole picture’ then you may get some useful input.

If you’re not willing to accept advice and guidance, then “I’m out”.


This is incorrect.

The purpose of the relays and rules are to control chargers.

DIYBMS did not trash my battery.

I am totally willing to accept advice and guidance.

Can you please learn to quote correctly

You previously stated

Which isn’t a charger, it’s not quite as simple as just letting the solar panels dump power into the battery. These cells have specific requirements.
Post details of your system (a nice schematic of all the parts in play), and perhaps we can provide some useful advice.

1 Like

My system is dirt simple. I have the controller controlling the relay that is between the 72 cell panels and the pack of 8 LiFePo4 cells. Ideally, I would have 60 cell panels, but oops, some solar is going wasted. I also have an inverter and a DC/DC converter and both of which are in series with a controller relay. The controller shuts load or chargers off when any one cell gets to the knee of the voltage curve (set via the UI).

Keep in mind I have not asked for help with my setup. I was suggesting a better way to balance, and wanted feedback on that. But, I am curious as to what is not quite as simple as letting the solar panels dump power into the battery.

Most LiFePo4 setups I’ve seen have a charge controller, there’s a pretty good explanation of the two types, pwm, or mppt here

I’m not saying you have to have a charge controller, but it does seem to be the norm.

You’re proposed “better balance algorithm” is predicated by the ability to monitor the current flow into the cell. This currently isn’t possible with diyBMS as it stands, so additional components are required.

The reason that a cell gets to Vmax sooner than others is down to it’s internal chemistry and makeup which dictate the internal resistance. So it’s going to be the same cell to get to Vmax the next time round. I agree that shutting down charging based on cells AS WELL as SOC is a good thing to do. As for the details of the algorithm you need to take into account the charge and discharge characteristics of the battery chemistry being used.

The more components you add into the system, the more things you have to account for, voltage loss in a cable for example.

Welcome to the world of R&D, others will help out, but you have to be willing to provide information when asked, assumptions will be made about your setup when you ask questions, which may in turn lead to the answers being given appearing confusing.

Don’t forget that the majority contributing to the forum do so on their own free time, if anyone could make millions doing this, they wouldn’t be here.

1 Like

No it won’t. It’s how all “top balance” BMS systems work, whether that be diyBMS, Batrium, Electrodacus, Daly etc.

They all drain power from the highest cell(s) when they exceed a limit.

1 Like

@GadgetUK, Thanks for paying attention to my post and responding.

Yes, and I know all about them. I was making a mistake in thinking how others must be setting them. I assumed that they would drive the pack up to the knee voltage and hold it there. I was forgetting that you’d set the absorption to the knee voltage, then set float to below that. I assume that the settings let you specify an even lower voltage that will trigger the thing to start the run back up to the knee, right? This mistake is what led me to be concerned that others were relentlessly holding their packs at the knee.

This mistake came about because the Electrodacus runs the pack up to the knee, then waits until the pack drops back down to float, then runs it right back up. I was doing the same, until I realized this was dumb.

(For example with LiFePo4, the knee might be 3.6 per cell and the float might be 3.4.)

Yes, I am in the process of debugging a controller that uses 2x INA226 chips to measure current. I have also modified the controller software to take advantage of this and it provides a %SOC.

I did not intend to imply that if I stop at 90% SOC the software will ignore individual cell voltages. Always the charging will be shut off if any one cell hits the knee (and loads off at the low knee of course).

I will modify the code to run up to the knee at a much lower frequency (e.g. once per month) for the dual purpose of eliminating accumulated SOC error, and also to measure how well the cells are balanced. When the first one hits the knee, charging will be shut off, SOC will be reset to 100%, and I will check the cell differences. If some are lagging by too much, then I will tell the modules to give the high ones a “hair cut”. That hair cut can be an arbitrarily low amps over a long period of time.

Yes, I know. I removed that post because I only posted it to get you to read my “better balancing algorithm” post.

However, I see no comfort in all BMS’s doing this. Every trip to the knee stresses the cells, right? I don’t know the relative degradation between a battery never getting to the knee vs one that gets to the knee every day, so I don’t know how much benefit there is to not getting to the knee, but if we measure current and thus know the SOC, we reduce the trips to the knee by an order of magnitude.

When using whole pack voltage to turn on/off the charge, as most people seem to be doing, the amount of time that the highest cell stays at the knee is proportional to how far ahead it is from the other cells. This is of course why everyone says that balancing is important. I don’t do this, which is why I say balancing is a nice to have.

But notice that the JLCPCB assembled module can only drain at most .85A and that’s with some cooling. @Stuart, you pointed me to the paper that stated that at the knee a lithium pack is going to be taking .03C of amps, right? For any rational ratio of modules to cell Ah, there is no chance that the module can drain current fast enough to prevent driving that cell deeper into the knee, while it is waiting for the other cells to catch up.

This means that the more you need to balance the cells, the more you shouldn’t use the modules to do this. Assuming of course that you are using whole pack voltage as the charge stop.