Tutorials : Spoiler/Elevator Compensation using 'Morphing'
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.
Programming
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%.
- With spoiler closed (A212 = 100), mixer = curve1
- With spoiler open (A212 =0), mixer = curve 2
- With spoiler partially open, the response curve is an intermediate morph of the two input curves.
Drawbacks
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.
Postscript
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.