Take-off is held back until the motors are seen to spin
What ArduPilot says:
- … ESC RPM out of range
- … waiting for ESC RPM
- … CPU overload (N.N%)
With TKOFF_RPM_MIN above 0, after arming the motors are kept at their idle speed until every ESC reports by telemetry at least TKOFF_RPM_MIN RPM (and no more than TKOFF_RPM_MAX, if that is set). “waiting for ESC RPM”: one ESC or more has never sent telemetry. “ESC RPM out of range”: telemetry arrives, but a motor turns slower than the minimum or faster than the maximum, or its data has gone stale: it may not be spinning at all. The line repeats every 5 s until all motors pass.
What to do, most likely first
A motor is not spinning: its ESC did not start, it lost sync, or the motor or a wire is damaged. The check is doing its job.
CheckLook at the motors after arming: one stands still or stutters. ESC telemetry in the ground station shows its RPM at 0.
FixDisarm and find the motor that stays still. With the props off, run the motor test on each output.
ESC telemetry does not cover every motor: bidirectional DShot is not switched on for all outputs, or a telemetry wire is missing.
CheckThe ground station's ESC telemetry lists fewer ESCs than the copter has motors.
FixSet
SERVO_BLH_BDMASKto cover every motor output (or wire each ESC's telemetry) and reboot.TKOFF_RPM_MINis higher than the motors turn at when armed and idling.CheckAll motors spin evenly, yet the message “ESC RPM out of range” stays.
FixRead the idle RPM from telemetry after arming (props off for the first look) and set
TKOFF_RPM_MINto about half of it.“CPU overload”: the flight controller is asked to do more than it can: high loop or logging rates, heavy scripts, many filters.
CheckPM.Load in the log stays close to 100%, and the percentage in the message says the same.
FixLower
SCHED_LOOP_RATEor the logging rates, stop scripts you do not need, and reduce the number of notch filters; the load must stay under 95%.
Parameters to look at
| Parameter | What it is |
|---|---|
TKOFF_RPM_MIN | Takeoff Check RPM minimum |
TKOFF_RPM_MAX | Takeoff Check RPM maximum |
SERVO_BLH_BDMASK | BLHeli bitmask of bi-directional dshot channels |
MOT_SPIN_ARM | Motor Spin armed |
SCHED_LOOP_RATE | Scheduling main loop rate |
Where to do it:Motor & Prop BenchSetup & Tuning Guide
The code that sends it
… ESC RPM out of range
ArduCopter/takeoff_check.cpp Copter::takeoff_check() · Open in ArduPilot Copter-4.6.3
libraries/AP_Vehicle/AP_Vehicle.cpp AP_Vehicle::motors_takeoff_check() · Open in ArduPilot Copter-4.7.1
… waiting for ESC RPM
ArduCopter/takeoff_check.cpp Copter::takeoff_check() · Open in ArduPilot Copter-4.6.3
libraries/AP_Vehicle/AP_Vehicle.cpp AP_Vehicle::motors_takeoff_check() · Open in ArduPilot Copter-4.7.1
… CPU overload (N.N%)
ArduCopter/takeoff_check.cpp Copter::takeoff_check() · Open in ArduPilot Copter-4.7.1