Battery monitoring accuracy / type

Hi all,
I the last few years people are starting to use the Li-Ion 18650 cells to power their vehicles but these cells don’t have the same minimum limit of the Li-Po cells, they can go down to 3v per cell with relative safety for them.
Well, regarding cell and battery monitoring I do think that the ArduPilot firmware can go easily much further with very little effort from the developers team, I am not a developer but I understand what can or can’t be considered as “relatively easy” for them.
What I would propose for an almost perfect battery management on the parameters config is:

  • Cell type option (Li-Ion or LiPo)… these are the most common.
  • Cell max and min voltages (ex.: Max=4.2v & Min=3v)
  • Cell count (4 Cells or 3 Cells… whatever)

With these 3 new options to filled by the users I consider that the calculations would be much more precise because if right now I plug a battery to the system that is at 70% of its charge it will be displayed as 100% as the FW will assume that you are plugging a fully charged battery when in reality it is not… thats not accurate or safe in any means. If the system knows that this particular vehicle will be used with a Li-Ion battery with 3 cells where the Max voltage per cell is 4.2v and the Min voltage per cell is 3v and, if you plug a certain battery that has 11.8v than the system will know and display that this battery is at 77.77% of its charge… how?
3 x 4.2v = 12.6v (MAX)
3 x 3v = 9v (MIN)
12.6v - 9v = 3.6v (Li-Ion battery Voltage Range (100%) according to the user input)
11.8v - 9v = 2.8v (Remaining Voltage = (X%) on the pack)
X% = (2.8v x 100%) / 3.6v = 77.77%

Adapting this very simple equation to a single cell voltage, the system can also display the assumed average voltage per cell as some of us like to see it to know when to stop or replace the battery pack.

Other thing related with batteries… I don’t see the point of introducing on the parameters the total battery capacity in mAh because it is not accurate at all… I did the test cheating the system… introducing a value completely different from the real one and what it shown at the end does not correspond to the reality at all…
I am really convinced that the system is even calculation the battery percentage by the consumed amperage versus the battery capacity amperage introduced by the user and this is leading all of us in a potential fatal error… just use the the equation above using the voltage and take away the battery amperage capacity field from the parameters… At least for me it is enough to know how many Amps I am consuming instantly and the total Amps consumed so far.

All I am talking about here was tested on a simple Arduino and worked perfectly… much better than on the ArduPilot

Please Developers Team, read this and implement it… PLEASE!!!
This is a real safety issue


Kind regards

1 Like

The current percentage is based on the parameter capacity - the used current, there is no voltage checking. That’s the reason why every battery shows 100% when you plug it in.

The problem with the voltage based assumption is that every battery has a different discharge profile. Although I have to admit that I would fund this approach more suitable.

1 Like

Right what I thought is happening… this is by far a really dangerous type of measuring and monitoring… The flight controller are equipped with voltage sensors externally or even internally for some so, why aren’t they using it for a proper monitoring on battery percentage??
As I said, filling the battery capacity manually and use it for calculations is, in my point of view a potentially fatal mistake… fortunately I have never used it to guide my self on battery monitoring to decide if I have yet enough battery to keep flying or it is already time to land.
I hope the Devs start to use the tools properly from now on

I’ll be available to help whenever they need the best I can within my knowledge boundaries.

Just for the record… I develop special remote equipment for television cameras so, I know a little bit of what I am speaking about this “power things”.


There is a similar thread: Remaining Battery always 100% at start

There are other arguments in this discussion and I don’t necessarily agree with your approach.
It all depends on the level of user competence you are aiming the information at.

We do long commercial flights and it is the battery voltage above all else that I keep my eye on.
And it is NOT the absolute voltage as all nice clean lab tests might suggest.
Consider a still well performing 6S pack about 3 or 4 years around old, 20Ah to 30Ah in capacity, that drops a lot of volts under load, around 1.5v to 2v immediately after takeoff.
So it’s indicated % would drop instantly, and you would class that as bad battery, but the battery still has a full current capacity just at a slightly reduced voltage.
As the pilot in charge I always, always, put the LiPo checker on the pack before installation.
That is part of our standard pre-flight checking.

So it seems a lot of people are arguing about not having to check anything and have it all done for them.

I like having a Frsky FLVSS module connected directly to the battery. This way I can get a real time voltage reading on the radio with audio callouts every 30 seconds.

Thats an awesome feature, I have it too but when you fly far away with the UAVCast 4G telemetry you don’t have that luxury anymore.

I am not referring “lab tests”, what I say is based on day-to-day operation on the robotic equipments I design and manufacture for TV Broadcast, it seams that you are not the only professional guy around here so, I think it is excused to post things in a prepotent way, even if somebody here is not professional, and many of us are not, we are all here to learn, teach and discuss… keep your prepotency for those who live with you, please.

I do check my batteries before fly as I check all the equipment on the hobby or on the professional ambient before I operate it, I do even have checklists to avoid missing anything which by the way is the right way to do things safely… The way you answered my post seems like I don’t have the right to express my justified opinion about a missing feature that I find interesting and usefull… Have I hurt your feelings that hard??? Sorry for that…


A few things about ardupilot and this topic…

#1 - battery voltage is a very crude and generally poor way of indicating interpolated capacity of charge for most aircraft. Every different type of battery has a different discharge curve, and every battery has a different voltage response to load. Resting voltage is great for indicating a full pack and an empty pack, but to base live capacity from the instantaneous voltage in flight is dangerous. There are so many variables that make every situation unique, and to just do a linear interpolation of voltage to indicate capacity would have some consequences. For example, if I’m 20 minutes into a flight and indicating 33% capacity remaining (measured by interpolated voltage), I would assume that I have roughly 10 minutes left to fly. If my battery has a nasty voltage-drop at the end of its discharge cycle, my aircraft could come crashing down after 5 minutes and I would say “WTF, why did my capacity drop so fast after the 20th minute?! That’s a terrible way to indicate capacity remaining”

#2 - Ardupilot has an excellent way of monitoring battery capacity based on current monitoring systems. If they are set up and calibrated, they read reliably no matter the type of battery or voltage. If you had a bad experience with a poorly calibrated power module, I recommend the mauch series of power monitors that come factory calibrated with hall sensors. The shunt sensors that are inexpensive do an OK job, but at low currents they aren’t as accurate. The “current” method of determining capacity remaining is very reliable and doesn’t suffer from any of the issues above… except that it’s assumed that you have the capacity indicated in the parameters and a calibrated system.

The solution is smart batteries that keep track of their current mAh and communicate that info to the autopilot upon connection. mAh is more accurate than voltage for flight time because of things like voltage sag and discharge curvs.

The one thing ardupilot could do without smart batteries is upon battery connection, if the resting voltage is inconstant with a fully charged battery give a warning an guess the true % and thus mAh remaining.

1 Like

Do you know if there’s default parameters for the mauch power moudules? I saw on the arducopter wiki or something that they’re supposed to come with the mulitplier values, but I’m fairly certain mine didn’t come with anything like that and I can’t quite seem to get the values correct for battery monitoring.

They all come with a Final Test Result value. But it’s easy to get it close from logged vs-charged mah.
New Amps/Volt=(Old Amps/Volt*Charged Mah)/Logged Mah