Should Have Used a 555

A simple analog radio simulator/servo tester built with 555 chips

Similar projects worth following
Through the years, I have done a number of projects that involve radio control systems or servos. One of the more useful tools that I have built is a small board that will generate two channels of drive signals for servos. The original was built in 1998, when I was working on multichannel speed control systems and needed a stable signal source that did not take up half my work bench. A recent project needed a slightly different configuration, so I built a PCB version up. Shunt resistors in the servo power path allow measuring the current drawn by either servo.

Old Style or PWM interfaced hobby servos use pulses that vary from about 1.0mS to about 2.0mS wide with a period of about 20mS out to about 50mS. Pre 2.4GHz radios sent the signals for each channel sequentially, followed by a longer "frame" synchronization period. The exact values vary slightly depending on the radio manufacturer and the number of channels that the radio has.

This scope shot shows 3 "frames"  of data for 2 channels. The channel signals may or may not be consecutive, depending on which channels are viewed. The order that each channel is sent in the frame is dependent on the manufacturer of the radio. These two channel signals would be from non-adjacent channels with the control inputs approximately centered (1.5mS).

Here is a closer view of one frame of data for 2 channels.

The separation in time between the two non-consecutive channels is apparent here.  Here is a shot that corresponds to consecutive channels

When running servos, the channel sequence and spacing is completely irrelevant, as each servo has no knowledge of other channel timing. When you are developing an interface to a microcontroller or other digital system, the spacing becomes important. Since the signals are sequential, is is possible to use a single timer to monitor both signals, but it requires some thinking to get it to work with different radio configurations.


Following along on the schematic diagram will help this section make sense.

The frame repetition rate is set by U1. It generates a short negative going pulse every 20mS as a free running oscillator. All of the rest of the 555s are set up in one-shot mode that are triggered off the falling edge of the output of the previous stage. Since the 555 requires the trigger signal to go high again before it times out, the trigger signal is coupled through a capacitor and pulled up by a resistor (channel 1 uses C8 and R7 for this).

Channel 1 (U2) is triggered from the output of U1 and it's output pulse length can be adjusted by turning the knob on R5. R13 is marked DNP (Do Not Place) in the schematic, but putting it in makes the adjustment range of R5 match the desired 1.0 to 2.0mS better. The output of U2 goes up to the servo connectors, to pin 1 of J5 and the trigger input of U4.

U4 generates the interchannel delay for simulating non-sequential channel operation. It provides a fixed delay (2.2mS) after the end of the channel 1 output pulse. It's output goes to pin 3 of J5. The exact delay value is not critical, it's purpose is just to make the rising edge of channel 2 not be adjacent to the falling edge of channel 1.

Jumper J5 is used to select immediate or delayed trigger for channel 2 (U4). Jumpering from pin 1 to 2 makes channel 2 trigger on the falling edge of channel 1 which would model consecutive channel assignment. Jumpering from pin 2 to 3 on J5 causes channel 2 to be triggered after the interchannel delay ends.

Pulse output length for channel 2 (U4) is adjusted with R6. The output of U4 goes to the servo connectors.

Power to the servos is supplied through 0.1 Ohm resistors to allow measuring the current into each servo. One side of a meter or scope input should be connected to TP_REF, and the other side to TP1 or TP2 for channel 1 or 2. The current sensing is done on the + power side of the servo power.

This PCB has connectors for either the old 0.100" cables or the newer JST SHR type connector. One thing to note is that this board is wired for JR / Spectrum servos on the 0.100" connectors, Futaba servos swapped the + and the signal pins (or at least they were in 1998).

Power can be connected to the board through P1, or possibly through a speed control (battery eliminator) on one of the servo channels. Old systems ran on 4 NiCad or NiMH cells, so they ran about 4.8 or 5V. Some newer systems run on a single Li cell for around 3.3V. If you are in doubt about what your servos require, check the data sheet.

As the power...

Read more »


Schematic for the board with changes to R9, R11 and C9, C15 values to operate down to 3.3V

Adobe Portable Document Format - 198.33 kB - 12/23/2019 at 13:54


Gerber files for the board

Zip Archive - 15.11 kB - 12/13/2019 at 19:35


Bill of Materials-ANALOG_SERVO_TESTER.csv

Bill of Materials for the board.

Comma-Separated Values - 1.75 kB - 12/13/2019 at 19:35


  • A little more detail on PWM type RC data

    Bharbour12/20/2021 at 16:48 0 comments

    Here is a little bit of historical information to show how the rest of the radio control system fits with the servo signals. Modern 2.4GHz radios transmit the servo control information as numerical data, as opposed to the older systems that used Pulse Width Modulation to convey the servo position commands. This is an explanation of the operation of the older PWM system operation.

    Scope shots in the body of the article show two channels out of the data stream sent between the transmitter and the receiver.  Here is a little bit more detail on the data between the transmitter and the receiver. It was captured from the trainer port on a 6 channel JR transmitter.

    All of the information to be transmitted is available from the trainer port on an RC transmitter. The trainer port is used to allow a dual control setup for teaching people to fly RC. In use, the instructor holds the transmitter that is transmitting the data to the airplane. A cable connects the student transmitter to the instructor transmitter via the trainer ports. RF output on the student transmitter is turned off. A button on the instructor transmitter selects whether the control information from the instructor transmitter or the student transmitter get sent to the airplane. In any event, the trainer port is a convenient place to see the data out of an RC transmitter.

    Each "frame" of data contains all of the control information for one instant in time. Multiple frames of data from a 6 channel RC transmitter can be seen in the scope shot below.

    Looking at the group of pulses in the center, all of the control inputs are centered except the throttle and the Aux1. Pulse width is measured from falling edge to falling edge. The two longer "high" periods between frames (about 12mS each) are the frame synchronization periods, used to keep the receiver's frame decoding synchronized with the transmitter's frame encoding.

    An expanded view of one data frame can be seen below. In this scope shot, the first pulse (throttle position) is set to the minimum value.

    The next 3 channels are in their center positions. The width on the throttle pulse is about 1mS, while the next three pulses (aileron, elevator and rudder) are about 1.5mS. The fifth pulse (Aux1) is about 1.8mS, and the sixth pulse (Aux2) is about 1.5mS.

    The next scope shot shows the results of setting the throttle stick to the maximum value.

    Width on the throttle (first) pulse is now about 2mS.

    Early transmitters were analog with discrete components in the encoder section. Analog transmitters allowed very little configuration of the relation ship between the physical controls and the output pulse lengths. With the arrival of computer controlled transmitters, the pulse width ranges can be changed to adjust the servo travel and the relationship between the physical control and the pulse width can be reversed to reverse the servo operation. Further flexibility like mixing channels and other things are possible.

    Channel sequence tended to be consistent across a manufacturers product so that the trainer ports would work. There is no consistency in the sequence between manufacturers. The pulse width range and polarity is consistent with positive going pulses and 1mS to 2mS range.

View project log

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates