February - March 2018

Brushless Motor Control

As part of the module Embedded Systems, our team of 4 was tasked with writing real-time firmware for precise control of a brushless motor.

The firmware used interrupts to respond to commands given over a serial port. It also used threading and ran a bitcoin encryption task at low priority to demonstrate how much CPU time remained after executing motor control tasks.

The motor spun for a defined number of roations and stop without overshooting. It also spun at a defined angular velocity. Considerations included;

  • race conditions,
  • deadlocks,
  • shoot-through,
  • volatility,
  • memory allocation,
  • scheduler jitter,
  • aliasing,
  • cut-off frequency.