The 28BYJ-48 is a 5V unipolar stepper motor with an integrated 1:64 gear reduction, delivering roughly 0.034 Nm (34.3 mN·m) of holding torque. It is the default choice for low-cost, low-load Arduino positioning tasks like HVAC dampers, light blinds, and sensor pans. However, because it is frequently mis-specified by overseas vendors, hobbyists often push it past its mechanical limits, resulting in stalled shafts and melted driver boards. If you are designing a motion system, you need to know exactly what this motor can lift, how to wire its non-standard color codes, and when to abandon it in favor of a NEMA 17. Here is the bench-tested data you need to size, wire, and drive the 28BYJ-48 correctly.

28BYJ-48 Specifications and Wiring Identification

Before writing any code, you must understand the physical limits of the 5V variant (which accounts for roughly 95% of the hobbyist market). The most critical bench-tested reality of the 28BYJ-48 is its gear ratio. While marketed as exactly 1:64, the actual internal gear train yields a ratio of roughly 1:63.684. This means a full 360-degree rotation requires 4076 half-steps, not the theoretical 4096. If you command exactly 4096 steps, your shaft will overshoot by about 1.8 degrees per revolution, causing cumulative drift in continuous-rotation projects.
Table 1: 28BYJ-48 (5V Variant) Bench Specifications
Parameter Value Bench Notes & Tolerances
Nominal Voltage 5.0V DC 12V variants exist; check resistance before applying power.
Phase Resistance 50 Ω ± 10% Yields ~100mA per phase, ~240mA total peak draw.
Gear Reduction Ratio 1:63.68395 Not exactly 1:64. Causes cumulative positional drift.
Step Angle (Output) 5.625° / 64 0.08789° per full step at the output shaft.
Holding Torque ~34.3 mN·m Often overstated as 0.05 Nm in cheap listings.
Pull-In Torque ~300 g·cm Max torque to start moving from a standstill.
Max Reliable Speed ~15 to 20 RPM Exceeding ~1300 half-steps/sec causes immediate stalling.

Terminal Identification and Pinout

The 28BYJ-48 uses a 5-pin JST connector. Because it is a unipolar motor, the center taps of the two internal coils are tied together to the common power pin. Note that the wire colors for Coil 1 and Coil 3 frequently swap between pink and orange depending on the manufacturing batch.

  • Pin 1 (Red): Common (COM) - Connect to 5V.
  • Pin 2 (Pink or Orange): Coil 1 - Connect to ULN2003 IN1.
  • Pin 3 (Yellow): Coil 2 - Connect to ULN2003 IN2.
  • Pin 4 (Orange or Pink): Coil 3 - Connect to ULN2003 IN3.
  • Pin 5 (Blue): Coil 4 - Connect to ULN2003 IN4.
Bench Tip: If your motor vibrates but doesn't turn, or turns in erratic jerks, you likely have a batch where the orange and pink wires are swapped. Simply reverse the IN2 and IN3 pins in your software sequence, or physically swap the yellow and orange wires at the connector.

Motor Type Comparison: Where the 28BYJ-48 Fits

Selecting the right motor type depends entirely on your load profile, positional accuracy needs, and budget. The 28BYJ-48 is strictly a low-load, low-speed positioning motor. It is not interchangeable with servos (which rely on potentiometer feedback and lack continuous rotation torque) or high-speed DC gearmotors.
Table 2: Motion Component Comparison for Embedded Projects
Motor Type Holding Torque Control Complexity Cost (Approx) Best Load Profile
28BYJ-48 (Unipolar Stepper) 0.034 Nm Low (ULN2003, open-loop) $1.50 - $3.00 Light dampers, camera pans, low-inertia dials.
NEMA 17 (Bipolar Stepper) 0.40 - 0.59 Nm Medium (A4988/TMC2209, microstepping) $10.00 - $18.00 3D printer axes, CNC routers, high-load linear actuators.
N20 / JGA25 (DC Gearmotor) 0.02 - 0.15 Nm High (Requires encoder for positioning) $4.00 - $9.00 Continuous rotation, wheeled robots, conveyor belts.
Micro Servo (e.g., SG90) 0.018 Nm (1.8 kg·cm) Low (PWM signal, closed-loop) $1.50 - $2.50 RC linkages, small robotic arms, <180° limited sweeps.

Choose the 28BYJ-48 when you need open-loop positional accuracy over multiple continuous rotations without the cost of a NEMA 17. Choose a Micro Servo if your movement is restricted to less than 180 degrees and you want built-in positional feedback. Choose a NEMA 17 if your load exceeds 0.05 Nm or requires high-speed traversal.

Sizing Rule of Thumb and Worked Load Example

When sizing a stepper motor for a specific mechanical load, the golden rule of thumb is to calculate the required load torque and multiply by a safety factor of 2.0 to 2.5. This derating accounts for static friction, start-up inertia, and the severe torque drop-off that occurs at higher RPMs (the pull-out torque curve).

Worked Example: Vertical Sensor Lift

Suppose you are building an automated weather station and need to lower a 150g sensor payload on a string wound around a 3D-printed spool with a 2 cm (0.02 m) radius.

  1. Calculate Force: F = mass × gravity = 0.15 kg × 9.81 m/s² = 1.47 N.
  2. Calculate Required Torque: τ = Force × radius = 1.47 N × 0.02 m = 0.0294 Nm.
  3. Apply Safety Factor: 0.0294 Nm × 2.0 = 0.0588 Nm required pull-in torque.

The Verdict: The 28BYJ-48 has a maximum pull-in torque of roughly 0.03 Nm. Even without the safety factor, the required 0.0294 Nm is dangerously close to the motor's absolute physical limit. At this load, the motor will likely stall during start-up due to inertia, or miss steps if the spool encounters slight friction. For this application, the 28BYJ-48 is undersized; you must step up to a NEMA 17 or increase the spool radius to reduce the torque requirement.

Sizing Shortcut: For horizontal rotation (like a turntable), gravity doesn't directly pull against the shaft. Instead, torque is dictated by the friction of the thrust bearing and the rotational inertia of the mass. Keep horizontal 28BYJ-48 loads under 300g on a low-friction lazy susan bearing to avoid stall conditions.

Driver Demands and Failure Signatures

Because the 28BYJ-48 is a unipolar stepper, it demands a driver that can switch the ground path for each of the four coils independently while the center tap remains tied to VCC.

The Required Driver: ULN2003

The standard driver for this motor is the ULN2003A Darlington transistor array. It is cheap, robust, and handles the 500mA per-channel limit easily. Critical Warning: You cannot use modern bipolar chopper drivers like the A4988, DRV8825, or TMC2209 out of the box. Those drivers expect two independent coils (4 wires) and use H-bridges to reverse current flow. The 28BYJ-48 has 5 wires and internal center taps. Attempting to wire a 28BYJ-48 to an A4988 without physically opening the motor and cutting the common red trace will short the power supply and destroy the driver.

Recognizing Failure Signatures on the Bench

When pushing the 28BYJ-48, it will not fail silently. Learn to read its physical feedback to debug your code and mechanical design:

  • Humming / Vibration Without Movement (Stall): This indicates the load exceeds the pull-out torque, or your step pulse frequency is too high. The 28BYJ-48 suffers from severe start-up resonance. If using the AccelStepper library, do not set setMaxSpeed() above 1000 steps/sec, and always use setAcceleration() (e.g., 200 steps/sec²) to ramp up speed gently.
  • Overheating (Hot Enamel Smell): The motor draws ~240mA continuously when energized, dissipating over 1.2W of heat in a sealed metal can. If your code leaves the coils energized while idle, the motor will become too hot to touch within 5 minutes, eventually degrading the internal insulation. Always call a function to de-energize the coils (set all 4 GPIO pins LOW) when the motor reaches its target position.
  • Grinding / Clicking (Mechanical Strip): The internal gear train uses a mix of metal and plastic gears. If you drive the motor against a hard mechanical limit (like a fully closed valve) without a limit switch to cut power, the plastic output gear will strip its teeth. You will hear a distinct rhythmic clicking, and the shaft will spin freely with zero torque.

By respecting the 0.034 Nm torque ceiling, accounting for the 4076-step revolution reality, and properly managing idle current, the 28BYJ-48 remains one of the most reliable and cost-effective actuators in the embedded engineer's toolkit.