The parameter ramps up the HELI_RSC (throttle) output.

My ESC does that by itself. So can I set H_RSC_RAMP_TIME to zero?
And if so, what value should H_RSC_RUNUP_TIME have, 1, 0?

I’ll let the experts back me on this, but I’m fairly certain you need to keep the runup time an accurate time that it takes for your ESC to actually ramp up to whatever is needed for flight.
This parameter prevents the autopilot from wanting to take off before the rotor gets up to speed.

For example, if I programmed a mission to take off, then fly to a waypoint. If my runup parameter value is set to 1 second, it will try to take off after 1 second of having the ESC armed. I don’t even think a micro heli can do this.

I have my 1000 sized petrol heli set to around 25 seconds of ramp time, and 26 seconds of runup time.
Smaller electrics will be much quicker, maybe 10 seconds? Chris Olson recommends having the runup time about a second longer than the ramp time.

Hope this makes sense

1 Like

Thank you for the explanation Chris!
I understand that ArduPilot has to wait for the spoolup.
But why must the throttle output ramp up?
My ESC (like many others) has 4 set points:
0%: off, 30%: rpm1, 70%: rpm2, 100%:rpm3.
The ESC spools up the motor by itself.
So it would appear likely to switch the throttle output to 70%
and wait for X seconds.

Yeah, just to back up what @Chris_Khosravi said, the autopilot uses the H_RUNUP_TIME parameter to set a flag in the code which acts mostly as a safety function. It does a number of things like makes sure the flight mode can’t be changed to a non-manual collective mode (like alt hold, loiter, etc) during spool up. I would recommend that you make H_RUNUP_TIME at least 1 sec longer than whatever run up time you have set on your ESC.

The H_RSC_RAMP_TIME parameter effects the rate at which the servo output increases. This value cannot be less than one (the code enforces this). This value must also be less than H_RUNUP_TIME (you wont be allowed to arm if it isn’t). As your ESC is doing the ramp up of the motor, just set H_RSC_RAMP_TIME to 1 (the minimum that you can). This will slew you output by 1 sec but you wont notice that.

1 Like

To re-inforce what both Chris K and Matt said, set your ramp to 1, but still set the runup time to whatever it takes for your ESC to bring the rotor to full takeoff speed.

The slower you can bring a combustion engine helicopter up to speed, the better it is. There is a lot more rotating mass in combustion engines, and they are usually turning big rotors that are not practical with electric power. There is no real hurry to get these helicopters off the ground. In full size, like with a Bell 206B, the ground run is minimum 2 minutes to get the engine, oil and gearbox temperatures into the green before you pull pitch. Especially in cold weather it pays to warm up a piston engine in a RC machine for a good 2 minutes at flight idle so she doesn’t go lean on takeoff and end up in autorotation.

Electrics are more pushbutton. Ground running just wastes battery. So the less time they spend on the ground during spoolup, the better it is.

Thank you all for the xplanations. Now I understand how the parameters work.
I will set H_RSC_RAMP_TIME to 1 and H_RUNUP_TIME to the actual spool up time.