I've been struggling with this for a bit, and decided it was time to seek help.
I'm making an HDD POV (persistence of vision) clock, and have a number of scrap hard drives to choose from. I thought I picked one that would spin continuously when powered on, but after removing the read/write components, found out that was not the case. It spins up, slows down, spins up, slows down, then stops. Total spin time is about 10-20 seconds.
The thing is, I had set up the LEDs for this hard drive already, and I'm committed to making it work. So I swapped out the HDD board with another, but that didn't really help.
Finally, I decided to try and drive the motor with code, and hooked up the phases to some 5V logic MOSFETs. I basically followed this guys' video:
and modified his code a bit (here's his code):
http://bartvenneker.nl/schemas/Code_arduino_hdd.txt
After a lot of tweaking, I got the code to spin the motor up to maybe 3-5,000 RPM. The problem is, at these speeds (or even lower speeds) continuous spinning is very dependent upon the timings of the code. The motor must be gradually accelerated up to speed (which I have as a hard-coded ramp in the code right now), and at high speeds the delays are 1ms or less. I think this means there's really no room for any other code if I want to run at these speeds.
That brings me to my question(s):
- Is there any simple way to modify an HDD board so that it runs the motor continuously?
- If not, should I write the motor code for a dedicated chip (I have some ATiny85s on hand)
- Better ideas? Hoping to avoid buying a driver chip (would rather do option 2).
Thanks in advance!