Problem with setting RPM!

I have a unipolar stepper motor 1.8 degree running at 5v. connected to arduino using the uln 2003 as shown in the attachment.
Im using the follwoing code

#include <Stepper.h>

const int stepsPerRevolution = 20;

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8,9,10,11);            

void setup() {
  // set the speed at 60 rpm:
  myStepper.setSpeed(1500);
  // initialize the serial port:
  Serial.begin(9600);
}

void loop() {
  // step one revolution  in one direction:
   Serial.println("clockwise");
  myStepper.step(stepsPerRevolution);
}

i usually run the motor at myStepper.setSpeed(1500) which is the maximum it can go. Today I've tried to run the motor at 1500 but it doesn't! rather the shaft turn a step clockwise and then retains original position and does this as long as the program is running! sometimes it rotates 45 degrees and then stops in its position and the motor vibrates a lot!

I've decreased the rpm and it can run smoothly only at a max of 1000, if i put 1001 the motor stops and vibrates! not only the rpm but also the steps. I guess the max is 200 steps but i can give up to 2M steps in

Stepper myStepper(stepsPerRevolution, 8,9,10,11);

and it runs at the same speed as if its running at 20 steps!

does anybody have any explanation of what is really going on! Im really so desprate now! My project really depends on it and if i cant run the motor at 1500 its all over!

pls any help pls!

regards

Is this right?

const int stepsPerRevolution = 20;

What changed between the time when it would run at "1500" and today?
You forgot to mention how the motor is powered.

We need the datasheet for your motor (or vendor link)

the motor is 17PM-K049U from
http://www.nmbtc.com/motors/part-numbers/Hybrid-Stepper/17PM-K049U/4685

I always use the 5volts pin form the arduino to power the motor and it has always ran at 1500 but today it only vibrates a lot and can only rotate at 1000. moreover I've tested another smaller stepper(28byj-48) with same connections, cables and power source and everything is going ok, but with the other one yesterday 1500 today 1000!

what is happening? any explanation?

It is never a good idea to power a motor from the 5V pin of the Arduino. Even in the rare case that the Arduino can supply the necessary current, the motor generates electrical noise that can damage the Arduino or interfere with its operation.

In your case, the linked motor rated for 1 ampere per winding, so I'm surprised that it even worked once.

Use a separate motor power supply and connect the grounds together.

I would like to see a voltage measurement of the 5V pin while you are running the motor.