Skip to content
A

Motor

Controlling BLDC ESC Motor with Arduino Uno

What is the BLDC ESC?

BLDC ESC practical reference

A brushless DC motor paired with an ESC for high-RPM applications like drones, RC vehicles, and cooling fan projects.

Key specifications

  • Motor type: Sensorless 3-phase brushless DC (BLDC)
  • ESC control input: Standard servo-style PWM, 50Hz, ~1ms (stop/min throttle) to ~2ms (full throttle)
  • Battery: 2S-4S LiPo typical for small hobby ESCs (7.4V-14.8V) — confirm your specific ESC's rated cell count before connecting a pack
  • Max current: ESC-dependent — commonly 20A-30A continuous on small hobby ESCs, check the label on yours
  • Startup: Most ESCs require an arming sequence (throttle held at minimum on power-up) and beep out cell count/status before responding to input

Pinout and connection notes

Always run the arming/calibration sequence documented for your specific ESC before first use — sending a mid-range throttle value on power-up on an uncalibrated ESC is a common cause of "the motor won't start" confusion.

  • Motor wires (3): 3-phase output from ESC to motor — order is arbitrary, swap any two to reverse rotation direction
  • Battery + / -: LiPo battery input to the ESC — observe polarity, reversing it can destroy the ESC instantly
  • Signal: PWM control input from the MCU, same as a standard servo signal
  • BEC + / -: Many ESCs feed regulated 5V back out on the signal connector's power pins (BEC) — can power your MCU's logic side if within its current rating

Integration checklist

  1. Confirm the exact part number and breakout-board revision.
  2. Verify supply voltage, current demand, logic levels, and signal direction against the datasheet.
  3. Check controller pin assignments and bus address or interface mode against the example code.
  4. Power up with external loads disconnected, then test signals before full integration.
  5. If readings or communication fail, check power and ground first, then pin mapping, interface settings, and library initialization.

Troubleshooting and reproducibility

Record the board used, wiring, library/version, supply arrangement, and measured behavior. Use the selected board-specific wiring example as the source of truth. Never assume visually similar modules share identical voltage tolerance or pin order.

Setting Up BLDC ESC with Arduino Uno

Library

Servo by Arduino built-in

Built into the Arduino IDE — no install needed

Wiring

Component pinArduino Uno pinNote
SignalD9Any PWM-capable pin works — the Servo library generates the pulse in software
BEC + / -Not connected (leave BEC unused, or see notes)Only connect if you specifically want to power the Uno's 5V rail from the ESC — most setups power the Uno separately over USB/barrel jack
Battery + / -Separate LiPo pack — not the Arduino's supplyThe ESC's main power path never touches the Arduino; only Signal and (optionally) BEC ground/power do
Motor wires (3)BLDC motor phases — not connected to the ArduinoSwap any two wires if the motor spins the wrong direction

Swipe sideways to see every column →

C++

Almost all hobby ESCs need to see minimum throttle (1000µs) right at power-on to arm — skipping the arming delay is the most common reason "the motor just does nothing." Keep the battery's ground common with the Arduino's ground even though power is separate, or the signal reference will float.

Related Components

Related Guides & Projects