Won't Arm PreArm: Battery 1 voltage failsafe critical >= low

4s Battery.
Current battery voltage: 16.52V
BATT_ARM_VOLT = 14.7
16.52 > 14.7. Why won’t it arm?
coolguy2.param (21.4 KB)

EDIT: NEVERMIND
It wasn’t complaining that the battery voltage was lower than a critical value. It was complaining that the parameter for low was set to the same as the value for critical.

1 Like

I see you are almost there…

The warning you got was a recent inclusion after a few more issues with people incorrectly setting their voltages and failsafes, or basically ignoring them. The decision was made to at least warn the person, rather than taking over their parameters and setting something.

It is important to set both Low and Critical voltage levels and actions appropriately.
For your 4S Lipo you would have:

BATT_ARM_VOLT,14.70
BATT_CRT_VOLT,14.00
BATT_LOW_VOLT,14.40
BATT_FS_CRT_ACT,1
BATT_FS_LOW_ACT,2 or 3

A common mistake is only setting up one set, or setting the voltages and action the same.
The problem with that is the ease of changing a flight mode, by accident even, which cancels the failsafe action. The the flight controller doesn’t get a second chance to save itself.

If flights are being terminated earlier than you expect, then investigate the issue and maybe change your overall design or get better batteries (which ever is required) - but changing the voltage levels and failsafe actions brings on more trouble.

2 Likes

Thank you!

I have updated my parameters to the values you specified.

The actions weren’t defined because (I think) that’s the default. I started playing around with the values when my last (first) flight ended at 15.75V. I tested each cell with a multimeter and they were at 3.94V / 3.93V per cell. I thought it was weird that they were higher than the storage voltage when the flight controller decided to land on its own.

I think setting BATT_FS_VOLTSRC from 0 to 1 could fix that issue.

If you have any further advice I’m all ears!

edit:
Will changing battery types really make much of a difference? Right now I’m using an HRB 6000mah 50C. But I can get a Tattu 4S 5200mAh 35C for not very much money.

Is current draw saved in a log file somewhere? I’m curious to see how much power it actually draws when hovering. I can’t take my laptop outside with me so I didn’t have the telemetry radio connected to anything. Maybe I should buy a netbook…

The sag-compensated voltage source is a valid choice, but it does require the current monitoring to be accurate.
There’s a procedure if you want to improve your current monitor calibration beyond default:

Here’s how to adjust your Amps Per Volt

  • Plug in a fresh battery and do a hover flight for 5 minutes or until you’ve used a significant amount of battery capacity
  • Immediately unplug the battery and charge it, note how many mah’s it took to charge. Let’s say that was 1,500 mah
  • Download your log and look at maximum CurrTot. Let’s say it was 1,300 mah
  • Get your existing BATT_AMP_PERVOLT setting from Mission Planner
  • NEW_AMPS_PER_VOLT = OLD_AMPS_PER_VOLT x CHARGED_MAH / LOGGED_MAH
    With my example numbers, you’d get
    NEW_AMPS_PER_VOLT = 17 x 1,500 / 1,300 = 19.61
  • Set the new value in the BATT_AMP_PERVOLT parameter and save to your copter
  • Fly to check, repeat until you’re happy the new value gives consistent readings

The bonus is you get to do some more flights :slight_smile:

1 Like

Oh I am going to do that all day long next time I go flying! I am going to bookmark this post so I remember. Thank you!

Flight 1 is complete and I have the following information:

(old) BATT_AMP_PERVLT = 24
Logged mAh = 2689.3520
charged mAh = 2684
new BATT_AMP_PERVLT = 23.95

Cool!

Also I noticed something odd happening with the voltage displays. The Transmitter / Radio Controller is connected back to the FC via a telemetry port. It displays voltage data. The OSD is connected to a different telemetry port and also displays voltage. Shouldn’t they both display the same voltage? The OSD was reading 13.7V and flashing “Low Battery” while the controller was saying 15.2
I landed early because I didn’t know which to trust and the multimeter later confirmed 15.32. Why would the OSD module be so far off like that? It didn’t failsafe or autoland so the voltage didn’t hit 14.4

It can depend on where that OSD device, or telemetry, gets the voltage reading from.
Some can be set to display the sag-compensated or the raw voltage. There are even a bunch of OSD devices (and RC receivers too) out there that have their own battery voltage input and display that.

1 Like

Thank you for the explanation!

That makes total sense. I noticed that when BATT_FS_VOLTSRC = 1, none of the numbers matched up. But when it was set to 0 the displayed voltage matched across different display devices.

Is that just something you live with? I can’t find any parameter like BATT_TELEMETRYDISPLAY_VOLTSRC and I suspect there must be a reason for it.