BATT_FS_VOLTSRC Parameter Value

For QuadCopter Drone what BATT_FS_VOLTSRC Parameter Value we have to set for optimal performance, 1 - Raw Voltage Or 2- Sang Compensated Voltage?

Sag Compensated Voltage

But only if you have a working current monitor. Otherwise it will not work

1 Like

Thank you @amilcarlucas. yesterday I tested Drone with BATT_LOW_VOLT = 21 Volt, BATT_FS_VOLTSRC = 0 Raw Voltage 11 minutes flight time achieved with 51% battery consumed & Today tested BATT_LOW_VOLT = 21, BATT_FS_VOLTSRC = 1 Sag Compensated Voltage 17 minutes of flight time achieved with 81% battery consumed.

1 Like

That is the reason most AMC templates use “sag compensation”. It gets results that you can use in any battery, new or old.

If you use raw, you need to change the BATT_LOW_VOLT thresholds depending on the age of the battery.
No one wants to do that!

My cells are specified for absolute minimum voltage of 2.5V, my pack is 3S and current draw is 4A at 7.5V, nominal pack resistance is 100mΩ, so I set my critical voltage to 8.2V (7.5V+0.4V for expected sag+ 0.3V margin). Now let the battery get old and increase its internal resistance to 120mΩ. When sag compensated voltage is at 8.2V, loaded voltage is 8.2V-4*0.12=7.72V which is 0.08V lower, reducing the margin by~27% on already weaker battery.

In my case if I operate in hover I can get repeatable margin with uncompensated voltage by setting it to 7.7V, I would need to increase the limit a bit to account for increased efficiency in forward flight.

IMHO it would be ideal to specify test current used for sag compensated voltage check. It is much more relevant if current required during RTL phase may be much higher than during normal flight, eg. go around (40A peak vs ~12A cruise on another vehicle).

With sag compensation you set the limit to 7.5 or 7.5 + 0.3.

Then irrespective of current, and battery age the limit stays at 7.5 + 0.3 margin

Just curious, what cells are those?

No, the battery must not go below 7.5V (3x2.5V) even under load, which could be violated when using compensated voltage if internal resistance was increased enough.

I checked resistance and I got 170mΩ for 3S at reasonable outdoor temperature (~10-15°C)

@StrikeEagle It was an example roughly based on KeepPower 18350 cell UH1835P, I found even lover max discharge voltage claimed here though seller I bought my cells from notes voltage range 2.5-4.2V with cutoff at 2V.

I guess voltage falling below 2.5V is sort of a grey area. What anyone can agree is that it’s not good. But I guess slightly falling under 2.5V per cell for a few seconds under load is okay.

Wouldn’t sag compensation estimate resistance in realtime?

Also, I think Molicels are a better cell. Better discharge and lower internal resistance

It does, the problem is that “the wrong end of the pole is fixed”, it fixes unloaded voltage threshold and I want to fix threshold voltage under specific load (hover or go around). (Answering the question: I am pulling 2.5A, if I were pulling 3A would I be below voltage threshold). It matters more on planes as there can be much higher difference between cruise and takeoff/go around current eg ~12A vs ~40A.

Ideally we would have a BMS that could warn us if we are x coulombs/mAh above point at which the battery can’t safely deliver required current/power.

Molicel would be great if I had mass budget for 18650 pack, well I may have it if the motor can take the added load but I would be above A1 mass limits for self-made drones :disappointed_face:.

2 Likes

Thanks for explaining your rationale. Yes, for a VTOL plane that needs to land using high current, it is important to have enough energy reserve in the battery, so for that case sag compensation might be an issue, by letting the battery go too low.

Just setting the margin higher would get you the same result, would it not?

The issue is that different batteries have different internal resistances and batteries with higher internal resistance will get smaller margin and they should have higher margin as they may be smaller or more worn.

I may make a PR for current and IR based dynamic threshold offset. Should it be guarded by a define?

Yes, nowadays most features are guarded by ifdefs

1 Like

Got it. But I guess with Liions you don’t need to worry too much about going below 2.5V under load of it’s for a few seconds

That gets me thinking, can’t we implement a crude version of this in Ardupilot as it already does an estimation of used capacity? It may or may not be accurate but I guess it can get the job done which is better than integrating a BMS

ArduPilot already does that (low current and critical current thresholds), when correctly configured. But it does assume that you always start with a fully charged battery.

2 Likes

Ardupilot already counts mAh consumed, it assumes you started with a full battery (there is a script to adjust that based on battery characterization). BMS IC does much more complete tracking of battery life than autopilot ever could, it also is attached to one battery, in most applications battery and drone mapping is “many to one” or “many to many” so tracking is impractical.

VimDrones is working on open source BMS.

1 Like

Didn’t get this part… Can you explain what you’re referring to?

Many batteries to one drone. Or many batteries to many drones.

Makes it very hard to track all the combinations and where to store and/or enter all the data?

Bottom line: a dedicated BMS per battery solves all that and some more.

2 Likes