I can see there are many writings on line for using an Arduino to control a 4 or 6 wire stepper motor, that spins the platter in side an IDE hard drive. I want to control the seek read/write head motor instead, can this be done? I'm struggling to find anything at all on this?
-
2You're looking to control what's called the voice coil. There's a little information here which should get you started: http://spikenzielabs.com/SpikenzieLabs/Laser_Display.html – snoopen Oct 23 '11 at 22:10
-
Hi snoopen, after reading that, and the below answer, would I be right in thinking I need a H-Bridge IC so I can send voltage to the VCM. Then using a digital pin on an Arduino and a loop, continuously pulse the pin between HIGH and LOW, causing the VCM to continuously alternate the current, makiong the head move? I'm trying to make music by pulsing it back and forth really quickly? – jwbensley Oct 24 '11 at 19:49
-
Hard drives to **not** use stepper motors for the platter motor. The platters are spun by a AC brushless motor, which is a good deal more involved to control then a stepper motor. – Connor Wolf Oct 25 '11 at 02:41
-
@FakeName I think you meant _a DC brush-less motor_. (all of the IDE hard drives I know of run on 12v/5v DC) – Dan D. Oct 26 '11 at 04:17
-
@Dan D. - No, I very much meant, (and said) AC. As I also, said, there is a fair amount of control electronics involved, including what is effectively a DC-AC inverter. – Connor Wolf Oct 26 '11 at 06:58
-
1@Dan D. - As a side note, **there is no such thing as a DC brush-less motor**. There are certainly AC brushless motors *with integrated controllers* that can run of DC, but brushless motors (and motors in general) are AC objects. Brushed motors just do DC-AC conversion internally, by way of the brushes and commutator. – Connor Wolf Oct 26 '11 at 06:59
-
@FakeName interesting point about the AC/DC brushless motor there^ I didn't know that so thanks! On a side note, yes I see now that it is not the stepper motor I wish to control, my comment directly before yours shows that I am looking into how the VCM works instead – jwbensley Oct 27 '11 at 08:01
-
I know this is kinda late but I would like to know whether you guys know how to get the feedback of the Indexes (from the platters of the HDD). On top of that, any idea which pin give this feedback? – Imama Jul 05 '14 at 15:07
-
Note that while the drive in question does seem to use a voice coil for head positioning, drives of an earlier era did use stepper motors. – Chris Stratton May 16 '16 at 04:07
3 Answers
As snoopen says - you want a "voice coil" driver or actuator.
It's well within the capabilities of an Arduino to drive one of these.
There are a number of people offering on-web examples of HDD voice coil drivers used for other purposes.
This provides a general view of an HDD voice coil actuator
This is an actuator withy the magnets in position above and below the coil
and here is a unit with the magnets moved out of position to provide an internal view.
__________________________________________________________________
Here is an utterly amazing LASER shutter driver achieving mechanical shutter rise times of
500 nS !!!. There are a number of links off this page to other variants and upgrades.
Their basic driver circuit is suitably simple -
Here is a formal 2004 paper based on the above
And three years later in 2007, an updated version
Here is a throttle position control using an HDD actuator.
Circuit diagram here - the actual actuator control is the middle third hozizontally and the actual driver is 2 transistors driven by an opamp. An Arduino could easily feed a s signal to such a circuit. eg smoother PWM or a DC voltage generated in some other manner.

- 113
- 5

- 147,325
- 18
- 210
- 386
-
Russell, thanks very much for your great information. I have a hard drive from which I have removed the cover (http://i55.tinypic.com/15d9xqw.jpg) Here I have turned the VCM upside down, do you think these two pins are the two pins I need to send current too? (http://i52.tinypic.com/2vb0iyt.jpg) – jwbensley Oct 24 '11 at 19:42
-
-
Hi Russell, it has take me a while to read through what you've said and the links provided, so thank you. Its all becoming much clearer now. I'm going to tinker over the next few days and I'll report back what I find. Thanks :) – jwbensley Oct 27 '11 at 08:03
-
-
I accepted the answer on Jan 7th 2012 - that should be a good indicator that it worked :) – jwbensley Jan 04 '21 at 15:23
I was going to post another comment but I was writing too much. So here's the beef:
You're looking to control what's called the voice coil. There's a little information here which should get you started: http://spikenzielabs.com/SpikenzieLabs/Laser_Display.html
In response to your comment:
Yep, the examples I've seen use an h-bridge circuit in locked antiphase configuration. The digital signal in this case switches the h-bridge output between -5v and +5v. You will need to tie the enable pin of your h-bridge to always be on during operation. You should then be able to generate a square wave tone on the Arduino and use that as the control signal. Be wary that the voice coil might not like to be held in one position for too long so you might need to drive the enable pin off when you're not sending a signal.

- 447
- 2
- 11
-
Hi Snoopen, thanks for your reply. I've just had some H-Bridges turn up so I will try and get this working over the next day or two and report back with my result :) – jwbensley Oct 27 '11 at 07:59
arduino cannot supply much power required by HDD motor . there is possibility that arduino may get damaged. so use MOSFET(IRF 830)

- 1
-
The MOSFET recommendation is not validated by any reasoning: Why *that* MOSFET and not any other? Besides, it is irrelevant to the specific question. – Anindo Ghosh Nov 02 '12 at 21:05