Adjustable motor expo

Mike Shellim 5 March 2020
Updated 31 July 2022

In this article I'll describe (a) how to set an expo curve for your motor, and (b) how to make it adjustable in flight.

Setting the scene

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.

Mapping to an expo friendly range

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).

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 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]

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:


switch='ON' Action = Adjust_GV1 Source=S1

So now, the expo value (GV1) is constantly updated with the value of pot S1, which varies between -100% and +100% depending on its position.

In use

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)