The 28BYJ-48 is a 5V unipolar stepper motor with an integrated planetary gear reduction, delivering roughly 34 mN·m of raw motor torque but multiplying it to over 1000 mN·m (1 N·m) at the output shaft. It demands a ULN2003 Darlington array driver and is strictly suited for low-speed, high-torque, low-precision hobbyist applications like camera sliders, automated blinds, or sensor panning. It is not a servo replacement, nor is it suited for high-speed CNC routing. If you need exact positioning at high RPM, you need a NEMA 17 bipolar stepper or a closed-loop servo.
Because it ships in millions of cheap consumer electronics, the step motor 28BYJ-48 is often the first actuator a maker buys. But its quirks—non-standard wiring colors, a fractional gear ratio, and a driver that wastes power as heat—trip up even experienced builders. Here is the bench-level data you need to size, wire, and debug it.
Where the 28BYJ-48 Fits in the Motor Spectrum
Before committing to the 28BYJ-48, verify that your load profile matches its capabilities. Treating a stepper and a servo as interchangeable is the fastest way to burn out a driver or stall a mechanism. Steppers hold position via magnetic detents and consume current while stationary; servos use a potentiometer and control loop, only drawing current when moving or fighting an external force.
| Motor Type | Torque Curve Profile | Control Needs | Typical Cost | Best Load Profile |
|---|---|---|---|---|
| 28BYJ-48 (Geared Unipolar) | High holding torque at 0 RPM; drops sharply above 15 RPM output. | ULN2003 driver; 4 GPIO pins; open-loop step/direction. | $2 - $4 (motor + driver) | Slow, heavy loads (blinds, camera pans, valve actuators). |
| NEMA 17 (Bipolar Stepper) | High torque across a wider RPM range; maintains torque up to 300+ RPM. | A4988/TMC2209 chopper driver; 2 GPIO pins; higher voltage (12-24V). | $12 - $25 | 3D printers, CNC machines, high-speed linear actuators. |
| Micro Servo (SG90 / MG90S) | High stall torque; zero holding torque without continuous PWM feedback. | PWM signal direct from microcontroller; closed-loop internal. | $3 - $8 | RC linkages, fast angular sweeps (<180°), robotic joints. |
| Brushless DC (BLDC / Gimbal) | Smooth, continuous torque; requires active commutation to hold. | 3-phase ESC or FOC driver; complex sensor/sensorless algorithms. | $15 - $40+ | Drones, high-speed spindles, smooth gimbal stabilization. |
Wiring, Terminals, and the ULN2003 Driver
The 28BYJ-48 uses a 5-pin JST connector. If you strip the wires or probe the terminals, you will find a common center-tap configuration typical of unipolar steppers. The most critical detail—and the one that fries microcontrollers—is the pinout order. The red wire is in the middle (Pin 3), not at the edge.
- Pin 1 (Orange): Coil 2, Tap A
- Pin 2 (Yellow): Coil 1, Tap B
- Pin 3 (Red): Common (COM) / VCC (5V)
- Pin 4 (Pink): Coil 1, Tap A
- Pin 5 (Blue): Coil 2, Tap B
The ULN2003 Darlington Array
The standard driver for this motor is the ULN2003A Darlington transistor array. It takes low-current logic signals (from your ESP32 or Arduino) and switches the high-current 5V load to the motor coils. Because it is a Darlington pair, it suffers from a high collector-emitter saturation voltage ($V_{CE(sat)}$), typically dropping 1.5V to 2V across the junction. This means out of your 5V supply, the motor only sees about 3V to 3.5V, and the remaining power is dissipated as heat in the ULN2003 chip.
Sizing Rule of Thumb and Worked Load Example
A common mistake is sizing a stepper based on its holding torque (the torque required to break the shaft's position when stationary). In reality, dynamic torque (torque while moving) is significantly lower, and it drops further as speed increases.
The Sizing Rule of Thumb: Size the motor so the required load torque is no more than 50% of the motor's rated dynamic torque at your target operating speed. This safety factor accounts for acceleration inertia, friction, and voltage sag.
Worked Example: Automating a Window Blind
Suppose you are building an automated roller blind. The blind fabric and bottom bar weigh 500g (0.5 kg). The roller tube has a radius of 2 cm (0.02 m). You want to lift it at a slow, steady pace.
- Calculate the gravitational force: $F = m \times g = 0.5 \text{ kg} \times 9.81 \text{ m/s}^2 = 4.905 \text{ N}$.
- Calculate the required load torque: $\tau = F \times r = 4.905 \text{ N} \times 0.02 \text{ m} = 0.0981 \text{ N\cdot m}$ (or $98.1 \text{ mN\cdot m}$).
- Apply the safety factor: Required dynamic torque = $98.1 \times 2 = 196.2 \text{ mN\cdot m}$.
The 28BYJ-48 is rated at roughly 34 mN·m at the motor shaft, but with its 1:64 gear reduction, the theoretical output torque is $34 \times 64 = 2176 \text{ mN\cdot m}$. Factoring in gear friction and the voltage drop across the ULN2003, real-world bench tests show a reliable dynamic output torque of roughly 300 to 400 mN·m at low speeds (10-15 RPM). Since 196.2 mN·m is well below 300 mN·m, the step motor 28BYJ-48 is correctly sized for this load.
Failure Signatures: Hum, Overheat, and Stall
When a 28BYJ-48 system fails, it rarely fails silently. The symptoms map directly to specific electrical or mechanical faults.
1. Humming or Vibrating Without Rotation
If the motor vibrates aggressively but the shaft doesn't turn, you are experiencing a stall at step zero. Causes:
- Wrong firing sequence: You have the GPIO pins mapped out of order in your code. The unipolar sequence must be strictly A-AB-B-BC-C-CD-D-DA (or the reverse). If you skip a phase or swap Coil 1 and Coil 2, the magnetic field oscillates instead of rotating.
- Acceleration too high: Steppers have high rotor inertia. If your code commands 500 steps/second instantly, the magnetic field rotates faster than the physical rotor can catch up. Ramp the speed up using a library like AccelStepper.
2. Overheating Driver or Motor
ULN2003 getting too hot to touch: This is normal but dangerous. As noted, the Darlington array drops ~1.5V. At 240mA per phase, that is $0.36W$ of heat per transistor, concentrated in a small DIP-16 package. If you are running the motor continuously, glue a small aluminum heatsink to the ULN2003 chip, or switch to a modern MOSFET-based driver board.
Motor casing getting hot: You are likely running a 12V supply into the 5V motor's red wire. The 28BYJ-48 has thin internal windings. At 12V, current spikes past 500mA, melting the internal plastic gear housing or burning out the coil enamel. Stick to 5V (or 6V absolute maximum for a slight torque bump).
3. Stalling Under Load (Loss of Position)
If the motor was moving but stops when it hits a physical resistance, or if it skips steps and loses its absolute position reference. Causes:
- Load exceeds dynamic torque: Your mechanism has too much friction or the load is too heavy. See the sizing math above.
- Power supply brownout: The ULN2003 and motor draw up to 500mA total when two phases are energized. If you are powering the motor from the Arduino's 5V linear regulator, the regulator will overheat and drop voltage, causing the microcontroller to reset or the motor to stall. Always power the ULN2003 VCC directly from a dedicated 5V buck converter or USB power bank.
Frequently Asked Questions
Why does my step motor 28byj-48 vibrate but not turn?
Vibration without rotation is almost always caused by an incorrect GPIO firing sequence in your code or an acceleration rate that is too aggressive. The 28BYJ-48 has significant rotor inertia due to the internal gear train. If you command it to jump from 0 to 200 steps per second instantly, the magnetic field will outpace the physical rotor, causing it to vibrate in place. Implement a linear acceleration ramp in your code, and verify your pin mapping matches the exact physical wire order (Orange, Yellow, Pink, Blue) rather than the sequential pin numbers on the connector.
Can I run a 5V step motor 28byj-48 on 12V for more torque?
No. While applying 12V to a 5V unipolar stepper will temporarily increase the magnetic field strength and torque, the 28BYJ-48 lacks the thermal mass and winding thickness to handle the resulting current (which will exceed 500mA per phase). The internal plastic planetary gears will warp from the heat, and the coil enamel will eventually short. If you need more torque, do not overvolt the 28BYJ-48; upgrade to a NEMA 17 bipolar stepper driven by a chopper driver like the A4988, which uses high voltage (12V-24V) but strictly limits the current to safe levels via PWM.
What is the exact gear ratio of the 28byj-48 step motor?
The datasheet and most hobbyist tutorials state the gear ratio is exactly 1:64, which would yield exactly 2048 steps per output revolution (using the standard 4-step half-stepping sequence). However, teardowns and detailed mechanical analyses reveal the actual gear ratio is 1:63.68395. This means one full revolution of the output shaft actually requires 4076 half-steps (or 2038 full steps), not 4096. If you are building a mechanism that requires precise multi-revolution tracking (like a linear actuator), you must use 4076 in your steps-per-revolution constant, or your mechanism will accumulate a positional drift of about 2 degrees per revolution.
How do I convert the 28byj-48 from unipolar to bipolar?
The 28BYJ-48 is wired as a unipolar motor with a common center-tap (the red wire) for each coil pair. To use it with modern, highly efficient bipolar chopper drivers (like the TMC2209 or DRV8825), you must sever the connection between the two center taps. Open the blue plastic rear cap of the motor, locate the PCB where the wires are soldered, and use a craft knife or small file to cut the copper trace connecting the two center-tap points. Once cut, the red wire becomes dead. You then wire Orange/Blue as Coil 1 and Yellow/Pink as Coil 2. This increases the usable coil voltage and allows the driver to use microstepping, significantly reducing the motor's signature low-speed vibration.






