Tuesday, January 18, 2022
Home » How To's » Advanced Radio Programming

Advanced Radio Programming

Features and Interactions

By Chuck Bassani

Advanced Radio Programming

As we progress in this hobby, entering the compulsory model settings into our transmitter often becomes second nature. And the more we use any given feature (or collection of features), the more we’ll tend to almost subconsciously dial in just the right settings to achieve our desired control behavior. If we look at each programming feature singularly, it’s relatively easy to appreciate what it offers and how we can put it to good use. However, when features are combined they often interact with one in other in ways that can make your head spin trying to wrap it around exactly what’s going on.

Sometimes we just can’t put our finger on why our model isn’t behaving as expected. For this very reason, in this “How-To” I’m going to examine a few programming features like “Sub-Trim,” “Travel Adjust,” etc. Yep, you read that right; I need to go no further than some of the basics in order to demonstrate feature interaction and how it can affect performance. I’ll begin with a brief overview of what the feature is designed to do and give details on how it is implemented. Then I’ll further illustrate how using the feature impacts control resolution and servo positioning. Lastly, I’ll give specific examples of when and how certain features might interact with one another.


Beginning with the transmitter, servo movement is choreographed by periodically sampling the position of all controls (sticks, switches, knobs, etc.) Those samples are then processed; applying the algorithms that implement the system’s suite of programming features. When all is said and done, it’s just these calculated channel output positions that get sent to the receiver. At the receiver, channel output positions are either fed directly to the attached device (as when using a serial bus servo for example), or more commonly, used to generate a pulse width modulated signal that in turn is output on an individual channel output port. Analog and digital servos then determine their target position based on the width of the pulses received.

A standard servo uses a pulse width in the order of 1500 ?S (that’s 1.5 thousandths of a second) to specify a center (or neutral) position. Increasing or decreasing that width results in a command position that is either clockwise or counter clockwise from neutral (see sidebar).

Advanced Radio Programming
This is what the servo sees on its input signal line-a steady stream of pulses, their width specifying the desired output positions.


Knowing how a servo is told where to move and determining how precisely a digital radio system can specify that position is a function of its resolution. Resolution is what dictates the number of discrete position values that can be represented in the system, and is expressed in “number of steps” (i.e. 1024-step, 2048-step, etc.) Given a commonly used pulse width range of 900 ?S – 2100 ?S for example; a system utilizing 1024-step resolution can generate position pulses in roughly 1.2 ?S increments. On the other hand, a 2048-step system can generate position pulses in the order of 0.6 ?S increments, and thus is capable of yielding a much finer positioning capability than a 1024-step system could.

Now here comes the important part. The overall pulse width range (the absolute maximum pulse width minus the absolute minimum pulse width) along with the designed resolution is what dictates the absolute maximum resolution any single control channel can have. As I’ll explain shortly, the upshot of utilizing even the most basic programming features will almost always result in a somewhat reduced control resolution and at times can result in some undesired control behavior.



Advanced Radio Programming
This is my test set up. It takes nothing more than a transmitter, receiver, and a way to measure the PWM signal at the receiver’s channel output port.


Now let’s look at these four basic programming features:

• Travel Adjust (or End Point Adjust)
• Sub-Trim
• Dual-Rate
• Exponential

For my examples, I’ll exercise each feature using a single control (stick) and observe the resulting output on its corresponding receiver channel. To keep the results as pure as possible, all compensation and programmable mixes will be disabled. I’ll be performing the exercises using a Spektrum DX18 transmitter and Spektrum AR8000 receiver; a system that will yield 2048 step resolution. All pulse widths will be measured at the receiver’s channel output port.


As the name implies, Travel Adjust is used to control the range of travel on each side of a channel’s center position, and its setting is usually specified as a percentage value. In our Spektrum system, travel can be adjusted from 0 to 150 percent in each direction. Now here’s the important part; the system’s 2048 steps are evenly distributed across the full +/- 150 percent range. OK, so what does that mean? In essence, it means that you need to set the Travel Adjust to 150 percent to realize full system resolution.

With 150 percent Travel Adjust dialed in on both ends, I measured pulse widths at the control limits of 930 ?S and 2070 ?S. Those numbers ARE the channel’s minimum and maximum values; and the DX18’s absolute channel limits. Knowing that the maximum range is 1140 ?S, we can divide it by the system’s 2048-step resolution and thus deduce that the system can generate servo positions in approximately 0.56 ?S increments.

When using the DX18’s default Travel Adjust values of 100 percent, the pulse widths measured at the stick limits were 1120 ?Sec and 1880 ?Sec. Dividing this 760 ?Sec range by the 0.56 ?S step, we can conclude that we now have a reduced usable resolution of approximately 1357 steps; a reduction of almost 33 percent.

Advanced Radio Programming


Sub-Trim is generally used to tweak a servo’s center position. How the Sub-Trim function accomplishes this is simple; the system applies the channel’s programmed sub-trim delta to its calculated output position. Expanding on our Travel Adjust example, we can recall that a 100 percent Travel Adjust setting will yield a pulse width range of 760 ?Sec (1120 ?Sec to 1880 ?Sec). In the DX18 system, each “unit” of Sub-Trim applies approximately 1.2 ?Sec of delta. So with +50 units of Sub-Trim dialed in, we’ll measure again. The neutral position moved from 1500 ?S to 1560 ?Sec and the stick limits produced measurements of 1180 ?Sec and 1940 ?Sec. Notice that the overall travel range pretty much remains the same; the end points however are shifted; our first feature interaction.

An important aspect of Sub-Trim is to take into account the system’s absolute travel limits. To illustrate this I’ll use an extreme example. I’ll dial in 150 percent Travel Adjust and use +50 Sub-Trim. With these settings I measured the expected 1560 ?S at neutral, but now measured 990 ?S and 2070 ?S at the stick limits. The 990 ?S end seems reasonable, but what happened to the other end? Answer–it was clipped. Recall that the system is incapable of generating an output higher than its absolute maximum value. So what we ended up with is asymmetrical throws; yet another feature interaction.

Advanced Radio Programming


I personally believe the term “Dual-Rate” to be misleading; and this is especially true given the fact that modern radio systems will often allow you to program in three or more rates. What the feature was originally designed for is “Reduced Rate,” so the overall control authority could be decreased by further reducing the limits set with
the Travel Adjust function by some percentage. As the function evolved over time, the feature also allows you to specify an “Increased Rate.”

Once again recall that 100 percent Travel Adjust with no Sub-Trim gave us measured end points of 1120 ?Sec and 1880 ?Sec. I’ll introduce 50 percent Dual Rate and re-measure. The end points moved to 1310 ?Sec and 1690 ?Sec; effectively cutting the travel range in half–just at it is supposed to do. But what this also did is to further reduce the channel’s resolution. We now have only 679 steps over the full stick travel. Conversely, if you use Dual Rate to increase your travel, you’d be increasing control resolution. Just be aware that when using the Dual Rate feature to increase travel, the same limitation exists as when we used Sub-Trim; if your settings cause one or both ends to exceed their absolute maximum value(s)–clipping will occur.

Advanced Radio Programming


Exponential exists to decrease or increase control authority (or sensitivity) around a channel’s center position. It does not alter the overall travel range and therefore does not introduce any interaction. It does however purposely alter the linearity of stick position to servo movement, therefore producing what I will call variable resolution (for lack of a better term).

Advanced Radio ProgrammingWhen exponential is used to desensitize control authority, we will see that the control’s resolution decreases as we move closer to the neutral position; meaning that a greater stick movement is required to produce a given change in pulse width than would be with exponential disabled. The observed behavior resolution increases exponentially (pun intended) as you move further away from center.



Every single one of a radio’s channel programming features will in some way, shape, or form factor into the calculation of the channel’s output pulse width (and subsequent servo position). The order that features will be processed and the ensuing influence they have on feature interaction is ultimately up to the system designer. For this reason, you shouldn’t expect systems from different manufacturer’s (or sometimes even the same manufacturer) to exhibit the exact same interactions. So knowing the theory behind each function and the possible interaction it can have on other function will take you one step closer to being able to use them effectively; and without unknowingly introducing any unintended (and undesirable) behavior.


How to: Hover, Perform a Stationary Flip, Fly the Funnel