

The 28BYJ-48 is a small, low-cost stepper motor widely used in robotics, automation, and DIY electronics projects. It features a 5-phase design and is capable of precise control of rotation and position. This motor is ideal for applications requiring accurate angular movement, such as robotic arms, camera sliders, and automated mechanisms. Its compact size and affordability make it a popular choice for hobbyists and professionals alike.








The 28BYJ-48 stepper motor is designed for low-power applications and offers reliable performance. Below are its key technical details:
The 28BYJ-48 stepper motor is typically used with a ULN2003 driver board, which provides an easy interface for controlling the motor. Below is the pin configuration for the motor and the driver board:
| Pin Number | Wire Color | Description |
|---|---|---|
| 1 | Orange | Coil A |
| 2 | Yellow | Coil B |
| 3 | Pink | Coil C |
| 4 | Blue | Coil D |
| 5 | Red | VCC (5V Power Input) |
| Pin Label | Description |
|---|---|
| IN1 | Input for Coil A |
| IN2 | Input for Coil B |
| IN3 | Input for Coil C |
| IN4 | Input for Coil D |
| VCC | Power Input (5V) |
| GND | Ground |
| OUT1-OUT4 | Outputs to Motor Coils (A-D) |
The 28BYJ-48 stepper motor is typically controlled using a driver board like the ULN2003 and a microcontroller such as an Arduino UNO. Below are the steps to use the motor in a circuit:
Below is an example Arduino sketch to control the 28BYJ-48 stepper motor using the ULN2003 driver board:
#include <Stepper.h>
// Define the number of steps per revolution for the motor
#define STEPS_PER_REV 2048 // 4096 steps per revolution (half-step mode)
// Initialize the Stepper library with the motor's pin connections
Stepper stepper(STEPS_PER_REV, 8, 10, 9, 11);
void setup() {
// Set the motor speed (in RPM)
stepper.setSpeed(10); // Adjust speed as needed
Serial.begin(9600);
Serial.println("28BYJ-48 Stepper Motor Test");
}
void loop() {
// Rotate the motor 1 full revolution clockwise
Serial.println("Rotating clockwise...");
stepper.step(STEPS_PER_REV);
delay(1000); // Wait for 1 second
// Rotate the motor 1 full revolution counterclockwise
Serial.println("Rotating counterclockwise...");
stepper.step(-STEPS_PER_REV);
delay(1000); // Wait for 1 second
}
Motor Not Rotating:
Motor Vibrates but Doesn't Rotate:
Motor Overheating:
Inconsistent Movement:
Q: Can I power the motor directly from the Arduino?
A: While the motor can be powered from the Arduino's 5V pin, it is recommended to use an external 5V power supply for better performance and to avoid overloading the Arduino.
Q: How do I increase the motor's speed?
A: Increase the speed in the stepper.setSpeed() function in the Arduino code. Note that higher speeds may reduce torque.
Q: Can I use the motor without a driver board?
A: It is possible but not recommended. The ULN2003 driver board simplifies control and protects the microcontroller from high currents.
Q: What is the maximum load the motor can handle?
A: The motor's holding torque is approximately 300 gf.cm. Ensure the load does not exceed this value to avoid stalling or damage.
By following this documentation, you can effectively use the 28BYJ-48 stepper motor in your projects.