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.
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 (+) |
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.






