An output's trim lies outside its minimum and maximum
What ArduPilot says:
- PreArm: SERVON_MIN is greater than SERVON_TRIM
- PreArm: SERVON_MAX is less than SERVON_TRIM
For every output that has a function (SERVOn_FUNCTION above 0), ArduPilot checks that SERVOn_TRIM, the neutral position, lies between SERVOn_MIN and SERVOn_MAX. The message gives the number of the output where it does not. The check has no switch of its own among the arming checks.
What to do, most likely first
A limit was edited by hand and crossed the trim: a servo's travel shortened, a gimbal or gripper set up.
CheckRead the three values of the output named.
FixMove
SERVOn_TRIMinside the range, or widen the range, so thatSERVOn_MINis the smallest andSERVOn_MAXthe largest of the three.A motor output on DShot kept a
SERVOn_MINsaved in an earlier PWM setup. On a DShot output the defaults become 1000, 2000 and a trim of 1000, but a saved 1100 stays, above the trim.CheckThe output named is a motor (function 33 to 40) and
MOT_PWM_TYPEis 4 or more.FixSet that output's
SERVOn_MINto 1000,SERVOn_MAXto 2000 andSERVOn_TRIMto 1000.The three values came with a parameter file from another aircraft.
CheckParameter Compare & Migrate shows what differs from your earlier file.
FixSet them for this aircraft; for a control surface, find its two ends and its centre again.
Parameters to look at
| Parameter | What it is |
|---|---|
SERVO1_MIN | Minimum PWM |
SERVO1_TRIM | Trim PWM |
SERVO1_MAX | Maximum PWM |
SERVO1_FUNCTION | Servo output function |
MOT_PWM_TYPE | Output PWM type |
Where to do it:Parameter Compare & MigrateSetup & Tuning Guide
The code that sends it
PreArm: SERVON_MIN is greater than SERVON_TRIM
libraries/AP_Arming/AP_Arming.cpp AP_Arming::servo_checks() · Open in ArduPilot Copter-4.7.1
PreArm: SERVON_MAX is less than SERVON_TRIM
libraries/AP_Arming/AP_Arming.cpp AP_Arming::servo_checks() · Open in ArduPilot Copter-4.7.1