# Stepper motor maximum rpm calculation

hello all
i am using 42BYGHW811 and DRV8825 nema17 bipolar stepper motor.in datasheet its says that maximum rpm 600 but with this calculator Stepper Motor Maximum Speed and Power Calculator maximum rpm shows 400.am using 12v power supply.where is the mistake anybody can plz help me to find out this

Trust the data sheet.

In general, higher power supply voltages allow higher step rates.

I'd trust the calculator. The datasheet has some assumptions that they're not telling you, like perhaps the "12V" test was actually running at 13.8V because that's the voltage you get in a "12V" automotive system.

thank you guys for your replay but problem is the am using this for controlling the speed

``````#include <Stepper.h>

const int stepsPerRevolution = 200;  // change this to fit the number of steps per revolution

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

int stepCount = 0;  // number of steps the motor has taken

void setup() {
// nothing to do inside the setup
}

void loop() {
// map it to a range from 0 to 100:
int motorSpeed = map(sensorReading, 0, 1023, 0, 600);
// set the motor speed:
if (motorSpeed > 0) {
myStepper.setSpeed(motorSpeed);

myStepper.step(stepsPerRevolution);
}
}
``````

when i tune the potentiometer the speed goes to the maximum.when i again back to the minimum this the speed is minimum.but when i again go for the maximum or any other point in the middle the motor act like as its still in low speed after 1/2 min its show his real speed .but why?

Because you commanded it to turn for one full revolution at the slowest speed. You used a blocking function which must wait until the number of steps has completed before it returns control to the rest of your program.

The AccelStepper.h library might be better for this.

thank you so much morgan.do i need anything in code or just use this library which u recomanded

Morgans i just want a system where speed will be change by potentiometer but whatever the speed everytime 200 steps/rev will be constant.for this i need to change anything in this code or just using the
AccelStepper.h library .

Try the Accelstepper library - it is much more comprehensive.

Or just write your own code similar to the second example in this Simple Stepper Code

If you want high speeds use a high voltage power supply. I think the DRV8825 can accept 35 volts. Just make sure to set the current limit to protect your motor.

Thank you Robin sir for your kind reply.sir i noticed your code .here you controll the speed with the delay.but sir i want a system where i controll the speed with the potentiometer and 200 steps/rev.

Hi,

I know this might be a simple answer, but maybe just test it out...?

For example, get the Arduino to test out various speeds on the motor while checking to see whether the motor is actually doing something. Then, you would know FOR SURE what the top speed is, because (for example) it started not working at about ___ RPM.

I don't know much about stepper motors, but you could probably work out a way to do this while not damaging the motor or anything.

200 steps is a property of the motor. If you want it to do a full revolution at a specified speed then you might use that, but you never seem to want to stop, so why does it matter that it only changes speed once per revolution, in the same place?

image_uiu12:
Thank you Robin sir for your kind reply.sir i noticed your code .here you controll the speed with the delay.

The second example (the one I recommended) does not use delay()

but sir i want a system where i controll the speed with the potentiometer and 200 steps/rev.

All you need to do is use the input from your potentiometer to vary the value in the variable millisBetweenSteps

...R