The code for 3 Phase motor control is meant to run on the ATmega32U4 microcontroller, on our open-sourced 3 Phase Driver Board.

We're currently testing on the following BLDC motors: Turnigy 480 850kv and Turnigy 480 1320kv, but plan to launch on the Quanum MT Series 5208 360KV.

A few other notes:

The current Makefile is setup to program an AVR via USB DFU.

The servo simulates the 3 sin waves needed to drive a 3-phase motor with a ~32KHz PWM of 3 half-H bridges.

The 3-phase controller handles ingesting predictor data (part of the controller code) to understand current position and push at a 90° (electrical rotational) angle to current position.

The magnetometer is MLX90363 - SOIC8 package, communicating over SPI.

This magnetometer allows for 14 bit precision and is updated at a rate of ~1 kHz. Reads from the device happen at ~800 Hz. However, 800 Hz update rate is insufficient for use as exact position in pwm cycle, therefore we must use a predictor, which is part of the code.