Low battery alert with 12.3v (38%) goes RTL

I just finished my Aircraft X650 pro with Pixhawk and PM. First flight in the beginning everything goes well and flies very good. started autotune, goes well, till after 6-7minutes (autotune almost ready) I got the alert: battery low! after that (after +/-20 seconds) he goes RTL. No autotune. I checked the voltage with handheld voltage meter: 12.3v. I checked everything and I don’t know what is going wrong. Please help me. I tried to ad some pictures, but I can’t drag or past them.
I put in the following items:
Failsafe: low battery 10.5; Reserved MAH: 400; FS PWM: 975
Battery monitor: Monitor: Voltage and current; sensor: other; APM ver: Pixhawk;
Calibration at this moment: measured battery voltage: 12.17; Battery voltage (calced): 12.17; Voltage divider (calced): 10.1; Current (calced): 0.02; Amperes per volt: 17.0


I suppose the simple answer might be that although when you checked the battery after landing it was at 12.3v thus above Failsafe trigger but under load whilst in the air it probably dropped below 105 thus triggering failsafe.

IIRC there is a setting to set the time a failsafe condition needs to be met before failsafe is triggered, you might be able to extend the time to counteract momentary dips when you blip the throttle.

Not saying the above is your problem, but it might be.


Hi Paul, that could be te problem, but a dropdown of 1.8 volt is very much. During autotune, there happens not much concerning flying. I could check the time of triggering failsafe, but I don’t know how I can adjust it. Could you explain this to me? Thank in advance, Herman

We might be able to see what is happening if you post your logs of the flight.

Hi Mike, I’m sorry for the delayed answer. The log files are to big for uploading. Can you give me an other way to send you those log files?

You can upload your logs to a google drive or similar.

Have you looked at them?
Graph battery voltage on it’s own and see what you get.
Some details of your batteries, brand, size, C rating, etc, would also help.
A drop of 1.8 volts is not unexpected for some batteries.

Hi Mike,
The batteries are 6000mah and 35C. I tried it also with 3000mah batteries, the same result.
I tried to read the logs, but till now it didn’t work out. I’m not so good in reading those files (2 years beginner).

Below the link to the logs I uploaded tot google drive. I hope you can read them (first time for me)

Let me know if it was succesfull. Greatings Herman


Those files are just the rlog and tlog from the computer, which are not very helpful.
Can you upload the .bin or .log from the copter?

That has much more information plus FC parameters and is more useful in determining what is going on.

Have a go at graphing it yourself.
Load it up in APM Planner or Mission Planner and look for CURR/volt and have a look at the values and where it dips below 10.5 and for how long, and how it relates to the triggered RTL.

10.5 is a bit high for a 3S IMO, as I find it causes premature battery failsafes under load.
I usually set it at 3.2 to 3.3 per cell under load, but maybe 3.4 if you are doing long RTL.
There is much debate about voltages that you can read online and in discussions here but there is also a lot of uninformed hype.

Hi Mike, I think I managed it. In the link below (Google drive) you can find the files you needed. (Just like yesterday). The .log/.bin files and the .param file. I looked in the log files, and I must admit, it’s a great added value. Now I have to learn to read those logs. As far as I could see, there were no dropdowns in voltage. But it’s clear to see, after 6.5 minutes the RTL. Maybe, and I’m sure you can make some conclusions to solve this problem. One issue I forgot. I left the landing gear exteneded (not retracted). In the moment the RTL mode started, the landing gear retracted. Normaly it has to extend after TRL mode or do nothing. (if it’s extended) This is very strange. Maybe you know what the cause is. I’m very curious on your answer(s). Thanks and many greatings, Herman


It is clearly seen in the graph that it was rather generous with the battery failsafe trigger and waited for quite a while after it hit 10.5 to trigger RTL.

1 Like

OK, I have still the question, why do I read in the telemetry, 12.3v and 38%?. Is the battery really almost empty? How can I solve this? Did you looked in the .param file? Is everything OK in this file? Sorry for the many questions, it’s much more clear what’s the cause of the rtl, but I still don’t know how to solve it. Ps. do you have any reply on the landing gear? You can make me a happy man if I receive the answers and you know and that’s the most important, I want to learn. To to give it forward to my quad flyer friends in my neighborhood.

At 10.5 v under load you have 38% left in the battery.
Under load however the voltage drops to what you see in the graph.
This is usually indicative of cheap batteries.
I would suggest you lower the failsafe voltage to around 9.9 (3.3v per cell)
By the way, 12.3v has not 38%

How do you have the landing gear wired up?
What operates it?

This morning I put the failsafe already to 9.8 volt. I have flown about 10 minutes till I got the alert. After measuring (by hand), the voltage was 9.7 volt. I think this is really good. Only, I had not enough time to complete the autotune. I will start the autotune now independent from each other (Pitch, roll and yaw). Afterwards, ok, I will buy some more expensive batteries. For this issue, I will thank you for the information. Did you look already in the param file? This will be a confirmation to me, if I did everything OK. The landing is operating good now. I connected everything for new and now it’s good.
Thank in advance.

One thing that is really going to help you is properly calibrating the power module current circuit. I noticed that your PM is set with the default of 17 Amps per volt, and I wouldn’t be at all surprised if it needs to be set higher.

The basic process is you take a fresh battery and make a flight of 5 minutes or so, land, disarm and unplug the battery. Charge the battery and record the mAh charged. We will call this number “CHARGED_MAH”

Now take a look at the flight logs and find the total current used. We will call this number “LOGGED_MAH”.

Next look at the BATT_AMP_PERVOLT parameter and record that number (by default its something like 17…). We will call this number “OLD_AMP_PERVOLT”

So, let’s say LOGGED_MAH was 1300Mah, and CHARGED_MAH was 1500mAh, and OLD_AMP_PERVOLT was 17.

We can use this formula:


NEW_AMP_VOLT = (17 x 1500) / 1300
NEW_AMP_VOLT = 25,500 / 1300
NEW_AMP_VOLT = 19.61

Set BAT_AMP_VOLT to 19.61 and click “Write Params”

Take a fresh battery and make another 5 minute flight.

After one or two iterations you should be well within ± 200mAh…

On other thing you might want to do is set the low battery fail safe to trigger RTL when 80% of the battery capacity has been used (20% remaining) so you have enough capacity to get back home…

I have used both of these “tricks” on my APM quad and my Pixhawk Hex. Charged vs Used current is always within ±150mAh, and the at rest voltages at the end of a flight are never below 3.7 volts.

1 Like

I modified AP_Battmonitor.cpp

As follows -

// read voltage
// this copes with changing the pin at runtime
_voltage = (_volt_pin_analog_source->voltage_average() * _volt_multiplier) + (_current_amps * 0.020f);
if(_volt2_pin_analog_source != NULL) {
_voltage2 = _volt2_pin_analog_source->voltage_average() * _volt2_multiplier;

This assumes a battery ESR of 20 milliohms (the _current amps * 0.020f term)

It applies a voltage correction dependent on the battery current drawn from the battery. I find that it improves the accuracy of the battery voltage reading immensely.

Hello Oldgazer, this is very new for me. This is clear for me and I certainly will do this tomorrow. Thanks for this information.
I saw that you read my .param file. If you have some more setup suggestions I would be happy. This is for me a way to learn Pixhawk. (Electronic is a new world for me, I’m a mechanical engineer), Greatings, Herman (Holland)

Hello Charles, I just said to Oldgazer, I’m not a good Electronic engineer. Can you explain your information a little bit (much) more, so that a layman like me can understand it. I would be very grateful. Greetings, Herman.


You are most welcome.

An easy way to get your head around electronics is to think of electricity flowing through a circuit as if it were water flowing through a plumbing system.

Voltage is like water pressure and current is like water flow rate.
A resistor is like an orifice, a diode is like a check valve.
Inductors and capacitors are like surge tanks. Inductors tend to maintain current flow while capacitors tend to maintain voltage.

To relate this to a power module, it contains a low resistance that is inline with the positive side of the main battery. In this configuration the resistance is called a Current Shunt.

Just like water flowing through an orifice produces a drop in pressure, current flow through a current shunt produces a drop in voltage. Circuitry on the PM measures the voltage drop across the shunt and produces a voltage that is proportional to the current flow.

This “scaled voltage” is sent to the flight controller. The flight controller uses the BATT_AMPS_PERVOLTS parameter to calculate current flow. By default this parameter is set to 17.

If the BATT_AMPS_PERVOLT parameter does not reflect the actual voltage drop across the current shunt, calculated current flow will be inaccurate.

By measuring how much current we put back into the flight battery we can use the formula I gave you to generate a more accurate number for BATT_AMPS_PERVOLT.

Hello Oldgazer??, I couldn’t wait till tomorrow. I flew 5 minutes and the charged_MAH was 3513. Now I’m looking for the LOGGED_MAH in the Llog files (flight 5 minutes), and I’m not sure anymore. Is it the Curr or the Curr Tot option. And wat MAH value do I have to take? the mean or the max.? The OLD_AMP_VOLT was indeed in my case according the .param file 17. Can you please give me a.s.a.p. an answer? Thanks.


You need to look at Curr Tot.

When you get the plot displayed RIGHT CLICK in the graph pane and select Show Point Values.
Hover the mouse pointer over the end of the plot and you will see the line number and the current in mAh.
Use the first four digits for the LOGGED_MAH value in the formula.