Open ESC

Overview

This project is an attempt to build a fully open-source electronic speed controller (ESC) for sensorless brushless DC motors.
The project has two major goals:

  1. Hardware: design the power electronics, gate drive, and commutation circuitry from scratch
  2. Firmware: implement the ESC logic in embedded Rust using the Embassy async framework for the RP2040

The long-term vision is to create a minimal, well-documented ESC that others can learn from or extend.


GitHub


Development Log

September 20, 2025 – First Drive Experiments

Dead MOSFETs

Bootstrap high side

Working commutation


September 23, 2025 – Complementary PWM

Complementary PWM
Complementary PWM with deadtime


Additional Media

Inverter gate voltages Firmware (Rust)

Firmware Direction

The firmware is being developed in Rust using the Embassy async framework for the RP2040.

This approach not only makes the firmware cleaner but also gives me a deeper understanding of async Rust and low-level microcontroller peripherals.


Next Steps

  1. Attach a BLDC motor and test commutation under load
  2. Build out basic Rust firmware tasks (commutation + PWM sync, back EMF detection)
  3. Implement back-EMF sensing for sensorless startup

Reflection (So Far)

Even at this early stage, this project has already reinforced how subtle power electronics design can be. Small choices in bootstrap capacitor size, gate resistance, or timing lead to completely different behavior, from “nothing works” to “burnt MOSFETs” to “stable commutation.”

On the firmware side, working with Embassy-RP has been a good forcing function for structuring tasks cleanly rather than writing ad-hoc loops. I expect this to pay off once the motor is actually spinning and timing becomes critical.