RC PWM and PPM

RC transmitters and receiver outputs are 1 of two main protocols. A specialized version of Pulse Width Modulation (PWM), or a multiplexed variant of it that reduces the seperate wire per channel down to a single wire for up to 9 channels. There are some other manufacturer specific protocols such as Spectrum Serial as well, but I wont cover that here. So let's begin with the first one.

Pulse Width Modulation (RC Style)

In this mode each RC channel has it's own wire. If we want 9 channels we must wire 9 signal wires, plus the power and ground. The value of each channel is represented as a 1 millisecond (ms) to 2ms "ON" signal and this signal repeats (or updates) every 20 milliseconds. It goes high (5v) for the 1-2ms, then it falls to Low (0v). The length of time it is high is the value for that channel. We see this in the GUI directly as 1000-2000, so we are seeing the raw ON time in microseconds.

Pulse Position Modulation (PPM)

In the RC world we call it PPM, you may also know it as Time Division Multiplexing (TDM). In PPM, the same signaling is used but each channel is sent successively, then a delay, then it loops back to channel 1. So typically channel 1 is sent, then channel 2, ch3, ch4, AUX1, AUX2,AUX3,AUX4 then a long pause, then it loops back around to ch1.

In normal RC PWM there are 50 updates sent per second (50Hz). Do the math, that means each update is spaced 20 milliseconds apart (1000ms/50Hz). So if each channel takes up to 2ms max, then we can do 10 channels within that 20 milliseconds before which we need to loop back to channel1. So we don’t even have a downside to multiplexing all the channels down to 1 wire and yet we have less wiring, and in our case 2 extra AUX channels! If you can do PPM, it's better!

Final thing, above I said we can send 10 channels, but it’s really 9. We need to put a space (blank delay) in there somewhere so the receiving side knows where channel 1 begins. So the receiving side waits for the space, then starts sampling channel1, ch2, ch3, etc.

 So why don’t we always use PPM? Only because many radios don’t support PPM out of the box. It’s just been a legacy thing I think. If you don’t have a PPM TX/RX you can use a little device that converts between regular RC PWM and PPM. The Quadrino/MultiWii supports PPM input. Just define the appropriate option SERIAL_SUM_PPM in config.h of the firmware and wire the PPM signal into the Throttle channel. The rest of the RX inputs like roll, pitch, and yaw are now free for other things.