Another Stepper Motor Problem...

Hi All,

I have been attempting to interface an Arduino Nano v3.0 with a PK299-02AA 2-phase stepper motor, but when I apply 24-Volts the unit just sits there vibrating.

The schematic diagram below illustrates the essential components of my setup.

I’ve tried various step sequences, but I believe the correct sequencing for single step excitation should be:

** Step ** ** Coil 4 ** ** Coil 3 ** ** Coil 2 ** ** Coil 1 **
Step 1 [Q1] HIGH LOW LOW LOW
Step 2 [Q2] LOW HIGH LOW LOW
Step 3 [Q3] LOW LOW HIGH LOW
Step 4 [Q4] LOW LOW LOW HIGH

I compared my motor leads with that of the datasheet by measuring resistance and everything looks good.

No Continuity between any combination of wires [1,2,3] to [4,5,6]
3.3-Ohms between 1 and 3
1.7-Ohms between 2,1 and 2,3

3.3-Ohms between 4 and 6
1.7-Ohms between 4,5 and 5,6

I tried two separate code attempts:

  1. The first one uses the standard Stepper.h Library

#include <Stepper.h>

#define STEPS 200

Stepper stepper(STEPS, 2, 3, 4, 5);

void setup()
{
stepper.setSpeed(15);
}

void loop()
{
stepper.step(100);
delay (2000);
stepper.step(-100);
delay (2000);
}

  1. Since I had no luck with the Stepper.h library I tried to reduce the code to the most simple case which could still incrementally rotate the motor.

int motorPin2 = 2;
int motorPin3 = 3;
int motorPin4 = 4;
int motorPin5 = 5;

int delayTime = 500;

void setup() {
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
pinMode(motorPin5, OUTPUT);
}

void loop() {
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
digitalWrite(motorPin5, LOW);
delay(delayTime);

digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
digitalWrite(motorPin5, LOW);
delay(delayTime);

digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
digitalWrite(motorPin5, LOW);
delay(delayTime);

digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
digitalWrite(motorPin5, HIGH);
delay(delayTime);
}

I measured the Gate-to-Source voltage on each MOSFET and both the step sequence and voltages are what I would expect.

I am using a 24-Volt supply capable of supplying 20-Amps.

Things I’ve Tried

  1. Different combination of Step Sequencing

  2. I’ve increased and decreased the current limiting resistor that feeds both center taps.

I think my problem may simply be that I’m simply using the incorrect motor for the job. The datasheet says my motor is a bipolar motor, but I had [perhaps wrongly] assumed that by using the center taps on each coil it would function as a unipolar.

Any Ideas?

Thanks for all your help in advance!

Now THIS would be a good project for the StepGenie chip. Check it out here: http://www.stepgenie.com/.
The chip is only $6.00 and you only need 3 pins from your arduino to control it.

Anyway, You may have the coils hooked up in the wrong sequence. The #2 and #5 wires are obviously your common wires.

Wait! Just looked at your drawing again. Why are you trying to run a 6 volt motor off of 24 volts? :o

So am I correct to assume a Bipolar Stepper Motor with center-taps is functionally equivalent to a Unipolar Stepper Motor ?

Thanks!

EDIT I found the answer to my questions here
http://www.cs.uiowa.edu/~jones/step/types.html#bipolar

"If they are wired in series with a center tap, the result can be used as a low voltage unipolar motor"

So can anyone see what I'm not doing correctly in the above circuit/code?

As the posted above you are feeding the motor far to high voltage.

When used as unipolar it should only be supplied 4.2 Volts according to this datasheet (page 46)

http://www.artisan-scientific.com/info/Oriental_Motor_2_Phase_Stepper_Motor_Datasheet.pdf

Using a supply of 24 V could have damaged it.

Thanks Photo-Worx and MikMo!

Wouldn't my current limiting resistor in series with the +24 Volts feeding the center taps drop that to an acceptable level?

(24-Volts - 4.2-Volts) / 2-amps = 10-Ohms ?