28BYJ-48 Stepper

A 5V unipolar geared stepper motor: 4 phases, 5 wires, and a 1/64 reduction gearbox for fine, low-speed positioning, almost always driven through a ULN2003 board.

28BYJ-48 Stepper: Geared unipolar stepper

What is the 28BYJ-48 Stepper?

The 28BYJ-48 is a small permanent-magnet stepper motor with a built-in reduction gearbox. The '28' refers to its 28mm diameter body. It is a 4-phase unipolar design brought out on five wires: four coil phases (blue, pink, yellow, orange) plus a red center-tap common that ties to +5V. It is one of the most common motors in Arduino starter kits because it is inexpensive and positions precisely at low speed.

The motor pairs an internal stride angle of 5.625 degrees with a 1/64 gear reduction (datasheet value), so the output shaft advances roughly 0.088 degrees per half-step. That works out to about 4096 half-steps (HALF4WIRE) or 2048 full-steps (FULL4WIRE) per output-shaft revolution. The trade-off is that it is slow (typically around 15 RPM) and low-torque, so it is meant for precise positioning rather than speed or driving heavy loads.

Because it is unipolar, the red wire connects to +5V and the four phase wires are switched to ground in sequence. A ULN2003 Darlington-array board is the standard driver: it sinks the coil current the microcontroller cannot, and its built-in flyback diodes clamp the inductive kickback from the coils. The Arduino simply toggles four GPIO pins (IN1 to IN4) in a stepping sequence.

28BYJ-48 Stepper pinout

PinFunctionType
BLUE Blue phaseDigital Coil phase 1Free
PINK Pink phaseDigital Coil phase 2Free
YELLOW Yellow phaseDigital Coil phase 3Free
ORANGE Orange phaseDigital Coil phase 4Free
RED_COM Red / +5V commonPowerPower in

Specifications

Operating voltage
5 V (max 5 V)
Interface
gpio
Dimensions
42 × 30 × 42 mm

Verified from the Tinkered component library · Generic / Mouser STEP-D01.

Circuit requirements

  • Power the motor from a dedicated 5V supply into the ULN2003 board's power terminal, not from the Arduino's 5V pin. With multiple phases energized the motor can draw a few hundred milliamps, enough to brown out a USB-powered board.
  • Tie the driver board ground to the Arduino ground so the IN1 to IN4 logic signals share a common reference.
  • The red wire is the center-tap common and connects to +5V. The blue, pink, yellow, and orange phase wires are pulled to ground in sequence by the ULN2003 outputs.
  • Never wire the coils straight to GPIO pins. At roughly 5V across about 60 ohms per phase (near 80mA per datasheet), the coil current far exceeds an Arduino pin's safe limit. The ULN2003 handles the current and provides the flyback diodes the inductive coils require.
  • Keep the step rate below the motor's pull-in frequency (idle in-traction frequency is greater than 600 Hz on the datasheet). Commanding steps too fast makes the motor buzz and stall instead of turning.

Board compatibility

The 28BYJ-48 Stepper connects to any of the microcontrollers supported in Tinkered. Mind the 5 V logic level on 3.3 V boards.

Common 28BYJ-48 Stepper mistakes

Driving the coils directly from Arduino pins

The 28BYJ-48 needs a ULN2003 or equivalent transistor array. Each phase draws far more current than a GPIO pin can safely source or sink, so connecting coils directly stalls the motor and can damage the pin.

Mixing up full-step and half-step counts

One output revolution is about 2048 full-steps but about 4096 half-steps. Using the wrong steps-per-revolution in code (for example passing 2048 to a HALF4WIRE setup) makes every commanded rotation half or double the intended angle.

Wiring the phases in the wrong order

The IN1 to IN4 to coil mapping and the stepping sequence must match. A swapped or scrambled phase order makes the motor vibrate in place, run rough, or spin the wrong direction instead of rotating smoothly.

Powering the motor from the Arduino 5V pin over USB

The current spikes when phases switch can drop the rail and reset the board. Feed the ULN2003 board from a separate 5V supply and only share ground with the Arduino.

Expecting high speed or strong torque

This is a heavily geared, low-torque motor that tops out around 15 RPM. Pushing the step rate above its pull-in frequency causes missed steps and stalling, and it cannot move heavy mechanical loads.

28BYJ-48 Stepper datasheet

Official 28BYJ-48 Stepper datasheetGeneric / Mouser STEP-D01

Popular 28BYJ-48 Stepper projects

Geared clock and indicator dials

The fine 4096-half-step resolution and low speed make it well suited to driving analog-style clock hands, gauge needles, or slowly rotating indicator dials.

Automated blinds or curtain opener

Paired with a ULN2003 and a small pulley, it can open and close light window coverings on a schedule or button press without needing precise speed control.

Camera pan or small pan-tilt rig

Its precise angular steps are handy for slowly panning a lightweight camera or sensor to a repeatable position.

Rotating display turntable

A common build spins a small object or product on a platform at a slow, steady rate for photography or a showcase.

Precise positioning mechanisms

Because the output shaft holds position between steps, it is used for dial pointers, small valve or knob actuators, and other repeatable low-load positioning tasks.

Build with the 28BYJ-48 Stepper.

Drop the 28BYJ-48 Stepper into a circuit, write firmware, and simulate it in your browser, then deploy to real hardware. All in one editable Tinkered project.