Every brushless electric motor need to be controlled by an ESC. ESC stands for “Electronic Speed Controller”. By been “electronic”, every ESC have a “microcontroller” chip.
Every microcontroller chip need to be programmed in order to work, and this program is nothing more than a software created specifically for this chip do whatever role it’s designed for.
For the software that runs on the microcontroller chip we name “Firmware”. So every microcontroller need a firmware to work. And the ESC microcontroller is not different.
There are many types of ESCs on market, each one with specific applications, and each one running one specific firmware.
ESCs for multi-rotor aircraft have almost always one of the following three firmwares:
SimonK is the oldest firmware for multirotors ESCs. It’s still broadly used in drones from 300mm or larger, mainly for film or photography purposes.
The SimonK firmware supports only one communication protocol, witch is “PWM”. I’ll detail the protocols ahead.
BLHeli was until few months ago the most common firmware for mini racing and freestyle quadcopters. It have some advantages over SimonK firmware.
The first and most obvious one is that is works with PWM, OneShot 125 and, in some newer ESCs, works also with OneShot 42 and MultiShot protocols. All this protocols will be detailed ahead.
The BLHeli also allow the use of a feature called “Damping Light”, witch literally “stops” the motor when it receives a command to decelerate. Usually the motor only decelerates due to aerodynamic drag of propellers, but with Damping Light, it “spins reverse” to force the deceleration, and it makes the physical response for the command faster, making drone more stable and responsive.
It’s evolution of BLHeli, was ported to work with BB1, BB2 and STM32 microcontrollers. In this firmware, all protocols are supported (even DShot), and Damping Light is active by default (and cannot be deactivated).
Protocol is a set of instructions that a device use to communicate with another device. In the case of drones, it’s the day how the flight controller sends instructions to the ESC.
To Flight controller be able to control the motor speed, it need inform ESC the desired speed, and to make it possible, the flight controller need to communicate to the ESC using a protocol that it can understand. The most common protocols are the following:
PWM means “Pulse Width Modulation”. It’s an analog communication protocol that uses the pulse time to determine the speed that motor should spin.
On PWM, the flight controller sends electric pulses to the ESC, and the duration of this pulses tells how much ESC must accelerate the motor. This pulse is measured in microsseconds.
Almost every ESC supports PWM, witch is the way of radio receivers communicate with ESCs and Servos since waaay before drones exists. Then a pulse have only 1000 microsseconds of duration, the ESC understands that motor should NOT spin (minimal command), and when the pulse have 2000 microsseconds of duration, the ESC understands that motor should spin on maximum speed (maximum command).
Any pulse with duration between 1000 and 2000 microsseconds is considered proportional, and ESC will adjust the motor speed according to this proportion (1500 will be 50%, 1750 will be 75%, and so on).
This old protocol have some limitations. The first and most obvious is the low refresh rate, witch makes this protocol too slow for drone who need faster responses (like racing and freestyle ones). But for the larger slow-flying drones this protocol works ok. But it’s less used everyday due to popularization of newer protocols.
OneShot 125 and OneShot 42
The OneShot 125 and OneShot 42 works very similar to the PWM protocol. Both are analog protocols with were introduced by the BLHeli Firmware.
The main difference (compared to PWM) is the higher refresh rate, and the way witch pulses are modulated makes communication faster.
On OneShot 125, every data package have between 125 and 250 microsseconds of duration, and on OneShot 42 the package have between 42 and 84 microsseconds of duration.
So the OneShot 125 is 4x faster than PWM, and OneShot 42 is almost 10 times faster than PWM.
Not every ESC that have BLHeli supports OneShot 42. Some do not have processor speed enough, and works only with OneShot 125.
The MultiShot is another analog protocol of similar working of PWM, introduced by BLHeli Firmware, with the difference of the much higher refresh rate.
Every package have duration between 5 and 25 microsseconds, witch is 20x faster than PWM.
Not every ESC that runs BLHeli suppoers MultiShot. The ESC microcontroller must be super fast to achieve such communication speed. Besides that, this protocol is subject to electromagnetic interference due noise from motors or other sources. High quality wiring and some insulation are commom when using this protocol to avoid sync issues.
DShot is the first digital communication protocol for ESCs. It was introduced by BLHeli_S firmware and can work in several different speeds.
The main advantage of DShot over another protocols is the fact of it do the communication in a digital way. It eliminate communication errors and solve most problems of interference due noise. Besides that, the information resolution is greater and it have CRC information in every package.
The numbers after the protocol name states the communication speed (in kilobits per second). So:
DShot 150 = 150.000 bits per second
DShot 300 = 300.000 bits per second
DShot 600 = 600.000 bits per second
DShot 900 = 900.000 bits per second
DShot 1200 = 1.200.000 bits per second
Most ESCs with BB1 and BB2 microcontroller can work with DShot up to 600kbps. For greater speed, it’s necessaty a faster microcontroller, like the SMT32F0.