Tutorials : Spoiler/Elevator Compensation using 'Morphing'

Mike Shellim    30 July 2005

revised   12 Nov 2005

The problem

The pitch trim of a glider usually changes as spoilers are applied. To deal with this, the elevator neutral will need to be shifted ('spoiler compensation'), and in a few difficult cases, the elevator travel will need to be increased as well.

Normally the ELEV+ mixer will be used. However while this supports spoiler compensation, it does not support increased elevator travel.

Here is a solution which handles both adjustments. It uses a technique I call 'morphing', which is a means of blending two disctinct curves using an analogue switch.

The Solution

As a first step, consider the curves for the elevator - first with spoiler off, then with spoiler deployed. Only consider the effect of the elevator stick.

Elevator response
Input = Elevator control

Curve 1: Spoiler OFF
    Curve = -50/ 0/50  50% travel. zero spoiler compensation

Curve 2: Spoiler ON
    Curve =  -50/20/90  70% travel, 20% neutral compensation

The curves above represent the ideal response at extremes of spoiler. At partial spoiler, we require a blend or morph of the two curves. We can do this morphing quite simply using an analogue switch.


We'll program the solution for a glider with a conventional tail.

Assign Controls

B = Spoiler
D = Elevator 

Assign Servos

Assign one real servo to elevator and one 'phantom' servo to spoiler (we'll see why in a moment).

Servo 1 = Servomix    Elevator servo
Servo 12 = Spoiler    'Phantom' servo, for analogue switch (see below). 
                      Note ch 12 can be programmed even in PPM 9 mode!

Spoiler Driven Analog Switch

We now define an analogue switch to perform the morphing. We will base it on the phantom servo 12 rather than the Spoiler control (see note below).

The switch will appear as A212 in the menus

Analogue switch A2
Based on: Servo 12
Effect: (default)
Window: (default) 

Note: analogue switches are normally based on the position of a control stick. So why did we base ours on a servo?

The problem is to do with the FIX_VAL option, which is often used to disable spoilers. Specifying FIX_VAL overrides the stick position. Therefore basing A2 on the stick position will not give the correct result if FIX_VAL is active (unless the stick happens to be in the same position as the FIX_VAL value!).

To get round this, we base the analogue switch on a servo assigned to the control. It may seem a roundabout way of doing things, but the result is that the analogue switch will work properly.

Create Servomix

First, create a servomix with two elevator inputs, using the Assign Mixers screen. The curves are the ones we looked at earlier.

Input 1 = Elevator + T       Trim active on each input
Input 2 = Elevator + T 

Next, set up the mixer curves in the Servo Travel menu.

Servomix Input 1 Elevator
     curve  = -50/ 0/50    50% travel, zero compensation
     switch = A212*        '*' means reversed switch sense

Servomix Input 2 Elevator          
     curve  = -50/20/90   70 travel%, 20% compensation
     switch = A212        Note no '*', i.e. normal switch sense

Note the analogue switch (A212) attenuates each input between 0 and 100%, but in opposite senses.

How Does it Work?

Each input is first multiplied by the value of the analogue switch, and the mixer adds the resulting values together. Therefore the overall response curve of the mixer is:

(Curve1 * A212) + (Curve2 * (100 - A212))

where A212 is the attenuation value of the analogue switch which varies between 0 and 100%.


This approach has one possible disadvantage: the morphing technique blend the two curves linearly. It won't work if you want a non-linear response.


The technique for morphing two curves is very powerful and could be used in many places where a linear transition between two distinct curves is required - perhaps even replacing flight modes in some applications.

For another angle, see Simon Halls solution.