First, I don't see any manufacturer or online store telling whether an ESC is PPM controlled or not. Second, I have also been Googling and asking comments in all about ESCs youtube videos for long, but I couldn't find anything useful.

Why do I need PPM controlled ESCs?

I'm doing a project based on AndroCopter and its clearly mentioned that it specifically requires the use of PPM controlled ESCs.

Can I use any ESCs available in the market for this project?

It's also mentioned in the Github repo that PPM controlled ESCs are the most common ones. However from some who explained ESCs in Youtube video has commented back for my doubt telling that most common ESCs are PWM controlled which is contradicting the previous statement.

PS: I need to use Arduino Mega to control the four ESCs. And Arduino Mega is programmed to send out PPM signals which is exactly why I need PPM controlled ESCs. Correct me if I made any mistakes.

  • $\begingroup$ Is the ESC in this PPM controllable? How do I if some ESC is PPM controlled or not? $\endgroup$ – Saravanabalagi Ramachandran Dec 17 '15 at 8:39
  • $\begingroup$ The code you link to is using Arduino's servo library, which is for PWM. As I understand it, PPM is multiple PWM pulses arranged in a frame and used for a multi-channel transmitter to talk to the receiver, which then converts the PPM into separate PWM channels for servers and motor control. PPM doesn't make sense for controlling a single function motor. see electricrcaircraftguy.com/2014/02/… $\endgroup$ – Pete Kirkham Dec 17 '15 at 22:11
  • $\begingroup$ Single function motors? Lolz all motors are designed only to spin when an electric current is supplies, do they do anything else? :P $\endgroup$ – Saravanabalagi Ramachandran Dec 19 '15 at 10:10
  • $\begingroup$ Once you get into industrial motor controllers - the equivalent of ESCs for automation systems - you can have other functions that just controlling the speed, such as setting options to configure maximum speed, maximum duty, maximum acceleration and so on, so there is more than a single parameter going to the motor controller, and having a frame to set them might make sense ( though it's usually done digitally by the time it's a multi-function controller ) $\endgroup$ – Pete Kirkham Dec 19 '15 at 11:29
  • $\begingroup$ :) yep, makes sense. So, receiver gets PPM, and the flight controller decodes it and sends PWM to individual ESCs which doesn't require them (the ESCs) to be PPM controlled/compatible. I wonder why in the repo they specifically require the use of PPM controlled ESCs. (Its in fact mentioned that other types are not supported, which I presume includes PWM ones). $\endgroup$ – Saravanabalagi Ramachandran Dec 19 '15 at 11:48

I'm not an expert re: PPM communications but, from what I can tell, PPM signals contain pulses which are interpreted by the receiving microprocessor (or speed controller) as position commands. If the pulse is the smallest acceptable width, then the position of the servo will be commanded to go completely to one side; if the pulse is the largest acceptable width, then the position of the servo will be commanded to go completely to the other side. The PPM pulse is essentially a position setpoint, and the control of the power to achieve this position is up to the device that receives this signal.

On the other hand, a PWM signal will often directly regulate the amount of power that is transmitted to the motor. Consider the per cent that the PWM is ON - if it is ON 100% of the time, the motor will receive the highest possible amount of power. If the PWM signal is on at a 50% duty cycle, the motor will receive 50% of the available power.

Essentially a PWM signal is part of a lower-level control loop, as compared to the PPM signal. With the PPM signal, the speed controller takes care of the lower loops for you.

| improve this answer | |
  • $\begingroup$ Does this mean in anyway that all ESCs that accept and process PWM will also process PPM signals? $\endgroup$ – Saravanabalagi Ramachandran Dec 18 '15 at 17:53
  • $\begingroup$ Not in general. However, in the drone world, many do. A simple google search will show you the different types of controllers. Each controller will specify the signals it can process - you just need to look for the information. $\endgroup$ – SteveO Dec 18 '15 at 19:26
  • $\begingroup$ Unfortunately most (atleast the ones in India as far as I've seen) online stores don't provide proper specs sheet as pdf, rather they just give a brief description like in here and I am helpless finding out weather that is PPM controlled or not. I assume the one in the link is PPM controlled, isn't it? $\endgroup$ – Saravanabalagi Ramachandran Dec 19 '15 at 10:14
  • $\begingroup$ Atleast this is a specific combo for building quadcopters, hope the 30A ESCs in them are PPM controlled and accept the signals given out by me Arduino Mega...! $\endgroup$ – Saravanabalagi Ramachandran Dec 19 '15 at 11:52
  • $\begingroup$ You are correct about it not being easy to find the communications specifications of your device. I was unsuccessful. Have you tried the Stack Exchange Arduino group, or perhaps an online RC message board? $\endgroup$ – SteveO Dec 19 '15 at 12:19

I believe there is confusion about these terms. Strictly speaking, the ESC is PWM controlled. Although the signal usually gets there from a transmitter and receiver signal that is PPM encoded.

It seems to me, that many sources will have you believe that PPM is just a multiplexed PWM like this:

enter image description here

enter image description here

But in reality it is actually more like this:

enter image description here

Note in the final diagram that the actual PPM signal does not vary significantly in pulse width, only it's position is significant. Hence the term Pulse Position Modulation. From those positions, a controller will reconstruct a PWM signal that resembles what appears in the "Partial PPM Pulse" diagram (and is unfortunately labelled as PPM). That "PPM" signal (actually a multiplexed PWM signal) now has widths that are significant.

Rather unfortunately, neither that true PPM signal nor the so called PPM (actually multiplexed PWM) signal will make your ESC work correctly. It also has to be demultiplexed so that the information for only a single channel is fed to the ESC (or servo). This is in fact a PWM signal again.

It might be because the PWM has to have specific dimensions to work on the ESC that they don't want to use the term PWM, in other words its not just any generic PWM signal. Specifically the pulse width usually needs to be 1500µs long (+/- ~500µs) and occurs 20000µs apart (hence the 50Hz frequency), but there are alternatives to that scheme. Compare this to a PWM signal that can be used to control the brightness of an LED, for example, which can have any frequency and the widths can vary between 0% and 100% of the duty cycle. These are vastly different requirements from the PWM signal required to operate the ESC.

As far as I am aware, most ESCs used in RCs will have this type of control schema.

So in conclusion:

PPM when used to refer to ESCs is meant to be a specific kind of PWM. Any ESC that says it is PPM or PWM compatible is referring to the same thing. An alternative would be a serial motor controller, but I have never heard of one that was referred to as an ESC. Those are simply "motor controllers". For example, these ones. Also not that some of the controllers on that page are also PWM controlled, but it is not the same kind of PWM -- more akin to the LED brightness control I mentioned above.

| improve this answer | |

In Radio Control lingo, we refer to PWM (Pulse Width Modulation) to describe a very specific control signal, instead of a power signal. Check the wiki article for more info. This doesn't carry the power required to drive the servo, but encodes angle information for the servo to obey.

In order to enclose PWM setpoint information (for more than one servo) in the same wire, we use a PPM signal (Pulse Position Modulation). Essentially, this is multiple PWMs, each one shifted in time a bit, and interleaved. More info here.

In your case, sadly the repo author has made a mistake, and he meant to say PMW ESC, instead of CAN-bus, etc.

Luckily, the arduino boards can drive RC PWM devices using the servo library.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.