Driving a three-phase brushless DC motor with Arduino - Part 1. Theory

Driving a three-phase brushless DC motor with Arduino – Part 1. Theory

Typical CD/DVD Spindle BLDC Motor With 12 Magnetic Poles and 9 Wound Cogs

Typical CD/DVD Spindle BLDC Motor With 12 Magnetic Poles and 9 Wound Cogs

This is the first part of what will probably be two (or more) posts describing one of my latest projects – an Arduino Stroboscope based on the spindle motor of a broken Xbox 360 DVD drive. I will save some practical information (like why I chose Xbox’s drive) for the second post. Here I wanted to concentrate on the theory behind using Arduino or another MCU to drive a three-phase Brushless DC electric motor such as a CD or DVD drive (or HDD for that matter) spindle motor, such as the one pictured further in the text.
A disassembled CD/DVD brushless DC spindle motor

A disassembled CD/DVD brushless DC spindle motor

The diagram above as well as the photo to the left show a typical CD/DVD drive spindle motor design with 9 cogs and 12 magnetic poles. The main principal of driving such a motor is a particular sequence of commutation of the stator windings that creates several points in which the windings attract magnetically opposite poles of the rotor with maximum force. Looking at the animation below, you’ll see that this particular configuration of the BLDC motor (12 poles, 9 cogs) creates three points of maximum attraction in each of the 36 steps that make up one complete rotation. The three points move around due to the commutation sequence and that change in magnetic field directions “drags” the poles of the rotor around with it.

It may be a little easier to watch the movement of the magnetic field on the animation that follows. The animation can be paused on any step and you can move straight to the step you want if you hover your mouse above the step’s number in the navigation menu. Go ahead, play with it! We’ll be right here when you come back :) While you’re at it, see if you can spot those three points with maximum attraction force in every step. They are always in different places but they are always there.

The south poles are marked with RED and the north poles are BLUE. The poles are so marked in accordance with the commonly accepted naming convention. The direction of the magnetic force is defined by the right hand rule: if the palm of the right hand follows the direction of the current (i.e. goes around the cog as the wire does, current flowing from HIGH to LOW), the thumb points in the direction of the magnetic field. The point where the magnetic field lines are originated from is called NORTH and the thumb is pointing in the direction of SOUTH.

The spots where the red dot on the winding corresponds with the blue pole of the rotor are the maximum attraction points.

The animation above was made based on several assumptions. One of them of course is the motor configuration – 12 poles, 9 cogs. Another one is that the least possible amount of MCU outputs is used to drive the motor and the driver circuitry is the simplest. I am going to have to save the circuitry for another post but suffice it to say here that the easiest implementation from the hardware stand point requires us to drive the winding either HIGH or LOW. That requires only three digital I/O pins and a very common H-bridge IC such as SN754410. There’s another possibility, too: we drive only two windings at a time and leave the third one open so no current is flowing through it and no magnetic force is generated, but that requires using 6 I/O pins and 6 discrete transistors. The benefit of the 6-pin scheme is better efficiency and torque due to lack of secondary, smaller magnetic forces pulling in the wrong direction.

Counting BLDC rotor poles using iron shavings on a piece of paper

Counting BLDC rotor poles using iron shavings on a piece of paper

By the way, it may not be apparent that the rotor is magnetized the way it is, with 12 poles, but using the old physics class trick with iron shavings things become much more clear. Unfortunately, this requires disassembly of the motor but if you are careful, you can easily put it back together – the permanent magnet shroud is press-fitted to the axis that sticks out of the ball bearing in the middle of the stator. If you were careful taking it off, you can always put it back in reverse.
Not all BLDC motors have 12-pole rotors and not all stators have 9 cogs, so it may help to search for relevant documentation or even open the motor if less intrusive methods are not available. Hard drive spindle motors often have 12 cogs, for example. However, for a relatively recent (~10 y.o or less) CD/DVD/Bluray spindle motor it’s pretty safe to assume 9 cogs/12 poles. This will be a crucial piece of information when we turn to the hardware and firmware implementation based on Arduino. See the next installment of this mini-series!

To continue your BLDC education and learn more than you ever wanted to know about BLDCs, head straight for Brian Mulder’s Electric Motors, Part 1-5 series of articles on the Southern Soaring Club Web site

Special thanks to Mike Alsup (malsup) for creating the JQuery Cycle plugin used in the animation

7 Responses to “Driving a three-phase brushless DC motor with Arduino – Part 1. Theory”

Leave a Reply

Or use the Forums ! If your comment is a question, please consider posting it to a matching section of our Electronics Forums. The forums allow for a more natural conversation flow, especially if multiple replies are required. Additionally, you'll be able to style your writing (bold font, italics etc.) and post images which can help with a good answer.

Notify me of followup comments via e-mail. You can also subscribe without commenting.


Coming soon ...

Recent Comments
  • mirceboy: Hello, this is perfect and im new with arduino, can you please tell me if its possible to change the code...
  • admin: That sounds great! Sorry I did not have a chance to follow your previous comment. But in general terms this is...
  • Mark: Hi Sir. Just dropped by to report that I have made the unipolar stepper motor rotated clockwise and...
  • Mark: All right sir I got it. Like any other post in some websites, I have found out that pins 5&6 (which are...
  • admin: If we are talking about unipolar (not bipolar, as in the title of this post), then yes, you may have the 5-pin...
  • Mark: Hi Sir it’s me again Mark. Just wanted to ask another one thing sir. Just wanted to ask if there are such...
  • admin: Thanks for stopping by, Peter. Sure you can deploy the Syntax Highlighting javascript in a plain HTML file....
  • Peter Newman: I realise that this post is quite old now and may not be monitored but just in case: I am wondering if...
  • Milo: Thank you so much, it really helps. I found this: http://optics.ph.unimelb.edu.a u/atomopt/diode/gh0781ra2c....
  • admin: I would say the IR estimation is way off. I don’t actually know it but it looks like it’s below...