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.
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.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