I'm working on trying to control a hard drive with an Arduino Uno, but I'm having trouble with the power supply. From what I know, both the Molex Mate-n-Lok and the new SATA connectors both have 2 grounds, a 5V and a 12V power in. I'm wondering what the purpose of the 12V power supply is. I suspect it's used to drive the motor but I'm not sure.

  • Which hard drive? Are you planning to use it as a mechanical device, or to actually read/write to the disk?
    – Nick Gammon
    Aug 28 '16 at 22:35
  • @NickGammon Any ATA Compliant HDD, I plan to use the hdd as an hdd, but currently am having issues with power supply. At the moment, I'm working with an IDE, but may move to a SATA if I don't have enough pins Aug 28 '16 at 22:50
  • 3
    The hard drive lists what voltages and currents it needs on the casing. Aug 28 '16 at 23:09
  • 1
    This would depend on the drive. Since you won't state a specific one, it is off topic as too broad. But regardless, it is off topic because this is the Arduino site, not the hard disk drive site. Also, you aren't going to talk SATA with an Arduino. But you can get away with using only 8 of the 16 bits on the IDE bus, if you are willing to waste half the capacity, as the commands are only 8-bit. For anything practical, SD cards will probably serve you better, if not you should probably look at something better than an Arduino. Aug 29 '16 at 5:02
  • 1
    I would love to see you try and generate a 1.5Gbps LVDS signal from an Arduino... and that's just for the old-fashioned SATA-1. It's 6Gbps these days...
    – Majenko
    Aug 29 '16 at 11:22

Judging by my old copy of "Upgrading and repairing PCs" - which I found a quote for on Google Books - the 12V supply is for the spindle motor, and it says:

Spindle motors, particularly on the larger form-factor drivers, can consume a great deal of 12V power.

  • Thanks, answered the question clearly and succinctly. Without casting aspersions on the idea itself Aug 29 '16 at 23:18

3.5" hard drives require 12V and 5V for the motor and logic respectively. SATA ones may also require 3.3V for the logic. Most smaller laptop drives (2.5") only require 5V and 3.3V. Some 2.5" drives also require 12V.

You will not be able to interface a SATA hard drive to an Arduino without some kind of SATA hard drive controller, which you could possibly build using a fast FPGA (in which case why would you bother with an Arduino?). For SATA-I (way out of date now) you need to generate a 1.5Gbps LVDS (Low-Voltage Differential Signal) data stream. For SATA-3.2 that is now 16Gbps. Impossible on an Arduino.

PATA (Parallel ATA) is more realistic, although you need a lot of pins since it is a 16-bit parallel interface. Timing is less critical since it is synchronous with the read / write strobes.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.