I started working on a distance based intelligent battery failsafe for copter over the weekend. Rather than triggering the failsafe at a specific MAH remaining, the failsafe is triggered dynamically based on altitude and distance from home so it is landing at a specific % remaining. This will give you more flight time when you’re in close to home, make flying further from home safer, and probably help reduce LiPo abuse.
3DR did something like this for their commercial site scan solos. This will be similar but much more accurate and not solo specific.
- Skip all this and revert to existing basic MAH failsafe if copter position is bad, home position not set, or the required parameters are not set to begin with.
- Read copter altitude and distance from home
- Read parameters for RTL altitudes, climb rates, descent rates, and cruise speeds
- Read new parameters for climb MAH, cruise MAH, descent MAH. and desired % remaining on landing
- Calculate distance, time, and MAH required to climb up to RTL altitude (skip if FS is land only)
- Calculate distance, time, and MAH required to cruise home (skip if FS is land only)
- Calculate distance, time, and MAH required to descend to a landing
- Sum total MAH required to RTL + % Battery remaining on landing = new live battery failsafe MAH point.
Parameters to make this all work
BATT_FS_RESERVEis the % remaining the copter will have when it lands, or at least close to it anyway.
BATT_FS_CURR_CLMis the MAH rate used in a climb
BATT_FS_CURR_DESis the MAH rate used in a descent
BATT_FS_CURR_CRSis the MAH rare used in cruise
I wish there was a way to do this without making a bunch of new parameters, and I really don’t want to go parameter happy with every patch. But I don’t see a consistent and reliable way to do it.
I thought above having these MAH values calculate automatically in flight, kind of like how ArduCopter calculates hover power in flight. It would probably work. However I don’t think a failsafe function should be variable and ever changing like that. Failsafes need to be consistent and repeatable,
I also thought about a single parameter for hover current, which could also easily be calculated automatically at the same time as hover throttle. Then climb, cruise, and descent MAH could be interpolated as a % above and below hover. This would also probably work. But I don’t know how accurate it would be. I can tell you my solo climbs 10-12% higher than hover power, and descends at 10-12% lower than hover power. But that is probably not universal across every copter.
Anyway, that’s where I am at with this now. Open to suggestions and comments.