Stepper (12V) Speed Range with ULN2003 Driver?

When reviewing stepper motor specs to purchase, there is nothing listed for RPM or speed for the motor.
With my setup, I can only get 18 RPM w/ a 5V 28BYJ-48 stepper and ULN2003 driver controlled with Uno R3.
If I get a 12V version of the 28BYJ-48 can I achieve a higher speed range? Im probably looking for about 50 RPM.

Im using the "cheapStepper_simple" example from the Arduino library to control the motor.

Thank you for the tips!

  • These might be able to get 20RPM if the wind is from the right direction :thinking:

  • These are geared down steppers.

  • You might want to look at the AccelStepper library.


FYI

FYI

Thanks so much for the insightful tutorial. It helped me understand much more fully. I think I will first try a 12V version of the 28BYJ with the AccelStepper to experiment and understand even more. Thanks again

Max RPM without missing steps or stalling I could get was about 24 RPM with AccelStepper and this test pgm. AdaFruit used to sell a 28BYJ-48 with lower gear ratio that could run at least twice as fast.
https://www.adafruit.com/product/858


/*  Connect UNO pin 11 to ULN2003 pin 1,
 *                  10                2,
 *                  9                 3,
 *                  8                 4
*/
#include <AccelStepper.h>

// Define a stepper and the pins it will use
AccelStepper stepper(4, 8, 10, 9, 11);

uint32_t
  tStart,           // pause timer
  tEnd = 2000;      // pause time in millis
bool timing = false;   // pause timing

void setup()
{
  // Change these to suit your stepper if you want
  stepper.setMaxSpeed(683); // 20 RPM here, 24 = 820 steps / sec
  stepper.setAcceleration(600.0);
}

void loop()
{
  static int
    stepsPerRev = 2048,
    turns = 4; // set number of turns here

  // If at the end of travel go to the other end
  if (stepper.distanceToGo() == 0)
    stepper.moveTo(stepsPerRev * turns);
  if (stepper.distanceToGo() == 0)
    stepper.moveTo(0); // back to start
  if (!timing)
    stepper.run();
  if (!timing && stepper.distanceToGo() == 0)
  {
    tStart = millis(); // reset pause timer
    timing = true;
  }
  else if (millis() - tStart > tEnd) // end of pause
  {
    tStart += tEnd;
    timing = false;
  }
}
1 Like

Thank you. Thats helpful. Checking the Adafruit site, they dont have that lower gear 5V stepper any longer. I'm going to try proper 12V 28BYJ-48 and see if I can get a bit more speed. What is it about the Accelstepper that allows faster RPM?

Acceleration from a low speed to a high speed.

For much higher speeds, choose a different, higher quality stepper, a modern current limiting stepper driver, and a higher voltage power supply.

thx. Im trying the cheap 12V stepper for now. Little steps to work my way to more powerful fast motors.

50 RPM would require 1707 steps per second, maybe the MobaTools acceleration algorithm could do it, I've never tried.
What does member MicroBahner think?

https://www.arduino.cc/reference/en/libraries/mobatools/

MobaTools can definitely do it :sunglasses: - the question is if the stepper can do :roll_eyes:.
I never had a 12V variant of these small geared steppers. The 5V variant can definitely not do so fast.
So @rkruz3 will have to try :blush: - I'm curious about the result...

@JCA34F..After swapping the 5V stepper motor for an inexpensive 12V motor, and all other setup the same, I can achieve only 21 RPM with the 12V motor vs 18 RPM with the 5V motor. So Ill move onto Accelstepper now to experiment with increasing RPM.
thank you for the help

Many others offer that lower gear ratio.
Try to Google "28BYJ-48 1/16" or "28BYJ-48 16:1".
Leo..

I will. Good tip. thanks

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.