Adjustable motor expo
In this article I'll describe (a) how to set an expo curve for your motor control, and (b) how to make it adjustable in flight.
Why motor is different
OpenTX provides a mechanism for setting expo, so one might think this would work:
CH7:Motor
Src=Thr Weight(100%) Expo(25%)
In fact, this doesn't work because throttle idle position is at stick bottom, whereas expo is designed for controls where idle is stick centre. Applying expo directly would result in a strange 'S' response around the mid-throttle setting. A little trickery is needed!
Mapping throttle to an expo friendly range
The first step is map the throttle stick range [−100% to 100%] to an expo-friendly range [−100% to 0%]. We can do this a high mix with appropriate values for weight and offset.
CH10:MapThr
Src=Thr Weight(+50%) NoTrim Offset(-50%) [ThrIn]
So the output of CH10 is −100% with the throttle stick at the bottom, rising to zero with the throttle stick at the top.
Applying expo and reverse mapping
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 throttle range of −100% to +100%. We can do this 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 mix for the motor channel, using CH10 as the source. Expo is supplied via a GVAR:
CH7:Motor
Src=CH10:MapThr Weight(+200%) Offset(100%) Expo(GV1) [MotOut]
Making the expo adjustable
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
In use
With the throttle stick in the middle position, the output will vary between −75% and +75% depending on the position of pot S1.