
More about mixers
Introduction
In this section, we'll look at mixers in more detail (for a primer, please see Key concepts first). We'll explore offset, expo, diff, functions and curves.
Mixer offsets
The Offset parameter is used to shift the mixer output up or down. Offset is applied after weight:
Mixer value = (Source * weight) + Offset
Offsets are useful when a mix should start from one end of stick travel (instead of the centre). Examples include mixes driven by the throttle stick such as motor compensation.
Example: motor compensation
Motors often produce an upward pitching moment. To compensate for this, it's common to add a 'motor compensation' mix to the elevator channel.
The mixer output must be zero when the throttle is fully back (idle). We achieve this by setting offset = weight. The output will then vary between 0 and (2* weight) as the throttle stick is moved upwards.
In this example, the compensation mix generates up to 40% elevator movement:
CH2:elevator
Src=Thr, wt=20%, offset=20 -- motor compensation mix
Mixer curves (diff, expo, functions and curves)
In addition to weight and offset, OpenTx offers one additional parameter from the following list of choices:
- Diff - reduces the effect of the source in one direction
- Expo - applies an expo curve to the source
- Function - e.g. 'x > 0' source active in positive direction only
- Curve - between 2 and 17 points applied to source
The first three options are just shortcuts to particular curve types.
Including/excluding trims
By default, trim values are included in sources. You can exclude trims on a per-mixer basis by unchecking "Include Trim" in the mixer dialog.
Order of processing
When processing a mixer, OpenTx first applies the function (function, curve, expo), followed by weight, then offset is added, and finally the trim value. The exception to this rule is diff which is applied last. Order may be important when combining operations especially where offsets are involved.
How to set aileron differential
Setting aileron differential in OpenTX/EdgeTX can be a little confusing. You'll notice that there is a 'diff' parameter in both the Inputs and Mixer menus. So which should you use to implement aileron diff? Let's see first what happens if diff is specified in the input. We'll use a value of 20%:
[I1]Ail
Src=Ail, wt=90%, expo=10, diff=20
It looks good, but there's a big problem: the diff is applied to the aileron stick. If you try this, you'll get 20% less aileron travel when moving the stick on one side compared to the other. Clearly that's not what's wanted!
The correct way is to apply diff independently to each aileron mix:
[I1]Ail
Src=Ail, wt=90%, expo=10, diff=0
CH1:right elevon
Src = [I1], wt=100%, diff=20%
CH2:left elevon
Src = [I1], wt=−100%, diff=20%
To summarise: Do not specify diff at the Input level. Specify diff separately for each aileron mix!
Default mixer settings
When you create a new mix, the initial settings are weight=100% and offset=0, diff/expo=0 and no curve. The source value is therefore passed through unchanged.
Mixer best practice
A couple of tips:
- Mixers are about the control logic, not geometry, so design your mixers without consideration of physical linkages and mechanical differences.
- Compensation for mechanical differences should be done in the Outputs menu. That way, the weights left- and right-side mixers can be the same, allowing the design to be simplified by means of GVARs and cascading mixers.
- The logic must be self consistent, so adopt a convention. The one I use is: +ve mixer values = up/right, -ve = down/left. By adopting a convention, it's easy to check the validity of your mixer setup in the Companion simulator.