Quasi-Direct Drive and 3-Phase Inverter
Driving brushless motors using a custom PCB
Project at a glance
- Designed a four-layer STM32 inverter for three-phase BLDC motor control.
- Integrated encoder feedback, current sensing, CAN, and regenerative overvoltage protection.
- Built a modular 19:1 cycloidal gearbox and iterated through multiple PCB revisions.
Speed Control Test with 19:1 Cycloidal Gearbox
Space Vector PWM Implemented
6-Stage Commutation with varying target velocity
Exploded view of the cycloidal gearbox
Why?
I designed a custom ESC to better understand three-phase motors and their control. These motors are widely used in precision robotic actuators. I am currently testing the fourth PCB revision.
I also designed a modular cycloidal gearbox and housing so the actuator can be reused in future robotics projects.
Version 3 — buck-converter problems
Version 2 - had layout problems
Version 1 - missing critical components
What?
I designed a two-sided, four-layer board in KiCad and had it fabricated and assembled by JLCPCB. It supports encoder communication over I2C and SPI, CAN and UART communication with an external MCU, regenerative overvoltage protection through a brake-resistor circuit, and current and voltage monitoring. Testing has confirmed operation up to 1 kW, although I am still characterizing its full power limits.
How?
Electrical Design
I designed the board in KiCad using component datasheets and reference designs from other engineers.
Three-stage buck converter and connectors
MCU, Gate Drive, Overvoltage and CAN IC circuits
Mechanical Design
I designed the mechanical assembly in Onshape. It uses two cycloidal disks positioned 180 degrees out of phase to reduce vibration, with bearings at each rotating interface to reduce friction.
Exploded view

The key dimensions are parameterized so the design can accommodate different motors, gear ratios, and output bolt patterns.
Section view
Tuning the tolerances required the most iteration because they directly affect efficiency and backlash.
Back motor mount install
Pin install
PCB install
First eccentric shaft
First cycloid install
Output shaft install
Problems and Revisions
The first revision had two major assembly errors. I omitted a required gate-driver capacitor after mistaking it for a non-critical decoupling component. The driver would not operate without it, so I soldered an external capacitor directly to the pin as a temporary fix (red). I also installed a resistor where capacitor 5C3 belonged (blue), which required reworking a 0402 component.

That revision reinforced the value of a complete schematic and bill-of-materials review before manufacturing.
Related albums
Three-Stage Buck Converter
- Designed a three-stage board providing 12 V, 5 V, and 3.3 V power rails.
- Validated the 10 W supply under load and measured output ripple with an oscilloscope.
- Used the prototype to de-risk power delivery for a larger custom motor controller.
Automated Dog Treat Launcher
- Built an automated treat dispenser with a lead-screw elevator and differential turret.
- Integrated servos, sensors, custom PCB wiring, and jam detection.
- Programmed an autonomous daily dispensing cycle with fault handling.
Honda Cobot Assembly Demo
- Helped create a UR10e cobot demo that assembled a 3D-printed Honda CR-V model.
- Designed a magnetic rack-and-pinion end effector with Arduino-controlled tooling.
- Achieved a 100% assembly success rate throughout the public demo day.