

The DM556PR is a high-performance digital stepper motor driver manufactured by STEPPERONLINE. It is specifically designed to drive NEMA 23 stepper motors with precision and efficiency. This driver supports adjustable current settings, microstepping capabilities, and advanced protection features, making it ideal for applications requiring accurate motion control.








| Parameter | Value |
|---|---|
| Manufacturer Part ID | DRIVER DM556PR |
| Input Voltage Range | 20VDC to 50VDC |
| Output Current Range | 1.0A to 5.6A (adjustable) |
| Microstepping Settings | 2 to 256 microsteps |
| Control Signal Voltage | 3.3V to 24V |
| Pulse Frequency | Up to 200 kHz |
| Protection Features | Over-voltage, under-voltage, over-current, |
| and over-temperature protection | |
| Operating Temperature | 0°C to 50°C |
| Dimensions | 118mm x 75.5mm x 34mm |
The DM556PR driver has two main connectors: the control signal interface and the motor/power interface.
| Pin Name | Description | Notes |
|---|---|---|
| PUL+ | Pulse signal input (positive) | Connect to controller pulse+ |
| PUL- | Pulse signal input (negative) | Connect to controller pulse- |
| DIR+ | Direction signal input (positive) | Connect to controller dir+ |
| DIR- | Direction signal input (negative) | Connect to controller dir- |
| ENA+ | Enable signal input (positive) | Optional, for enabling driver |
| ENA- | Enable signal input (negative) | Optional, for enabling driver |
| Pin Name | Description | Notes |
|---|---|---|
| A+ | Motor coil A positive | Connect to motor winding A+ |
| A- | Motor coil A negative | Connect to motor winding A- |
| B+ | Motor coil B positive | Connect to motor winding B+ |
| B- | Motor coil B negative | Connect to motor winding B- |
| VCC | Power supply positive (20-50VDC) | Ensure proper voltage range |
| GND | Power supply ground | Common ground for power supply |
Below is an example of how to connect the DM556PR to an Arduino UNO and control a NEMA 23 stepper motor.
// Define control pins
#define PUL_PIN 3 // Pulse signal pin
#define DIR_PIN 4 // Direction signal pin
#define ENA_PIN 5 // Enable signal pin (optional)
void setup() {
// Set pin modes
pinMode(PUL_PIN, OUTPUT);
pinMode(DIR_PIN, OUTPUT);
pinMode(ENA_PIN, OUTPUT);
// Enable the driver
digitalWrite(ENA_PIN, LOW); // LOW to enable, HIGH to disable
}
void loop() {
// Set direction
digitalWrite(DIR_PIN, HIGH); // HIGH for one direction, LOW for the other
// Generate pulses to move the motor
for (int i = 0; i < 200; i++) { // 200 steps for one revolution (1.8° step angle)
digitalWrite(PUL_PIN, HIGH);
delayMicroseconds(500); // Adjust for speed
digitalWrite(PUL_PIN, LOW);
delayMicroseconds(500);
}
delay(1000); // Wait 1 second before reversing direction
// Reverse direction
digitalWrite(DIR_PIN, LOW);
for (int i = 0; i < 200; i++) {
digitalWrite(PUL_PIN, HIGH);
delayMicroseconds(500);
digitalWrite(PUL_PIN, LOW);
delayMicroseconds(500);
}
delay(1000); // Wait 1 second before repeating
}
Motor Not Moving
Driver Overheating
Erratic Motor Movement
No Response from Driver
Q: Can the DM556PR drive other stepper motor sizes?
A: Yes, it can drive other stepper motors within its voltage and current range.
Q: What is the maximum pulse frequency supported?
A: The DM556PR supports pulse frequencies up to 200 kHz.
Q: Do I need to use the enable signal?
A: The enable signal is optional. If not used, the driver remains enabled by default.
Q: How do I select the correct microstepping setting?
A: Refer to the DIP switch table in the DM556PR datasheet and choose a setting based on your application's precision and speed requirements.