The 28BYJ-48 (frequently searched by hobbyists as the 28bjy 48 stepper motor) is a 5V unipolar stepper motor with an integrated multi-stage gear reduction. Out of the box, it delivers roughly 34.3 mN·m (0.49 oz-in) of torque at the output shaft. It is the undisputed default for low-cost, low-speed, high-precision positioning in embedded IoT builds—think automated window blinds, camera sliders, and pet feeders. However, its cheap plastic gearbox and unipolar coil design introduce specific electrical and mechanical limits that will brick your project if ignored.
This guide cuts through the generic datasheets to give you bench-tested rules for sizing, wiring, and driving the 28BYJ-48 with microcontrollers like the Arduino Uno or ESP32.
Sizing the Load: Rules of Thumb and Worked Examples
Stepper motors do not behave like DC motors; their torque drops sharply as speed increases. The 28BYJ-48 is no exception. Its internal gear reduction is nominally 1/64, but the actual mathematical ratio is 1/63.684. This yields an output step angle of 0.08789°, meaning it takes exactly 4096 steps to complete one full revolution in half-step mode.
Worked Load Example: Automated Pet Feeder
Let's say you are building an automated pet feeder that dispenses 200g of kibble using a 3D-printed auger. We need to determine if the 28BYJ-48 can turn the auger without stalling.
- Load Mass: 200g (0.2 kg)
- Force (Gravity): 0.2 kg × 9.8 m/s² = 1.96 N
- Auger Radius: 20mm (0.02 m)
- Required Torque: Force × Distance = 1.96 N × 0.02 m = 0.0392 N·m (39.2 mN·m)
Verdict: The 28BYJ-48 peaks around 34.3 mN·m. At a 20mm radius, the required 39.2 mN·m exceeds the motor's capacity. It will stall and hum. If you redesign the auger to have a 10mm radius, the required torque drops to 19.6 mN·m. The motor now handles the load easily, sitting comfortably within our 50% safety margin.
Wiring, Terminals, and the ULN2003 Driver
Because the 28BYJ-48 is a unipolar stepper, it requires a specific driver topology to sequence the coils. You cannot wire it directly to microcontroller GPIO pins; the coils draw roughly 120mA each (240mA total when two are energized), which will instantly brownout an ESP32 or fry an Arduino Uno's ATmega328P I/O limits.
Terminal Identification
The motor terminates in a 5-pin JST connector. Here is the internal wiring breakdown:
| Wire Color | Function | Internal Connection |
|---|---|---|
| Red | VCC / Common | Center tap for both coil pairs |
| Pink | Coil 1A | Phase A positive |
| Orange | Coil 2A | Phase B positive |
| Yellow | Coil 2B | Phase B negative |
| Blue | Coil 1B | Phase A negative |
The ULN2003 Darlington Array
The standard driver for this motor is the Texas Instruments ULN2003A Darlington transistor array. It handles the current sinking required to energize the coils sequentially.
Motor Selection Matrix: 28BYJ-48 vs NEMA 17 vs SG90 Servo
A common mistake in embedded design is treating steppers and servos as interchangeable. They are not. Servos use closed-loop potentiometer feedback for absolute angular positioning, while steppers rely on open-loop step counting. Here is how the 28BYJ-48 stacks up against the alternatives for low-cost actuation.
| Criteria | 28BYJ-48 Stepper | NEMA 17 Stepper | SG90 Micro Servo |
|---|---|---|---|
| Peak Torque | ~34.3 mN·m (Geared) | ~400 mN·m (Ungared) | ~18 mN·m (1.8 kg-cm) |
| Torque Curve Profile | High at low RPM, drops off sharply past 15 RPM | Flat mid-range, drops at high RPM | Constant across limited 180° sweep |
| Control Needs | ULN2003 + continuous GPIO pulsing | A4988/TMC2209 + Step/Dir pins | Single PWM pin (50Hz signal) |
| Position Feedback | None (Open-loop step counting) | None (Open-loop) | Internal potentiometer (Closed-loop) |
| Typical Cost (2026) | $1.50 - $2.50 (with driver) | $12.00 - $18.00 (with driver) | $2.00 - $4.00 |
Which motor type fits this load profile? Choose the 28BYJ-48 when you need continuous 360° rotation with high holding torque at very low speeds (like a valve or slow conveyor). Choose the SG90 servo when you only need to sweep between 0° and 180° (like a robotic arm joint). Choose the NEMA 17 when your load exceeds 50 mN·m or requires high-speed movement (like a 3D printer axis).
Failure Signatures: Diagnosing Hum, Overheat, and Stall
When a 28BYJ-48 system fails on the bench, it rarely just 'stops working.' It gives you physical and electrical feedback. Here is how to read those failure signatures.
- The Hum (Missed Steps): If the motor vibrates and hums but the shaft doesn't turn, you are either commanding a step rate higher than the motor's physical inertia can handle, or your power supply is sagging under the 240mA coil draw. Fix: Lower the RPM in your Arduino Stepper Library code and measure the VCC rail with a multimeter to ensure it isn't dipping below 4.5V.
- Overheat: The ULN2003 driver IC will get hot to the touch during continuous operation. This is normal for Darlington arrays dissipating power. However, if the motor casing exceeds 50°C, you are likely driving it with a 12V supply while it is rated for 5V, or you are leaving the coils energized (holding torque) indefinitely without a sleep state in your code.
- Stall and Grind (Mechanical Failure): The 28BYJ-48 uses a multi-stage plastic gear train. If you physically block the output shaft while the motor is energized, the internal plastic teeth will strip. Once stripped, the motor will spin internally but the output shaft will remain stationary. Fix: Implement a software timeout. If the motor is commanded to move but an external limit switch or encoder doesn't register movement within 2 seconds, cut power to the coils immediately.
Frequently Asked Questions
Can I run a 28bjy 48 stepper motor on 12V?
Only if you specifically bought the 12V variant. The standard blue 28BYJ-48 is a 5V motor. Applying 12V to the 5V version will cause the coils to draw excessive current, rapidly overheating the motor, melting the internal plastic gear lubricant, and likely destroying your ULN2003 driver board. Always check the sticker on the side of the motor casing for the rated voltage before wiring it to your bench supply.
Why is my 28BYJ-48 stepper motor humming but not moving?
Humming without rotation usually points to one of three issues: 1) Your step delay in code is too short (you are asking it to spin faster than its geared inertia allows). Try increasing the delay between steps to at least 2ms. 2) The sequence is wrong. Ensure you are using the correct 8-step half-wave sequence (IN1-IN4). 3) The power supply cannot deliver the required 240mA peak current, causing a brownout that resets the driver logic.
How to convert 28BYJ-48 unipolar to bipolar for A4988?
You can convert the 28BYJ-48 from unipolar to bipolar to use modern chopper drivers like the A4988 or TMC2209, which will significantly increase your available torque. To do this, open the motor's rear plastic cap, locate the PCB where the wires terminate, and use a hobby knife to carefully cut the copper trace connecting the red wire (center tap) to the coil windings. Once the center tap is isolated, treat the Pink/Orange pair as Coil A, and the Yellow/Blue pair as Coil B. Ignore the red wire entirely.






