Go Down

Topic: Drive Hdd motor (Read 10990 times) previous topic - next topic


I have looked up for this but I can only find old posts.

I have hooked up a 7200rpm Hard drive disk that I have removed all the circuitry and arm, and only left one plate and the motor.

The motor have 4 wires ( 3 poles and commond groud).

I have surfed the web a lot and found a topic (http://letsmakerobots.com/node/2876)  of someone who was able to drive a hdd with a couple of pics.

Well I have followed the circuit with a couple of L293 in a Piggyback setup ( that I have learned also this days) and connected to my adjustable powes supply.

I have mounted a CNY70 optical infrared sensor under the plate and put a black tape in a side of the plate to detect every count in order to feedback the necessary pulse to drive the motor

I have worked for some days and I have sucefully driven the motor to up to 4600rpms, I didn't try to go far as It´s not my intention to reach max speed.

What I am trying to do is to make one of those hdd POV clocks like in this http://www.ian.org/HD-Clock/.

Now I have a couple of questions that maybe someone could answer.

As the resistance between the coils of the Hard drive is 1 or 2 R, the motor try to take as much current as It can. I am limiting the current with the Lab dc power supply to 1,2 Amp, but the disk is supposed to work with only 0,7 Amps. If I don't limit the current, the sistem try to get as much current as possible rising up to the limit of the powers uplly 3 Amps. I imagine that is due to the low resistance.

1.- Does anyone know how to avoid this with electronics(limit the current). I mean with component as I am planing to feed the sistem with a cheap DC wall power supply. ???
It is there any Hbridge or shield that can do this ?? or Is there any ciruit?

I was working hard and I needed one week only to realize the the serial comunication was the problem that didn´t allowed the disk spin above 800 rpm. Once I dissables serial com and installed the sensor for feedback with a PID I started to achieve high speeds, the arduino is able to pulse the coils, read the sensor, apply the PID and feed back  so the second question is.

2.- Do you think that Arduino Uno has the needed power to to this, plus the POV stuff. I mean, drive the motor and make the leds according to the sensor to display the time ??

I have bought and R/C controler that I did not arrive yet but It has 3 wires and I am not sure that I will be able to drive the 4 wires HDD. But also IT was a lot of work for me to do this hdd drive and I would like to try to do it all with the Arduino.

Thanks a lot.


1.- Does anyone know how to avoid this with electronics(limit the current).

There would be a couple of options -- insert a 5 ohm 1-watt resistor (or some other value) in series with the coils.
or use PWM to reduce the average current.


2.- Do you think that Arduino Uno has the needed power to to this, plus the POV stuff.

Yes, Arduino has a good deal of compute power.  The trick is to structure things so that they can be interrupt driven, so that the compute power of the CPU is not wasted in timing loops and busy-waiting for conditions.  This makes programming trickier though.

There is no good reason why the field sequencing for the main motor cannot be interrupt driven completely, leaving you to drive the LEDs with brute force, if necessary.


Well. Thanks a lot for the answer you have solved me a lot of problems with your first answer, I will do the resistor thing as is much more easy that PWM.

With regards to the second Question We realized that is quite tricky. We cannot use any delay, almost anything that can stop or delay the code as the speed and time is critical,

The motor is spinning 4500 rpm and I am pulsing the motor 12 times per turn it is 900 times per second roughly, so I forgot about serial print and lcd print and almost anything so it's a nightmare for debugging.

I am in the process of making the disk starting as It accelerates a lot but I have to spin it with my figersfrist due to the sensor optical not related with the fases when it's stopped. I have a manual routine that is more or less starting the thing but I did not incorporated yet

And at the same time I have to start to perform all the lights stuff.

Well It'll take a lot of time.



I have made the hdd spin up up to more than 6000 rpms, actually I have limited the speed as I don't need much speed and I have made the lights stuff, and all It's done with the arduino.

I couldn't find anyone yet who have made all of this only with the arduino as all the info that I found about HDD POV clocks started with hdd that were able to spin, mine is only motor without circuitry at all so It means that Arduino is pulsing the motor, sensind the speed and making the lights stuff.

Here is the result yet.

The hands are moving and so...

Now that I am here, that I have go so far. I really need help...

I am planning to mount everything INSIDE the hard drive, an ARduino mini, the L293 who powers the motor and the TIP120 transistors the feeds the lighs , so everything.

The problem that I cannot solve is..

I am feeding the leds (12v) with a power source (12v)

I am feeding the motor with a different power source (4,7v) that is the perfect voltage, like that, the current is not going to infinite due to the low resistance (2ohms) between the hdd motor phases.

If I limit the current with my lab power bench to 1 am automatically the voltage drops to 5 or 4,7v (the perfect one) but I cannot drive the leds (12v).

So I really woud like to feed all with only a power source but I don't know how.

I have tried to feed all with 12v, straight to the leds transistors and trough a LM317 for the L293 but again the voltage drops or the current goes to infinite.

Someone suggested to PWM but I think that arduino is on his limits doing all this stuff already driving motor phases every 1500 microseconds and lights and interrupts and so, and the perfect PWM for a motor as I readed is 20khz so I don't think is possible to do it.

The second choice was to put a big resistor ( big means 2 or 5 wats ) to limit the current but I think that a lot of heat would be dissipated, and I  am having problems already with the L293 piggyback getting VERY HOT so any help would be apprecciated.

I was even think to drive the motor with a Remote control ESC as everybody else and disregard all the programming work made about that, but now that I have spend weeks with this and the motor is working so smooth and as I said I donñt know anyone who have made all this with an arduino I really think that would be a pitty.

So If anyone suggest me a circuit to drive both things 12v leds low current ( like 100mAmps or less ) and the motor that works very good with 4.7 volts ( I think because the low voltage limits the current) at the same time and trying not to waist power in heat ( beause the plan is feed it all with a wall transformer ).  I would really apprecciate a lot because I am totally lost.

Thank a lot in advance and best regards.


Hi, I need a little help for my first Arduino project, I'm trying to spin an hdd motor at max speed but without success, can I ask you to post your electric schematics and the sequence applied to coil to spin it?.
I have an L298 you think can I use it?, i've tried with a simple 2n2222 for coil but they began very hot and the motor rotate very bad.

Many thanks in advance



Hi there,

I'm also working on the same project as you are!
I figure a way to run the stepper motor without the use of the Arduino with a TDF5140A, freeing it from controlling the pulses. I will PM you my info in if you like to exchange some findings :)


No trees were harmed by the transmission of this message. However a few million electrons were temporarily inconvenienced.


First of all sorry for my poor english an sorry for my low knowledges. I have no experience at all with arduino and very little with electronics. All I know has been taken from internet, forums and try, error and correct so many of my sentences might be nonsenses.

This idea with the this IC seems to be much better that to use the L293.

After maaaaany hours and tryes with the l293 I have drive the motor hdd quite fast with the arduino but I have faced some big problems

The current. As the resistor between the phases of the hdd is very low the current is too high I ahve limited the current with th power supply but is getting two much current , more than 2 amps. I had a piggyback l293 but even like that was getting way too hot. I burned my fingers a couple of times.

Too avoid this the pulses on the phases ABCABC ( I found that this is the best , not overlaped pulses) should be pwm to 20000 HZ according to some sources.

I think thta this is too much for the arduino. I have found that just pulsing ABC was a microseconds thing so make a pwm over this is too much. I have tryed with analogwriters but no way as I think that analogwrite is aroung 400 hz or so.

One collegue suggested to use tones for the 20000 actually the idea was looking very good but I never tryed

Anyway. I have used the schematics from this web page Http://letsmakerobots.com/node/2898 to connect the l293

Now I gave up and I am using a radiocontrol ESC is working much better, ver low power, very cheap in ebay, problem is all the startup protecions, and program funcitions are a bit embarrasing and useless for this.

I have looked for IC like the TDF5140, and I thinks that this is the best approach, easy, to control the mottor. sensorless is good as you need the sensor anyway for the lights. When I was looking the main problem s that almost all the ICs are very small package to solder and this seems to be quite good.

Believe me you will have enough working with the lights.

Right know I have worked too much on this. I am waiting for a arduino mini, I have the ds1307 and now I am totally stopped and exhausted with this project.

I will try to mount everything inside the hdd case to see if it fits as I am a little bit tired of programing, and make everything work and after that, lets see if I am ready to start again with background efecst and so on.


The 5140 is really easy to use indeed, I got it from the Digikey website

As far as the LEDs, there is a a lot of work indeed hehe
I got decent experience with the Arduino and electronics if I could help in anyway. PM me or even call me if ya like.
No trees were harmed by the transmission of this message. However a few million electrons were temporarily inconvenienced.


Im doing the same project myself, learning as I go.  I'm a real newbie at this all but would a Darlington Array like a ULN2803A, work to control both the led's and the motor?


I being using a 2803 to play with the LED's but when it comes to controlling them at the time we need to do so it might end up proving to be too slow, which is why I'm considering to use a highspeed mostfet to do the job. As far as running the 3 phase on the HD, you need a pull and pull solution like the l293, but you will likely run into the same problem fortunados ran into which is the Arduino would be busy doing both the pulses for the motor and the LEDs at the same time. Unless you are considering to use a 2 Arduino solution to do all separately, I recommend you also look into the 5140 which takes care of all the phase pulses without any need for logic involvement other than a 5v high from the micro controller. PM me your info if you like so we can get in touch.
No trees were harmed by the transmission of this message. However a few million electrons were temporarily inconvenienced.

Go Up