• Linked Applications

TurboPWM ESC's



In order to control a multirotor aircraft precisely and keep it stable, it's necessary to update the Electronic Speed Controllers (ESCs) faster than a regular RC receiver would do. While normally the ESC or servo is updated 50 times per second, the ESCs connected to the OpenPilot flight controller can be updated 8 times faster. This is done to ensure a better response and correction on the multi rotor aircraft.

The faster update rate of the speed controllers is what we call "TurboPWM".

TurboPWM support is an OpenPilot innovation that allows a cheap regular hobby ESC to perform just as well on Multi-Rotor aircraft as their expensive, specialised I2C counterparts.

Why is this important?

There has been a debate in the multi rotor community for a while regarding the necessity of I2C speed controllers on multirotor aircraft. Some people feel it is important, while others feel it is overkill. Perhaps the truth lies somewhere in the middle. On certain sized craft it can make a difference, while on others, not so much. The main reason for this debate is the high cost of the I2C speed controllers and the limits they contain. For example, the most common I2C ESC offers support for just 10 Amps of current, and in a poor design choice actually contains a fuse.

Additionally, while using a bus technology like I2C offers speed improvements over regular PWM, it has a serious drawback in that a plausible critical failure negates the redundancy features built in to octocopter airframes. While an octo based aircraft can still land safely after the failure of an ESC, when using an I2C bus the failure of a single ESC could mean all ESCs on the bus shut down causing a real safety risk. This is really dependent on whether the failure leaves the line pulled low, or floating high: if it's left pulled low, the bus will become inoperative and all ESCs will stop responding to inputs. The OpenPilot board is designed with 8 PWM outputs; if a single PWM ESC were to fail, the others would still function, and hence, OpenPilot provides for full hexa and octo redundancy.

TurboPWM support in OpenPilot means that the limits and expense of I2C ESCs are a thing of the past.


Speed Controller

Price Per ESC US$

Price Per Octo US$

Octo Redundancy

Amp per ESC

Contains fuse

HK 18-20 TurboPWM






MikroKopter I2C ESC






Because OpenPilot is a non-commercial project and is not motivated by profit, it frees us to do innovations like this that help the community; from the table above it is apparent that the use of TurboPWM compatible ESCs saves considerable cost. In fact, a full compliment of ESCs for an Octo can be bought for less than a single I2C ESC. Additionally, there is no loss in performance, and TurboPWM offers the use of the natural redundancy in the Octo platform.

Another nice feature is there are no I2C connector soldering to be performed. The ESCs just simply plug in to the OpenPilot board.

I2C Support

This does not affect the I2C ESC support in OpenPilot. We offer that as a convenience for people who already own I2C ESCs that upgrade to OpenPilot from legacy multirotor controllers. Additionally, if someone wants to use an Octo based multirotor aircraft with Pan & Tilt camera compensation, we recommend that PWM ESCs are used for motor control and connected to the 8 PWM outputs on the OpenPilot board to gain the TurboPWM redundancy features. The additional non-flight critical camera pan and tilt servos should be connected to the I2C bus with our I2C to PWM converter board.

How do I know if my ESCs are compatible?

The only way to test it is to apply different input PWM frequency signals, make them change from low to high, and vice-versa. Check the motor response (notice how fast it achieves the desired RPMs after the input data changes, using tachometers). You should also check if it responds reliably, does not lose the sync, etc.

OpenPilot spreadsheet for compatible ESCs:


Recommended  ESC settings

If you use factory standard, programmable ESCs, the following settings are recommended.  Note that "Flashed ESCs" (i.e. SimonK, BLHeli, wii-esc) are already programmed with the best settings by default, and can't be programmed, nor is it necessary to program with these settings.

Brake: Off
Battery Type: Ni-xx
Cut Off Type: Soft-Cut
Cut Off Voltage: Low
Start Mode: Normal
Timing Mode: Medium (will vary, must be set to whatever produces no misfiring)
Music/Li-Po Cells: <all off>
Governor mode: Off

  1. The brake settings should be OFF. Using the brake on a multirotor may briefly stop the motor and cause the flight controller to overcompensate, resulting in an unstable platform.
  2. The battery type is set to Ni-xx in order to prevent your ESC from shutting down the power to the motor. It's safer to drain the battery even more and land your aircraft. Note that draining your LIPO battery too much will damage it.


Calibrating  ESC's


Why do I need to calibrate ESCs?

There is a significant difference between various types of calibrations and programming.  Please do not confuse the following three things:

  • Calibrating the output levels by setting a neutral startup point for your motors in the Vehicle Setup Wizard
  • Programming ESCs
  • Calibrating ESCs. 

Programming is preset in flashed ESCs (SimonK firmware and the like) and normally cannot be changed. Certain options can be set in programmable factory standard ESCs. Programming is not calibrating when it comes to ESCs.

Because there is no well-defined standard of PPM (PWM) RC signal, all manufacturers use their own ranges for low and high throttle. When you use one brand's radio and another brand's ESC, you use only part of the possible input resolution, and thus do not have the full throttle range. In order to teach the ESC your radio output, you perform an ESC calibration. During the calibration, the ESC records maximum and minimum input values and uses them for maximum and minimum throttle accordingly, so you have the best possible setup for your system.

Additionally, some cheap ESC have low quality time base that might vary up to +-10% straight from factory, and also are subject to variations in temperature - so it might be necessary to re-calibrate them from time to time, and/or warm them up before flight.



Caution: You will be able to start your motors (even when the blue status light is showing the board is disarmed and your transmitter is set to Throttle Hold). Please remove all propellers and make sure the motors are clear.

You can use the config output panel to calibrate all your ESCs at the same time. Here's how:

On programmable ESCs (such as the Turnigy Plush), do the following:

  1. Remove all the props first and disconnect your battery from the ESCs, then power your board through the USB.
  2. Go to the output config panel in the configuration gadget, check the "test outputs" function, and confirm that you want to continue.
  3. Move the slider on all ESC output channels to the max value you like (for example 1900 microseconds). (You can link the outputs so you can calibrate all ESCs at the same time by 'checking' the Link box.)
  4. Now apply power from your battery without disconnecting the USB. Your ESCs will boot and beep accordingly, indicating that they have received a high throttle set point.
  5. Move all the sliders back to 1000 microseconds. The ESCs will beep several times to confirm the low position and all will be calibrated properly. 
    (thumbs up) A nice tip by Z-axis
    To move the slider instantly, just hit the "home" key on the keyboard. It is instantaneous and much faster than trying to slide it.
    So after you have moved the slider to your maximum value and applied power you can hit the "home" key on the keyboard once the ESCs are booted and beeped.

Very easy, just make sure to remove your props so that you don't get any nasty surprises if anything does not go according to plan.

Flashed ESC users:  For some flashed ESCs, it has been noted that sometimes you must move the slider very quickly from Max to Min for the calibration to take effect (see Z-axis tip above).  If you do not hear the acknowledge beep(s), try it again and be quicker with moving the sliders.  If your test flight results in unstable climbing and the craft is hard to tune, it could be that one or more of your ESCs may not have completed the calibration properly.  In that case, please consider calibrating the ESCs one at a time, and skipping the linked method. 
  • If you are unable to move the sliders, make sure that both your minimum and maximum end points are not set at 1000 as in the screenshot below.


  • Although it is counter-intuitive, having your radio transmitter powered up while calibrating your ESCs  through the GCS is not necessary.  Your propellors have been removed (right?!?!) and the radio won't be needed.  The GCS is doing all the communicating with the board and ESCs, and the radio end points should have already been set by the wizard when this process takes place.  Follow the steps above, and don't worry about the radio. 

Video of Dacat demonstrating how to calibrate the ESCs.

Get Adobe Flash player

Powered by Atlassian - Copyright © 2012 OpenPilot Foundation