Sensorless BLDC motor driver using an Arduino Uno to control speed and direction of a brushless DC motor. Uses back-EMF sensing and the AVR's internal analog comparator to estimate rotor position and perform commutation, driving the motor through a three-phase MOSFET gate driver/inverter circuit.
The Arduino drives the motor using six-step commutation — energising the three phases in a sequence to keep the motor spinning. Instead of hall sensors, it uses back-EMF on whichever phase is currently unpowered to figure out the rotor position, then triggers the next commutation step. Direction is set at boot via a switch on pin 12, and speed is adjusted at runtime with two buttons (A0 = up, A1 = down).
| Function | Pin |
|---|---|
| Phase A/B/C low-side | 3, 4, 5 |
| Phase A/B/C high-side (PWM) | 9, 10, 11 |
| Direction switch | 12 |
| Speed up | A0 |
| Speed down | A1 |

