Mike Shellim 5 March 2020
Updated 31 July 2022
OpenTX provides a mechanism for setting expo, and you might think this would work:
CH7 Motor
Src=Thr Weight(100%) Expo(25%)
In fact, this won't work. This is because expo is designed for controls like aileron, elevator and rudder which work symmetrically about the stick centre. With throttle, the stick centre corresponds to 50% power, so applying expo would result in a strange 'S' response around the mid-throttle setting.
A little trickery is needed, so that expo is applied from idle position.
Assuming the idle position is with the stick at the bottom (-100%), the first step is map the throttle stick range [-100% to 100%] to an expo-friendly range [-100% to 0%].
The mapping is implemented in a high mix with appropriate values for weight and offset. We'll use CH10:
CH10 MapThr
Src=Thr Weight(+50%) NoTrim Offset(-50%) [ThrIn]
So the output of CH10 is -100% with the throttle stick at the bottom (full throttle), rising to zero with the throttle stick at the top (idle).
We can now apply expo to the output of CH10.
That's not all though - we must reverse the mapping in order to restore the normal motor range of -100% to +100%. This is done by applying a weight of 200% and an offset of 100%.
Thanks to the order in which mixer parameters are processed in OpenTX, both steps can be combined in a single mix. (OpenTX applies the expo, followed by weight, then offset).
All this can be done in the motor mix (say CH7), using CH10 as the source. Expo is supplied via a GVAR:
CH7 Motor
Src=CH10:MapThr Weight(+200%) Offset(100%) Expo(GV1) [MotOut]
The final step is to make the expo adjustable, using (say) pot S1. We create a function SF1 to bind the expo GVAR to S1:
SF1
switch='ON' Action = Adjust_GV1 Source=S1
With the throttle stick in the middle position, the output (motor) will vary between -75% and +75% depending on the position of pot S1.
Demo OTX file (for OpenTX 2.2 and above)