

The DRV8825 is a high-performance stepper motor driver manufactured by Arduino. It is designed to provide precise control of bipolar stepper motors, making it an essential component for robotics, 3D printers, CNC machines, and other motion control applications. The DRV8825 supports adjustable current control, microstepping (up to 1/32 steps), and can handle up to 2.5A per phase with proper cooling.








The DRV8825 is a versatile and robust driver with the following key specifications:
| Parameter | Value |
|---|---|
| Operating Voltage | 8.2V to 45V |
| Maximum Current per Phase | 2.5A (with sufficient cooling) |
| Microstepping Modes | Full, 1/2, 1/4, 1/8, 1/16, 1/32 |
| Logic Voltage | 3.3V or 5V compatible |
| Step Resolution | Configurable via MS1, MS2, MS3 pins |
| Thermal Shutdown | Yes |
| Overcurrent Protection | Yes |
| Dimensions | 15mm x 20mm |
The DRV8825 module has 16 pins. Below is the pinout and description:
| Pin Name | Type | Description |
|---|---|---|
| VMOT | Power | Motor power supply (8.2V to 45V). Connect a capacitor close to this pin. |
| GND | Ground | Ground connection for motor power supply. |
| 2B, 2A | Output | Connect to one coil of the stepper motor. |
| 1A, 1B | Output | Connect to the other coil of the stepper motor. |
| VDD | Power | Logic voltage supply (3.3V or 5V). |
| GND | Ground | Ground connection for logic voltage. |
| STEP | Input | Pulse signal to control motor steps. |
| DIR | Input | Direction control signal. |
| ENABLE | Input | Enable/disable the driver (active low). |
| MS1, MS2, MS3 | Input | Microstepping resolution selection pins. |
| RESET | Input | Resets the driver (active low). |
| SLEEP | Input | Puts the driver into low-power sleep mode (active low). |
| FAULT | Output | Indicates fault conditions (e.g., overcurrent, thermal shutdown). |
Current Limit = VREF × 2
For example, if VREF = 0.5V, the current limit is 1A.Below 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
}
void loop() {
// Rotate the motor one step at a time
digitalWrite(STEP_PIN, HIGH); // Generate a step pulse
delayMicroseconds(500); // Wait for 500 microseconds
digitalWrite(STEP_PIN, LOW); // End the step pulse
delayMicroseconds(500); // Wait for 500 microseconds
}
Motor Not Moving:
Overheating:
Fault LED is On:
Motor Vibrates but Does Not Rotate:
Q: Can I use the DRV8825 with a unipolar stepper motor?
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: How do I know if the driver is overheating?
A: The FAULT pin will indicate a thermal shutdown condition. Additionally, the driver may stop functioning temporarily.
Q: Can I use the DRV8825 with a 12V power supply?
A: Yes, the DRV8825 supports power supply voltages between 8.2V and 45V.
By following this documentation, you can effectively use the DRV8825 stepper motor driver in your projects.