Arduino HDD Motor Driving
Old-style hard drives (not SSDs) use very good brushless BLDC motors. And it often happens that the propeller itself has burned out, but the engine works fine and it is a pity to throw it out. Brushless motors are more durable than conventional brushed motors because they do not have a commutator – brush commutator.
Arduino HDD Motor Driving
The Arduino outputs power the TIP122 transistors and drive the three phases of the motor. Each phase is controlled by its own microcircuit contact.
Usually a hard disk motor has 3 phases + 1 common = 3 phases with 4 wires. Use a multimeter to check the resistance at these four points of the measurement circuit. Common terminal + coil = 1 ohm. Coil + coil = 2 ohms.
Arduino motor control circuit
To remove the motor from the HDD case, simply unscrew all the screws. Some screws may be hidden under the label.
Then solder the extension wires. The connection to the Arduino is done according to the following scheme:
You need 3 digital contacts to send a signal, here are pins 2, 3, 4.
- Controller components
- 3 pieces resistors 1 kOhm
- 3 transistors TIP122
- 3 diodes 1N4004
- 1 battery with voltage from 5 to 12 V
Connect everything as shown in the pictures.
There is a 22×8 bearing in the middle – it is not from a hard drive, it is just for comparison.
Arduino Source Code
The program can be like this, or you can develop your own, for example, with a smooth stop-start.
const int phase1pin = 2;
const int phase2pin = 3;
const int phase3pin = 4;
const int delayTime = 6000; // microsecs
void setup () {
Serial.begin (9600);
pinMode (phase1pin, OUTPUT);
pinMode (phase2pin, OUTPUT);
pinMode (phase3pin, OUTPUT);
}
void loop () {
switchStep (1);
switchStep (2);
switchStep (3);
}
void switchStep (int stage) {
switch (stage) {
case 1:
digitalWrite (phase1pin, HIGH);
digitalWrite (phase2pin, LOW);
digitalWrite (phase3pin, LOW);
delayMicroseconds (delayTime);
break;
case 2:
digitalWrite (phase1pin, LOW);
digitalWrite (phase2pin, HIGH);
digitalWrite (phase3pin, LOW);
delayMicroseconds (delayTime);
break;
case 3:
digitalWrite (phase1pin, LOW);
digitalWrite (phase2pin, LOW);
digitalWrite (phase3pin, HIGH);
delayMicroseconds (delayTime);
break; }
}
For this motor, a voltage of 3.7 x 3 = 11.1 V was used from a 5400 rpm hard drive.Minimum cycle time = 1.3 ms, that is, it takes about 1.3 x 2.25 x 2 = 5. 85 ms for 1 rev. You can change the values in the program.
Source: https://radioskot.ru