Lesson 2 of 5 · 24 min
Motors, ESCs and propellers
A drone is only as capable as its power train: battery, ESC, motor, propeller. These four parts must be matched to each other and to the weight of the airframe. Pick them badly and you get a drone that will not lift off, one that flies for two minutes, or one that sets an ESC on fire. This lesson gives you the numbers to choose them on purpose.
KV: what the motor rating means
Almost all drone motors are brushless. Their key rating is KV, which is not kilovolts. It means revolutions per minute per volt with no load:
rpm_no_load = KV * V
Take a 920 KV motor on a 3S LiPo at its nominal 11.1 V:
rpm_no_load = 920 * 11.1 = 10 212 rpm
With a propeller attached, the load drags the speed down, typically to 70 to 80 percent of that. Using 75 percent:
rpm_loaded = 10 212 * 0.75 = 7 660 rpm
KV tells you the trade-off. A low KV motor has more windings and turns a big, slow propeller with high torque and good efficiency. A high KV motor (2000 to 2500 KV on small racing quads) spins small propellers very fast. A 920 KV motor on a 4S pack would run 33 percent faster than on 3S, and draw much more current, so KV and cell count must be chosen together.
Propeller size
A propeller is named diameter by pitch, for example 10x4.5: 10 inches across, and a pitch of 4.5 inches. Pitch is how far the prop would advance in one revolution through a solid medium, like a screw into wood. It is a convenient way to estimate the air speed behind the prop:
v_pitch = pitch * rpm = 4.5 in * 7 660 rpm = 34 470 in/min
Convert: 34 470 * 0.0254 / 60 = 14.6 m/s.
Bigger diameter moves more air more slowly, which is more efficient and quieter for the thrust you get, so long-flight-time builds use large, low-pitch props on low KV motors. Small, high-pitch props respond faster to throttle changes, so racing drones use them. A bigger prop also has more inertia, so the motor needs longer to change speed, which makes the control loop work harder.
Thrust-to-weight ratio, worked example
The thrust-to-weight ratio (TWR) is the maximum total thrust divided by the all-up weight. Suppose each of our 920 KV motors with a 10x4.5 prop gives 850 g of thrust at full throttle (from the manufacturer's test table) on 3S, and the drone weighs 1200 g with battery.
- Total thrust:
4 * 850 g = 3400 g - TWR:
3400 g / 1200 g = 2.83 - Hover thrust fraction:
1 / 2.83 = 0.353, so 35 percent of maximum thrust. - Because thrust grows with rotor speed squared, hover throttle is
sqrt(0.353) = 0.594, about 59 percent.
Rules of thumb: below 2 the drone is sluggish and dangerous to recover, 2 to 3 is a gentle camera platform, 4 and above is sporty, and racing quads reach 8 or more. A drone with TWR 2.83 flies well but does not leave much headroom for the controller to correct disturbances, since at hover the motors are already at 59 percent.
Battery: cells, capacity, C rating
A LiPo pack is built from cells in series (the number before S). Each cell is 3.7 V nominal, 4.2 V when full, and must never go below about 3.0 V.
| Pack | Nominal | Full | Land by (3.5 V per cell) |
|---|---|---|---|
| 3S | 11.1 V | 12.6 V | 10.5 V |
| 4S | 14.8 V | 16.8 V | 14.0 V |
| 6S | 22.2 V | 25.2 V | 21.0 V |
Capacity in mAh tells you how much charge is stored. Energy is capacity times voltage:
E = 2.2 Ah * 11.1 V = 24.4 Wh
Using only 80 percent to protect the cells gives 19.5 Wh. Suppose the drone makes 7 g of thrust per watt of electrical power at hover, a plausible efficiency at partial throttle for props like these. Hover power is 1200 g / 7 g/W = 171 W, so:
t_flight = 19.5 Wh / 171 W = 0.114 h = 6.8 min
The C rating is the maximum continuous discharge as a multiple of capacity: I_max = C * capacity. A 2200 mAh pack at 30C can deliver 30 * 2.2 = 66 A. But four motors at 18 A each need 72 A at full throttle, so this pack is slightly too weak. You need 72 / 2.2 = 32.7 C, so choose 35C or higher. An overworked pack sags in voltage under load (V = I * R, a pack with 20 milliohms of resistance at 40 A loses 0.8 V) and heats up.
ESC: from a signal to three phases
A brushless motor has three wires, and something must switch current through them in the right order. That is the ESC (electronic speed controller). The flight controller sends it a throttle value, the ESC converts it to three-phase power. Current rating: our 18 A motor wants an ESC rated 25 to 30 A for headroom.
How the throttle value travels:
- PWM (analog): a pulse every 20 ms (50 Hz), 1000 microseconds long for zero and 2000 microseconds for full. Simple, but only about 1000 distinct steps, and each frame wastes time.
- OneShot125: the same idea with pulses of 125 to 250 microseconds, so you can update at several kHz.
- DShot: a digital protocol. Each frame is 16 bits: 11 bits of throttle (0 to 2047, where 48 to 2047 is the throttle range and 1 to 47 are special commands), 1 telemetry-request bit and a 4 bit checksum. At DShot600 the bit rate is 600 000 bit/s, so a frame takes
16 / 600 000 = 26.7 microseconds. Digital data has no calibration step and rejects noise.
First, the old-school PWM way on an Arduino, using the Servo library:
#include <Servo.h>
Servo esc;
void setup() {
esc.attach(9); // ESC signal wire on pin 9
esc.writeMicroseconds(1000); // minimum pulse: ESC arms and stays silent
delay(3000); // give the ESC time to initialise
}
void loop() {
esc.writeMicroseconds(1100); // about 10 percent throttle
}
And the DShot frame packing in Python, so you can see exactly what is sent:
def dshot_frame(throttle, telemetry=False):
# throttle: 48..2047. Layout: 11 bits throttle, 1 bit telemetry, 4 bits CRC
packet = (throttle << 1) | (1 if telemetry else 0)
crc = (packet ^ (packet >> 4) ^ (packet >> 8)) & 0x0F
return (packet << 4) | crc
frame = dshot_frame(1000)
print(f"{frame:016b} 0x{frame:04x}") # 0x7d0a
print("throttle percent:", round((1000 - 48) / (2047 - 48) * 100, 1)) # 47.6
# Hover estimate from this lesson
kv, volts, twr = 920, 11.1, 3400 / 1200
print("no-load rpm:", round(kv * volts))
print("hover throttle:", round((1 / twr) ** 0.5, 2)) # 0.59
Check yourself
A 2300 KV motor runs on a 4S pack at 14.8 V nominal. What is its no-load speed?
Check yourself
A 1500 mAh pack is rated 50C. What is its maximum continuous current?