BLDC motors and ESCs
UAT 203 Electrical and Electronic Systems for UAS
Lesson
By the end of this module you will be able to
- Explain how a BLDC motor works and the six-step commutation of a sensorless ESC
- Convert KV to a torque constant and calculate speed, torque and efficiency with a simple model
- Explain PWM and DShot protocols and the benefits of ESC telemetry
- Choose an ESC and firmware to suit the motor and flight controller
Why this matters
Almost every drone motor is a brushless DC (BLDC) motor, which cannot turn by itself: an ESC (electronic speed controller) must switch current into the windings at exactly the right moments thousands of times a second. Choose too small an ESC and it overheats and cuts out in flight; choose a motor KV that does not suit the voltage and propeller and the motor draws too much current or gives too little thrust.
BLDC motors and ESCs
A BLDC motor has permanent magnets on the rotating part and three-phase windings on the stationary part. The ESC energises the windings one pair at a time in six steps per electrical revolution, so the magnetic field rotates and pulls the magnets along.
The ESC must know where the magnets are to switch at the right moments. Most drone ESCs have no position sensor; instead they use the floating phase in each step to measure the back-EMF the spinning motor generates, as described in Microchip application note AN1175. The catch is that there is almost no back-EMF at start-up, so the ESC needs a special start routine.
KV and the torque constant
KV is the no-load speed per volt (rpm/V): a 400 KV motor at 22.2 V spins at about 8,880 rpm without load. KV relates to the torque constant (torque per amp); following maxon’s documentation, with KV in rpm/V and in N·m/A. A low-KV motor therefore gives more torque per amp, suiting large propellers.
KV alone does not tell you thrust, which depends on the propeller, speed and current at that voltage (module 4).
Example 1 A 400 KV motor at 22.2 V
A simple model: winding resistance 0.08 Ω, no-load current 0.8 A (assumed values; real values come from the manufacturer’s datasheet).
import math
kv, volts, r_winding, i_noload = 400, 22.2, 0.08, 0.8
kt = 60 / (2 * math.pi * kv)
print(f"Kt = {kt * 1000:.2f} mN·m/A; no-load speed ≈ {kv * volts:.0f} rpm")
for amps in (10, 20, 30):
rpm = kv * (volts - amps * r_winding)
torque = kt * (amps - i_noload)
p_mech = torque * rpm * 2 * math.pi / 60
p_elec = volts * amps
print(f"{amps:>2} A: {rpm:.0f} rpm, {torque:.3f} N·m, {p_mech:.0f} W out of {p_elec:.0f} W in, "
f"efficiency {p_mech / p_elec:.0%}")
Kt = 23.87 mN·m/A; no-load speed ≈ 8880 rpm
10 A: 8560 rpm, 0.220 N·m, 197 W out of 222 W in, efficiency 89%
20 A: 8240 rpm, 0.458 N·m, 396 W out of 444 W in, efficiency 89%
30 A: 7920 rpm, 0.697 N·m, 578 W out of 666 W in, efficiency 87%
The higher the current, the larger the voltage drop in the windings, so speed falls, and heating lowers efficiency at high current. The model omits iron and ESC losses, so real values are lower.
Commands and feedback
- Classic PWM commands with pulse width and requires range calibration
- DShot sends digital commands with no calibration, at DShot150, 300, 600 and 1200. ArduPilot recommends DShot600 for most vehicles, and DShot150 for large aircraft with long signal leads
- Bidirectional DShot returns motor speed on the same wire, usable for rpm-based noise filtering
- Separate-wire ESC telemetry reports speed, voltage, current and temperature, useful for spotting a misbehaving motor (see UAT 321)
Widely used open ESC firmware includes AM32 (GPL-3.0, for STM32 and other chips) and Bluejay (derived from BLHeli_S); both support bidirectional DShot. BLHeli_32 was reported discontinued in 2024.
Module lab
Lab: testing motors and ESCs on a test stand
- Read the training motor’s datasheet, noting KV, winding resistance, no-load current and maximum current, and calculate .
- With the propeller removed, clamp the motor to the test stand and, using a current-limited supply and tachometer, measure no-load speed at two voltages, comparing with KV.
- Set the ESC to DShot600 in ArduPilot, enable bidirectional DShot (if supported) and view rpm in telemetry.
- Under the instructor’s supervision, fit a propeller on a caged thrust stand and measure thrust, current and speed at several throttle settings.
- Use the code in Example 1 with the training motor’s real values, comparing calculated and measured efficiency.
Common mistakes
Watch out
- Using KV to predict thrust without looking at the propeller and test data
- Choosing an ESC rated exactly at maximum current without margin and cooling
- Using DShot with an unsupported ESC, or signal leads too long for high speeds
- Bench-testing motors with propellers fitted outside a caged stand
- Forgetting that a simple model omits many losses
Summary
- A BLDC motor needs an ESC switching its windings in six steps; sensorless ESCs find position from back-EMF
- KV is no-load rpm per volt, and
- Speed falls and heating rises at high current
- ArduPilot recommends DShot600, telemetry helps monitor motors, and open firmware includes AM32 and Bluejay
Check your understanding
- About how fast does a 920 KV motor spin at 14.8 V without load?
- What is the torque constant of a 500 KV motor (mN·m/A)?
- With N·m/A, 15 A and 1 A no-load current, what is the torque?
- How does a sensorless ESC know where the magnets are?
- Which DShot speed does ArduPilot recommend for most vehicles?
Answers
- rpm
- N·m/A, or 19.1 mN·m/A
- N·m
- By measuring back-EMF on the floating phase in each step
- DShot600
Key formulas
| Torque constant from KV | |
| Speed from remaining voltage | |
| Torque and mechanical power |
Key references
- maxon. Key information on maxon DC motor and maxon EC motor (speed constant and torque constant). link
- Microchip Technology. Sensorless brushless DC motor control with PIC16 (AN1175, DS00001175B). link
- ArduPilot Dev Team. DShot and bi-directional DShot. ArduPilot Copter documentation. link
- ArduPilot Dev Team. ESC telemetry. ArduPilot Copter documentation. link
- AM32 contributors. AM32 ESC firmware. link
- Bluejay contributors. Bluejay ESC firmware. link
- Quan, Q. (2017). Introduction to multicopter design and control. Springer Singapore. link
Further reading
Study the assigned knowledge units in advance, review media and take the module quiz
In class / field
Lab or field practice from worksheets with a safety checklist
Learning evidence: Checked worksheets and quiz results