Picture of Build a Dual Extruder for 3D Printing
This Instructable will show you how to build Jim's Flying Motor Mount Dual Extruder. This extruder is a compact, light-weight, dual extruder which can be used on Mendel, Prusa, Wallace, and Printrbot 3D printers (and others) which currently use the single Greg's Wade's Extruder. This new design offers a true dual extrusion capability to these printers, allowing two color printing, or use of an alternate support material.  Use of support material is a feature of recent versions of Slic3r. Alternate support material removes restrictions on printing overhangs to allow printing of arbitrary shapes.

Caution: This Dual Extruder is designed to be used as part of an existing or new 3D printer. Some adaptation is needed to make it fit any particular printer. This adaptation is up to the user. Although I provide instructions to guide the adaptation, some creativity and ingenuity will still be required of the user.

Full disclosure: I have yet to get the dual extruder mounted and fully tested on my printer. I have extruded plastic through both nozzles to verify hardware and software functionality, but printing awaits a new X Carriage design. I share it so that others can help prove and improve my design.

Printed Parts:
Print two each (It's a dual, remember?) of the Extruder Body, Tensioner, Large Gear, and Small Gear from Thingiverse. I used 40% fill. Note the support material used with the Extruder Body.

Vitamins (metal parts):
Four M4x35mm socket head bolts  with nuts. (nozzles)
Four M4x16mm socket head bolts with nuts. (leveling)
Two M4x?? socket head bolts with nuts. (X Carriage mounting) Actual length needed depends on your X carriage.
Two M3x25mm socket head bolts with nuts and washers. (tensioner hinge)
Four M3x35mm socket head bolts with nuts and washers? (tensioner tightening)
Two M4x25mm socket head bolts with nuts (tensioner bearing axles)
Six M3x10mm socket head bolts (motor mounts)
Two M3x8mm or 10mm set screws with nuts. (small gear mount).
Two M4x50mm all-thread bolts with 6 nuts (three each –  2 Nylocks) and 4 washers. (main axles)
(These are hard to find. I found them in stainless with Phillips pan heads at the local hardware store. M4 threaded rod could be used; use a Nylock instead of the plain nut in the pocket on the gear.)
Two nozzles using 16mm groove mount of the same type, or at least the same length. I have used Ubis nozzles; the J-nozzle should work also. Others using 16mm groove mount may work, but are untested. A different nozzle mounting method would require modifications to the scad files.
Two NEMA14 bipolar stepper motors. The ones I use have 3.2 Ohm coil resistance.
Six 624 Bearings.
One piece of 4mmID, 5mmOD brass tubing (McMaster-Carr) long enough to be cut into two pieces the same length as filament drive gears. Details follow.
Two filament driver gears  (Makerbot  MK7 (SKU2394) – 5mm hole)
M3x5mm set screw (2) (filament drive gear)
Remove these adsRemove these ads by Signing Up
robotman95 months ago
have you ever run into a buzzing noise with the extruder where it doesn't move just goes back and forth a little bit? please let me know because its happening to my Printrbot classic right now please help thanks!!!!!
gonAlonso11 months ago

Hi doctek,
I'm trying to tweak Marlin to get PS_ON on my printrboard. It will allow my 3D printer to shutdown the ATX PSU after finish an object. I'm following your mod, as it's the best guide I've found to know the board pinout on expansion headers.
I've decided to use pin 5 on EXP2 as PS_ON_PIN.
Following your guide, I modified pins.h, adding "PS_ON_PIN 4" inside the "motherboard == 81" block, as EPX2 pin5 is refered as pin 4 on Marlin.
I've uploaded the new FW into the board, but it does nothing. G-code M80 and M81 should set ON/OFF pin 5 on EXP2. A multimeter measures 1.5V no mather the command sent.
Do you know what is happening? Any clues?
Thank you!

doctek (author)  gonAlonso11 months ago
Right now I am in the middle of a major cross-country move, including selling our house. All my electronics stuff is packed so I can't do any experiments to help you. I'm very sorry.

One thing you might do is check other pins on the header and see if any of them change when you do the M80/M81 codes. Mapping in Marlin is a little convoluted and easily misunderstood, so I'd check all the pins to see if any are changing. Then change the map to match reality.

gonAlonso doctek10 months ago

Hi doctek,

I've finally found the problem. It looks like the code on M80 routine doesn't behave as expected. Marlin make use of macros:


But it doesn't change the port to act as output neither outputs High or Low level on it. So I used standard arduino functions instead;

digitalWrite(PS_ON_PIN, 0);

And it does the job! I'll try to get in touch with Marlin developers to know the reason of this failure.

Thank you, anyway

JohnDH1 year ago

I have a full set of printed parts now. There is a 695-2RS bearing with a 5mm bore. It is only 4mm wide, but I do not see that as a problem. So I'll go with four 695, and two 624 bearings to avoid the brass tube fix.

doctek (author)  JohnDH1 year ago
Your parts look great! Please post your progress, especially about the bearings. Sounds like a good idea.
JohnDH1 year ago

I'm printing the plastic parts in ABS, and intend to complete the project. However when I do have a dual extruder working, how do I design two color parts? If I color the STL file, will slic3r take it from there, and produce G code for the two extruders?

doctek (author)  JohnDH1 year ago
That's a really great question, JohnDH! I think you'll find all the details you need, as well as a sample calibration piece, here:
doctek (author) 1 year ago
The details on this are in Step 12 of this Instructable. Using the heated bed controls to get the dual extruder working is highly recommended as the simplest approach. If you then want to use a heated bed again, have a look at the schematics for the Printrboard and copy the circuits for the resistor and thermistor interfaces.

As far as the exact hookup, I have published the code I use here:

You will care about that because it has a version of the Marlin/Lincomatic firmware which I modified to provide independent control of the two extruders. Have a look in pins.h to see exactly what pins I used for what functions.
doctek (author)  doctek1 year ago
This is a good time for an update. I've posted several items on Thingiverse pertaining to this design.
Here's the dual extruder in action:

Here's a modified X-carriage for the Prusa:

The modified firmware was mentioned just above.

And finally a method of calibration:

These postings also contain some useful instructions for construction and use of the Dual Extruder.
makedream1 year ago
I would like to know where I have to connect the thermistor and the resistor of the second extruder.
on which pins of printrboard I connect?
I'm having trouble with low torque output from my printrboard, even with the voltage across the gain pot up at .8v, I was wondering if it was possible to connect a total of three pololu drivers to the board, I noticed on the extension headers there are only eight PD(x) pins, is it necessary to use these and if not, how can I found out the relevant pins to set in pin.h for the rest of the headers?
doctek (author)  myfacelackseyes1 year ago
Again, this is really a question for the Printrbot forum. I'll again offer an answer based on my experience.

First, be sure you are solving the right problem. It is possible you have too much current to your steppers. This will cause them to skip steps also. A sign of this is a loud whining noise when you command them to step. Try turning the current down in steps of about 1/8th turn, then command a short movement.

Also check your motors to be sure they are moving freely. I often use a spare motor and connect it to the driver with no load. If it moves easily, then the driver is not the problem. Check your wiring to the motors the same way: disconnect from your printer and hook up a spare motor.

If you really want to replace the drivers, keep in mind that the Pololu driver board uses essentially the same Allegro chip so you won't get a lot more drive, if any.
(removed by author or community request)
doctek (author)  myfacelackseyes1 year ago
These are probably questions for the Printrbot forum, but I'll do my best based on the experience I've had with Rev. B and D boards.

The problem with not reversing may be a problem with the speed and acceleration you are using when you reverse. Try setting these much lower and see if the problem goes away. Then increase the values to tune them for your machine.

Another possibility is that the DIR signal is not working. Suspect his if the extruder motor runs both when you tell it to extrude and when you tell it to retract, but the direction doesn't change: it always runs one way. You can check the DIR signal with a scope or with a meter. If you use a meter, you'll want to make the extruder run for many centimeters in each direction so you can get a reading. An easy way to do this without wasting plastic is to take the plastic filament out of the extruder, turn it off, and use the Gcode command M302 to allow cold extrusion (in Marlin). Then you can try really long extrusions. Testing with the plastic out is also a good way to check the extruder since there is very little load on the motor.

Regarding pin numbering, keep in mind that the numbering scheme used is for Arduino land and bears little direct or obvious relation to physical pins on the chip. That's why I carefully specified which pins to use and how to set it up in pins.h.

There's little in the way of explanatory material. What I did was study the schematics for the Printrboard and compare them to the pins.h in Marlin. Once I had a mapping, I could make sense of, then I could extend it for the dual extruder.
Fragmaster1 year ago
This method for locking the hot ends in place is interesting.
Are the hot ends securely fastened to the body using these pairs of parallel bolts? I can't judge how tight the fit is from a picture. I would worry that the bolts were not close enough together to snugly pinch the hot end notch. Did you have any problems with the hot ends/nozzles coming loose?
doctek (author)  Fragmaster1 year ago
The bolts are spaced such that they byte into the sides of the nozzle and hold it securely. While I know this method can be improved, it works and has worked on printers I've built for many rolls of plastic.
Fragmaster1 year ago
It seems that you need to take several steps in order to modify the axle to fit the $12 MK7 filament drive gear. Wouldn't it be much easier to modify this design to use an M8 bolt that is hobbed, just like in Wade's Extruder? The process of modifying the bolt into a drive gear is as simple as the above instructions.

The bill of materials for this design is quite expensive due to the wide variety of parts and suppliers that must be used to get these parts (pololu, McMaster Carr, some fastener company, MakerBot/MakerFarm). Using an M8x50mm bolt would require two 8mm bore bearings (608), 8mm nuts, 8mm washers, and a modification to the Dual Body and Large Gear files, but the results might eliminate the need to purchase brass from McMaster Carr (avoiding the cost of the brass and shipping, yay!).

This design is great, but we can make it better :)
doctek (author)  Fragmaster1 year ago
First, I *really* appreciate your spirit of collaboration. Your eagerness to contribute to improving the design is awesome! And any suggestions, comments, etc. are most welcome.

Let me explain the reasons for some of my design choices. First, I like the Mk7 extruder because it is larger diameter than the typical 8mm hobbed bolt. I chose the 4mm axle because it used the smaller 624 bearings (which I happened to have) and the extruder bodies could fit closer. I was trying to get the nozzles as close together as possible and have looked at many alternatives. The 8mm hobbed bolt and the attendant bolts add significant weight also. BTW, the tubing (with shipping) was only about $5 or so.

If you want to explore using the 8mm hobbed bolt, consider using 688 bearings. They are also 8mm bore, but not nearly as large OD.
Thanks for mentioning the 688 bearings. Those will do much better than the bulky 608s. The MK7 extruder does indeed have a larger diameter, so it would have more contact with the filament, a valid benefit.
Fragmaster1 year ago
It would seem prudent to use narrow compression springs on the outside of the tensioner block, sleeved onto the tensioner bolts with washers on the socket end. This would improve grip on the filament when the diameter varies (which unfortunately happens often) and eliminates the need to tighten and loosen bolts whenever filament in inserted.

The bolts will need to be changed to a longer size to accommodate the springs, but this shouldn't be an issue. Deciding an an appropriate spring will take a bit of research though.
doctek (author)  Fragmaster1 year ago
Good catch! I didn't have these in the parts list. Small rubber o-rings under a washer have served me well on other extruders without requiring longer bolts.

Sorry I left these out.
Fragmaster1 year ago
What stepper driver is connected to the breadboard in the picture titled "Stepper Driver Wiring"? What drivers can run the NEMA 14 at the rated currents we can expect?
doctek (author)  Fragmaster1 year ago
The driver shown is of my own design and uses the Allegro A4988 chip. The A4988 driver from Pololu will also do the job. Wiring for the Pololu board will be slightly different since you need to connect the stepping mode pins. My board is set up for 1/8th step microstepping. The NEMA 14 motors draw less than an amp at 12V.

I think Sparkfun also has a similar driver. The control signals are enable, step, and direction. As long as the board is controlled by these and is rated at 2 amps (meaning it can do 1 amp continuously) then you should be fine.

Note that drivers like that from Adafruit do not use step and direction for control and are not suitable for this application.
sleeping2 years ago
Thanks for the great pictures of your project. Would like to see it in action and stuff you make.
what printer does this attach to? reprap?
doctek (author)  amandaghassaei2 years ago
This design fits no existing printer perfectly, but should be adaptable to most any printer with not too much work.

Perhaps I should make the "Caution" (the second paragraph) clearer?