

The DRV8825 is a high-performance stepper motor driver designed to control bipolar stepper motors with precision and efficiency. Manufactured by Arduino, this component (Part ID: Stepper motor driver) supports microstepping, allowing for smooth and accurate motor operation. It features adjustable current control, over-temperature protection, and a wide operating voltage range, making it ideal for applications in robotics, 3D printing, CNC machines, and other automation systems.








The DRV8825 module has 16 pins. Below is the pinout and description:
| Pin Name | Type | Description |
|---|---|---|
| VMOT | Power Input | Motor power supply (8.2V to 45V). Connect a capacitor (100µF or higher) nearby. |
| GND | Power Ground | Ground connection for motor power supply. |
| 2B, 2A | Motor Output | Connect to one coil of the stepper motor. |
| 1A, 1B | Motor Output | Connect to the other coil of the stepper motor. |
| VDD | Power Input | Logic power supply (3.3V or 5V). |
| GND | Power Ground | Ground connection for logic power supply. |
| STEP | Logic Input | Step signal input. Each pulse moves the motor one step. |
| DIR | Logic Input | Direction control input. |
| ENABLE | Logic Input | Enable/disable the driver (active low). |
| MS1, MS2, MS3 | Logic Input | Microstepping mode selection pins. |
| RESET | Logic Input | Resets the driver (active low). |
| SLEEP | Logic Input | Puts the driver into low-power sleep mode (active low). |
| FAULT | Logic Output | Indicates fault conditions (e.g., over-temperature). |
The microstepping mode is configured using the MS1, MS2, and MS3 pins as shown below:
| MS1 | MS2 | MS3 | Microstepping Mode |
|---|---|---|---|
| Low | Low | Low | Full Step |
| High | Low | Low | 1/2 Step |
| Low | High | Low | 1/4 Step |
| High | High | Low | 1/8 Step |
| Low | Low | High | 1/16 Step |
| High | High | High | 1/32 Step |
Power Supply:
Motor Connections:
Control Signals:
Adjusting Current Limit:
Current Limit = VREF × 2Below is an example code to control a stepper motor using the DRV8825 and an Arduino UNO:
// Define pin connections
#define STEP_PIN 3 // Connect to STEP pin on DRV8825
#define DIR_PIN 4 // Connect to DIR pin on DRV8825
void setup() {
pinMode(STEP_PIN, OUTPUT); // Set STEP pin as output
pinMode(DIR_PIN, OUTPUT); // Set DIR pin as output
digitalWrite(DIR_PIN, HIGH); // Set initial direction (HIGH or LOW)
}
void loop() {
// Generate step pulses
digitalWrite(STEP_PIN, HIGH); // Step pulse HIGH
delayMicroseconds(500); // Wait 500 microseconds
digitalWrite(STEP_PIN, LOW); // Step pulse LOW
delayMicroseconds(500); // Wait 500 microseconds
}
Motor Not Moving:
Overheating Driver:
Erratic Motor Movement:
FAULT Pin Active:
Motor Vibrates but Does Not Rotate:
Q: Can the DRV8825 drive unipolar stepper motors?
A: No, the DRV8825 is designed for bipolar stepper motors only.
Q: What is the maximum microstepping resolution?
A: The DRV8825 supports up to 1/32 microstepping.
Q: Can I use the DRV8825 with a 12V power supply?
A: Yes, the DRV8825 operates within a voltage range of 8.2V to 45V.
Q: How do I reset the driver?
A: Pull the RESET pin low momentarily to reset the driver.
By following this documentation, users can effectively integrate the DRV8825 into their projects and troubleshoot common issues with ease.