Posted November 21, 20186 yr 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). Edited November 21, 20186 yr by weber
November 21, 20186 yr Ok. I have just tested: Drop Voltage: 1.41 V Current: 121 A 2. 70 A 26: 28.7 V 27: 28.0 V
November 21, 20186 yr Author Here's an example from my own system (5 kWh of LFP). Settings: Abs [26] = 55.2 V, Flt [27] = 53.7 V, Tot [2] = 100 A. Before kettle 52.7 V, 0 A After kettle 51.7 V, -42 A
November 21, 20186 yr The internal ressistance of your system is 25 mohm on discharge. Mine is round 12 mohm, Li-Ion, 6 kWh. It is the same!!
November 21, 20186 yr But internal ressistance depends on battery capacity. For example, if your system were 12 kWh, internal ressistance would be 6 mohm. Then, do you use parameter (2) to know the capacity of battery? Edited November 21, 20186 yr by Javi Martínez
November 21, 20186 yr For example, for lead acid batteries if we have a Max charging current by 120 A, can de suppose that battery capacita is round 1200 Ah, knowing whith that kind if batteries charging current use to be 0.1 C?
November 22, 20186 yr Author Hi Javi. I must point out that we do not have resources to provide patched firmware for 24 V Axperts. But your data is still valuable. Thanks. As mentioned in the fine print above: We hope to estimate the internal resistance as k * ([26] - [27]) / [2], where k is a dimensionless constant close to 1. So what I'm doing with the data provided, is calculating the ideal value of k for each system as follows: k = kettle_volt_drop / kettle_current * [2] / ([26] - [27]) In your case we have k = 1.41 / 121 * 70 / (28.7 - 28.0) = 1.2 In my case k = 1.6. From other systems I have k = 0.9 and k = 1.6. These are all LFP systems. It would be good to have some numbers from lead acid systems, and from very large and very small systems. I can see already, that a single fixed value of k is not going to be very satisfactory, but 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. So what I am working on now is using the least significant digit of the cutoff voltage (parameter [29]) to choose between 5 different values of k, which can be considered the strength of the voltage-threshold compensation. Something like this: .8 or .3 for weak (k = 0.8).9 or .4 for medium weak (k = 1.0).0 or .5 for medium (k = 1.25).1 or .6 for medium strong (k = 1.6).2 or .7 for strong (k = 2.0) So at worst, you might have to choose a cutoff voltage that's ±0.2 V away from the exact voltage you wanted, so as to get the compensation strength you want. I note that it's best to err on the side of weaker compensation. If it is stronger than you need, you will end up abusing your battery. But I need data from more and different systems so I can choose a suitable set of 5 values for k.
November 22, 20186 yr Hi , I don't know the Axpert firmware at all . Would your kettlekomp not benifit from a time delay of sorts . Under a heavy drain and the batteries drop below the set then a 30sec interval or whatever until the low battery condition is activated
November 22, 20186 yr Author Hi seant. There already is a time delay. What we're doing is in addition to that. We could have just increased the time delay but that could lead to battery abuse.
November 22, 20186 yr Author 23 minutes ago, plonkster said: You guys are essentially making Dynamic Cut-Off for the Axpert :-) Yes indeed. But not only dynamic cutoff, also dynamic switching between battery and utility, in both directions. That is, when determining whether to stop powering the loads from the utility and switch back to the battery, it will compensate for the fact that the voltage may only be high due to high charging current (times internal resistance). I'm keen to hear what you think of the way we are implementing it. What possible problems can you foresee?
November 22, 20186 yr 1 hour ago, weber said: I'm keen to hear what you think of the way we are implementing it. What possible problems can you foresee? The Victron way is to ask the user to enter some voltages corresponding to 0.05C, 0.7C and 2C and then it fits a function of some kind through it (linear, spline, I don't know) and then the cut-out is determined by that function. This appears to be exactly the luxury you don't have: Configuring multiple values :-)
November 22, 20186 yr Author 2 minutes ago, plonkster said: The Victron way is to ask the user to enter some voltages corresponding to 0.05C, 0.7C and 2C and then it fits a function of some kind through it (linear, spline, I don't know) and then the cut-out is determined by that function. This appears to be exactly the luxury you don't have: Configuring multiple values :-) Correct. The Axpert doesn't even know what C is. i.e. there's no way to tell it the battery capacity. Hence my hack that estimates internal resistance using what I've got, i.e. Ri ≅ (absorb - float) / max_charge_current, then tweaks it (in an obscure manner) using the low bits of the cutoff voltage setting. I'm assuming that cutoff voltage settings really only need 0.5 V resolution (for nominal 48 V batteries). LFP is probably the only chemistry where you might like slightly finer control than that, over cutoff voltage.
November 22, 20186 yr 9 minutes ago, weber said: The Axpert doesn't even know what C is You could derive it from max charge current... which is what you're already doing in a manner of speaking.
November 22, 20186 yr Author I guess the question is: "What's the procedure that lets the user decide what those low bits of the cutoff voltage setting should be?" It is: Note the battery voltage and current immediately before and after turning on the kettle. Calculate the ideal value of k using k = kettle_volt_drop / kettle_current * max_charge_current / (absorb - float) Choose the value of k in the table, that is just smaller than the calculated value. Then make the smallest change to the desired cutoff voltage setting so that the tenths-of-a-volt digit is one of those that code for that value of k in the table. Max change ±0.2 V. If the calculated k value is not close to any of those in the table, consider changing the max_charge_current setting. Recalculate k using the new setting. Edited November 22, 20186 yr by weber
November 22, 20186 yr 5 minutes ago, weber said: I guess the question is: "What's the procedure that lets the user decide what those low bits of the cutoff voltage setting should be?" Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. (I wonder if anyone knows where this is from :-) ).
November 22, 20186 yr Author I cheated and googled it. It's Python religious dogma. There are long posts trying to explain what the hell the difference is between "complex" and "complicated", and how one could possibly be traded off against the other, and why one is better than the other. It looks like there is a serious conflict between these two Python aphorisms: 1. Complex is better than complicated. 2. If the implementation [of an aphorism] is hard to explain, it's a bad idea. How do you think the Python aphorisms might apply here? Another method for choosing k is simply trial and error. Start with the lowest k value, and if it still annoys the hell out of you by tripping off when you boil the kettle, go up to the next one. Repeat until it stops annoying the hell out of you or you run out of k values. An option is to only use two k values, say 0.8 and 1.6, and use even and odd decimal-place digits of the cutoff voltage setting, to choose between them. But I need more kettle sag data so I can make an informed decision. Another Python aphorism: In the face of ambiguity, refuse the temptation to guess. Edited November 22, 20186 yr by weber
November 22, 20186 yr When I arrived to the factory I did some tests for a lead acid battery 48 V 1200 Ah C10. It´s not an Axpert system, 3xSMA SI 6.0 + SMA STP 10.000, but i think that the drop voltage doesn´t depends on the system. Well, results were: Current 45.79 A Drop: 0.53 V Current 97.42 A Drop: 1.21 V Current 207,58 A Drop: 3.07 V Internal resistance is round 12 mOhm.
November 22, 20186 yr Author Thanks Javi. This would only be useful if you can also tell me the system's settings for absorb voltage, float voltage and maximum charge current.
November 22, 20186 yr What I have seen is the possible relationship Max Charging Current and Ri for lead acid. Ri is round Max Charging Current/15 mohm if you set Max Charging Current = Capacityx0.15. For example: For a 48 V a 300 Ah capacity, it will have a max charging current of 45 A. 45 A/15 = 30 mohm. Edited November 22, 20186 yr by Javi Martínez
November 22, 20186 yr There is an error in calculations above. Correct, for lead acid battery, would be Ri=2,160/Max Charging Current Then, for lead acid battery, you could try: voltage_threshold_compensation = battery_current * 2,160/Max Charging Current Edited November 22, 20186 yr by Javi Martínez
November 22, 20186 yr Author 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).
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.