Revised Throttle Control

So I have never been all that happy with the heli throttle controls in ArduPilot. We improved it a lot, especially for pistons and turbines, in 3.6 and 4.0. But there is still room for improvement.

So I’ll highlight the changes here:

  • The old RSC object is deprecated and replaced with a Throttle control library. Governor and throttle curve moved to a calculate_autothrottle() function. Logic for both single and twin-engine helicopters. Logic for Manual/AutoThrottle controls.
  • Governor is re-designed and operated by on/off switch instead of automatic. This was done for commercial-grade helicopters to manually disengage the governor in the event the speed sensor partially fails and causes erratic governor operation
  • There is no “throttle modes” you can select like RC Passthru, ESC Setpoint, etc… The throttle control system has been replaced with a Manual/AutoThrottle system like full-size aircraft autopilots use
  • There is no longer any “motor interlock” or “throttle hold”. That is transparent in the design of the control
  • Fully supports twin-engine helicopters with dual channel Manual and FADEC-style AutoThrottle controls. Including individual engine runups, split-needle checks, in-flight shutdown and securing of a problem engine while continuing powered flight on the operating engine
  • Allows for in-flight restart of an inoperative engine, independent of the operating engine, if the engine is electric start (or electric motor)
  • Allows shutdown and restart of piston or turbine engines for refueling, without disarming the flight control
  • Since ground idle is controlled by the RC radio instead of the flight control, allows for multiple ground idle speeds to be set for starting/warmup of piston engines using Ecotrons Electronic Fuel Injection. And advancing the throttle to 100% for the Ecotrons ECU to “learn” the 100%, 0% and ground idle throttle positions prior to engine start. This start sequence has to performed on every cold start with a Ecotrons EFI

It is obviously heavily slanted towards piston and turbine power and provides no advantages for electric helicopters. It was not developed for ArduPilot. It was developed because the existing controls in ArduPilot are not able to start the engines in some helicopters I’m testing. Nor does ArduPilot have support for twin-engine.

It is based on the fact that there is legacy cruft in the code (IMO) to do things that a RC radio is much more adept at doing. And the RC radio is an integral part of the entire system.

  • Like the ESC Setpoint. Totally not needed. Just set a flat throttle curve or set the throttle percentage sent to the control with your RC radio
  • Want “idleups” because your Castle ESC supports it? Set your throttle curve to 100% and use a three-position switch to set the throttle control channel output to off, Idle1, Idle2.
  • Need a low idle/fast idle for piston engine starting/warmup? Set a three-position switch to move your throttle channel from fuel cutoff, low idle, fast idle - while still enjoying the advantages of the AutoThrottle with governor. Many people aren’t even flying with a ground station anymore with telemetry to the RC. If you need to adjust your engine idle speed can do it in in the RC radio - don’t need a ground station computer for that.

Thanks for all your work Chris. I will look at using these updates on my turbines.

The noted changes will work well for turbines, especially for FADEC controlled engines where the arm/disarm thing is a problem for ground idle and it requires full throttle to heat the igniter and initialize the FADEC. Or on non-FADEC engines where you need staged fuel to the engine reaching self-sustaining Ng rotation, plus require bailout on the fuel control for a hot start, or a hung start where Ng fails to accelerate.

They were primarily designed, however, for my 25kg twin-engine piston helicopter.