Jump to content

Axpert kettle voltage-sag data request


Recommended Posts

6 minutes ago, weber said:

Of course the scaling factor (like 2160) will be different for different chemistries. I'm using a constant times the difference between absorb and float to give me that scaling factor. The difference between absorb and float is only 1.5 V For my LFPs. We see it is 5.2 V for those lead acids. This is a bit too effective. I need k = 0.415 for those lead acids, to make my formula work. 0.415 * 5.2 = 2.160 (gives ohms instead of milliohms). So already I must rescale my choice of five k-values to maybe 0.4, 0.63, 1.0, 1.6, 2.5. I like to use values from the R10 series (like fuse and circuit-breaker ratings).

 

For LFP there could be other problem. For example, you have a 48 V 200 Ah LFP, and parameters 2,26,27 would be the same in a 48 V 400 Ah LFP, and we both know that the drop voltage in second case would be the half.

Edited by Javi Martínez
Link to post
Share on other sites
  • Replies 54
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Thanks to everyone who contributed data. I have enough now to be able to determine that the best predictor of internal resistance is not k * (V_absorb - V_float) / max_charge_current, as I thought it

This shows both true and compensated (with the flashing "k") battery voltage, while boiling the kettle.   This shows how we piggy-backed the setting of compensation strength on the cut-

We now have KettleKomp™ working in the above manner. What a joy it is to be able to boil the kettle without it switching back to the grid. So far this is only for the PF0.8 (4 kW/5 kVA) Axpert MKS 5K

Posted Images

5 minutes ago, Javi Martínez said:

For LFP there could be other problem. For example, you have a 48 V 200 Ah LFP, and parameters 2,26,27 would be the same in a 48 V 400 Ah LFP, and we both know that the drop voltage in second case would be the half.

The max charge current in the second case may be double. The user may have two Axperts in parallel in which case we sum the values of parameter [2] for the two inverters and it all works out. But if the sum of the [2]s is the same for both systems, the user would have to choose a k value for the second system that is about half the value of k for the first system, so that

Ri ≅ k * (absorb - float) / max_charge_current

for both systems.

Link to post
Share on other sites
4 minutes ago, Javi Martínez said:

For LFP, wouldn´t be easier to give Axpert information about nominal capacity of battery?

If I could do that, I'd just give it the internal resistance directly.

As I wrote earlier: It is way too much work to patch the firmware to add new parameters, because you must find space in EEPROM for them, and arrange for them to be saved and restored and communicated between parallel machines, and you must provide an LCD interface and serial commands to set and read them.

Link to post
Share on other sites
1 hour ago, weber said:

How do you think the Python aphorisms might apply here?

Simple is better than complicated, in other words, a simple algorithm that is easy to understand and solves most of the problem, is better than a complex one that is infinitely tuneable but difficult to understand. In other words, I think your present approach is the right one :-)

The Victron approach is even simpler, in the sense that it is literally just asking the user for that information.

Link to post
Share on other sites

Axpert 5kva Voltage drop on 300 ah x 48 volt Lead Crystal battery bank . Of grid system . Solar panels switch off .

Starting at 51,92 v drop to 49,71v  Load kettle plus base load 2,450 kw Current 49.8 A Voltage settle at 49,71 

Settings 26) 58,4 v

                27) 55,2 v

                 2) 45 A 

                 1) SOL

                12)  48 volt . If set higher Inverter wants to change to utility which is not available when high current is drawn .

Link to post
Share on other sites

Settings: Absorb [26] = 55.2 V, Float [27] = 53.7 V, Total [2] = 120 A.

Before kettle 52.45 V,  -10.5 A   (alternating between two values, about 50% of the time)

After kettle 52.0 V, -42 A

Low power kettle (1800 W), nominally 320 Ah, actual capacity around 210 Ah. SOC 78%, 26 °C ambient.

Link to post
Share on other sites
On 2018/11/21 at 9:40 AM, weber said:

As Coulomb mentioned, we have been working on a set of firmware patches to address the "kettle cut-off" or "premature source switching" problem. He also mentioned that we had a major setback when we bricked an inverter in the process. But as of today, I am testing the first working non-bricking development version (YF1_73.00e). Hoorah! But there are some aspects of it that I'd like to run past you gentlemen.

First, we can't decide whether to call this feature KettleKomp™ or AussieBrew™? ;)

Second, we're not sure how well it is going to work on all the many and varied Axpert systems out there. The math challenged can skip the fine print below.

We currently calculate:

voltage_threshold_compensation = battery_current * guestimated_internal_resistance

where

guestimated_internal_resistance = k * (absorb_voltage_setting[26] - float_voltage_setting[27]) / max_total_charge_current_setting[2].

where k is a constant. I tried k = 1 and it was too low, at least for my system. I'm now trying k = 2.

When there are parallel or phased machines, battery_current and max_total_charge_current_setting[2] are summed over all machines.

We're trying to avoid having to provide a user interface to allow setting the internal resistance, as this would be very difficult. This formula is based on the idea that at least some part of the difference between absorb and float voltage settings is due to the internal resistance of the battery causing voltage rise at the maximum charging current.

 

We're asking axpert owners to help us by telling us how many volts (including tenths of a volt) your battery sags by, when you turn on your kettle (or other heavy load); what battery current your kettle draws; and what your values are for settings [26], [27] and [2] (the latter summed over all machines).

 

 

would this void the warranties?

Link to post
Share on other sites

OK so I ended up doing my test just before sunrise. 

SOC was about 60%

Before the test Voltage was 49.38V and I was drawing 5A

2 minutes after switching on a 1500W load the voltage was 48.91V and the current was 40A.

The load was switched off and after 2 minutes the voltage had recovered to 49.24V and we were back to 5A.

I have 4 Pylontechs

Link to post
Share on other sites

Thanks for that, @GVC. Your system has the lowest k value I've seen, by far, 0.2. The obvious reason is that your maximum charge current setting is a very low 20 A. Can you tell me why it is so low? Is there any reason why you could not set it to 40 A?

Sorry @SilverNodashi, I couldn't resist. :)

Yes, it's quite possible that installing our patched firmware may void your inverter warranty. It should go without saying that you install our patched firmware at your own risk. I note that (based on number of downloads) around a hundred people are already using earlier versions of our patched firmware. And I note that we always include the original manufacturer's firmware along with our patched firmware, so you can revert at any time.

Link to post
Share on other sites
On 2018/11/23 at 2:50 PM, weber said:

Hi SilverNodashi. No, giving us this data will not void your warranties.

Hi Chris. Thanks, but I also need your settings [2], [26] and [27] (max total charge current, absorb voltage and float voltage), for this to be useful.

Setting 2 is 50A I have two inverters in parallel but only one currently has PV.

26 53V

27 52.8V

 

Link to post
Share on other sites

Thanks @Chris Hobson. Do both your inverters have a setting [2] of 50 A? In any case, your system has the highest k, by far. The reason is that your float voltage is nearly the same as your absorb voltage. 52.8 V is a very high float voltage for 15S LFP (as the Pylontechs are). That's 3.52 V per cell. Why can't it be a more usual LFP float voltage, like 3.35 to 3.37 V per cell, e.g. 50.4 V?

Link to post
Share on other sites
1 hour ago, weber said:

Thanks @Chris Hobson. Do both your inverters have a setting [2] of 50 A? In any case, your system has the highest k, by far. The reason is that your float voltage is nearly the same as your absorb voltage. 52.8 V is a very high float voltage for 15S LFP (as the Pylontechs are). That's 3.52 V per cell. Why can't it be a more usual LFP float voltage, like 3.35 to 3.37 V per cell, e.g. 50.4 V?

One inverter has no PV so it does not matter what its charging is set at at the moment it is just parasitic (currently the panels destined to power it are pumping water for cattle).

I have done a bit of searching and the Pylontech BMS does top balancing and only above 95% SOC. With my current setup my battery only achieves SOC 100% at 15h00 -15h30 and by 17h00 my voltage is below 50V currently 49.87V at 18h15.

My batteries appear to be completely balanced now so I plan to reduce the float back to what you recommended. 

Link to post
Share on other sites
23 hours ago, weber said:

The obvious reason is that your maximum charge current setting is a very low 20 A. Can you tell me why it is so low? Is there any reason why you could not set it to 40 A?

 

I have 8 x 245Ah 'US 145 XC2' 6V FLA batteries and am charging them on the lower side of the recommended 10%. (I stuffed up on my first set of Monbat batteries by overcharging them and they only lasted a year. So I am being a bit catious on the second set)

My SOC (BMV) was 89% at time of test and PV was producing around 1600W.

Edited by GVC
Link to post
Share on other sites

Thanks to everyone who contributed data. I have enough now to be able to determine that the best predictor of internal resistance is not k * (V_absorb - V_float) / max_charge_current, as I thought it would be, but simply K / I_charge_max, as @Javi Martínez suggested.

In this sample of data, the internal resistance(Ri) values themselves have max/min = 5.2.

k = Ri * max_charge_current / (V_absorb - V_float), has max/min = 5.7.

K = Ri * max_charge_current, has max/min = 3.7

But this K isn't dimensionless like the previous k. It has dimensions of volts. So I prefer to call it V_max_rise rather than K.

So I'll choose 5 values of V_max_rise for the user to select using the least significant digit of the cutoff voltage. I figured out a great way to show that on the LCD. But you'll just have to wait and see. :)

Link to post
Share on other sites

We now have KettleKomp™ working in the above manner. What a joy it is to be able to boil the kettle without it switching back to the grid. :P So far this is only for the PF0.8 (4 kW/5 kVA) Axpert MKS 5K-48. We will test this beta candidate for a few days before uploading it on the AEVA forum as beta 73.00e.

@plonkster You may be interested to know that we are implementing this in a very different manner from "dynamic cutoff". Instead of adjusting the threshold down with load, we adjust the measured battery voltage up with load. We also adjust it down with charge. The adjustment is calculated simply as the signed battery current multiplied by a calculated internal resistance. We have even added the ability to display this compensated battery voltage on the LCD as well as the true battery voltage. The compensated one is distinguished by having a little blinking "k" for "kompensated", above the "V" for volts. Because we are adjusting the measured voltage and not the threshold, we can use this compensated battery voltage to compare against multiple thresholds. We use it with 5 thresholds: Low voltage cutoff [29], low voltage warning on (cutoff+0.5 V), low voltage warning off (cutoff+1.0 V), battery to utility [12], and utility to battery [13]. But we don't use it for everything. Absorb, float, and return to bulk are still based on the true battery voltage.

Displaying the compensated voltage makes it very quick to tune KettleKomp by trial and error. You don't have to wait for it to interact with one of the thresholds. You can see as soon as you turn the kettle on, how much the compensated voltage has changed. Ideally it wouldn't change at all, but in reality you just want it to change as little as possible, without going in the wrong direction. i.e. if the kompensated battery voltage increases when you turn the kettle on, then you need to drop the komp-strength back a level (by reducing the least significant digit of the cutoff voltage, modulo 5) and try again.

The other thing the compensated battery voltage lets us do is compute a better guess at the SoC of the battery. The Axpert can't do coulomb counting and crudely estimates SoC by scaling the battery voltage at 1% per 0.1 V above the cutoff voltage. So of course this SoC-guess fluctuates wildly with load and charge and is totally wrong for LFPs. Our compensated battery voltage is effectively the estimated open circuit voltage of the battery. So by using it instead of the true battery voltage, and scaling it between cutoff and float, we give you a better SoC-guess. It's still pretty poor (like ±25%) anywhere except near empty or full, but that's better than it was.

Edited by weber
Link to post
Share on other sites
24 minutes ago, weber said:

Instead of adjusting the threshold down with load, we adjust the measured battery voltage up with load. We also adjust it down with charge. The adjustment is calculated simply as the signed battery current multiplied by a calculated internal resistance.

In the current version of the CCGX firmware we have something called Shared Voltage Sense which is intended to do something similar: It estimates/measures the voltage drop (and calibration differences, not important here) across connections and communicates them to all devices in the system. The idea is pretty similar, to adjust the battery voltage UP and compensate for the loss on the cable, or similarly DOWN when charging. Of course this is not used for the battery's internal resistance (for that you use dynamic cut-off), but the idea is similar.

The one slight issue we have with this: If you get it wrong, and you're working with a very full LFP battery, you can sometimes cause the BMS to disconnect. For example, a Pylontech battery at 53.2V has a mere 0.8V margin at the top. If you overcompensate for charging current (and you make the charger think the voltage is lower than it really is), you can overvolt the battery quite easily.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...