Small omission in beta dvcc.py, maybe?

Today, because of some very rapidly changing solar conditions the final charging stage was very aggressive.
For the first time I had a cell difference of about 100mV. See below, it maxed out at 90mV.
The maximum cell was about 3.54V.
I have the float voltage set at 52.5V, the minimum charging voltage recommended by Pylontech. It’s a nice round figure of 3.5V per cell.
Still, seen on the graph, the battery recovered quite nicely, because of the decreasing charge current when the battery voltage was closing to 52.5V.

The problem is when one or more cells overshot. And in that moment is good practice to ease back the charging.
So one must keep an eye on cell voltage, not on BMS charging current.
I would do the following:

  1. Get the real battery CVL. Pylontechs generally reports 53.2V for 15 cells.
  2. Divide it by number of cells. For example, 15 cells will give you 53.2 / 15 = 3.54(6)V. I will round down to 3.54V.
  3. When any cell voltage (MaxCellVoltage) reach 3.54V from above - so a possible cell voltage overshot, ease the charging voltage down, from that 52.4V you’ve manually imposed.
  4. As soon as the MaxCellVoltage go below 3.54V (pct.2), restore the charging voltage to 52.4V.
  5. And so on and so forth, repeat steps 3 and 4, up until the battery is nice and easy balanced at 52.4V which means an average of all cells just a little over 3.49V.

Of course, I would keep a charging current of at least 1A permanently, to compensate that parasitic draw I’ve talked about before. max(charge_current, 1)
So no sawtooth behavior and no #29 error.

1 Like