Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 4

Comments section under main title:

--------------
Franz said...
Hi User Abuser,
I found something wrong in your article. Surely, there's a curly brace out of
place.
Then, I think color referring to coils are not exact, may be.
I recycled a m42sp 4np motor from a scanner and my colors are these:

Red = Common
Yellow = Coil 1
Orange = Coil 2
Brown = Coil 3
Black = Coil 4

With this configuration, and the correction of your code, the gear spin. Using your
conf I had to put wire of pin2 to hole 10 on arduino, and pin3 to hole 9.

Hope this help, and hope I do right because I don't study electonics but earth
geology =)

------------------
paolo percds said...
Hi, i have made a similar project with M35SP-9 Mitsumi
http://www.youtube.com/watch?v=oLaTRkZNtNE

Main title:

Mine was found on a AVEc scanner, with a SCSI interface. Due to this aging
interface and its impossibility to use it on other more modern systems, I decided
to take it apart and salvage parts.

AFter some screws, two interesting things are available, the main board and the
stepper motor in charge of moving the scanner itself.

The board itself can be used to recover some a voltage regulators, caps, coils, smd
components, dip switches and the darlington driver, however is a Surface Mount
chip, making it hard to use on Protoboards. In adition, a heatsink is available and
some fancy bios. The Imaging chip and the SCSI chips have no documentation so is
better to ignore their existence.

For the motor, a set of bands and gears are available, which can be immediately
used for mu future 3D printer. Getting back to the motor, it isa unipolar stepper
with a 2 2 phase excitation, meaning that both coils are needed to turn the motor,
instead of more simple ones, where one coil at a time is required.

General information about steppers can be found here:


http://homepage.cs.uiowa.edu/~jones/step/circuits.html

Details about the pase excitations can be found on


http://www.societyofrobots.com/member_tutorials/node/28
and the used sequence is presented here...
2-2 Phase Excitation
This mode requires more power, but it also offes more torque than 1-1 Excitation. 2
coils are charged at a time
Step number 1a 1b 2a 2b
1 1 0 0 1
2 1 0 1 0
3 0 1 1 0
4 0 1 0 1
5 1 0 0 1

The stepper is a fire wire, and as such is not possible to use the multimeter to
find out the coils, however is possible to find out applying voltage on its pins.

Extracting from the mentioned page: "Identifying the leads of Unipolar stepper
motor.txt"

Five wire motors:Measure the resistance between all pairs of wires. One wire will
read about one half the resistance to all other wires when compared to the
resistance between other pairs. This wire is the common wire. No wires are joined
in this case.

Based on the mentioned tests, thepinout is the following


1 Black Coil4
A12 Brown Coil2
A23 Orange Coil3
B14 Yellow Coil1
B25 RED VCC

Finally, a ULN2003APG driver is used to connect the stepper to the arduino, and
feed it with 12 volts.
Used pins are pin 8,9,10,11

The used code used to drive the motor is quite simple.

int motorPin1 = 8;
int motorPin2 = 9;
int motorPin3 = 10;
int motorPin4 = 11;
int delayTime = 10;

void setup() {
Serial.begin(9600);
pinMode(motorPin1, OUTPUT);//coil1
pinMode(motorPin2, OUTPUT);//coil1
pinMode(motorPin3, OUTPUT);//coil2
pinMode(motorPin4, OUTPUT);//coil2
}

void loop(){
for(int i = 0 ; i < 100; i++)
phaseTestFwd();
for(int i = 0 ; i < 100; i++)
phaseTestBack();
}
}

//mitsumi servo
void phaseTestFwd() {
Serial.println("1");
digitalWrite(motorPin1, HIGH);//1
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);//2
delay(delayTime);

Serial.println("2");
digitalWrite(motorPin1, HIGH);//2
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);//1
digitalWrite(motorPin4, LOW);
delay(delayTime);

Serial.println("3");
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);//1
digitalWrite(motorPin3, HIGH);//2
digitalWrite(motorPin4, LOW);
delay(delayTime);

Serial.println("4");
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);//2
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);//1
delay(delayTime);

}
void phaseTestBack() {
Serial.println("8");
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);//2
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);//1
delay(delayTime);

Serial.println("7");
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);//2
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);//1
delay(delayTime);

Serial.println("6");
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);//2
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);//1
delay(delayTime);

Serial.println("5");
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);//2
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);//1
delay(delayTime);

Cheers

UB

You might also like