Go Down

Topic: 10 wire stepper motor. Need help. (Read 2459 times) previous topic - next topic

3D_Dean

I recently purchased a stepper motor from local surplus store. But it has 10 wires. It was made by seagate, i would assume for a hard drive. Will it work with a L293D driver?
I have tried looking it up but cant find anything. So any information on it would be appreciated. Then any one know of any Video explaining how to set up a step motor.



If it helps
p/n number is
72060-44054173-001

TomGeorge

Hi,

Can you post a picture of the stepper please, some early CNC machines had mutli-phase , as in more than 4 phase motors.

Tom..... :)
Everything runs on smoke, let the smoke out, it stops running....

3D_Dean

https://drive.google.com/folderview?id=0B9niXtnpD26wTHh4d1M1azItQVE&usp=sharing
Images

TomGeorge

Hi,
Seagate stepper, possibly from a HD.
Have you used a DDM and worked out how the windings are configured to the plug/wire colours?

Tom.... :)
Everything runs on smoke, let the smoke out, it stops running....

MarkT

#4
Sep 20, 2015, 02:52 pm Last Edit: Sep 20, 2015, 02:52 pm by MarkT
It's probably brushless with hall sensors or an encoder with that many wires.
[ I will NOT respond to personal messages, I WILL delete them, use the forum please ]

3D_Dean

How do i determine how the winding's are configured using a digital multi-meter. (That is what a DDM is right and you don't mean discount dividend model)

Chagrin

How do i determine how the winding's are configured using a digital multi-meter.
Set the meter to resistance and look for continuity/resistance between the pins. Build a 10 by 10 chart and write down the resistance between pins when you find continuity. Both a brushless and stepper motor will have pairs of wires with continuity - those will be the coils.

MarkT suggested it was a brushless motor and that would be my guess too. If it's a stepper motor you will feel a somewhat jerky motion when you spin it slowly with your fingers.

3D_Dean

The wires that match each other
Blue-brown
White-Green
Black-Yellow
Grey-Orange
Purple-Red
All with the resistance of 19.9

Then the motor does not turn smoothly when turned slowly

jremington

It is probably a five-phase stepping motor, with two wires for each coil. If so, you will need a 5-phase driver or 5 half-bridges. See  http://homepage.cs.uiowa.edu/~jones/step/types.html#multiphase

MarkT

Its more than probably a 5-phase motor, it is a 5 phase motor!  Not so easy to drive, 5 half-H-bridges
are needed at a minimum for full stepping, or as this is 10 wire rather than 5 wire there is the option
of using 5 full H-bridges with chopper mode to get microstepping resolution.  I don't know if there are
any chips that do 5-phase driving built in though.
[ I will NOT respond to personal messages, I WILL delete them, use the forum please ]

bonsainick

#10
Mar 06, 2016, 08:33 pm Last Edit: Mar 06, 2016, 09:45 pm by bonsainick
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.

https://i.imgur.com/8kqpxF1.png




Code: [Select]


/* 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);

}

Go Up