The 28BYJ-48 Stepper Motor: Where It Fits in Your Build

The 28BYJ-48 is a 5V unipolar stepper motor featuring an integrated planetary gear reduction. Out of the box, it delivers roughly 34.3 mN·m (about 4.8 oz-in) of holding torque at the output shaft, with a maximum reliable speed of 15 RPM. It is the default choice for low-cost, low-speed, high-precision positioning tasks like camera sliders, automated pet feeders, and motorized blinds.

However, treating the 28BYJ-48 like a standard direct-drive stepper will lead to immediate mechanical or electrical failure. Its load profile demands high torque at near-zero speeds, but it suffers from significant internal gear backlash and poor high-speed performance. Furthermore, the exact gear ratio is not the advertised 1:64, but rather 1:63.684, meaning it requires 2037.88 steps for a true 360-degree shaft rotation.

Sizing Rule of Thumb and Worked Load Example

Never size a stepper motor for exactly your calculated static load. For the 28BYJ-48, use a 2x safety factor for continuous holding torque and a 3x factor for dynamic acceleration. Because the internal plastic gears can strip under sudden inertial loads, acceleration ramping in your code is mandatory.

Worked Example: Automated Pet Feeder Paddle
Suppose you are rotating a 100g (0.1 kg) plastic paddle to dispense kibble, mounted on a 1.5 cm (0.015 m) lever arm.
1. Calculate Force: F = mass × gravity = 0.1 kg × 9.81 m/s² = 0.981 N.
2. Calculate Required Torque: Torque = Force × radius = 0.981 N × 0.015 m = 0.0147 N·m (14.7 mN·m).
3. Apply 2x Safety Factor: 14.7 mN·m × 2 = 29.4 mN·m.
Since the 28BYJ-48 outputs ~34.3 mN·m, it will handle this load reliably. If your lever arm was 3 cm, the required safety torque would jump to 58.8 mN·m, and the motor would stall under load.

Motor Type Comparison: 28BYJ-48 vs. NEMA 17 vs. Micro Servos

Choosing the right actuator prevents over-engineering and hardware burnout. The table below contrasts the 28BYJ-48 against the industry-standard NEMA 17 stepper and the ubiquitous SG90 micro servo to clarify which motor type fits your specific load profile.

Feature 28BYJ-48 (Geared Unipolar) NEMA 17 (Bipolar Stepper) SG90 Micro Servo
Peak Output Torque ~34.3 mN·m (geared) ~400 to 550 mN·m (direct) ~156 mN·m (1.6 kg-cm)
Speed/Torque Curve High torque at <15 RPM; stalls above 20 RPM Flat torque up to 300 RPM; drops off sharply after High speed, low continuous holding torque
Control Hardware ULN2003 Darlington array A4988, DRV8825, or TMC2209 Direct PWM from MCU GPIO
Typical Cost (2026) $2.50 - $4.00 (with driver) $12.00 - $25.00 (with driver) $1.50 - $3.00
Best Load Profile Slow, continuous rotation with moderate holding loads CNC, 3D printers, high-speed linear actuators RC steering, robotic joints, quick angular sweeps

The Verdict: Choose the 28BYJ-48 when you need multi-turn continuous rotation with positional memory and low cost, but cannot justify the footprint and power draw of a NEMA 17. Do not use it interchangeably with a servo; servos lack the continuous multi-turn capability and holding rigidity of a geared stepper.

Wiring, Terminals, and the ULN2003 Driver

The 28BYJ-48 demands a specific driver: the ULN2003A Darlington transistor array. You cannot drive this motor directly from an Arduino or ESP32 GPIO. Each of the four motor phases draws roughly 160mA when energized. A standard microcontroller GPIO pin is limited to 20mA–40mA; attempting to drive the motor directly will instantly brownout your MCU or fry the silicon.

Terminal Identification and Pinout

The motor terminates in a standard 5-pin JST-XH connector. The wiring sequence is color-coded, but the physical pin order on the connector is what matters for your code.

Pin Number Wire Color Function ULN2003 Board Connection
1 Blue Coil Tap 4 (Phase D) IN4
2 Pink Coil Tap 2 (Phase B) IN2
3 Yellow Coil Tap 3 (Phase C) IN3
4 Orange Coil Tap 1 (Phase A) IN1
5 Red Center Tap (VCC) Positive Power Rail (+)
ESP32 Logic Level Warning: The ESP32 operates at 3.3V logic. The ULN2003A has an input threshold (V_IN(on)) of typically 2.4V. This means a 3.3V GPIO signal will successfully trigger the Darlington pairs without a logic level shifter. However, you must remove the 5V jumper on the ULN2003 board and power the board's VCC pin from a dedicated 5V supply capable of delivering at least 1A, sharing the ground with your ESP32.

Failure Signatures: Diagnosing Hums, Stalls, and Overheating

When a 28BYJ-48 build fails, it rarely does so silently. Recognizing these failure signatures on the bench will save you hours of debugging code when the root cause is electrical or mechanical.

  • Humming Without Moving (Stall): If the motor vibrates and hums but the shaft doesn't turn, you are either underpowering the 5V rail (causing a brownout under load) or your stepping rate in code is too high. The 28BYJ-48 cannot start from a dead stop at 15 RPM. You must use a library like AccelStepper to ramp the speed up from 1 RPM to your target speed over several seconds.
  • Overheating and Housing Deformation: Unipolar steppers draw maximum current when holding a position. The 28BYJ-48 has a plastic housing and poor thermal dissipation. If left energized at standstill for more than 5 minutes, the internal temperature will exceed 60°C, warping the plastic and melting the gear grease. Fix: Always call stepper.disableOutputs() in your code the moment the motor reaches its target position.
  • Clicking or Grinding (Stripped Gears): The internal planetary gears are made of soft nylon. If your mechanical load jams while the motor is powered, the motor will not skip steps like a direct-drive NEMA 17; instead, it will shear the teeth off the internal plastic gears. Always implement a physical slip-clutch or stall-detection current sensor in high-risk mechanical assemblies.

Frequently Asked Questions

Can I modify the 28BYJ-48 to a bipolar stepper motor?

Yes, but it is rarely worth the effort. By opening the motor casing and cutting the red center-tap trace on the PCB, you isolate the two coils, converting it to a bipolar stepper. This allows you to use modern chopper drivers like the A4988 or TMC2209, yielding a roughly 40% increase in usable torque. However, the physical modification risks destroying the delicate internal wiring, and a basic NEMA 11 bipolar stepper provides far better reliability and torque for only a few dollars more.

Why does my 28BYJ-48 drift after multiple 360-degree rotations in code?

This is caused by the gear ratio discrepancy. Most beginner tutorials hardcode 2048 steps per revolution (assuming a 1:64 ratio). The actual ratio is 1:63.684, which requires exactly 2037.88 steps per revolution. Over 100 rotations, that 10-step error per revolution compounds into a massive positional drift. Update your steps-per-revolution constant to 2038 in your motor control library to eliminate long-term drift.

Is the 28BYJ-48 suitable for a 3D printer extruder or CNC axis?

Absolutely not. 3D printers and CNC machines require high-speed traversal (often 100+ RPM) and zero backlash for dimensional accuracy. The 28BYJ-48's torque drops to near zero above 20 RPM, and the internal plastic planetary gears introduce roughly 0.5 to 1 degree of mechanical backlash, which will result in severe layer shifting and ruined tolerances in any precision machining or printing application.