To connect stepper motors to the internal drivers, refer to the wiring diagram at Duet 2 Wiring Diagrams or Duet 2 Maestro Wiring Diagram. The pinout of each stepper motor connector is the same as for other popular 3D printer electronics.
Note: it is highly recommended that the stepping motor casings be grounded, especially in belt-driven printers. Otherwise, motion of the belts causes static charge to build up, which eventually arcs over to the windings. If the motors are screwed to a metal frame, grounding the frame is sufficient.
Each stepper motor connector has four pins. You must connect the two wires for one phase of the stepper motor between the two pins at one end of the connector, and the wires for the other phase to the two pins at the other end.
Identifying the stepper motor phases
Here are two ways you can pair the stepper motor wires into phases:
Use a multimeter. There should be a few ohms resistance between two wires that belong to the same phase, and no continuity between wires that belong to different phases.
With the motor wires not connected, spin the spindle between your fingers. Short two of the wires together, then spin the spindle again. If it is much harder to spin than before, those two wires belong to the same phase. Otherwise, try again with a different pair of wires shorted together.
Duet 2 (WiFi, Ethernet and Maaestro)
If you have two Z stepper motors, connect them to the ZA and ZB connectors. These connectors are wired in series, which is better than wiring them in parallel for most types of stepper motor used in 3D printers.
If you have only one Z stepper motor, plug it in to the ZA connector, and plug two jumpers into the ZB connector. Duet 2 boards are normally supplied with these jumpers already fitted.
Duet 0.6 and 0.8.5
If you have two Z stepper motors, then for the types of motors commonly used in RepRaps (i.e. with rated current in the 1.2 to 2.0A range), it is better to connect them in series than in parallel. Google "wiring stepper motors in series" for instructions on how to do this for example:
Using more than one motor on an axis with a separate driver for each motor
Use the M584 command (see http://reprap.org/wiki/G-code#M584:_Set_...) to specify which drivers are used for the axis concerned. You must be using RepRapFirmware 1.14 or later.
Using external drivers
See the using external drivers page for more details
If your motors are rated above about 2.8A and you are using the Duet 2 (Wifi or Ethernet), or above about 2A and you are using the Duet 2 Maestro, or obsolete Duet 0.6 or 0.8.5, or if they need higher voltage than the Duet can provide, then you need external stepper motor drivers. These generally have optically isolated step/dir/enable inputs. For example, stepper motor drivers rated at up to 5A using the TB6600 stepper driver chip are widely available on eBay.
If the drivers 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 Duet 2 Wiring Diagrams for the expansion connector pinouts. Otherwise, you should use 3.3V to 5V level shifting ICs such as 74HCT04 to boost the signal level to 5V and drive them. You can use the Duet Expansion Breakout Board for this purpose.
To remap the X, Y or Z motors to external drivers in RepRapFirmware 1,14 or later, use the M584 command (see M584 Gcode). The Enable signals on the expansion connector are active low by default but you can change this using the M569 command (see M569 Gcode). You can also set a minimum step pulse width in the M569 command (try 1us or 2us when using external drivers), and configure the direction.
Checking connected stepper motors
Before conducting this step, temporarily alow axis movement without homing by navigating to the G Code console and entering: M564 S0 H0.
Navigate back to the Machine Control page. At this time, we will check the operation of our stepper motors.
Move each stepper motor, individually, 1 mm in each direction.
Note that a stepper can't be moved before homing, unless the M564 command is used to override this safety default.