Sunday, August 12, 2012

28YBJ-48 Stepper Motor with Gear Reduction

I have browsed eBay to look for inexpensive items to hook up to my Arduinos. Having seen Adafruit carry a gear-reduced stepper ( $4.95 for the 5 volt unit), when I saw on eBay an identical motor with a ULN2003 driver board going for less than $4. I bought my first set for $3.79, a second a month later for $2.60 (both included shipping). They come in 12 volt and 5 volt versions. It is reported to have good torque for its size, but relatively slow motion (due to the internal gear reduction). These motors/drivers are apparently mass-produced (in China) for A/C units, fans, duct controls etc. which is why they are very inexpensive. They are nice in that they have two milled edges to connect to other things.

Looking for documentation, I found the following the most helpful if you are looking for interface information:
  1. YourDuino - (spot on for handling this motor & driver including Arduino sketch)
  2. Utopia Mechanicus - (note comments also)
  3. - (Stepper library used in nearly all sketches for this stepper)
  4. - (more advanced stepper libraries)
To save grief, you should note 

1) Power the motor board from a separate power supply - the Arduino power is not enough (learned this after disappointment and reading).

2) The control board IN1, IN2, IN3, and IN4 sould connect to 4 digital pins on the Arduino (sequential is good but not required), then in your initialization, you will put them in slightly different order - for using Arduino pins 8, 9, 10, and 11 you declare as Stepper small_stepper(STEPS, 8, 10, 9, 11); (sequence 1-3-2-4) for proper sequencing. 

If your motor vibrates but does not move, check your sequencing.

It looks like the max speed setting may be 200 or so small_stepper.setSpeed(200); (I have not seen an example higher, see for discussion)

With the internal reduction gears, only telling it to do one (or a handful) of steps will not rotate it far, making you think it is not connected - fear not, set more steps.

I like these packages - the driver is preassembled and it works with the Arduino stepper library.  Each takes 4 pins so controlling several can eat up outputs.  If you need to contaol many, perhaps an Arduino Mega would be a good choice but in theory you could connect 5 to a standard Arduino Uno (not connecting much else).

Projects using this stepper and controller:
  1. - (basic usage)
  2. - (wireless control of two motors via a NRF24L01 RF link)
  3. Youtube -