HDDJ: Turning an old hard disk drive into a rotary input device

HDDJ: Turning an old hard disk drive into a rotary input device
A couple of years ago we built a fun system that would allow DJs to mix music tracks in interesting ways. Our design called for an input device that would allow the DJ to quickly seek through a track and find a specific playback position, and we wanted to be able to do this by spinning a rotary control with a flick of the wrist - much like turntable DJs can spin the record back and forth to do the same.

We found that we had only limited choices for building our device: we first tried to use rotary encoders, but it is not easy to find a cheap encoder that spins smoothly and freely. Another alternative was to buy some audio equipment (like turntables) that spin well and feel good to use - but this seemed both expensive and wasteful for our purposes. Then, while looking for inspiration amongst assorted junk in the lab, we came upon a broken hard disk drive with its case open. We admired the quality of the bearings in the motor that drives the disk plates, enjoyed the fact that even a soft flick would get it spinning for a long time, and wondered whether we could sample an output from it when it was spun by hand, in much the same way that an electric motor, when turned, acts as a dynamo and outputs a voltage.

The answer is yes - and it's a very simple process to turn a hard disk into a rotary input device that has some unique properties. All you'll need is an old hard disk drive, a few op amps, resistors and a programmable microcontroller of some kind.

In this Instructable we'll show the basic principles behind this hack, then provide the schematics and firmware for the HDDJ device (shown below) that we used in our project, and which includes a few extra buttons, lights and a motorized slider for good measure.

 
Remove these adsRemove these ads by Signing Up
 

Step 1Crack open a hard disk drive

Crack open a hard disk drive

Old, unwanted or broken hard disk drives (HDDs) are usually free and easy to get hold of. They come in all shapes and sizes, but the most common are the 3.5" HDDs that are used inside desktop PCs. We experimented with a number of different 3.5" HDD models, and found that most are suitable for our purposes (and would guess that smaller, laptop-sized disks would work just as well). The largest variation lies in how easy it is to open the case of some compared to others. Seagate HDDs, which often use plain Phillips screws in the casing, are our favorite.

The first step is to open the drive by removing all the screws that hold the case closed. Often these are torx screws, and you'll need an appropriate screw driver. Sometimes a screw will be hidden behind a label - so if you have trouble opening the case after all the screws seemed to have been removed, poke at the labels to find the culprit. If there is a label saying "Warranty Void if Removed," then, for sure, remove it.

Open the case, and reveal the disk platters in all their untouched glory. Never again will they be so free of fingerprints.

Remove the actuator that holds the read-write head, which stops the platters from spinning around freely. It's up to you how much more you want/need to remove (rule of thumb: anything sharp should go). The only thing that you need to keep attached are the frame, platters and spindle motor.

Thanks to Wikipedia for the "Anatomy of a Hard Disk Drive" image.
« Previous StepDownload PDFView All StepsNext Step »
116 comments
1-40 of 116next »
Dec 28, 2011. 7:11 PMskeetshooter11 says:
awsome idea
Dec 5, 2011. 6:01 AMisantos says:
Instead of a LM324D, Can I use a LM386?
Nov 30, 2011. 7:00 PMRhamkota says:
What if my hard drive only has 3 connections to the motor
May 11, 2010. 12:50 PMproject dude says:
 Solder what kind of cables, standard electrical cables or audio or video cables?
Jun 28, 2011. 7:18 PMData643 says:
There isn't much of a difference between the two...
Feb 23, 2011. 1:43 PMrecordmasta001 says:
22 gauge wire will do fine :)
Apr 11, 2009. 6:41 AMSaNjA2659 says:
WANT A PARTS LIST, And can somebody tell me, how can I put files into microcontroller, or can I ask to write files there in a radio shack?
May 16, 2011. 1:37 PMblackbeardlion says:
no you can't bring it to radio shack but you can make your own software using an avr microcontroller and the usb keyboard and mouse library. it's a bit of a task but you could learn allot if your new to microcontrolers
Feb 6, 2011. 5:48 PMoffnot says:
You have to read some books about PIC.
If you are a beginner of PIC, I'll recommand you an easy book.

Add me up as a MSN friend, "staybesideyou@hotmail.com"
Jul 6, 2010. 9:16 AMnatman3400 says:
You need a microcontroller programmer.
May 1, 2011. 6:55 AMMECHOL says:
incomprehensible
May 1, 2011. 6:55 AMMECHOL says:
incomprehensible
Apr 12, 2011. 1:03 AMrlapse says:
could this be done with the old spinny drums from VCR's, i think that that would look boss.
Mar 3, 2011. 5:05 AMLowkill says:
Does the hard drive needs to be powered or I'm missing something here?
Apr 9, 2011. 6:34 AMmman1506 says:
no. It does not, When you spin the platter it creates about 500 mv thats why you need a amplifier
Feb 27, 2011. 4:06 PMCBMalloch says:
I'm somewhat confused. The sine waves show three phases spaced at 120deg apart, and this implies that the fourth wire is some kind of common. This conflicts with the idea of "pick any three", because one is special.

Then, the outputs of the comparators show two signals in quadrature (90 deg apart) and one signal that is the inverse of one of the first two. Doesn't seem like the same device is being shown.

With four wires all alike, I'd expect them to be 90 deg apart, so there would be two pairs of inverse signals, with one pair leading the other by 90 deg. With three wires and a common (wye) I'd expect the three wires to be at 120 deg apart.

Do your pictures represent two different disk drives, wired differently?

Thanks for the instructable -- I'm going to try it myself.
Dec 25, 2010. 8:47 AMefiscp says:
I'm gonna implement this as a scrollwheel. A very fast scrollwheel. ;)
Dec 6, 2010. 1:33 PMthe_prototype says:
hehe just realised I'm using exactly the same HDD as you are in the instructable :D
It's an IBM Desktstar, isn't it?^^
Really cool idea, my friends are gonna be like "wtf?" :D
Nov 17, 2010. 3:36 PMtomtortoise says:
can you make a schematic for JUST the rotary part no buttons or fader or lights and stuff because im thinking of using one of these for the most legit steering wheel ever for pc gaming
Nov 16, 2010. 4:50 PMFurtherThanTesla says:
one prob though. Once the platter stops rotating it gets a little upity. the lights blink with the slightest vibration of the whole thing, but once the platter is rotated again, its running smoothly. I Imagine this oversensitivity could be corrected with a high value resistor, or low value capacitor
Nov 16, 2010. 4:47 PMFurtherThanTesla says:
Just tested it, and it outputs the Grey Code as expected and behaves just like I imagined. Tesla would be proud :D
Nov 16, 2010. 4:12 PMFurtherThanTesla says:
It should also give you some error detection. like, it is impossible for it to go from 11 to 00, or vise-versa, so you can tell it is misreading either by going too slow or too fast and ignore the reading
Nov 16, 2010. 4:09 PMFurtherThanTesla says:
Hey, my HDD only had three wires (im guessing a motor in a "whye" config) but it gave me an idea. use the green wave as the reference for the other two (save urself an opamp) and it will output a grey code like a rotary encoder! this will also improve your resoloution since a 2-bit grey code has four states per revoloution, while your three-phase setup gives three per rev. it goes like this- Green wave is higher than other two= 00, green goes below red=10, yellow goes up above green allong with red= 11, red starts to fall below green while yellow stays = 01 - This pattern will repeat and give you four steps per rev while saving an exta op amp! ill try it out and let you know :D
Oct 3, 2010. 8:21 PMAriderM says:
A couple months back I got this working. I used a Parallax basic stamp 2sx. Used an oscilliscope to find the correct pins. From there I connected them to the comparator (quad comparator in my case) and fed those to the stamp. It took me a few hours, maybe even a full day, but I got it working. I then took the serial out of the stamp and had that spit out to my desktop running virtualdj. Using midiYoke and some other stuff I changed the serial data to virtualdj midi commands. After that I could spin the disk and have the track play. The next step I have planned is to rebuild this setup and introduce a speed controller. This will allow me to set the speed of the disk by hand, press a button and have the speed controller maintain the disk spinning speed.
Aug 22, 2010. 8:31 AMAshiro says:
Minor correction: "a very simple process". Change to: "a very simple process for an electronics engineering graduate with access to a lab for etching their own PCB."
Jul 14, 2010. 4:40 PMjhakker says:
I'd pay for one of these !
Jun 14, 2010. 11:58 PMswathisanthu says:
can u pleas send the HDDJ zip which is working pleazzzzzz
Jun 14, 2010. 6:14 AMteinai says:
Very very cool. I love the cubic fader tool in your paper too. It makes me very happy to be alive at this time when people are sharing brilliant ideas incorporating fun, music and technology. Makes me wish I was more focussed at university! Great work!!!
Jun 11, 2010. 7:37 AMT-Hawke says:
Very Cool. Adding this one to my to do list. I want to adapt or use in windows movie maker for a shuttle knob. Maybe size the platters and the case down to something more convenient that does not take as much space. Good instructable. Great idea.
Aug 30, 2009. 11:26 AMmattgilbert says:
Thanks for the instructable! I got one working with an Arduino:
http://www.youtube.com/watch?v=qaL5syVlae0

I posted the Arduino code here:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1251656637/0

Not quite how you did it, but I wouldn't have figured it out without this instructable. I used an old 1st gen iPod HD, and I only needed 2 pulse signals, amplified with LM386 op amps (would have used a LM358 dual opamp if I had one handy.)

It sends usb MIDI commands, routed by this program:
http://www.spikenzielabs.com/SpikenzieLabs/Serial_MIDI.html

to a shoddy Max/MSP patch that I threw together.
Jun 11, 2010. 1:21 AMSinAmos says:
Sweet. What about with different inputs? Like actual tracks?
Sep 10, 2009. 3:17 PMkbishop says:
i got a question though, how do you connect the usb cable to the op-amps, or where does it play it's role on the schematics? i ask this because i'm really temped to try but never done usb stuff like this before
Sep 10, 2009. 5:41 PMmattgilbert says:
kbishop, if you mean my Arduino version, the Arduino communicates with the computer over USB, and it also powers and senses the output of the opamps.

http://arduino.cc/
Jun 11, 2010. 1:17 AMSinAmos says:
My kind of fun-zeyz.
May 11, 2010. 1:02 PMproject dude says:
 too cool

May 2, 2010. 11:22 AMdark_angel000 says:
 this thing is awesome ..................................can i have the parts list too ................i sure am gonna try tp make this thing...................thankx
May 7, 2009. 4:48 PMbmxlife says:
can I please have a parts list 2
Apr 23, 2010. 7:58 AMWessinc says:
Hi Hope this helps. Parts list:
Partlist

Exported from hddj-2.0.sch at 4/23/2010 4:52:42 PM

EAGLE Version 5.3.0 Copyright (c) 1988-2008 CadSoft

Part     Value          Device            Package    Library         Sheet

B1                      RB1A              RB1A       rectifier       1
C1                      CPOL-USCT3216     CT3216     rcl             1
C2       0.1uF          C_0805            C0805      rc-master       1
C3       0.1uF          C_0805            C0805      rc-master       1
C4       0.1uF          C_0805            C0805      rc-master       1
C5       470nF          C_0805            C0805      rc-master       1
C6       0.33uF         CPOL-USB/3528-21R B/3528-21R rcl             1
C7       22pF           C_0805            C0805      rc-master       1
C8       22pF           C_0805            C0805      rc-master       1
C9                      CPOL-USCT3216     CT3216     rcl             1
C10                     CPOL-USCT3216     CT3216     rcl             1
D1       BAT64_05       DIODE-2AC|CASOT23 SOT23      diode           1
D2                      D-SMB             SMB        semicon-smd-ipc 1
D3                      D-SMB             SMB        semicon-smd-ipc 1
J1                      PN61729           PN61729    con-berg        1
J2                      MA04-1            MA04-1     con-lstb        1
J3                      MA06-1            MA06-1     con-lstb        1
J4                      MA06-1            MA06-1     con-lstb        1
J5                      MA05-1            MA05-1     con-lstb        1
J6       PINHDR2        PINHDR2           1X02       dongle          1
J7       PINHDR2        PINHDR2           1X02       dongle          1
J8       PINHDR2        PINHDR2           1X02       dongle          1
J9                      MA06-1            MA06-1     con-lstb        1
J10      DC21P          DC21P             DCSKTP     dcsocket        1
J11                     MA04-1            MA04-1     con-lstb        1
L1       FB_0805        FB_0805           L0805      rc-master       1
L2       FB_0805        FB_0805           L0805      rc-master       1
R1       0R             R_0805            R0805      rc-master       1
R2       DNF            R_0805            R0805      rc-master       1
R3       22R            R_0805            R0805      rc-master       1
R4       22R            R_0805            R0805      rc-master       1
R5       470R           R_0805            R0805      rc-master       1
R6       470R           R_0805            R0805      rc-master       1
R7       470R           R_0805            R0805      rc-master       1
R8       470R           R_0805            R0805      rc-master       1
R9       470R           R_0805            R0805      rc-master       1
R10      470R           R_0805            R0805      rc-master       1
R11      1K             R_0805            R0805      rc-master       1
R12      1K             R_0805            R0805      rc-master       1
R13      1K             R_0805            R0805      rc-master       1
R14      10K            R_0805            R0805      rc-master       1
R15      10K            R_0805            R0805      rc-master       1
R16      10K            R_0805            R0805      rc-master       1
R17      4.7K?          R_0805            R0805      rc-master       1
R18      10K            R_0805            R0805      rc-master       1
R19      10K            R_0805            R0805      rc-master       1
R20      10K            R_0805            R0805      rc-master       1
R21      10K            R_0805            R0805      rc-master       1
R22      10K            R_0805            R0805      rc-master       1
R23      10K            R_0805            R0805      rc-master       1
R24      10K            R_0805            R0805      rc-master       1
R25      0R             R_0805            R0805      rc-master       1
R26      DNF            R_0805            R0805      rc-master       1
R27      10K            R_0805            R0805      rc-master       1
R28      10K            R_0805            R0805      rc-master       1
R29      47K            R_0805            R0805      rc-master       1
U1       PIC18F4550PT   PIC18F4550PT      PQFP-44    dongle          1
U2       LM324D         LM324D            SO14       linear          1
U3       L78MXXCDT      L78MXXCDT         DPACK_3    dongle          1
U4                      L293E             DIL16      texas           1
Y1       4MHz           XTAL/S            QS         special         1

Nov 20, 2008. 4:05 PMGeorge1024 says:
My attempt at making one has failed...the hard drive I'm using only has 3 wires, therefore only 2 outputs to measure. Regardless of the direction the platters are spinning in, the sequence of the rising edges will always be A-B-A-B-A-B-A-B. Back to the drawing board...
Nov 21, 2008. 5:39 AMpelrun says:
You only need two signals, the third is redundant (it's just an inverted copy of one of the others).

Look up "quadrature encoding" for more details, but essentially it doesn't go A-B-A-B, but A-AB-B-None-A-AB-B-None, and *that* pattern lets you determine direction. Look at the first two traces in the image in Step 5, you can see the 4 distinct states.
1-40 of 116next »

Pro

Get More Out of Instructables

Already have an Account?

close

All Steps Viewing
View all steps of an Instructable on the same page when you're a Pro Member.

Upgrade to Pro today!
29
Followers
1
Author:nvillar