I bought the same motor, also at the surplus store. I got it working through troubleshooting. My code is basic and not particularly useful. I hope this helps someone else searching the part number because there isn't anything on it.
Here is the wiring diagram.
/* Simple code to turn the Seagate 72062-440 (5 phase stepper motor) using a ULN2003 Darlington Array.
you could use 10 transistors or some H bridges. I used the ULN2003 because I had one.
Im not the best coder in the word. I was able to troubleshoot the motor
and figure out the phase rotation. Hopefully someone can figure out something more usfull to do with it.
See attached wiring diagram. The colors in the wiring diagram correspond to the motor lead wires. */
int mw1 = 2; //Sets the 5 Motor Winding phases to Arduino pins. pick your own if you don't like these.
int mw2 = 4; //The order that the winding get set HIGH and LOW however is important.
int mw3 = 6;
int mw4 = 8;
int mw5 = 10;
/*
mw1 ++-----+++++-----++
mw2 -+++++-----+++++---
mw3 -----+++++-----++++
mw4 ++++-----+++++-----
mw5 ---+++++-----+++++-
^ time --->
|each vertical row is the firing order between delays.
This will rotate the motor counter clockwise and correspond to the CounterClockwise() function
Thank you Jones http://homepage.cs.uiowa.edu/~jones/step/types.html
I plan to experiment with some kind of counter mechanism to be able to control each step
instead of looping 10 steps at a time. But like I said, I'm not good at code. */
int mSpeed = 1000; // Motor Speed. number between 1 (fastest) and 32767 (slowest).
//it can go slower by changing from "delayMicroseconds" to "delay" in the functions.
//anythig faster than 300 is too fast to start the motor.
//I want to experiment with acceleration to get it going full speed.
void setup() {
// Set the control pins to OUTPUT.
pinMode (mw1, OUTPUT);
pinMode (mw2, OUTPUT);
pinMode (mw3, OUTPUT);
pinMode (mw4, OUTPUT);
pinMode (mw5, OUTPUT);
}
void loop() {
for (int i = 0; i <= (10 * 53); i++) //Turns the motor 10 times, stops for a second then counterclockwise 10 turns
Clockwise(); //53 times through each loop seems to turn the motor 360 degrees.
delay (1000); //instead of 10, .5 can turn it 180 degrees and .25 can turn it 90 degrees.
for ( int i = 0; i <= (10 * 53); i++) //Rip me a new one internet. tell me why this sucks. Thanks.
CounterClockwise();
delay (1000);
}
//**********************************************
void Clockwise() {
digitalWrite (mw1, HIGH);
digitalWrite (mw2, LOW);
digitalWrite (mw3, HIGH);
digitalWrite (mw4, HIGH);
digitalWrite (mw5, LOW);
delayMicroseconds (mSpeed);
digitalWrite (mw1, HIGH);
digitalWrite (mw2, LOW);
digitalWrite (mw3, HIGH);
digitalWrite (mw4, LOW);
digitalWrite (mw5, LOW);
delayMicroseconds (mSpeed);
digitalWrite (mw1, HIGH);
digitalWrite (mw2, LOW);
digitalWrite (mw3, HIGH);
digitalWrite (mw4, LOW);
digitalWrite (mw5, HIGH);
delayMicroseconds (mSpeed);
digitalWrite (mw1, LOW);
digitalWrite (mw2, LOW);
digitalWrite (mw3, HIGH);
digitalWrite (mw4, LOW);
digitalWrite (mw5, HIGH);
delayMicroseconds (mSpeed);
digitalWrite (mw1, LOW);
digitalWrite (mw2, HIGH);
digitalWrite (mw3, HIGH);
digitalWrite (mw4, LOW);
digitalWrite (mw5, HIGH);
delayMicroseconds (mSpeed);
digitalWrite (mw1, LOW);
digitalWrite (mw2, HIGH);
digitalWrite (mw3, LOW);
digitalWrite (mw4, LOW);
digitalWrite (mw5, HIGH);
delayMicroseconds (mSpeed);
digitalWrite (mw1, LOW);
digitalWrite (mw2, HIGH);
digitalWrite (mw3, LOW);
digitalWrite (mw4, HIGH);
digitalWrite (mw5, HIGH);
delayMicroseconds (mSpeed);
digitalWrite (mw1, LOW);
digitalWrite (mw2, HIGH);
digitalWrite (mw3, LOW);
digitalWrite (mw4, HIGH);
digitalWrite (mw5, LOW);
delayMicroseconds (mSpeed);
digitalWrite (mw1, HIGH);
digitalWrite (mw2, HIGH);
digitalWrite (mw3, LOW);
digitalWrite (mw4, HIGH);
digitalWrite (mw5, LOW);
delayMicroseconds (mSpeed);
digitalWrite (mw1, HIGH);
digitalWrite (mw2, LOW);
digitalWrite (mw3, LOW);
digitalWrite (mw4, HIGH);
digitalWrite (mw5, LOW);
delayMicroseconds (mSpeed);
}
//*****************************************************************************
void CounterClockwise() {
digitalWrite (mw1, HIGH);
digitalWrite (mw2, LOW);
digitalWrite (mw3, LOW);
digitalWrite (mw4, HIGH);
digitalWrite (mw5, LOW);
delayMicroseconds (mSpeed);
digitalWrite (mw1, HIGH);
digitalWrite (mw2, HIGH);
digitalWrite (mw3, LOW);
digitalWrite (mw4, HIGH);
digitalWrite (mw5, LOW);
delayMicroseconds (mSpeed);
digitalWrite (mw1, LOW);
digitalWrite (mw2, HIGH);
digitalWrite (mw3, LOW);
digitalWrite (mw4, HIGH);
digitalWrite (mw5, LOW);
delayMicroseconds (mSpeed);
digitalWrite (mw1, LOW);
digitalWrite (mw2, HIGH);
digitalWrite (mw3, LOW);
digitalWrite (mw4, HIGH);
digitalWrite (mw5, HIGH);
delayMicroseconds (mSpeed);
digitalWrite (mw1, LOW);
digitalWrite (mw2, HIGH);
digitalWrite (mw3, LOW);
digitalWrite (mw4, LOW);
digitalWrite (mw5, HIGH);
delayMicroseconds (mSpeed);
digitalWrite (mw1, LOW);
digitalWrite (mw2, HIGH);
digitalWrite (mw3, HIGH);
digitalWrite (mw4, LOW);
digitalWrite (mw5, HIGH);
delayMicroseconds (mSpeed);
digitalWrite (mw1, LOW);
digitalWrite (mw2, LOW);
digitalWrite (mw3, HIGH);
digitalWrite (mw4, LOW);
digitalWrite (mw5, HIGH);
delayMicroseconds (mSpeed);
digitalWrite (mw1, HIGH);
digitalWrite (mw2, LOW);
digitalWrite (mw3, HIGH);
digitalWrite (mw4, LOW);
digitalWrite (mw5, HIGH);
delayMicroseconds (mSpeed);
digitalWrite (mw1, HIGH);
digitalWrite (mw2, LOW);
digitalWrite (mw3, HIGH);
digitalWrite (mw4, LOW);
digitalWrite (mw5, LOW);
delayMicroseconds (mSpeed);
digitalWrite (mw1, HIGH);
digitalWrite (mw2, LOW);
digitalWrite (mw3, HIGH);
digitalWrite (mw4, HIGH);
digitalWrite (mw5, LOW);
delayMicroseconds (mSpeed);
}