Make a fun spiral drawing robot out of an old floppy drive and arduino!

Click here for the video!

Stuart and I wanted to design a project that would be a good introduction to upcycling electronics, robotics, arduino, art with maths/code. We came up with a drawing robot based on an old floppy drive.


Step 1: take apart the floppy

We need to get at the insides, so take off the lid and have a look inside. We need to remove the loading tray which can often be lifted out when it's in the eject position. Others have a latch or springs that need to be released. Have a look and work out what works for your drive!

Remove the top of the read/write head and put the screws back in so you don't lose them!

Also, now is a good time to make the drive think that a floppy is loaded (otherwise it won't spin up the platter). So use some bluetack or glue down one of the microswitches on the left hand side. You could also bypass one by removing one and soldering a wire between the contacts.

Keep hold of all the small screws and springs because they'll be useful in other projects!
I'm having a few problems with the code. I've downloaded both files and add the timer to the floppyDrawBot sketch, but I'm getting the error &quot; 'PD5' was not declared in this scope&quot;.<br><br>Any ideas?
try changing PD5 for PORTD5
Thank you, all works fine now!<br>Such a good tutorial!
I am very very interested in adjusting the spindle motor. I tried measuring the wires on the 'spindle motor pcb' going to the larger pcb and I wasn't sure which configuration I had to adjust my voltmeter to. I didn't find any signal amongst the pins, but one of them sent the spindle motor spinning when grounded (pin 4 from the left) but I wasn't able to do anything useful. I think I was close but... no cigar.<br><br>(I want this motor adjustment for my floppy tape delay project!)
does the platter spin up when you ask it to over the interface? If not then you need to either pin down one of the disk detect microswitches, or fake it by forcing the correct i/o line high or low. <br><br>When you can get the disk to spin up reliably, then look for the control signal. If you don't have a scope, what I'd try is taking a 2k resistor and connecting each of the lines via the resistor to ground. When you find a line that stops the platter moving, you have a candidate. <br><br>Check the rest to be sure, because one of the lines will probably be a signal to start/stop the motor.<br><br>Another way to find the line is by looking up the driver chip and then tracing the tracks.<br><br>Hope that helps, and let us know how you get on!<br><br>Matt
as for now, the spindle motor is completely jammed - it was an issue from the beginning acutally but not that servere - so I'll be building one without platter control first and maybe mod one with a motor knob later. <br><br>but thanks so much for your help and advice! I think finding a datasheet for the driver IC is the way forward! to be completely sure.<br><br>Best,<br>Dal
Very cool. You can probably get some interesting patterns by moving the read/write head back and forth "rapidly". Or, at least, as "rapidly" as it will let you. I have a few floppy disk drives lying around in close to an identical state. Maybe if I get bored enough one day I will attach the marker arm and give that a try.
Yep, this would be great! Problem is that the platter rotates at 300rpm, (5 per sec), and the arm takes about 0.3secs to do a full travel. So we need to slow down the speed somehow... Gearbox? Hack the brushless motor?
What if you were to attach a rather small gear or pulley, like around the size of a quarter, to the spinning motor and use it to drive the platter of an old turntable or outer diameter of a CD drive using a rubber band. The smaller the driving pulley compared to the platter, the slower the platter will move.
good idea!
That's a very good point. I had not considered that. More to think about...
So nice to finally see a detailed guide for hooking up the floppy with arduino - but I'm not too strong in coding and I keep getting fail messages from the arduino software.<br><br>&quot;SetupTimer was not declared in this scope&quot; :/
it's because you haven't got the timer.pde file in the project as well.<br><br>Download the timer.pde from <br>https://github.com/mattvenn/arduinosketchbook/blob/master/floppyDrawBot/timer.pde<br><br>Then in the sketch menu, choose 'add file' and choose the timer.pde file. Then it should work! Let me know!
Great! Now I know what to do with my old record player!<br>BTW, if you make the position of the arm dependant of say pressure or temperature (through your Arduino), you've just made an old fashioned chart recorder!!
great idea! we just need to slow down the platter, at the moment it spins at 300rpm! So probably need a gearbox... Any ideas?
don't know, but would a resistor work?
potentiometer will maybe work?? then you nac choose the RPM as you like
don't think so. It's a brushless DC motor that is designed to operate very precisely at 300 rpm. It may be possible to hack the controller circuitry so that it spins it at a different speed. I'll check the driver chip and see if I can find a datasheet on it next time I'm at the hackspace.
we worked out how to get the platter to spin much slower by providing a slower clock to the driver chip! We'll update the instructable soon with details...
Good work chaps, especially the author. <br>Following on from Randofo's idea, if the arm could be made to move at a speed which was very slightly out of synch. with the rotating disc, beautiful patterns could be produced, similar to the old Spirograph idea. <br>An interesting idea, if anyone is clever enough, would be to connect the floppy drive to it's usual slot on the computer, then write to it so that the arm position would move differently to what it does now.
We've now done this by slowing the platter down. Check the last step of the instructable. <br><br>I think what you suggest would be possible by writing a new floppydrawbot driver. Personally I like the fact that it doesn't depend on an existing computer!<br><br>What I'd like to see is someone working out how to get the index pulse into the Arduino, so the pen arm could be synchronised with the rotations of the platter...
neat project but it only makes target rings!
It's an interesting project, and a good use for otherwise useless old floppy<br>drives. And something similar might work for an old CDR drive, too.<br><br>But, a question. Are you sure that the 'duino can supply enough juice to<br>drive the floppy motor? I'd guess that the floppy might need as much as<br>500 ma, and that's straining the 'duino a bit. Maybe connecting this project<br>to a motor shield, or with a power transistor buffer would be a good idea.
Thanks! Yes I think a CDR drive could work too.<br><br>I did check the power stuff, but I omitted it from the instructable; I've added it now. Essentially I ran it through its paces with a multimeter and a PSU: maximum power draw was 300mA. USB limit (and the polyfuse on the Arduino board) is 500mA, so I think it should be fine. <br><br>And, I've had it running for quite a while and made lots of pictures with it all running from the Arduino direct.
Not so much in to the art of it, but the learning about interfacing to the floppy was very valuable. Cool.
problems with instructable; won't show video or extra steps when not logged in!<br>Here is a link to the video: http://www.youtube.com/watch?v=H-RbDxHXhDE

About This Instructable


92 favorites


Bio: I'm an artist/engineer excited about making cool stuff!
More by matthewvenn: Push fit LED moodlamp wireless organ pipe doorbell floppy drawbot
Add instructable to: