





DETAILED DESCRIPTION
To add some more channels to my Robbe FUTABA F14 8-channel RC system, I want to build an encoder that will add 16 or more channels to my RC system.
The switches will be linked to the ARDUINO. The ARDUINO will receive the clock pulse from the transmitter and create a encoded signal that will be decoded on the receiving end. We will try to encode not only 2 and 3-position switches but also proportional channels. The 3 additional channels (6,7&8) from the transmitter can be used to encode the data we are trying to transmit. By using the 3 channels, we will be able to encode 3 2position switches, 3 3position switches and 2 proportional channels. This can be replicated 3 times, thus arriving at 24 channels. But this is only necessary if the model needs this. First lets start with 8 channels.
The communication and synchronisation of the encoder and decoder is the greatest challenge. We need to create a unique set of data so that encoder and decoder are 100% sure that they are synchronised. We can start up the system and first run a sync-cycle. If both the encoder and decoder start up in this mode and the encoder sends a common pattern (but pseudo-random), the decoder can recognise this and determine when the first channel will be send. An 8-bit "dataset" can be used (the PWM-signal that is transmitted has a variable duty cycle between 1ms and 2ms. 1,5ms being the central position of the servo's or throttle for ESC. If we use this as "digital information" and use 1ms as 0; 1,5ms as 1 and 2ms as a sync bit, we can easely encode alle the positions of our switches and pot-meters. The proportional channels will pass an ADC and thus some resolution will be lost (for example 5-bit ADC means the 1ms is devided in 32 steps. If the servo can turn 60°, every step is equal to 1,88°. For 6-bit ADC, this is 0,95°, 7-bit = 0,5° and so on), but if we increase sufficiantly the duration of the "dataset", this loss in resolution will be unnoticable. If needed, this can be adjustable for every proportional channel on the Arduino HMI so that the losses can be minimised. But the longer the dataset is made, the slower the transmission becomes. This meaning that a chance of position of a switche at the encoder side, is only noticed much later than when a short dataset is used.
Other exploidable idea could be that only channels that change their status, will be send. So that changes are transmitted more rapidly. If 16 channels are to be transmitted with a clock speed of 20ms (the clock pulse from Multi-out and the PWM-pulse in the receiver), the delay at which a channel changes might be noticable: in total a chance will only be executed after 2,5sec. This is too long. But if only changes are transmitted, a delay of 160ms is not noticed by the RC-hobbyist. Thus increasing the speed of communication. But this is the best-case scenario, when only 1 channel is chanced at any time. In the worst case, if you have very quick fingers and a lot of luck, you could change possibly two or three switches at 1 time, thus creating a dataset with a total duration of 3x 160ms, this is still less than half a second. This is very quick and is exactly what we need.
The ARDUINO will read in the clock from the multi-out port and needs a set of 24 digital and analog input ports. For the 2-position switches, 9 digital port is sufficiant. The other channels need an analog port (16 in total). The output of the encoded signal wil be send to the multi-in port (three signals can be generated on channel 6, 7 and 8). For every switch board, containing the 6 switches and 2 pot-meters, we will use 1 multi-in channel. In total we could create up to 24 PWM channels.
The Arduino MEGA 2560 has:
Microcontroller ATmega2560
Operating Voltage 5V
Input Voltage (recommended) 7-12V
Input Voltage (limit) 6-20V
Digital I/O Pins 54 (of which 15 provide PWM output)
Analog Input Pins 16
DC Current per I/O Pin 20 mA
DC Current for 3.3V Pin 50 mA
Flash Memory 256 KB of which 8 KB used by bootloader
SRAM 8 KB
EEPROM 4 KB
Clock Speed 16 MHz
LED_BUILTIN 13
Length 101.52 mm
Width 53.3 mm
Weight 37 g
If we install a display and some control buttons, we can adjust for every channel how we want them to react. This is for the encoder side. Some other options can be created for the decoder. Here is a short list of options I could think of for the moment:
- For every proportional channel: determine the ADC resolution separately.
- All channels: Invert the channel.
- Determine the rate of change (delay) etc.
- Determine for every 2-position switch channel a timer (ON-timer, delay, or other)
- Determine for every 2-position switch channel blink (ON-time, OFF-time, frequency etc)
- If we get a lot of errors on the decoder side: start a new sync-cycle. During this cycle, all channels will go to their default position (programmed in the decoder)
The functions of the ARDUINO HMI will be:
- a display with at least two rows of text. If posible, I want to use a small RGB LED-display, depending on the place inside the transmitter and the availability
- some push-buttons and maybe a turn-button with digital encoder to navigate the HMI-menus
- menus for
- reading out the actual position of all the connected channels
- for every channel: the selected options
- settings of the ARDUINO: display brightness, light, voltage of transmitter battery, dataset lenght etc
- saving a certain configuration for a particular model?
Authors
- /
- Active Participants

Components & Releases

Fabricate
Delete release
Are you sure you want to delete this Release?
This action cannot be undone.
Unable to download from CircuitMaker
You cannot download files inside CircuitMaker.
Please, open this page in browser and download file from there.
To copy hyperlink, press Ctrl+C with selected text below:
Comments ()