Hoi guys,
i found this stepper motor in my waste-box and want to connect them to an UNO.
After reading some parts i see, that a driver like the ULN2003APG is necessary (which i have to buy).
But i still have some SN754410NE Quad Half Bridge 36V/1A - can i use this one instead the ULN2003... ?
It's a 5 wire stepper, the pinout is known (a datasheet is available in the net).
1 Black Coil4
A12 Brown Coil 2
A23 Orange Coil 3
B14 Yellow Coil 1
B25 RED VCC
It is marked as described, additional a lot-number.
It uses up to 24 V=, but a power suplly from an old printer makes that voltage
You should be able to use a 754410. Connect the red wire to ground (not Vcc) and connect the other 4 wires to the 754410 Y outputs. Connect both EN inputs of the chip to 5V (or, if you want to be able to power the motor down, to an Arduino output pin, set to HIGH to drive the stepper and LOW to power it down). Connect the four A inputs of the chip to Arduino outputs, and drive them just as if it was a ULN2003.
Measure the resistance of a winding first, to check that you won't exceed the 1.1A rating of the chip when you put 24V across the winding. If necessary, use a lower supply voltage.
I now wired it like dc42 suggested - here is the wiring for the MEGA Pins:
A8 = 1A
A9 = 2A
A10 = 3A
A11 = 4A
I am using this simple code sample:
#include <Stepper.h>
int pinI1=A8;//define I1 interface
int pinI2=A11;//define I2 interface
//7.5 deg / step = 48 steps per revolution
//MODIFIED: 3.75 deg / step = 96 steps per revolution
const int stepsPerRevolution = 96;
// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, A8,A11,A9,A10);
void setup() {
// set the speed at 1rpm:
myStepper.setSpeed(1);
// initialize the serial port:
Serial.begin(9600);
pinMode(A9,OUTPUT);
pinMode(A10,OUTPUT);
digitalWrite(A9,HIGH);
digitalWrite(A10,HIGH);
digitalWrite(pinI2,HIGH);//turn DC Motor A move clockwise
digitalWrite(pinI1,LOW);
}
void loop() {
// step one revolution in one direction:
Serial.println("clockwise");
myStepper.step(100);
delay(1000);
//step one revolution in the other direction:
Serial.println("counterclockwise");
myStepper.step(-100);
delay(1000);
}
I tried out from 9 over 12 to 19,2 V Input, but the motor wont move - i can "feel" that the motor blocks (maybe when trying to turn) and relases, if i made the delay larger.
But before trying higher voltages, someone may have a look on the wiring - don't really undertsnad (yet) which functions on which "coil" have to work
Some stepping motors can be too hot to touch and still be within normal operating parameters. Consult the data sheet for expected temperature limits.
If the motor steps once forward and once back, that can be a symptom of incorrectly wired motor leads. Keep swapping pairs of leads until the motor functions correctly (there are 24 combinations of which 8 will work). ALWAYS turn off the power before disconnecting motor wires or you may destroy the motor driver.
I am using normal 5V for the driver and different (at leat 9 V) for the motor.
The script seems to work - i changed the 100 (seems to be the among of steps) to 1, and now the motor isnt going hot any longer.
Infomrations about the max.Temp.isnt available in the datasheet.
Only when i want to increase the steps (maybe 10) it still steps only 1 F / 1 b and is getting hot.
i dont really like to test the 24 different possibilieties 8), maybe someone has a suggestion
just bought this one for a few bucks, but leasts some weeks from Cn to DE
A.R.Ty:
I now wired it like dc42 suggested - here is the wiring for the MEGA Pins:
A8 = 1A
A9 = 2A
A10 = 3A
A11 = 4A
I tried out from 9 over 12 to 19,2 V Input, but the motor wont move - i can "feel" that the motor blocks (maybe when trying to turn) and relases, if i made the delay larger.
What Arduino are you using? [EDIT: sounds like you are using a Mega].
How have you wired the Arduino to the 754410?
Why are you setting THREE of the output pins high in setup? You should only set 1 pin or 2 adjacent pins high at a time.
I wired the motor cables to the 754410 like in this picture - as written, with this wiring the motor works and reacts also on the SPEED-Parameter. But makes still only 1 Step fore, 1 back.
And I mentioned, that the 3. Pin is for the PWM and has no function yet - its enough to turn the motor with the speed parameter.
My multimeter didnt work since saturday, i have to buy a new one, so that i cant measure the res of the wiring.
Yo Guys,
found the solution that works like a charm - with wiring scheme in the post before and the follwoing code (on an UNO):
#include <Stepper.h>
int pinI1=A0;//define I1 interface
//int pinI2=A11;//define I2 interface
int pinI2=A1;//define I2 interface
//7.5 deg / step = 48 steps per revolution
const int stepsPerRevolution = 96;
// initialize the stepper library on pins 8 through 11:
//Stepper myStepper(stepsPerRevolution, A8,A11,A9,A10);
Stepper myStepper(stepsPerRevolution, A0,A1,A2,A3);
void setup() {
// set the speed at 1rpm:
myStepper.setSpeed(20);
// initialize the serial port:
Serial.begin(9600);
// pinMode(A9,OUTPUT);
// pinMode(A10,OUTPUT);
pinMode(A2,OUTPUT);
pinMode(A3,OUTPUT);
digitalWrite(A3,HIGH);
digitalWrite(A2,HIGH);
digitalWrite(pinI2,HIGH);//turn DC Motor A move clockwise
digitalWrite(pinI1,LOW);
}
void loop() {
// step one revolution in one direction:
Serial.println("clockwise");
myStepper.step(150);
delay(1000);
//step one revolution in the other direction:
Serial.println("counterclockwise");
myStepper.step(-150);
delay(1000);
}