User manual: Basic assumptions


To provide configuration flexibility I introduced a "variables". This is nothing more but any reading of the stick, switch, knob, the value sent to the servo, the intermediate variable used by mixer, reading a clock, etc. .. In short, virtually everything that can be read or set of point of view of the transmitter is a variable. To use them efficiently, all variables are presented below:

NameAlternative NameMeaningValues
None X No value set, sometimes is used for mark empty setting. 0
InpA-InpG AIL,TRH, ELE,RUD, HPIT,HTHR, AUX2 The read position sticks and knobs From -100 to 100, a smooth transition, where 0 is the central
Sw1-Sw6 TCUT,SAIL, SELE,SRUD, GEAR,TRN Switch positions on the transmitter. -100, 100 – only 2 sole values
Fmod X 3-position switch position -100 for N
0 for 1
100 for 2
Fmod1-Fmod3 X Certain positions of 3-position switch. For example, Fmod1 is for the position N. 100 if the switch is in a certain position, otherwise the -100
Tra1-Tra8 X Readings of the signal from trainer input (PPM). Available only if master/slave mode is running. Smoothly from -100 to 100 depending on the input signal
Var1-Var8 Can be set Variables set per model which can changed easily, accessible via BASIC-> Model variables from -100 to 100
Mix1-MixA MAIL, MELE, MTHR, MRUD Values ​​used by the mixer system. By default, 1-st level Mixers set those variables, that you can use them as inputs to the 2-nd level mixers from -100 to 100
Out1-OutH X Outputs, the values ​​sent to the servos from -100 to 100
Tim1-Tim4 X Quick watches countdown to 0. The change occurs in 1/10 second. From 0 to 100
TriA-TriD X Trimmers attached to sticks. From -50 to 50
SwT1-SwT6 X Changes in the position of the switches. Note that a nonzero value is maintained only by one cycle of calculation! 0 – no change
-100 – switched to off
100 - switched to on
FMT1-FMT3 X change the switch position Fmod1-3 100 – set certain position
-100 others
Clk1-Clk4 X clocks /Timers/ (counting every 1 second) time that you can compare it to 100 sec. If the clock counts up and there is alarm set, it is also available values ​​from -100 to -1 as defined number of seconds before the alarm. 0-100 timer value
-100 to -1 number of seconds to alarm
OMx1-OMxA X Mixer variable values ​​from the previous calculation cycle from -100 to 100
Oou1-OOuH X The values ​​sent to the servos in the previous calculation cycle from -100 to 100
-100 x Constant value -100
0 x Constant value 0
100 x Constant value 100

Do not worry about the large number of variables, some of these variables is available only in "expert" and "author" programming modes, others can be selected only in certain places. Example, THR or Sw1 can be only read, never can be written.

Each variable can take values ​​from the interval -100 to 100 This means that if you read the value of stick, then you will get -100 for extreme left or bottom position, 0 for the center, and 100 to right or top position. Readings switches mean: -100 is off (switched to the front), 100 is turned on (switched to your side). Fmod has additional value of 0 - for the central position. Clocks and timers take values ​​from 0 to 100 (counted properly in seconds and tenths of seconds).

On the picture you can see internal names for all sticks, knobs and switches. For default configuration, each of them, however, has assigned a name according to the markings on the transmitter and the setting sticks in mode 2,

  • A = AIL
  • B = THR
  • C = ELE
  • D = RUD
  • E = HPIT (HOV PIT)
  • F = HTHR (HOV THR)
  • G = AUX2 (AUX2 / PIT TRIM)
  • S1 = TCUT (THR CUT)
  • S2 = SAIL (AIL D/R)
  • S3 = SELE (ELE D/R)
  • S4 = SRUD (RUD D/R)
  • S5 = GEAR (GEAR)
  • S6 = TRN (TRN)
All names are contractual and can be changed in the [MODEL->Names], or/and swapped in [MODEL->Rearrange inputs]

Conditions and switches (internal state)

In many places, the system will provide the term "condition" that can be set. This condition determines when the mixer / rule / item in the display or timer should be active. The element whose condition is not is true - does not work, or behave as if there no such element! This mechanism allows, for example easy switching between phases of flight, switching dual rate settings, or even whole configuration. Everything is possible at the touch of a button, and even without it!

The "condition" is related to the concept of "virtual switch". In RadioClone there is seven of them, one named Virt.Sw 1 to Virt.Sw 7, or in short numbers from 1 to 7. If the information on the state of these switches is shown briefly, then display the numbers only 1234567 for enabled or 1234567 for disabled switches. To make you lide easied, you can set you own names for this switches, for example start configuration has altered names for three virtual switches: 5,6 i 7 to „Fmode 1”, „Fmode 2” and „Fmode 3”. Sometimes, for brevity, I will use the name "internal state" or in short "state" to describe the position of all switches as full at the moment.

Wirtualne przełączniki spełniają w RadioClone szczególną funkcję. Mogą w sposób bezpośredni wybierać które miksery, reguły i ustawienia są obecnie aktywne (warunek). Można więc określić, że dany mikser (np obsługujący klapy) będzie aktywny tylko i wyłącznie wtedy gdy pierwszy Virtual switches in RadioClone has specific function. They can directly choose which mixers, rules and settings are currently active (condition). So you can specify that the mixer (eg for flaps) will be active only when the first virtual switch is on. To make writing down conditions easier I adopted a convention. Switch number, eg "1" means that the switch should be ON, the number written in inverse: 1 means that the switch should be OFF, while a space or _ means that the switch position is irrelevant for this condition. Here some examples:

  • 1______ - A condition which "cause work" if the first switch is turned on (YES)
  • 1______ - A condition that will work if the first of the switches is off (NO). This is reverse of the previous condition
  • 12__5__ this condition "works" if simultaneously switches 1,2 and 5 will be on (YES)
  • 12__5__ this conditions works if simultaneously switches 1,2 and 5 will be off (NO).
    WARNING! This condition is not opposite of the previous condition. For example, if 1-st switch is YES and 2-nd NO to the second condition does not work, but previous condition also does not work.
  • 12_____ condition will work if a virtual switch No. 1 is YES and simultaneously the switch 2 is NO (so you can freely mix any setting)
  • Alw. ON This condition is a special setting, which is always true, regardless of the virtual switches state.
  • Disable. This name is displayed when condition is always FALSE (so it will not work).

Because the switches are "virtual" and you can not "touch" them, so you can't change their values directly. To this purpose, state machine was introduced. Anticipating the question, for what purpose to use virtual switches, and complicating everything, since there are real switches on the transmitter? I answer, You can also use real switches (more on this below). Further answers may be some examples:

  • You can enable virtual switch when THR is over 50 and switch it off when THR is below -10
  • You can set virtual switch ON via TRN switch(mono stable), and set virtual switch again OFF after 3 seconds.
  • you can enable virtual switch with one key, and disable it with different key
Number of combinations is much higher, but here are given only few simplest.

You also must realize, that most configurations can be achieved at least several different ways. I recommend not to overuse the virtual switches if it is not necessary. There are only 7 of them, but each of them can change the configuration and behavior of whole transmitter! They are the equivalent to flight modes used by other equipment. Their typical use is for example a change of characteristics (curves). For example, just use three virtual switches (5, 6, 7) allows you to configure three flight modes differentiated by the following conditions:

  • ____5__ 1-st flight mode
  • _____6_ 2-nd flight mode
  • ______7 3-th flight mode
Usually, however, using single virtual switch is enough. For example, to control the behavior of Flaps: on and off Elevon and Flaps. You can then use, switch number 1, and conditions are as follows: 1______ for enabled and 1______ for disabled.

Setting the condition for the mixer, the state machine rules, the screen module activation is always done that same way. After selecting a "condition" field press the MENU key and you will get the following screen:

On the left we have another virtual switches (total 7) here already with their own names. On the right side you can see the expected values. Every value can take three different setting:

  • Yes – condition will work if the switch is turned on - selected by + key
  • No – condition will work if the switch is turned off - selected by - key
  • ------- - switch position is irrelevant - selected by MENU key
Choosing option „Always ON” and pressing MENU key, causes condition always be true (always on)

Additionally, when you are in condition setting mode, you can switch to comparing physical switches mode. You can achieve this by pressing - key (right) when option "Save" or "Always ON" is selected. In that mode you can configure condition as before, but instead of virtual switches you can use real ones.

You can see difference when condition is displayed:

  • If only one switch was selected, then its name will be displayed
  • if only on switch was selected, but with No setting, then its name will be prefixed with "!"
  • If more switches was defined in condition, then it will be displayed like states, but with "s" prefix like: „S1_3___”


In this manual, as a mixer I understand a configurable function which transforms value of input (variable) and write it into output variable. If several mixers points to the same output variable, then their outputs are summed.

To increase flexibility, there exist 10 additional variables - Mixer variables /Mix1-MixA/ (they can be treated as such virtual servo or potentiometers). Each of the mixers can retrieve or set values ​​for these variables. To simplify programing, mixers are grouped into two levels. In normal operation mode, the mixer variables (Mix1-MixA) can be set only by the 1'st level mixers, when only 2nd level mixers can read those variables. Since the 1-st level mixers are calculated first, and after them 2nd level mixers are calculated, you can be sure that your variables are properly set before you can use them.

		Stick THR (InpB)
	1st lv mixers:	Copy 50% THR -> MTHR
		MTHR (Mix3)
	2nd lv mixers:  Copy 100% MTHR -> Out3
		Out3 (channel 3, engine control)

This approach allows you to collect all the settings that are associated with the construction of the model in one place - 2nd level mixers. You can thing about then as a description of the layout and servo connections in the model. In the classical approach (other transmitters) this information is hidden and described like: "ACRO" "VTAIL GLIDER +" or "HELI". However usually, you can't even see what the manufacturer had in mind, and here you can see everything and even change it in your own way. For example: you can set that: the model has two vertical stabilizers, ailerons controlled by 4 servos, and two engines on the wings of differentiating your speed when model turns.

1st level mixers are equivalent of "classical" approach to mixer setting. You can use them to set dual-rate, expo, or curves. In that option you can easily which mixer has which meaning, because of name redefinition.(you can redefine the names of both inputs and outputs.)

Each mixer has a ability to have a condition which determines when it will work. This condition is nothing other than the previously described "internal state", ie setting the virtual or real switches, which is required for mixer activation. If the condition is not met, this mixer is ignored (as if it was not defined).

The software allows you do define following mixers:

Mixer curve „Cur”:

You can thing about this mixes as a coordinate system, in which points "draws" any curve. X axis is input, Y axis is output. On picture you can see:
red points - curve definition
blue lines - a sample reading (input and output)

Mixer copy/reverse „Cpy”

This mixer copies input to output. Additionally, you can define the scale ("Co%") with a value between -100% to 100%. Depending on the specified value name is displayed as:

	-100	Rev
	from -99 to 99	as chosen value ex: „-75”
	100	Cpy
Next possibility is to define "Expo". For values from 0 to 100 it works like "well know" expo. If you set bellow 0 values - it increase sensitivity near stick center.
Mixer configuration response can be viewed in real time on drawing on left side of the screen.

Mixer delay „Del”

Copy its input to output, but changes can't excess declared change speed.
The time delay can be configured independently, depending on the direction (up / down). Entered values mean time (in tenths of a second) you need to change the output value from 0 to 100
That is:

	0 – no delay
	1 – means 0.1 sec, 
	10 – 1 sec.

Mixer - proportional „Pro”

This is an extension of copy mixer idea. Instead of fixed values for scaling and expo, we can assign any variable.
„Control variable” – it is „Input%” from copy mixer
„exp var” – it's expo from copy mixer.

This type of mixer is convenient in conjunction with the "model variables". You can configure the mixer, in such way, that EXPO factor will be identical to the elevator and rudder - but it will be easy to change it. You can achieve that by selected single model variable in proportional mixer. Then this model variable could be simply adjusted the menu BASIC-> Model variables.

To make using this kind of mixer easier, there are special variables: -100 , 0 i 100 which directly returns desired values. For example, you can use this mixer only for scaling (D/R) and omit EXPO by selecting "0" variable as "exp var".

This mixer is also useful to set the D/R, eg during the flight, then it can be set to "hook", for example, a potentiometer and try experiments in flight. That setting should be done on the 2nd level mixers because of the need to scale the signal from the potentiometer so it cause only minor changes (eg by using the appropriate curve). Otherwise it will be easy to lose control of the model.

Mixer proportional delay „PDe”

Analogous to the delay mixer, but the delays are not fixed values, but stored in variables.

State Machine

Complements mixers. It can be used to switch virtual switches (states) or/and to direct setting some variables.

This machine contains rules that can be used by user. Each rule has a definition of "Input state" which is nothing other, than previously described "internal state", ie setting virtual or real switches. Only if this condition is true, additional condition defined by user is checked. It is now possible to use one of four types of conditions:


  • (none) rule will be executed
  • = selected variable need to be equal to the set value
  • < selected variable must be lower than the set value
  • > selected variable must be greater that the set value
As you can see, for most of the conditions you need to select variable and the value, which will be compared. For example, a variable can be "TRN" (ie, switch No. 6) and the value 000. If we set the condition for TRN > 000, the action rule will be executed if the switch TRN is ON. While the action where condition is < 000 will be executed, if the switch is released TRN (this button monostabliny So you can not switch it permanently).

I mentioned earlier about actions performed by the rules. Currently the system supports 11 different actions:
  • State - Changes "internal state". So it enables or disables the virtual switches. You can define which switches should be set ON or OFF. Keep in mind that switches are turned off first, and then turned on. If you set it so that, the switch is should be switched on and off at the same time, it will remain enabled (YES).
  • Set - This action set selected variable to fixed value. Of course, you can configure both: variable and the value to be entered. It should be remembered that the state machine is executed after mixers calculation. You need to remember, that here is the most appropriate place to set output values (servos)... For example, rule set OUT3 to -100 is an excellent example Throtle Cut activation. Seting "mixer variables" makes sense if we know that they are not "Overridden" by the 1-st level mixers
  • Copy - action similar to "set", with the difference that instead of giving directly a value, it reads it from selected variable. It is possible to use a model variable (Var1-VarA), or any another variable.
  • ZReset - action which resets selected clock (timer)(setting it to the initial value). Clock that is counting up, is set to 0:00:00, while the clock counting down to initial value.
  • ZGo - action starts selected clock. If the clock is already running, then this action does nothing.
  • ZStop - action stops selected clock.
  • ZCycle - action starts or stops selected clock, depending on its current condition. If clock is stopped, it start it. If clock is stopped, then it start it.
  • Beep - action – emits sound (you can set from 1 to 3 "beeps")
  • Slow - action allows you to slow down selected output (OUT or mixer). It limits output change rate to not exceed the set value (in 0.1 seconds). Note the use of this rule for mixer variables makes sense only if they are not assigned to any 1st level mixer!
  • TConn (Trim Connection) – assign trim keys to a model internal variable (Var1-VarA)
  • TReset (Trim reset) – restore the original trim action

Main Program Loop

During normal operation RadioClone performs the following operations (the main program loop):

  • Reading keys (switches, trimmers, the menu key), and performs filtering readings to avoid double "clicks" (debouncing)
  • Reads positions of sticks and knobs (position is normalized to the value -100 to 100 according calibration values​​)
  • Checks PPM trainer input, if this is enabled. PPM input is normalized to the value -100 to 100 (according calibration setting)
  • All mixer and output variables (Mix1-MixA,Out1-OutI) are set to 0. (Previous values ​​are stored for later use)
  • 1-st level mixers are calculated
  • If a mixer variable has not been modified, it will be restored to the stored value (before setting it to 0)
  • 2-nd level mixers are calculated
  • If an output variable has not been modified, it will be restored to the stored value (before setting it to 0)
  • "State machine" rules are processed
  • Clocks and timers are updated
  • Display is updated (only one module at time)
  • PPM frame prepared to send is updated (all outputs /servos/ are truncated to limit values)
Please notice, that there are two levels of mixers. If something is placed in the first level, you can be sure that the result of this operation can be used on the second level. For example, Dual Rate and Expo configured on the 1st level mixers, are calculated before they are used to control multiple aileron servos.

"State machines" rules are executed after mixer calculation, so they can "override" the output value. This is is the easiest way to do an engine cut-off (throttle cut): You should create a rule that sets -100 to OUT3 when the switch TCUT < 0 (condition "Always On")

The time required to execute main program loop (see the default home screen to see how to read it) is crucial to identify the "delay" between the movement of the stick and shake the servo (latency). We can estimate latency in the following simple way. If we read that the main loop executes 420 times per second, then we can count:
1000 ms / 420 = 2,38 ms.

So the loop execution time is 2.38 milliseconds. Now you can use the following list of RadioClone reaction rate to various events in the multiply of main loop execution time:
  • move stick or knob: 1 to 2 (in our example from 2.38 to 4.76 ms))
  • switches that are used directly by the mixers or state machine: 2 to 3 (because of the "de-bounce" procedure)
  • switches that operate on a virtual switch (state), and these modify the operation of mixers: 3 to 4 (because of the extra cycle required for propagation of settings / state machine is started after mixers/)

If the main loop is executed 300 times per second, the software latency will be from 3.33 to 6.66 ms for sticks and up to 10 ms for controls and to 13.3 ms for the mixers controlled by virtual switches.


Because of flexibility, RadioClone differently from other equipment treats trimmers. Because all channels are identical, and their assignment depends only on the user, trimmers are identical on each channel.

Trimmers can reach values ​​from -100 to 100. Their value is not added directly to the stick reading! They "Pass" whole calculation cycle through mixers, and when PPM frame is generated - trimmers shift the entire range of motion of the servo! Model behave analogical like during using menu function "BASIS → centering servo '

To configure the behavior of the trimmers, mixer are used. In each mixer you can set: if the trimmer need to be added, subtracted, or proportional converted.

  • Disable(X) - probably no need to describe
  • Add - (+) trimmer assigned to the input mixer (indirectly connection counts) will be transferred to the mixer output unchanged. This is used usually and that is the default setting.
  • Subtract (–) trimmer during prescription change its sign (it will be reversed). This configuration is useful (for example) for such setting, when servos have to move on in different directions depending on the channel AIL. One aileron is + and the other on - and thus provide them alternate deflection in response to the trimmer.
  • Proportional (P) - Works only with the copy mixer (with a Input%). Trimmer will be passed to the output mixer proportional to factor of the mixer. Its basic behavior is to trim the eCCPM helicopter. When 2nd level mixers describing the eCCPM behavior, swing the trimmer must also be proportionate to mixer factors!

WARNING! If you expect that TRH trimmer will not be moving the servo range (eg, for combustion engine), you can set it (of course). You must turn off the trimmer on the mixer signal serving THR, then add mixer which adds Tri2 (here choose the right trimmer) to MTHR and set the scaling factor of 20%. The mixer TRH → MTHR should be modified so that it did not attain the extreme values ​​(eg, flatten the curve 10% / -90 to 90 /, or set the rate at 90%)

Such a configuration would move the servo control of gas by 10% (idle), and THR CUT will be defined always in the same place.

Last edited on 03/07/2012 21:29:31
Powered by Anwiki • 0.052 sec • 2.57 MB