helgeerbe / OpenDTU-OnBattery

Software for ESP32 to talk to Hoymiles Inverters and Victrons MPPT battery chargers (Ve.Direct)
GNU General Public License v2.0
287 stars 62 forks source link

[Request] Feature: DPL Stop Discharge if UVP cell is reached #1110

Open Robert-Schimanek opened 1 month ago

Robert-Schimanek commented 1 month ago

Is your feature request related to a problem? Please describe.

Currently, in the DPL, discharge is carried out based on battery voltage or SoC value. Newer LFP cells, in particular, have a very flat voltage curve, and their slopes drop rapidly near 10%. This can cause individual cells to suddenly diverge from the battery pack's unified cell voltages and trigger an undervoltage cutoff at the BMS.

I do not see the BMS as a regulating instrument of my system. The BMS should only be active in emergencies, like a train brake, as afterward, you have to get the system running again with a lot of manual annoyance.

Describe the solution you'd like

I propose that the minimum cell voltage already recorded in the battery stats be used to compare with a threshold and idle the DPL or stop the discharge. The solution shall do a rather simple job: the DPL stops discharge if one cell is lower than the specified cell undervoltage in UI.

I have created a commit to inspire a possible solution in my fork, which can be found here: Commit in my fork.

Describe alternatives you've considered

Another alternative would be to stop the DPL externally via MQTT when a cell undervoltage occurs. However, I would not prefer this due to external dependency.

Yet another dampening measure (not real alternative) is to continuously use active balancing in BMS over the whole voltage spectrum of the cells, but this results in unnecessary wastage, especially for systems with small solar power sources, like balcony-powered ones.

Additional context

image

schlimmchen commented 1 month ago

I do not see the BMS as a regulating instrument of my system. The BMS should only be active in emergencies, like a train brake, as afterward, you have to get the system running again with a lot of manual annoyance.

I totally agree. The BMS shall only act if something went wrong, not during normal operation.

In my opinion, you should generally avoid operating "around the steep slopes" of the cells. @hoschiking Care to join the discussion? The stop threshold should be high enough such that one can expect that no cell drifts too far from the others. This should be the case for a healthy battery. The cells only drift away from each other at the extremes of the voltage spectrum or if individual cells are unbalanced or defective. Hence I am not convinced that this option should be there, as it taunts to use an unreasonable Depth of Discharge.

If the setting was added, there should be a cell overvoltage threshold as well. And if we have those, how any other settings that might trip the BMS shall we monitor? Like over- and undertemperature, cell voltage difference, etc. to stop discharging before the BMS intervenes? Why do you think that cell undervoltage is particularly important to monitor?

spcqike commented 1 month ago

If the setting was added, there should be a cell overvoltage threshold as well

thats right. and, further thinking, what shall we do if overvoltage is triggert? can we actively stop the charging?

anyway, to have some kind of monitoring and reporting / notification would be great.

Robert-Schimanek commented 1 month ago

In my opinion, you should generally avoid operating "around the steep slopes" of the cells.

I would like that, but the DTU is not yet capable. As you see 49V/16 equals more than 3 V and thus part of the flat slope. Also, the cutoff occurred at more than 50 V in the last weeks. So I tried... ;-)

If the setting was added, there should be a cell overvoltage threshold as well. And if we have those, how any other settings that might trip the BMS shall we monitor? Like over- and undertemperature, cell voltage difference, etc. to stop discharging before the BMS intervenes?

In my opinion, such features at the upper end, like a cell overvoltage threshold, are not really necessary, as balancing in most BMS is active at high voltages. Also, the chargers do their safety job at the upper voltage spectrum.

Why do you think that cell undervoltage is particularly important to monitor?

The monitoring of the minimal cell voltage is already happening in the battery stats as I see it. I think a soft stop at cell undervoltage is necessary because Hoymiles is not really designed to be a battery discharger. Currently, there is no measure to detect sudden cell divergence at low voltage in the BMS, DTU, or Hoymiles to initiate a soft discharge stop instead of a BMS cutoff.

schlimmchen commented 1 month ago

So I tried...

That's good! I would like to add that 3.0625V is definitely not part of the flat slope for my cells, not even for very low discharge rates.

image

My stop voltage is at 51V, i.e., 3.1875V/cell, and I have not yet had the BMS trip before the DPL stopped discharging.

I am still not convinced. And confused: What is your cell undervoltage protection (UVP) value of your BMS? Could it be that it is rather high? If the pack voltage is around 49V and 15 cells are around 3.08V on average but one cell is 2.8V, that is quite a substantial (unhealthy) voltage difference already, but should still not trigger the UVP of the BMS, at least in my opinion.

What is your load correction factor? Is it too high such that the discharging stops too late?

As you can see, I am looking to find issues in your setup to avoid starting to add this and then a whole bunch of additional values to monitor, which I think should not be necessary in the first place.

Robert-Schimanek commented 1 month ago

My setup has no issue because my DTU stops discharging if the battery voltage is high and if one cell voltage is lower than the specified threshold, as you can see in my fork, for whatever reason...