

The DRV8825 is a 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 smoother and more accurate motor movements. It features adjustable current control, over-temperature protection, and a wide operating voltage range, making it a versatile choice for robotics, 3D printers, 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 (e.g., 100µF) across VMOT and GND. |
| GND | Power Ground | Ground connection for motor power supply. |
| VDD | Power Input | Logic power supply (3.3V or 5V). |
| GND | Power Ground | Ground connection for logic power supply. |
| STEP | Input | Step signal input. Each pulse moves the motor one step. |
| DIR | Input | Direction control input. High or low determines motor rotation direction. |
| ENABLE | Input | Enable/disable the driver. Low = enabled, High = disabled. |
| MS1, MS2, MS3 | Input | Microstepping mode selection pins. |
| RESET | Input | Resets the driver. Active low. |
| SLEEP | Input | Puts the driver into low-power sleep mode. Active low. |
| OUT1A, OUT1B | Output | Outputs for motor coil 1. |
| OUT2A, OUT2B | Output | Outputs for motor coil 2. |
| FAULT | Output | Fault indicator. Low when a fault condition occurs (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 Connections:
Motor Connections:
Control Signals:
Microstepping Configuration:
Adjusting Current Limit:
Current Limit = VREF × 2
(For example, if VREF = 0.5V, the current limit is 1A.)Optional Connections:
Below is an example of how to control a stepper motor using the DRV8825 and an Arduino UNO:
// Define pin connections
#define STEP_PIN 3 // Pin connected to STEP
#define DIR_PIN 4 // Pin connected to DIR
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 = clockwise)
}
void loop() {
// Generate step pulses
digitalWrite(STEP_PIN, HIGH); // Set STEP pin HIGH
delayMicroseconds(500); // Wait 500 microseconds
digitalWrite(STEP_PIN, LOW); // Set STEP pin LOW
delayMicroseconds(500); // Wait 500 microseconds
}
Motor Not Moving:
Driver Overheating:
Erratic Motor Movement:
FAULT Pin Active (Low):
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 step pulse frequency?
A: The DRV8825 can handle step pulse frequencies up to 250kHz.
Q: Can I use the DRV8825 with a 12V power supply?
A: Yes, the DRV8825 supports power supply voltages from 8.2V to 45V.
Q: How do I calculate the current limit for my motor?
A: Measure the VREF voltage and use the formula:Current Limit = VREF × 2.
By following this documentation, you can effectively use the DRV8825 stepper motor driver in your projects!