How to make in-flight adjusters
Optimising the performance of your model involves lots of trial and error - and lots of flights. Not only is it time consuming, but all those landings risk damage to your model. In this article I'll describe how knobs and trims can be programmed as in-flight mix adjusters, for optimising diff, snapflap, motor compensation... that's right - almost anything you like, while you're flying the model.
The result is less fiddling, more flying and a better performing aeroplane!
The volume control
The basis of any adjuster is the volume control. The is simply a mixer, with knob or slider as the input. The mixer is configured so that the output varies between 0% and 100% as the knob is rotated. It's then a question of multiplying the mixer output with the 'thing' you want to adjust.
Okay, so let's design a simple volume control. The adjuster will be Pot1. We'll look at two methods:
Method 1: custom weight and offset
The first method of creating the volume control uses a free mix, with weight and offset set to 50%:
How does it work? Recall that the output of a mix is calculated according to this formula:
- With knob Pot1 fully anticlockwise, input=−100, and so output = 0
- With Pot1 fully clockwise, input=100, and so output=100
We can verify this in the Outputs screen: as Pot1 is rotated clockwise, the value of CH10 varies from 0 to 100.
To reverse the direction of Pot1, long press on the input field, and choose 'invert'.
The benefit of this approach is that all the code is contained in one mixer line. However, it's not so easy to set limits other than +/-100%.
Method 2: custom curve
The second method is also based on a free mix, but using a 2-point curve to define the adjustment limits.
Freemix input=Pot1, curve=2 points [(-100,0), (100,100)], output=CH10
This method make it easier to set custom limits. For example, for adjusting differential, it might be more appropriate to set limits of 10% and 70%:
Freemix input=Pot1, Curve=2 points [(-100,10), (100,70)], output=CH10
Snapflap and diff adjusters
Now that we've programmed our volume control, let's put it to work. We'll look at a couple of complete solutions:
Adjuster for snapflap, diff or expo
With competition gliders, it's really nice to be able to adjust snapflap (elevator to flap mix) on the fly to test different settings. So let's make an snapflap adjuster. We'll give it a range of 0% to 25% of the elevator value.
To do this, we first set up the snapflap mix. We then create the volume control in CH10, using either of the methods described above. Finally, we inject the volume control into the snapflap weight field, thus providing a variable weight:
Freemix:adjuster input=Pot1, curve=2 points [(-100,0), (100,25)], output=CH10
FreeMix:snapflap input=Ele, weight up/down=CH10:adjuster, output=CH5/CH6:flaps
The nice thing about this method is that it can be be used to adjust any field which can be linked to a source, for example diff and expo. Here's an another example, this time using Pot1 to adjust diff between 20% and 70%:
Freemix:adjuster input=Pot1, curve=2 points [(-100,20), (100,70)], output=CH10
Ailerons: diff=CH10, output=CH1/CH2:ailerons
Adjustable snapflap, OpenTX style
Here's another technique which I'll mention in passing. It's one which will be familiar to many OpenTX users. With this method, the adjuster and snapflap mix outputs are multiplied using the 'multiply' mixer function on the second mix:
FreeMix:snapflap input=Ele, weight up/down=25%, output=CH5/CH6:flaps
Freemix:adjuster input=Pot1, curve=2 points [(-100,0), (100,100)], function=Multiply, output=CH5/CH6:flaps
I don't recommend this method since the mixer order is critical. It is however a nice demonstration of the Multiply mixer function. For a deeper explanation of the Multiply function, see Mixer functions.
Using trims as adjusters
The examples above use a pot as the adjuster. Trouble is, these are easily knocked, and the values aren't 'sticky' - they don't hold their value between sessions. It's usually better to use a spare trim lever (these are are sticky).
The FrSky X10 and X12 offer T5/T6 trims which are ideal for the job. Paradoxically the newer X20 lacks these trims, but you can repurpose one of the regular flight trims as mix adjusters. To do this, you must first open the Trims menu and disable the trim (this suppresses the default trim behaviour). There's an example of this in my F3F template, where the throttle trim is repurposed as a snapflap adjuster.