Let's Make Robots!

(Howto) Walz a Hard Drive Spindle Motor

an example of a driver for a brushless DC motor without microcontroller
3pulses_l293d_big.gif24.92 KB
3phase_pulsegenl293d.sch92.71 KB

This is a continuation of my blog on the same subject. Please continue your commenting here.



I am the proud owner of a stack of scavenged hard drives. I hoped to find really fast, torqueless motors inside. But instead I found myself a project for my new found 555 knowledge.

The logic chip 74164 is a "Serial In Parallel Out bit shift register" (datasheet). S1 acts as a reset button. S2 is the little white wire in the video that "boots" the sequence. Once one serial pulse makes it into the 74164, the system will maintain the sequence. When the pulse reaches the third output (red), diode D1 feeds it back to the first (green).



The motor driver is the well known L293D. The circuit with the driver is much simpler:

The EN/able pins apparently do not need pulling down to work. The three diodes D2, D3, D4 only serve to cut a tiny 0.7 V off the voltage. That keeps the current maintainable for the driver chip (rated at max. 1.0 A continues duty). I tried lowering the motor's voltage supply, but the driver would not separate the two supplies very well, when I did. It works OK when V-motor is higher than V-logic. Not the other way around.

The video lasts as long as 10 minutes. Oh, and you'd better take your sea sickness medicine! The video compression kills any details, so here is a closeup of the experiment as demonstrated.

Avenues of improvement

It has been suggested (by oddbot and robologist) that the shape of these square/block wave can be improved upon. Advantages include higher rotational speeds or power efficiency.

Also the control method can be improved a lot. Removing the need for a manual boot up and automatic ramping up of the speed.

Furthermore a decent feedback mechanism could make the driver much more intelligent. Two main alternatives remain to be inestigated: external feedback (e.g. hall effect or optical sensing) telling a processor about the state of the entire system, or internal feedback (e.g. voltage detecting on any of the motor's coils when it is not being fired) which in turn could help the exact firing of the next (round of) pulses. That could even help gradually ramping up (or down) the speed.

Practical issues

Finding the right leads. In this picture, I soldered in the wires shown. I also chose the colour coding to be like the international colour convention of traffic lights. Nothing to do with reggae or rasta.

Just as in a stepper motor, measure the resistance through the coils. In the above diagram any coil from a coloured wire to the "black center" would be a very low resistance: somewhere between 0.5 and 1.5 Ohm. You need a reasonably good multimeter (M-thingey) in order to get an accurate measurement. And some patience.

The resistance through any connection from a colour to a colour would be about twice as much.

The bottom line

You're probably better off using a microcontroller after all!

Watch this space (not the other space) for updates.



Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Excellent walkthrough Rik,

Any ideas on what you are going to do next with your new 72000 RPM brushless motor and adjustable waltz driver?

BTW - I did recognize you! and your immaculate desk !

It is not 72 hundred, not 72 thousand, but 10 thousand (and some disks even 15 thousand) RPM. According to the labels.
i cannot believe i got the colours wrong in the end title 8-(

How can there be so many cool nerds in one place?

Rik; You know I am your biggest fan!

and you caged us all in this hollow mountain of yours!
I would say more like the sound of his drum machine...

Here's something I found to do with the old HD.


I didn't make it, but I thought you might enjoy it :)

wow thanks for the link

good info in the research from this instructor! pretty scope traces and everything

Just jotting it down here for later retrieval.



Excuse me if i missed something, but could you list the components you used? I do very much wish to build this :D