Introduction: Wiring Your Z Stepper Motors in Series

Picture of Wiring Your Z Stepper Motors in Series

This instructable is meant for owners of RepRap and other 3d Printers which use 2 stepper motors for the Z axis, as commonly seen in the Prusa or Mendel styles of printers, among many others.

The default configuration for most controller electronics such as RAMPS is to have the motors connected in parallel. However as I will attempt to explain, it can be more beneficial to connect the motors in series instead.

So the purpose of this instructable is to describe a method of creating a "plug and play" wiring harness that will convert your motors from parallel to series.

Pictured are conceptual diagrams which hopefully illustrate the path of the circuit and how this makes the motors series connected.

Step 1: The What and Why of Series Stepper Motor Wiring

On my printer I used DRV8825 stepper drivers which don't behave very well with parallel wired motors. Due to some specifics about how the driver works it basically ends up "skipping" parts of the microstepped waveform. That's not to say it misses any steps and loses its position, just that it flattens out parts of what should be a smooth sinusoidal current waveform making for louder more jerky operation. This is particularly noticeable if autoleveling is enabled on your printer. Autoleveling compensates for a bed which is not parallel to the toolhead movement by constantly making small Z adjustments as it moves across the X and Y axes. In my case this caused very audible "pop" sounds from my Z motors as it skipped a bunch of microsteps during a print.

For a way more detailed and technical explanation of what's going on and another solution to the issue involving diodes, see this informative blog post. (not my blog)

So the gist of it is that wiring the Z motors in series rather than parallel significantly reduces this effect, by making the motors act like one of a higher voltage rating/higher resistance (4x compared to parallel configuration).

Another benefit is that the motors will only require 1/2 the current for the same amount of motor output torque, allowing the stepper driver to run cooler.

Step 2: Parts and Tools

Here is a list of items used to build my harness. If you find this instructable useful and require any parts or tools, using these amazon affiliate links for your shopping would help me out.

This project requires to following parts:

And tools:

  • Wire cutters flush cutters great for clipping wires or component leads
  • Soldering iron / station (includes wire cutters) the HAKKO FX888 is basically the gold standard of soldering stations
  • Wire strippers I've had an older version of these wire strippers for over a decade and they are still my favorite, very reliable and quick
  • optional Tweezer nose pliers very nice for fine work bending wires or pins

The jumper wires typically come in a ribbon of 40 wires at a time, and you can peel away contiguous strips of any number. This project only requires 4 such wires. I find these style of jumper wires incredibly handy for electronics protoyping and tinkering, they are great for connecting arduinos, breadboards, and other quick connections. There are three types: Male to Male, Male to Female, and Female to Female. As long as your wires have female on at least one end it will work here.

Step 3: Prepare Wires

Picture of Prepare Wires

Peel 4 wires from your breadboard jumpers(with female ends), fold in half and clip in the middle.

Take a side with female connectors, and splay out the wires and strip a small amount from the ends (about the length of the shorter side of the header pins).

Tin the ends of your wires with a small amount of solder, and place some heat shrink tubing over them, 1/16" size fits just right. Make sure the wires are peeled backed far enough that the heatshrink won't get heated during soldering.

Step 4: Prepare Pins

Picture of Prepare Pins

Clip off a 4x2 piece of your male header pins.

Placing these pins on a breadboard(with the longer end facing into the breadboard) helps to hold everything in place while its being worked on. Pictured is a random Arduino shield with built in breadboard.

Now two pairs of diagonal pins will need to be electrically connected, as shown. I do this by carefully bending them toward each other, and then soldering with a small amount of solder. Tweezer nose pliers are helpful here as they can fit in very small spots.

Care should be taken when bending and soldering these pins as they can slide up and down in the plastic header(the breadboard helps somewhat to keep the pins from slidingn). If the heat from the soldering iron is left too long it can melt the plastic holder causing the pins to fall loose, and you may need to start with a fresh header piece. Also when soldering, avoid globbing on too much which could cause unwanted bridging to other pins, space is somewhat tight.

You should end up with four remaining unbent pins in a staggered pattern, which we will solder our wires to.

Step 5: Solder Wire Ends to Pins and Finish

Picture of Solder Wire Ends to Pins and Finish

Now we can solder our previously tinned wires to the header pins. Lay the wire ends straight along each pin and solder. Try to solder it along the outside edge, giving more room to avoid bridging the connection with the diagonal connections.

When soldering the wires, be sure not to swap the orientation of them; they will be staggered, but should still stay in the same ordering from left to right.

Visually inspect that no unwanted pins were bridged. A multimeter can also be used to verify this.

Push the heat shrink down over the soldered connections and heat with a heat gun.

Now the other end of the wires, the 4 female pins can be held together with a piece of 3/8" heatshrink. Again be sure not to change the ordering of the wires when heating shrinking these.

That's all, now it can be plugged into a single RAMPS(or other controller) Z-motor output, and the two Z motors plugged into the other end of the harness. The motors are now connected in series.


PeterH214 made it! (author)2016-12-01

The MKS GEN 1.4 only has one z-stepper header. This is brilliant!

aurion45 (author)PeterH2142017-09-26

Well, what a waste of time, you can use the E1 stepper port.
Then do the below to your Marlin firmware under Configuration adv.h, "I've define my Z steppers below".

// Dual X Steppers

// Uncomment this option to drive two X axis motors.

// The next unused E driver will be assigned to the second X stepper.



// Set true if the two X motors need to rotate in opposite directions

#define INVERT_X2_VS_X_DIR true


// Dual Y Steppers

// Uncomment this option to drive two Y axis motors.

// The next unused E driver will be assigned to the second Y stepper.



// Set true if the two Y motors need to rotate in opposite directions

#define INVERT_Y2_VS_Y_DIR true


// A single Z stepper driver is usually used to drive 2 stepper motors.

// Uncomment this option to use a separate stepper driver for each Z axis motor.

// The next unused E driver will be assigned to the second Z stepper.


Alex76 (author)2017-09-11


good explanation for a noob also, I'm setting my new printer with dual Z axis Nema17 motors (from Anet A8) and a MKS Gen with DRV8825. In this way, if I connect the motors in serial mode to the DRV8825 (board powered at 12V), what's the VREF should I use?

I think my motors are similar to SL42STH40-1684A (2,8V / 1.65ohm / 1.68A).

Thanks for your help

Alex76 (author)Alex762017-09-11

Note: at this time my board it's set up on double Z drivers (E1 used for second Z axis), VREF of two drivers is 0,64V (with 1/16 microstep) and it's working fine even though motors warms up a bit. But now I need the second extruder so this's the reason for changes..

pwave (author)2016-11-01

I have 3 motors on my z axis! Any diagram how to connect 3 motors in series?

Googliola made it! (author)2016-10-12

Big up for your instructions and background infos. Since I've run out of pin headers I made it a little differently. Nonetheless it works like a charm! Next is setting up the dual extruders... Leveling, ooze and retract settings will keep me busy again grmblpff ;-)

JasonB359 (author)2016-07-21

How could this be altered so 1 of the 2 motors would run in the opposite direction?

AddictiveMfg (author)JasonB3592016-07-21

To reverse the direction of a bipolar stepper motor, you need to swap the polarity of *one*, and only one, of its coils. To do this, instead of bridging the pins diagonally both times, bridge it diagonally on one side, and vertically on the other.

Below is a crude attempt at ascii representation of how the pins would be bridged, hopefully it displays ok and makes sense:



JasonB359 (author)AddictiveMfg2016-07-21

Is this diagram correct then?

AddictiveMfg (author)JasonB3592016-07-21

Honestly I'm not sure if that will run with one reversed since you are swapping which coils are in series. which makes it more of a puzzle to decipher. Keep the coil color pairs the same, but reverse the order of the colors.

I've attached an edit to your pic which shows how I would recommend you wire for the bottom motor to be reversed: An example of current flow is drawn in magenta. So if current goes in the red wire of the top motor, comes out the blue wire, then in the second motor goes in the red wire and out the blue again. This coil is wired the same for both motors. Now look at current going in the green wire of the top motor, out the black, then into the black and out the green for the bottom motor. So this coil is reversed for the bottom motor, relative to the top motor.

AddictiveMfg made it! (author)AddictiveMfg2016-07-21

Here's my edited pic I meant to attach above:

srah1 (author)2016-02-25

Great 'ible. I'm going to try this and also mechanical synchronisationof the z axis motors, using gt2 belt and pulleys, will compare

Spiky1987 made it! (author)2016-02-23

I had some limit switches laying around. I used the connector on them to make the asaptor. Glued on some epoxy to make a solid mechanical restrain and ... tadam ...

I will try it tomorrow. Thanks a lot for the hack !!!

Spiky1987 (author)2016-02-22

How can the motor have the same torque if you apply half the voltage to it ? Putting both motors in series makes a voltage divider, yes you have the same current across the line but you have half the voltage ... it means less torque. And, augmenting the inductance will make the second motor having more trouble to get it's current due to the L di/dt formula.

I have the same problem on my prusaI3, the "tok tok" of the z axis due to the autolevel feature.

AddictiveMfg (author)Spiky19872016-02-22

Motor torque is a function of current, not voltage.  Normally the current would be dependent on the voltage, but the stepper drivers are using PWM, along with the inductance of the motor coils to regulate the current.

As long as you have enough voltage to hit your desired current level, it is fine.  For example the motors I use are rated 4.2V, 2.8Ohm, 1.5A per phase. By the way the voltage rating for a stepper motor is just based on ohms law given the resistance and current rating for a coil. So V = IR , 4.2V = 1.5A * 2.8 Ohm
So in order to reach the max rated current on this motor you will need at least 4.2V. Since my power supply is 12V(pretty standard) even putting two in series is still over that threshold: 12V > 8.4V. So the holding torque can be the same when supplying 12V to two 4.2V motors in series. Also that assumes running the motors at their max rating, which I don't, I usually set my stepper drivers to about 1.2A,requiring even less voltage than stated.

One other thing to keep in mind is that in order to have the current setting the same per motor, when going from parallel to series, you will need to adjust the trim pot on the stepper driver, since that current is split between the motors in parallel, but not when in series.

Lastly the effect of increasing the inductance of the system is that the stepper driver can't alter the current as quickly; L di/dt as you mentioned. The consequence of this is limiting the absolute maximum speed that the stepper motors can turn.  But they aren't being driven close to that limit for typical z axis, so its not an issue.

Spiky1987 (author)AddictiveMfg2016-02-23

Well thank you ! I knew that the torque is a function of the magnetic flux that os function of the frequency and the voltage for ac motors. I'm not used to stepper formula. Your answer is complete and seems pretty accurate. Thanks a lot for the explanation, I will try it this week when my driver board will be repaired !!

baecker03 (author)2016-02-19

I would read through the data sheet to ensure the driver will handle the impedance. when the motors are wired in parallel, the resistance is halved, which causes the motors to pull additional current. this causes the driver to most likely over work/over heat which causes it to skip steps.

AddictiveMfg (author)baecker032016-02-20

The types of stepper drivers used in have built in current sensing, there is a trim pot for setting the target current, changing motor impedance alone does not affect the current setting.

rpotts2 (author)2016-02-18

I always wondered how I could get a large bed to offset correctly...

About This Instructable




More by AddictiveMfg:Extending Power Pins for Multiple Connectors3D Printing Filament Drying ChamberWiring your Z stepper Motors in Series
Add instructable to: