Cascading mixers

Mike Shellim 08 May 2015
Last updated 16 August 2017

Cascading is a powerful technique for propagating a mix or group of mixes to multiple target channels. It's especially useful when programming models with complex wing mixing, such as F3X sailplanes. The benefits are:

Cascading is made possible because OpenTx allows a channel to be specified as the source of a mix.

In order to use cascading mixers effectively, your servos should be properly calibrated.

1. Example: glider camber mix

As an example, consider a pair of flaps controlled by LS. We'll compare two implementations, first without and then using cascading mixers.

1.1 Using direct mixing.

Here's the standard solution, using identical mixes on each servo channel. The weight of each mix defines the maximum possible camber, we'll assume a value of 87 (say).

CH5 (left flap)

Src=LS, weight=87 - camber input

 

CH6 (right flap)

Src=LS, weight=87 - camber input

This will work, but it's got a drawback: two identical adjustments are required in order to alter the maximum camber. This kind of redundancy should be avoided.

2.1 Using a cascading mixer

To provide a single point of adjustment for max camber, we

CH5 (left flap)

Src=CH10, wt=100

 

CH6 (rt flap)

Src=CH10, wt=100

 

CH10 (outputs camber value)
Src=LS, wt=87

To alter the maximum camber, it's only necessary to adjust one parameter (in CH10).

Remember that mixer weights are multiplied through the command chain. It's always good practice to make the weight adjustment as high up the chain as possible, and to reset the set lower-level weights to 100%. In this case, we've reset the weights of CH5 and CH6 to 100%.

2.2. Adding extra mixes

Suppose we want to add an elevator-to-flap mix ('snapflap'). Instead of applying the mix to each channel separately, we simply insert it into CH10. This high channel now aggregates both the camber and snapflap mixes:

CH5 (left flap)

Src=CH10

 

CH6 (rt flap)

Src=CH10

 

CH10 (aggregates camber and snapflap mixes)

Src=Elevator, wt=10, NoTrim
Src=LS, wt=87

Snapflap can be altered via a single menu point, affecting both flaps equally.

2.3. Adding a snapflap adjuster

Let's get even bolder. Say we want to adjust the maximum snapflap using knob S1.

As with the two previous examples, all the work can be done in CH10. We do this by adding a MULT mixer line, with source = S1. The MULT line is placed immediately after the Snapflap mix. The effect is to multiply the snapflap value by S1 (-100 to 100%), then adding the LS mix. (For more information see How to make in flight adjusters.)

CH5 (left flap)

Src=CH10

 

CH6 (rt flap)

Src=CH10

 

CH10 (adds the effect of camber and snapflap)
Src=Elevator, wt=10, NoTrim -- Snapflap

Multiplex=MULT Src=S1 -- Snapflap Adjuster

Src=LS, wt=87

Lets compare this with the solution where the servos have not been calibrated. Without calibration, we're forced to use the direct mixer approach since the mixer weights will be different on the left and right sides:

CH5 (left flap)

Src=Elevator, wt=10, NoTrim

Multiplex=MULT Src=S1
Src=LS, wt=87

 

CH6 (right flap)

Src=Elevator, wt=7, NoTrim

Multiplex=MULT Src=S1

Src=LS, wt=79

Hote how the code has more lines and more adjustments. If we were to add more inputs for example ail-to-flap and crow, the setup could become unmanageable. The benefits of servo calibration, in conjunction with cascading mixers, should be clear!

3. Summary so far

Let's summarise what's been achieved by designing our setup with provision for servo calibration, and employing cascading mixers.

4. Combining high channels with GVARS

All the examples so far have assumed a single flight mode. Let's say we have three flight modes 'Normal', 'Thermal' and 'Speed'. Suppose that the maximum camber should be different in each flight mode. We could implement this as follows:

CH5 (left flap)

Src=CH10

 

CH6 (rt flap)

Src=CH10

 

CH10 (outputs flap value)

Src=LS, wt=0, Flight mode=Cruise

Src=LS, wt=35, Flight mode=Thermal

Src=LS, wt=-10, Flight mode=Speed

The lines marked in red provide maximum camber values of zero, 35 or -10 depending on the active flight mode. It will work fine, but it requires three mixers.

A neater way is to use a GVAR, as these are already flight mode aware (for a full discussion, see Using GVARs).

For our example, let's set the camber values in GV1. GV1 can then be referenced in the camber mix.

GVARS

GV1 = 0 (Cruise), 35 (Thermal), -10 (Speed)

 

CH5 (left flap)

Src=CH10

 

CH6 (rt flap)

Src=CH10

 

CH10 (outputs flap value)

Src=LS, wt=GV1

High channels and GVARs together are a very powerful combination!

5. Compared with other operating systems

Support for cascading mixers is generally limited in other operating systems, or else poorly documented to the point of unusability (e.g. Futaba 12FG). To the author's knowledge the only other radio with proper support for cascading is the Multiplex 4000, and that radio is now obsolete. OpenTx rules!

6. Real world example - F3F setup

For an example of how these techniques are used in a full-fat F3F setup, see F3F Setup for Taranis, in particular the Excel documentation.

Mixer screen

Cascading example from my F3F setup: CH10 is a high channel which aggregates flap camber from four inputs, two of which (CH16, CH17) are themselves high channels.