

The 28BYJ-48 is a small, low-cost stepper motor widely used in robotics, automation, and DIY electronics projects. It is known for its precise control of rotation and ability to move in discrete steps, making it ideal for applications requiring accurate positioning. This motor is often paired with a ULN2003 driver board for easy interfacing with microcontrollers like Arduino.








The 28BYJ-48 stepper motor has the following key specifications:
| Parameter | Value |
|---|---|
| Operating Voltage | 5V DC |
| Step Angle | 5.625° (64 steps per revolution) |
| Gear Ratio | 1:64 |
| Phases | 4 |
| Drive Method | Unipolar |
| Rated Current | ~240 mA |
| Torque | ~300 g·cm |
| Dimensions | 28 mm diameter, 20 mm height |
The 28BYJ-48 is typically used with the ULN2003 driver board, which has the following pin configuration:
| Pin Name | Description |
|---|---|
| IN1 | Input for coil 1 (connect to microcontroller) |
| IN2 | Input for coil 2 (connect to microcontroller) |
| IN3 | Input for coil 3 (connect to microcontroller) |
| IN4 | Input for coil 4 (connect to microcontroller) |
| VCC | Power supply (5V DC) |
| GND | Ground |
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
// Initialize the Stepper library with the motor's steps and control pins
Stepper stepper(STEPS_PER_REV, 8, 10, 9, 11);
// Pins 8, 9, 10, and 11 are connected to IN1, IN2, IN3, and IN4 respectively
void setup() {
stepper.setSpeed(10); // Set motor speed to 10 RPM
Serial.begin(9600); // Initialize serial communication
Serial.println("28BYJ-48 Stepper Motor Test");
}
void loop() {
Serial.println("Rotating clockwise...");
stepper.step(STEPS_PER_REV); // Rotate one full revolution clockwise
delay(1000); // Wait for 1 second
Serial.println("Rotating counterclockwise...");
stepper.step(-STEPS_PER_REV); // Rotate one full revolution counterclockwise
delay(1000); // Wait for 1 second
}
stepper.setSpeed() value to change the motor's speed.Motor Not Rotating:
Motor Vibrates but Does Not Rotate:
Motor Overheating:
Inconsistent or Jerky Movement:
Q: Can I power the motor directly from the Arduino?
A: It is not recommended, as the motor requires more current than the Arduino can safely supply. Use an external 5V power source.
Q: How do I increase the motor's torque?
A: Reduce the motor's speed using the setSpeed() function in your code. Lower speeds generally result in higher torque.
Q: Can I use the 28BYJ-48 with a 12V power supply?
A: No, the motor is designed for 5V operation. Using a higher voltage may damage the motor.
Q: How many steps are required for one full revolution?
A: The motor requires 2048 steps for one full revolution of the output shaft due to its 64:1 gear ratio.
By following this documentation, you can effectively use the 28BYJ-48 stepper motor in your projects and troubleshoot common issues.