Site Navigation

Your Account

Choose Language

Using external stepper motor drivers

Overview ¶ 

There are a few reasons for using external stepper motor drivers:

  • You may want to use the expansion header to drive more extruders, but not want to use a Duex2 or Duex5 expansion board with the Duet 2 (Wifi or Ethernet) or the Duex4 with older generation Duets;
  • You may want to drive larger stepper motors than the internal stepper drivers are rated for (currently 2.4A on the generation 2 Duets, and 2.0A on the generation 1 Duets);
  • You may need 11 or 12 stepper drivers, which is two more than is supported by a generation 2 Duet + Duex5.

The expansion header has support for 5 external drivers on the Duet 2 and 4 on Duet0.8.5 or Duet0.6. The pinouts for the expansion header are important to make a note of when connecting external drivers:

The generation 2 Duets also support two additional drivers connected to the CONN_LCD connector.

The pinout for the two additional drivers supported by the CONN_LCD connector are as follows (the pins for drive 10 and its endstop input are on one side of the connector, and the pins for drive 11 are on the other side).

CONN_LCD pinSignal
LCD_DB5Step 10
LCD_DB6Dir 10
LCD_DB7Enable 10
ENC_BEndstop 10
LCD_DB4Step 11
LCD_EDir 11
LCD_RSEnable 11
ENC_AEndstop 11

You can also pick up +3.3V and ground from CONN_LCD.

Important! External drivers must always be connected to the expansion connector of the Duet or to the CONN_LCD port. The 3-pin pads on the Duet near to the stepper drivers are test pads and are not suitable for connecting external drivers.

Connecting external stepper drivers with differential inputs ¶ 

These stepper driver modules generally have optically isolated inputs labelled STEP+, STEP-, DIR+, DIR-, ENA+ and ENA-.

If they require no more than about 2mA @ 3V on the step, dir and enable inputs, then you can drive them directly from the expansion connector of the Duet. See the expansion connector pinouts above. Connect STEP+ and DIR+ to your chosen Step and Dir pins on the expansion connector or CONN_LCD, and connect STEP- and DIR- to ground. Connect ENA+ to +3.3V and connect ENA- to your chosen Enable pin.

If your external stepper drivers need more than 3V or more than about 2mA then you should use the Duet Expansion breakout board or some other method to provide 5V differential drive signals.

Connecting Pololu-style drivers ¶ 

These take single-ended STEP, DIR and EN (step, direction and enable) signals, for example the popular have the following pin out:

Block Image

Even though the stepsticks are nominally 5V boards, nearly all stepper driver chips are specified for 3.3V operation too.

External Extruders Example ¶ 

This example shows how to add one external stepper driver to drive a third extruder on a DuetWifi.

At the DuetWifi end the pins needed to connect to are highlighted in this image:

Block Image

A custom cable is made up that connects these pins to the Stepstick.

Block Image

In this example the Stepstick is mounted on on a RAMPS 1.3 pcb, just adding the minimal components needed to support 1 more driver. It was much quicker to use a RAMPS pcb that was spare than to use stripboard to make a custom stepper driver carrier for the stepstick driver, however that is all that the pcb is doing so directly connecting to the stepstick or using a stripboard will also work. It is important to connect a bulk capacitor of ~100uF between power and ground close to the stepstick.

At the RAMPS pcb end:

Block Image

And the RAMPS PCB with the other components fitted:

Block Image

An alternative to using a RAMPS PCB is to use an adapter such as this one Note that the pin labelled 5V must be connected to 3.3V on the Duet, not to 5V.

Using External Drivers for X/Y/Z Axis ¶ 

To use external drivers to drive X, Y and/or Z axes instead of the internal ones, you need to remap the X/Y/Z axis to the external driver. The drive numbers are:

0X Axis
1Y Axis
2Z Axis
3E0 Axis
4E1 Axis
5E2 Axis (Expansion Header)
6E3 Axis (Expansion Header)
7E4 Axis (Expansion Header)
8E5 Axis (Expansion Header)
9E6 Axis (Expansion Header)
1010 (LCD_CONN Header)
1111 (LCD_CONN Header)

To remap the X, Y or Z motors to external drivers in RepRapFirmware 1,14 or later, use the M584 command.

Configuring the Enable polarity and step timing ¶ 

The Enable signals on the expansion connector are active low by default but you can change this using the R parameter in the M569 command. You can also set a minimum step pulse width and other timings in the M569 command using the T parameter; try 1us to 4us when using external drivers.


Hello a pleasure to greet you. I was reviewing the numbers on configuration of external drivers, but it is very brief and I am something new but my input project is to make a 3D printer of high precision and speed with low vibration etc. then for this I will use stepper motors NEMA17 Stepper Motor 1.5A 0.52Nm 2Phase 48.3mm (1.9in.), model MS17HA6P4150) 0.9 Deg Moon's brand the same brand has a driver with emulation but I have no idea what it would be like to do wired to configure in the Duet Wifi, although I understand clearly that I must use the pin com LCD, you with more experience my question would be the following, how much performance can I get to the SR3-Mini controllers from Moon's with the Duet Wifi, can give me that high precision with reduced inertia and precise control? and how would the connection between this and the Duet Wifi?

glennholguin - Reply

Please ask this question on the forum.

David Crocker -

View Statistics:

Past 24 Hours: 13

Past 7 Days: 84

Past 30 Days: 377

All Time: 1,299