Module 3/5 · Weeks 7–9 · 27 h

BLDC motors and ESCs

UAT 203 Electrical and Electronic Systems for UAS

About 80 minDraft, awaiting reviewLast updated 27 September 2026

Lesson

By the end of this module you will be able to

  1. Explain how a BLDC motor works and the six-step commutation of a sensorless ESC
  2. Convert KV to a torque constant and calculate speed, torque and efficiency with a simple model
  3. Explain PWM and DShot protocols and the benefits of ESC telemetry
  4. Choose an ESC and firmware to suit the motor and flight controller

Prerequisites: UAT 203 modules 1–2 · UAT 103 module 4 (transistors and PWM)

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.

A table of six steps, each showing phases A, B and C as positive, negative or zero. For example, step 1 is A positive, B negative, C floating; step 2 is A positive, B floating, C negative. In each step one phase floats to sense back-EMF
Figure 1 Six-step commutation of a sensorless ESC

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

The flight controller sends DShot600 commands to the ESC MCU, such as AM32 or Bluejay. The MCU drives the MOSFET bridge, which powers the BLDC motor. Back-EMF from the motor returns to the MCU, and telemetry of rpm, current and temperature returns to the flight controller
Figure 2 ESC command and feedback paths
  • 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

  1. Read the training motor’s datasheet, noting KV, winding resistance, no-load current and maximum current, and calculate .
  2. 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.
  3. Set the ESC to DShot600 in ArduPilot, enable bidirectional DShot (if supported) and view rpm in telemetry.
  4. Under the instructor’s supervision, fit a propeller on a caged thrust stand and measure thrust, current and speed at several throttle settings.
  5. 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

  1. About how fast does a 920 KV motor spin at 14.8 V without load?
  2. What is the torque constant of a 500 KV motor (mN·m/A)?
  3. With N·m/A, 15 A and 1 A no-load current, what is the torque?
  4. How does a sensorless ESC know where the magnets are?
  5. Which DShot speed does ArduPilot recommend for most vehicles?
Answers
  1. rpm
  2. N·m/A, or 19.1 mN·m/A
  3. N·m
  4. By measuring back-EMF on the floating phase in each step
  5. DShot600

Key formulas

Torque constant from KV
Speed from remaining voltage
Torque and mechanical power

Key references

  1. maxon. Key information on maxon DC motor and maxon EC motor (speed constant and torque constant). link
  2. Microchip Technology. Sensorless brushless DC motor control with PIC16 (AN1175, DS00001175B). link
  3. ArduPilot Dev Team. DShot and bi-directional DShot. ArduPilot Copter documentation. link
  4. ArduPilot Dev Team. ESC telemetry. ArduPilot Copter documentation. link
  5. AM32 contributors. AM32 ESC firmware. link
  6. Bluejay contributors. Bluejay ESC firmware. link
  7. 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

Module quiz

This is a formative self-check, not a graded exam

Knowledge domain: Electrical, electronics and power systems · Aircraft, structures and design