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: