Using a cheap stepper for a slow RPM motor

So I had a need for a slow motor, something that could run at 2 to 4 rpm…
Doesn’t need much power but controlling speed and direction would be nice…
And cheap is always nice…

Some time ago I ordered a couple of these on AliExpress:
https://www.aliexpress.com/item/Smart-Electronics-28BYJ-48-5V-4-Phase-DC-Gear-Stepper-Motor-ULN2003-Driver-Board-for-Arduino/32704602618.html
These are cheap small steppers with a driver board that you can connect to your microcontroller…

This was cheap but the controller required either bit banging or the use of a library. I wanted something that was set and forget so bit banging was out. And I didn’t want the overhead or potential conflicts of another library. And I also needed continuous rotation rather than number of steps. So I tossed the driver board…

A while back I also got one of these from AliExpress:

These are cheap knock off stepper drivers

Now the small steppers are unfortunately wired as unipolar which doesn’t work with the easydriver as it needs a bipolar motor. Turns out converting the stepper is quite easy as described on this page:
http://www.electronicsmayhem.com/?p=13
As noted you can also use a A4988 or DRV8825 (popular with 3D printers) but they are more expensive than these EasyDriver clones. You can also select the microstepping. I used the 1/8 step as it’s the default and the motor ran smoother with it.

The beauty of this setup (for me anyways) is that you can drive this setup with a single pin (two pins if you need to change direction). And you can drive this pin with the Arduino Tone (tone() - Arduino Reference) command. The Tone command is non-blocking and runs in the background. You just pick a frequency that gives the speed that you need.

Here is a little test jig I rigged up with a Nano:

The Arduino code to make the motor turn at 2 RPM is simple:

void setup() {
#define stp 3   // pin for step connection to EasyDriver

  pinMode(stp, OUTPUT);   // setup as output
  digitalWrite(stp, LOW);   // set low

}

void loop() {

  tone(stp, 550);   // send a 550 Hz square wave to step pin

}

A few notes about the stepper:

  • Both 5V and 12V versions are available. I used the 5V and set the current adjustment on the Easydriver to the minimum.
  • I used a 5V power supply for the EasyDriver motor power. This is lower than what is called for but it seems to run fine. I tried a 12V power supply and the motor ran really hot.

So if you want a low cost slow speed motor this may be a solution for you. The motor and the driver as available for less than $2 each on AliExpress. While my needs are simple so I can use the Tone command, there is nothing stopping from using stepper libraries like AccelStepper

In my project the motor will only run for short periods of time. However I am curious as to the lifetime of the motor used this way. I’ll leave my test setup running and see what happens. I expect it will be just lots of this:

Some web sites related to these steppers:
https://grahamwideman.wikispaces.com/Motors-+28BYJ-48+Stepper+motor+notes
https://arduino-info.wikispaces.com/SmallSteppers

Here is a list of 3D files related to these steppers:

7 Likes

And this is what I needed the slow motor for…
You can never have enough disco ball action…
Now to work on some small RGB led spot lights…
And have the whole thing web controlled via a ESP8266…

3 Likes

will it be bike mount capable?

A friend needs a very slow, reasonably high torque setup for a custom clock she’s designing, this will help a lot, thanks!

@arrgh I think I might have a couple of these kicking around if you want to
play with one - Considering how geared down they are (1/64 IIRC), they’re
surprisingly easy to stall! You get what you pay for :slight_smile:

I was trying to build a clock out of these a few years ago, and couldn’t
make them overcome the friction in my (admittedly poor) wood gears.

I suggested Plan A should be a “high-torque”, continuous-sweep clock movement like this, and if that can’t hack it, a stepper motor and a worm gear.

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