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
- Confirm the exact part number and breakout-board revision.
- Verify supply voltage, current demand, logic levels, and signal direction against the datasheet.
- Check controller pin assignments and bus address or interface mode against the example code.
- Power up with external loads disconnected, then test signals before full integration.
- 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 pin | Arduino Uno pin | Note |
|---|---|---|
| Signal | D9 | Any 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 supply | The 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 Arduino | Swap any two wires if the motor spins the wrong direction |
Swipe sideways to see every column →
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
DC Motor L298N
Classic brushed DC motor + dual H-bridge driver combo.
L298N Driver
Dual H-bridge motor driver — the standard for controlling two DC motors or one stepper.
NEMA17
The standard 42 mm stepper behind most 3D printers and small CNC machines.
Stepper 28BYJ48
Low-cost geared stepper for precise, low-speed positioning.
Related Guides & Projects
Arduino Uno R4 Minima Pinout: Every GPIO, ADC, DAC, and Op-Amp Pin Explained
A complete Arduino Uno R4 Minima pinout reference — digital I/O, ADC, DAC, op-amp, CAN, dual UART, and exactly what it leaves out compared to the WiFi variant.
Mastering PWM on Arduino: Dimming LEDs and Controlling Motors
Understand what PWM actually is on Arduino, dim an LED smoothly, and safely control a DC motor's speed with a driver chip -- plus the mistakes (like wiring a motor straight to a pin) that damage boards.
4-Digit 7-Segment Counter with TM1637 & Arduino
Drive a TM1637-based 4-digit 7-segment display with Arduino Uno to show a real-time up/down counter, elapsed timer, and scrolling text. Covers library setup, brightness control, and custom segment mapping.
Arduino Uno R4 Minima vs WiFi: Which One Should You Choose?
Same processor, same memory, different price. Here's what the WiFi variant's extra hardware actually gets you, and when the Minima is the smarter buy.