Build a Dual Extruder for 3D Printing




Introduction: 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 fromThingiverse. 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)

Step 1: Clean Up Plastic Parts

Carefully trim away all the support material on the bodies.

Clean up flashing and any blobs, etc. from the parts – especially the gears! Clean the nozzle mounting holes so the nozzles fit properly and extend the same distance. Clean out the space for the filament drive gear.

Drill holes for M3 bolts to 3.2mm or 1/8 inch. Drill M4 bolt holes to 4.2mm or 5/32 or 11/64 inch. Check each step for the hole sizes. (This has the added benefit of making you read the instructions before you build. That's a good thing!)

IMPORTANT: Drill the filament holes to 3.5mm or 9/64 inch. See the picture titled “Filament Guide Holes”.

Step 2: Build and Join Extruder Bodies

Parts needed for this Step:
Refer to picture titled “Parts to Join Extruder Bodies”.
Two Extruder Bodies.
Two 624 bearings.
Four M3 nuts.
Four M4x35mm bolts.
Four M4 nuts (Kep nuts are shown but cause interference with the large gears. Use standard nuts instead.)
Two Ubis nozzles. (Others could work but are untested.)

Press one 624 bearing into the “closed” bearing pocket. The “closed” pocket is the one in which the bearing is completely surrounded by plastic (see picture). Clean the hole with an Xacto or Dremel until the bearing seats completely but tightly. The pictures all show these bearings in place.

Press M3 nuts into each tensioning bolt nut pocket. Be sure they seat correctly and tightly so you don't have to keep messing with them during assembly. See the picture titled “Tensioner Nuts in Pockets”.

Put the extruder bodies back to back and secure with bolts partly through the inner holes on the bases. Be sure the bodies fit together properly. Refer to the pictures titled “Join Bodies Detail 1” and “Join Bodies Detail 2”.

Back off one of the bolts so you can fit a nozzle in one base. Run the bolt back into the base to hold the nozzle. Put the outer bolt for that extruder body in to secure the nozzle.  Repeat for the other nozzle. Make sure the nozzles fit properly and stick out of the bodies very nearly the same distance. Refer to the picture titled “Nozzles Mounted”. Again, Kep nuts are shown, but use standard M4 nuts instead.

NOTE: You may want to do a trial assembly of your dual extruder without installing the nozzles, then remove the gears, and remove the two bolts from one side at a time to allow the nozzles to be installed. This can be done without the bodies separating if you are careful. While this may seem like a waste of time, it allows you to test fit all the parts and to become familiar with how the parts fit together and how the extruders work – really time well spent. You won't understand this extruder (or any other) until you've taken it apart and rebuilt it at least 10 times. I'm still learning about this one.

Step 3: Build Tensioners

Parts needed for this Step:
Refer to picture titled “Parts to build Tensioners”.
Two Tensioner Bodies
Two 624 Ball Bearings
Two M4x25mm Bolts for axle
Two M4 nuts (Nylock can be used)

Put bearing into tensioner body and slide the bolt through. Secure with nut. Refer to picture titled “Tensioners Assembled”.

Step 4: Install Tensioners

Parts needed for this Step:
One Dual Extruder assembly from Step 1
Two Tensioner assemblies from Step 2
Two M3x25 Bolts
Two M3 nuts (Nylock can be used)

Position Tensioner on the pivot. Put bolt through hole in the pivot and secure with a nut. Repeat for other side. Refer to picture titled “Tensioners Installed”.

Step 5: Prepare Filament Drive Gears

Parts needed for this Step:
Two Makerbot MK7 filament Drive gears.
One piece 4mmID x 5mmOD brass tubing.
Two M3x5mm set screws.

The MK7 filament drive gear is perfect for the dual extruder except for one problem The ID is 5mm and the axle shaft OD is 4mm. To fix this,make an adapter using the brass tubing.

Insert a 5mm OD x 4mm ID brass tube into the bore of the gear. It will be very tight. Sand it lightly to make if fit if necessary. You should be able to push it all the way into the gear, but it should be tight. I find it most accurate to insert the tube into the gear, then cut it. Cut it to length using an Xacto knife with a sharp, straight blade. Place the gear with the tube in it on  a flat surface, hold the blade at a slight angle so the edge is right against the gear, press down firmly, and roll the gear back and forth until the blade cuts through the tube. A good technique is 10 to 20 strokes back and forth, lift the knife, rotate the gear and tube ¼ turn, then repeat until you cut through the tube. File the edge smooth. Refer to the picture “Filament Gear ”. (An Arcol gear is shown.)

Use a 3/32” drill bit in the set screw hole to make a hole through the tube. Then thread with a 3mm tap. I do this after the tube is cut.  Use an M3x5mm set screw.

Step 6: Assemble Axles and Large Gears

Parts needed for this Step:
Two Axles – An M4x50mm all-thread bolt is used as an axle.
Four M4 nuts. 
Four M4 washers.

Run one nut all the way onto the bolt and seat it firmly against the head.  Put the axle through the gear and seat the nut into the nut pocket on the large gear. Put a washer on next to the gear, then thread a nut on and tighten firmly. Be sure that the gear is perpendicular to the bolt (the axle). Optionally, epoxy the bolt into the gear if you like.

Refer to the picture titled “Ground Flat Dimensions”. Measure from the side of the nut, not the side of the gear. Grind a flat for the Filament Drive Gear setscrew onto the axle from 13mm to 18mm as shown. A Dremel with a small grinding wheel works great for this. Extend the grinding lightly to 25mm as shown. This allows easy location of the flat when the filament drive gear is installed.

Step 7: Install Bearings, Large Gears, and Filament Drive Gears

Parts needed for this Step:
Refer to picture titled “Large Gear Parts”.
One Dual Extruder assembly from Step 3
Two Large Gear and Axle assemblies from step 5.
Two 624 Ball Bearings.
Two M4 Nylock nuts.
Two Filament Drive Gears from Step 4 (not shown).
Two M3x5mm set screws (not shown).
(The two M4 washers shown are not used.)

Press one ball bearing into the pocket on the “open” end of each extruder body.

Slide an axle through the bearing on the “closed” end of one extruder body, through the filament drive gear, and through the other bearing. Put the a Nylock on to hold everything in place. Refer to picture titled “Large Gear Installation Detail 1”.

Center the filament drive gear on the filament hole, line the set screw up with the flat you ground on the axle, and tighten the set screw. Use a drop of Loctite on the set screw for additional security. Refer to picture titled “Filament Gear Installation”.

Don't worry if the bearing on the “open” side seems loose, it'll all be held in place by the tensioner when it is tightened. Check the clearance of the Large Gear to the Extruder Body. Make sure that the bolt ends do not rub the gear as it rotates. If it does, fix it now. It won't get better later. Refer to picture titled “Large Gear Installation Detail 2”.

Step 8: Install the Small Gears on the Motors

Parts needed for this Step:
Two NEMA 14 stepper motors.
Two Small Gears.
Two M3x8mm set screws. (Socket head bolts are shown, but use set screws!)
Two M3 Nuts.

Seat a nut into the pocket in the gear. Thread the set screw into the nut. Place the gear on motor shaft, but do not tighten yet. Refer to picture titled “Small Gear Assembly”.

Step 9: Install Motors

Parts needed for this Step:
Dual Extruder Assembly from Step 6.
Two Motors with Small Gears from Step 7.
Six M3x10mm bolts.

Use three M3x10 bolts to mount the motor. The lower bolt is accessible through the holes in the large gear. Refer to picture titled “Motor Installation”.

Adjust the small gear and the motor position to obtain a good mesh of the gears, then tighten the   setscrews. The gears should turn smoothly.

If your motors run warm, check that your gears mesh smoothly. However, you may find that the motors run warm even with smoothly meshing gears. If so make a couple of the fan mounts foundhereand add cooling fans.

Step 10: Install Tensioning Bolts

Parts needed for this Step:
Dual Extruder Assembly from Step 8
Four M3x35mm bolts

Put the bolts through the Tensioner and thread them into the nuts in the pockets in the body. When you load filament, you can tighten these as required. Refer to picture titled “Tensioning Bolts”.

Step 11: Mount the Dual Extruder

Parts needed for this Step:
Dual Extruder Assembly from Step 9.
Two M4x?? bolts (length to fit your X carriage)
Two M4x12 bolts
Six M4 nuts

Mounting the Dual Extruder requires some ingenuity on your part since there is no standard design for an X Carriage to carry this extruder. That said, it should only take minor changes to modify any given X Carriage. A Dremel could do it, or  a small revision to an existing carriage design on Thingiverse. If you create a modified carriage design yourself, consider posting it to Thingiverse.

For the standard Prusa X Carriage, the dual extruder mounting hole spacing is designed to fit with only slight adjustment and needs only a small amount of grinding to make the nozzles fit. Note that the dual extruder sits at an angle on the carriage so that the nozzles are nearly parallel to the X axis. Refer to picture titled “Mount to X Carriage (Bottom)” and to picture titled “Mount to X Carriage (Top)”.

Bolts may be inserted into the nuts in the pockets at either end of the base to level the nozzles. The nozzle tips must be very close to level (that is, the same height from the bed) to avoid dragging the low tip on a part being printed. Refer to picture titled “Leveling Bolts”.

Be sure to put a fan on your X Carriage to constantly blow on the upper ends of the nozzles. Otherwise, the X Carriage may melt. This fan is not shown in my pictures, but should be added for printing. The fan is also important to correct functioning of the Ubis nozzle and the J-Nozzle.

Step 12: Hardware Connection to Printrboard

Connecting the second extruder nozzle and second temperature sensor to the Printrboard is quite easy. Simply use the connections for the Bed Heater and bed temperature sensor. Necessary firmware changes are detailed in the next section. If you want to use a heated bed as well as a Dual Extruder, then you will need to duplicate the interfaces on the Printrboard. Just follow the Printrboard schematics.

Driving the second extruder motor is a little more involved, but still not difficult. The Printrboard (and most any other printer controller board with onboard motor drivers) only has four stepper motor drivers. A fifth is needed for the second extruder and can be easily added. Shown is a motor driver of my own design, but one from Pololu or Spark Fun should work just fine. Picture titled “Stepper Motor Wiring” shows my setup.

The Printrboard has extra pins available on the expansion headers which can be used to control the new driver. Pins from Port D on the ATMEGA90USB1286 processor are available and will be used. Specifically, Port D, Pin 4 connects to Step; Port D, Pin 5 connects to Direction; and Port D, Pin 6 connects to Enable. These are accessable on JP11 pins 5, 6, and 7 respectively. JP11 is shown on the schematic, but is labeled EXP2 on the Printrboard. Please refer to picture titled “Printrboard JP11/EXP2” and picture titled “Printrboard EXP2/JP11”.

Step 13: Firmware Modifications

The firmware for the controller must be modified to control the new stepper driver, sense the temperature of the second nozzle and drive the second nozzle heater. Exact details of the changes you need to make will depend on the controller and firmware you are using. Here I provide the details for modifying the Printrboard version of the Marlin firmware. Marlin seems to use many of the same settings for both extruders. Since the extruders are identical, this seems to work fine. Here are the changes I made to Marlin for the Dual Extruder.

In Configuration.h:
Change the line
#define TEMP_SENSOR_1 0
#define TEMP_SENSOR_1 1
This change enables the second extruder.

Change the line
This disables the bed.

In Configuration_adv.h
Change the line
#define EXTRUDERS 1
#define EXTRUDERS 2

In pins.h:
Find the section for the Printrboard. It begins

Now find the line
#define E0_ENABLE_PIN       13

and add the following lines for the second extruder motor driver
#define E1_STEP_PIN         4
#define E1_DIR_PIN          5
#define E1_ENABLE_PIN       6

Change the line
#define HEATER_1_PIN       -1
#define HEATER_1_PIN       14

Change the line
#define HEATER_BED_PIN     14  // Bed
#define HEATER_BED_PIN     -1  // Bed

Change the line
#define TEMP_1_PIN          -1
#define TEMP_1_PIN          0

Change the line
#define TEMP_BED_PIN       0  // Bed
#define TEMP_BED_PIN       -1  // Bed

Save your changes and reload the Marlin firmware onto your Printrboard. Now you can use Pronterface to test your dual extruder, as explained next.

Pronterface knows nothing about dual extruders and provides no direct control for testing your Dual Extruder, but Marlin supports G-codes that can be used from the Pronterface G-code Command box. That's the text box on the lower right of the Pronterface window. Type the G-code in and click the SEND button or press ENTER to send it to Marlin.

To switch extruders, simply type “T0” or “T1” (without quotes) in the G-code Command box and click SEND or press ENTER. The Pronterface widgets that normally apply to an extruder will now follow your selection. By default, Pronterface starts with T0 selected. You can quickly figure out which extruder is being controlled. Send T1 and the other extruder will be controlled. Send T0 to switch back.

Recent versions of Slic3r support dual extruders, mainly to use one for support material. I have yet to try this, but that seems like the first thing I'll try once I get an X carriage which will carry my dual extruder.

Step 14: Conclusion

You have now built your very own copy of Jim's Flying Motor Mount Dual Extruder. You have also figure out a way to mount it on your X Carriage and have test its operation using Pronterface and some G-code commands.

The next steps are up to you! What will you print with a Dual Extruder? How will you improve it? The 3D Printing World is waiting to see.

Instructables Design Competition

Participated in the
Instructables Design Competition

Be the First to Share


    • Plastic Contest

      Plastic Contest
    • The 1000th Contest

      The 1000th Contest
    • Battery Powered Contest

      Battery Powered Contest

    33 Discussions


    1 year ago

    i want to make a independent dual Nozzle extruder, Currrently i'm using Single Extruder Printer Using Mks Rumba, Can i use This Board for Dual independent Extruder, if i can than What changes i have to do in this firmware.



    3 years ago

    How do I configure it with repetier host?


    Reply 3 years ago

    I don't use repetier so I can't really help you. Maybe try the RepRap site?


    4 years ago

    I'm building an extruder for Cyclops (dual switching hot end) for my Simple Metal Printrbot and just need another stepper driver. The expansion board I purchases turned out to be bad, this is a lot less expensive route to go. So when I get it to work will definitely credit you when I post the Cyclops extruder instructable.


    Reply 4 years ago

    Glad my work can help you.

    Good luck with your project!


    5 years ago

    Has anyone tested how well this extruder works on flexible filaments??


    Reply 5 years ago

    I haven't tried flexible fibers with this yet, but they should work fine. The distance from the driver to the guide hole is minimal, as is the distance to the nozzle entry, so there is little room for the fiber to bend.

    If anyone has experience with using flexible fiber with this design, please post.


    6 years ago on Introduction

    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!!!!!


    6 years ago on Step 12

    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!


    Reply 6 years ago on Step 12

    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.



    Reply 6 years ago on Step 12

    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;

    pinMode(PS_ON_PIN, OUTPUT);
    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


    6 years ago on Introduction

    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.


    Reply 6 years ago on Introduction

    Your parts look great! Please post your progress, especially about the bearings. Sounds like a good idea.


    6 years ago on Introduction

    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?


    7 years ago on Introduction

    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.


    Reply 7 years ago on Introduction

    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.


    7 years ago on Introduction

    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?


    Reply 7 years ago on Introduction

    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.