© 2009 Mitch Richling
Common radio control (R/C from here on out) toys receive radio signals from a transmitter (the "remote control"), and respond accordingly. These radio signals are received by a device on-board the vehicle called, appropriately enough, a "receiver" - usually a tiny box bursting with wires connecting virtually everything electronic on the craft. This page is about the signals between the receiver and the other on-board components it controls - not about the radio signals between the transmitter and receiver. Receivers can control a wide variety of devices including servos, electronic speed controllers, lights, and marshmallow cannons by sending "R/C control signals" to them. The most common device a receiver controls is the servo, and for this reason the signals receivers produce are frequently referred to as "R/C servo signals" - I will use the two terms interchangeably. R/C components have found there way into many electronics devices today, and are especially popular in hobby robotics. In robotics applications these components are most frequently not controlled by a radio receiver, but directly by one of the robot's micro controllers. In order to control R/C components, like servos, the robot hobbyist must replicate the signals the R/C components expect to receive. This page is intended remove the mystery surrounding these control signals, and document precisely what they really look like - for both the budding robot builder and the R/C geek alike.
Generally speaking the control signal is a square wave pulse train. Common frequencies for control signals are 44Hz, 50Hz, and 400Hz. The positive pulse width is what determines the servo position. A positive pulse width of around 0.5ms will cause the servo horn to deflect as much as it can to the left (generally around 45 to 90 degrees depending upon the servo in question). A positive pulse width of around 2.5ms to 3.0ms will cause the servo to deflect to the right as far as it can. A pulse width of around 1.5ms will cause the servo to hold the neutral position at 0 degrees. The output high voltage is generally something between 2.5 volts and 10 volts (with 3V typical). The output low voltage ranges from -40mV to 0V.
Enough with the theory, lets look at some real examples of R/C control signals under ideal conditions. Unfortunately the examples here are not enough to provide a good idea of the variability that is possible across various receivers. In particular, don't look at these images and make the assumption that the neutral point is always 1520 microseconds or that the pulse frequency is aways 44.44Hz. Such assumptions will almost always be violated eventually. Please see the sections below on generating control signals and on consuming control signals for more on this topic.
In order to see how bad it can get, consider the following image. This is from the same Futaba receiver pictured above. Note the large fuzzy peaks and valleys?
As motivation, we consider the most common robotics application where an R/C servo is controlled, directly or indirectly, by the robot's brain. In this paradigm the signal is generated by the robot circuitry, and an R/C receiver may not even be part of the design. In this application it is important to understand what characteristics of an R/C control signal are the most important for typical R/C devices - i.e. what aspects we must faithfully duplicate in order to make things like servos operate as expected.
Some R/C devices are particular with regard to what they need, and some experimentation is necessary to get them to work well. For example, with servos the pulse width for a given angular deflection is best determined experimentally with each servo - don't trust the specification sheets, and don't assume that servos of the same model will be identical. That said, some general rules of thumb are possible.
Most R/C devices are relatively immune to the frequency of the control signal, but I generally fix it at around 45Hz for the few devices that seem to care -- some helicopter gyros for example. Some R/C devices will self destruct if the maximum pulse voltage is higher than the supply voltage provided to the device -- for example, some off-brand, digital servos can be powered at 3.5V, but will be destroyed if the control pulse is at 5V. I generally power R/C devices at 5-18V, and provide R/C control signals at a fixed 3V peak. The low voltage of the control signal doesn't need to be precisely zero, but I normally keep it under 0.1V. In summary:
As motivation, we consider the robotics application where an R/C receiver is used as an on-board "sensor" for the robot. In this paradigm the on-board receiver is not connected directly to anything that it controls, but is connected to the robot's brain. The robot then senses the state of the receiver, and decides what it wants to do about it. It is rather like the difference between driving a car and being a backseat driver. In this application it is important to understand what characteristics of an R/C control signal we can count on.
R/C control signals coming from R/C receivers generally diverge from the ideal in a number of ways. Some of the differences are by design, while others generally arise from using a receiver outside of its design parameters. We shall begin with differences by design.
Now we consider some of the bad things that can happen when we push R/C receivers too far outside of their design envelope. Unlike the previous difficulties, these problems are more difficult to deal with. In particular, most of these difficulties can not be remedied by simple micro-controller software patches, and require real hardware changes. Sometimes this can be as simple as moving an antenna or shielding some electronics.
Simple servo testers can be built out of one 555 timer IC and a few passive components for less than one dollar. While this kind of tester can provide good control over pulse width, the pulse frequency changes as the width is adjusted. The circuit presented here makes use of a 556 IC (essentially two 555's) to provide independent control over both frequency and pulse width of the test signal. A good DMM or oscilloscope can be used to fine tune an monitor the pulse width and frequency. Note that the output pulses have a maximum voltage equal to the input voltage of the circuit. This can be a problem if your servos expect a 3V control signal. You might also be interested in a more sophisticated circuit and servo tester project.