Heli-Mode 3 - Throttle Curve - be aware!

My throttle curve in Mode:3 setup for my TR600 worked pretty well. I have done a couple of RTL with very low Battery and it landed just fine autonomously.
But on a day when I for some reason did a RTL with nearly full batteries I was caught by surprise. The throttle curve was just not right for that situation and the Heli fell out of the sky, sort of. The motor revs were changing during descent. You can hear that in the video.
A flatter throttle curve fixed that. I am showing this in a video.


As usual, :grin: the logs are fundamental

Governor on the ESC ?

Actually, quite normal for any throttle curve if the curve is not flat enough in the normal collective pitch range from 0 deg and up. Just like tuning a throttle curve in the RC radio, it has to be tuned in ArduPilot doing full collective punchouts and quick drops just over autorototation collective to make sure it holds constant headspeed in all flight conditions.

On your runup, by time you reach zero degrees of collective pitch you should be at rated headspeed. Increasing pitch further adds load so requires more throttle to the engine. The curve can be adjusted accordingly.

Negative pitch is not used in ArduPilot except for headspeed recovery for autorotation. -2.5 to -3.0 degrees is usually sufficient to get the rotor turning again in the event of in-flight flameout, so that’s what I recommend setting up for. So basically, the throttle curve will advance from flight idle (piston or turbine) to rated headspeed in that first part of the collective movement, then hold it in flight.

For electric there is no flight idle. So it can go from off from bottom collective to rated speed at zero pitch, or RSC_IDLE ( if you have an “autorotation window”) set in your ESC to zero pitch.

All normal aerobatic maneuvers that can be performed with ArduPilot without blowing the EKF are 1G - loops, rolls, immelmann turns, etc all do not require any negative pitch at all. But they do require zero pitch in nose vertical during a climb in a loop, or at nose vertical in descent in the loop. The collective is feathered at that point and you’re just applying back elevator. The control inputs to a helicopter, once you get out of the augmented modes and into Acro are identical to an airplane except for the collective management vs throttle management. So the throttle curve must be tuned accordingly.

For extended inverted flight like inverted hover, then you need more collective in the negative range, and to make the throttle curve a V-curve to increase power in the negative pitch range. However, the GPS in ArduPilot does not handle inverted flight very well. So that is not recommended with ArduPilot anyway.

I use a YEP ESC for this Heli and have not set up the tricky Governor (yet).

Here is an example throttle curve from a Raptor 716 gas engine heli - notice how fast it ramps up to rated headspeed at zero pitch (20% collective position), then flattens out where the load changes very little, then goes steep where the pitch loading changes a lot.


Electrics will typically be be flatter than this because the torque curve is different on electric, and you won’t likely use 100% throttle at the top end of the curve with an electric. Electric motors produce their peak torque at zero rpm (stall). Piston engines produce their peak torque at wide open throttle at the rpm where maximum BMEP (Brake Mean Effective Pressure) is achieved.

Hi Chris, thank you for the comprehensive explanation. That was the reason to bring my bad throttle curve tuning to attention so others who try to cut corners can see what can happen.

@FRED_GOEDDERT I replayed your video a couple times and it doesn’t sound right. Are you sure the low voltage protection in your ESC didn’t cut in? The autopilot should’ve been trying to pull pitch to arrest a fall that fast, which would’ve throttled it back up, assuming the throttle curve had enough power to fly it otherwise.

From the sound of the blades it sounds to me like it’s actually at full pitch - taking a pretty big bite beyond normal hover collective in the fall. Which it’s going to do with low headspeed. But when the pitch ramps up, so does the throttle.

I honestly think the ESC malfunctioned or it’s low voltage protection kicked in.

the RTL worked 2 times before with the same Throttle curve after the end of a 12 min flights. The only difference this time was a nearly full battery. I called the Heli back because I forgot to turn the camera on.
But I would not be surprised if the ESC played up. That 120A YEP ESC from HK cost only a third what a Castle cost. That Castle ESC what was in my RJX 520 has only 75Amp not suitable for the TR600. If I get any unusual behavior with this YEP ESC again I will purchase a Castle for this Heli. Unfortunately I do not have any log file for you to investigate any further. Thank you for you thoughts anyway.

Chris, I have rendered a small portion of that video where the TR600 went up to high during my first mission attempt. ( Baro was disabled by me, mistake).
On the way down in Stabilize mode after I could see clearly what the Heli was doing again I pulled the collective pitch down a bit further so the Heli descent quicker. You can hear that the motor is reacting too because my throttle curve was to steep. At the end part I show you the RTL which was fine because the Batteries were down. ( The gimbal was out of tune, fixed now. But did not play silly high up luckily )

This is all with the same throttle curve I used in the hard landing video above.
I believe because the Batteries had more juice the autopilot tried to keep the same speed down in a different area of the pitch - throttle curve than with a flat battery. Now with a much more flatter throttle curve it is fixed even with full Batteries.
My theory?!

There is no doubt the flatter throttle curve is better for electric because of the electric motor’s characteristics. I assumed the hard landing video was an auto-land and I assume you have the descent rate set at probably 50 or so. But the helicopter was coming down way faster than that, obviously. So the autopilot should’ve tried to pull pitch to control the descent rate, even in autorotation. It will normally max the pitch out if the engine quits and stall the main rotor. But since the throttle is tied to the pitch, if it maxes the pitch out it will also max out the throttle to whatever you have set for the 100 point on the curve.

That’s what didn’t sound right to me as it sounds like the blades are taking a big bite at full, or very close to full, pitch. Which also corresponds to the highest power setting. There is no reason for the autopilot to drop pitch and do a rock drop descent when it’s supposed be meeting a target descent rate. Which indicates to me that the engine was failing and losing power.

If you pull the log and look at the CTUN messages for ThO, that is the collective scaled 0 to 1. The RCOU C8 is the throttle signal being sent to the throttle servo in pwm. If you see ThO at close to 1 during that descent, with C8 being at whatever value you have set for full collective, it means the autopilot was indeed trying to pull pitch to arrest it, and the signal to the throttle was calling for power, but it had lost engine power.

It should store the log on the microSD and it wouldn’t hurt to check that. If it is what I suspect then you have a problem with the ESC and that isn’t good for the future safety of the helicopter, as it could happen again. If it wasn’t low voltage protection, I wonder if that ESC has an “adaptive governor” feature that messed up? Every ESC I’ve ever seen is designed to work with throttle curves, because that is the only setup there is in RC radios and/or FBL units. But some with “adaptive governor” require flat throttle curve. It reads the speed at a particular throttle setting and after about 2 seconds it “locks” on that and tries to maintain that speed. If the throttle signal changes it “adapts” to the new throttle signal. This is the ESC firmware’s method of using the throttle curve for adjusting headspeeds infinitely.

The Castle ESC’s have a “Simple Governor” which is adaptive as I mentioned above. Or you can set them for Set Speed with three speeds. They look for a throttle signal from the autorotation window to 50% for Condition Normal, 51% to about 95% for Idle1, and full throttle for Idle2. This allows the user to set three different flat throttle curves for the idleups.

ArduPilot does not yet have Idleups like RC radios and FBL units have. But we will be working on that for 3.7. The throttle “modes” in ArduPilot will be gone and there will only be throttle curve with Idleups to be consistent with the rest of the heli world. And it will be able to switched from Condition Normal to Idle1 or Idle2 on-the-fly, again to make it consistent with the rest of the heli world.

We also need to get rid of the “motor interlock” terminology and go to “throttle hold”. Working with some folks that have years of vast experience in RC helicopters, we have heard “what is this motor interlock thing”? more than once.

So I explained it’s the same as throttle hold.

Well, why isn’t it called throttle hold then and can it be used for autorotation?

Ah…no - we still have to fix that. But with Bill’s new spool logic we will be able to do it.

So there’s a lot of work to be done for the next release to get ArduPilot Heli up to speed with, and consistent with, the rest of the RC heli world so it can be considered just as good as, and a valid alternative to, any of the FBL units that exist. 3.6 was just a major step to get broken stuff working in heli. Now we’re going to work towards getting it so it can fly everything from simple electrics to the most advanced twin-engine turbine scale models that there are, including the big Vario’s with four-servo swashplates.

1 Like

Yes, the hard landing was auto land with 50 cm per sec down.

Chris, you convinced me.
I will get a proper Castle ESC now. It is to risky.

I am in the process to put my new Castle Talon HV120 ESC which I received today in the Heli. Hopefully no more guessing.

With the Castle you can enable the “autorotation window” and use H_RSC_IDLE to keep the autorotation open if you go to throttle hold in flight. Set the ArduPilot ramp/runup times to 1 and 2 respective. And it gives you “bailout” for autorotation practice.

Set the speeds all to the same using the Set Speed feature to whatever rpm you want. Then use a flat throttle curve set at whatever you want.

When get the Idleups in TradHeli then you’ll be able to select three different speeds for it.

Chris, I understood the first part of your replay.
Set the speeds all to the same using the Set Speed feature… I assume you are talking about the Set Speed feature in Castle governor RPM setup!?

When get the Idleups in TradHeli then you’ll be able to select three different speeds for it.

Do you talk about a future feature in Ardupilot I have to wait for?


Yes, you can’t use your idleups with the throttle curve at present. If you want to use those Idleups (three set speeds in your ESC) with the current code the only way to do it is with Mode 1 throttle control (RC Passthru).

Bonjour comment tu a câblé ton helico