Driving a brushless DC (gimbal) motor can be a pain in the transistors. [Ignas] has written up a nice article not only explaining how to do just this with an Arduino, but also explaining a little bit on how the process works. He uses a L6234 Three Phase Motor Driver, but points out that there are other ways to interface the BLDC motor with the Arduino.
A warning is warranted – this is not for the faint of heart. You can easily destroy your microcontroller if you’re not careful. [Ignas] added several current limiting resistors and capacitors as advised in the application note (PDF warning) to keep things safe.
Everything worked well at high speeds, but for slower speeds the motor was choppy. [Ingus] solved this riddle by changing over to a sine wave to drive the motor. Instead of making the Arduino calculate the wave, he used a look up table.
Be sure to check out his blog for full source and schematics. There is also a video demonstrating just how slow he can make the motor move below.