RUG/Pennsylvania/State College/Software/Parts/Dual Extruder

From RepRap
Revision as of 10:14, 30 April 2014 by DavidCary (talk | contribs) (add to "dual extruder" category)
Jump to: navigation, search

Back to State College RepRap Main

The Quest for Dual Extrusion

The purpose of this page is to document the Penn State RepRap User Group's progress towards a system that will be capable of dual extrusion. There are many incentives for the pursuit of a dual extruding RepRap. With such a system, the class would be capable of printing much more complex objects by using different colored plastics and different types of materials in the same print. Furthermore, as the capabilities of our systems continue to grow (in terms of being able to print a wider variety of objects), the class' usefulness for both the RepRap community and the Penn State College of Engineering will also continue to increase. There are already many introductory level engineering design classes that utilize the printers to create solid models for their design projects, but with the ability to print in multiple colors and materials, other professors and groups within the university may become interested in utilizing our services rather than having objects printed commercially.

For simplicity's sake, we have chosen to try and construct a dual extruder that is based off of the current single extruder (a derivative of 'Wade's Extruder'). In this way, we would be able to use existing parts and designs to assemble the new extruder, hopefully making few, if any alterations. The only major change that will need to be made is the creation of a new hot plate that will be able to support two extruders. Other than that, the goal is to use exclusively parts from our current extruder design, most likely simply placing two complete extruders side by side on the same OpenX assembly.

Beyond the actual hardware of a dual extruder system, there will also need to be some modifications made to the firmware and software that communicates with the extruders and allows them to communicate back to the computer. Adding a second extruder means calibrating the system so that when one color is finished printing its part of a layer, the second tip can move into the correct position on the layer. This should involve simply compensating for the horizontal distance between the two hot tips, assuming that the two tips will be in line with each other on the carriage. We will also need to find ways to control both extruders using the computer (perhaps using Replicator G), as well as generate GCode for parts to be printed in multiple colors. These are technical barriers that will need to be overcome even if we are successful in building a physical dual extruder. Without the proper software, the extruder itself is essentially useless.

Progress Blog

December 6, 2012: Based on the SolidWorks Model of the motor-to-motor dual extruder arrangement, a new OpenX carriage has been designed to support the two extruders. In order to make the extruders fit correctly, the carriage had to be redesigned so that the support protrusions weren't conflicting with the mounting holes in the hot plate for each of the extruders. This design should enable both extruders to be supported, while at the same time minimizing the space lost due to the increased length of the carriage.

December 4, 2012: After comparing the digital mock-ups in SolidWorks, it appears that a 'motor-to-motor' configuration will allow for the smallest distance between extruder tips while at the same time keeping the overall width of the extruder down to a minimum. Knowing this, work has begun on creating a hot plate for the extruder configuration, as well as redesigning the OpenX carriage for dual extruder use (the current one is not long enough to support both extruders). Though lengthening the OpenX carriage will reduce the print volume by a small amount, in addition to the reduction in print volume caused by the spacing between the hot tips, it is a necessary sacrifice for the development of a dual extruder.

November 27, 2012: Work has begun on developing mock-ups of potential dual extruders in SolidWorks (using the existing model of the Open Hybrid Mendel extruder currently in use). Our goal is to minimize the distance between the two hot tips, thus the two obvious configurations are to put the extruders on a hot plate either gear-to-gear or motor-to-motor. Most likely, whichever is able to fit on an OpenX carriage the best (i.e. have the tips closest together and maintain the largest print area) will be chosen to continue work on.

In past semesters (before Fall 2012) there had been some research done on a dual extruder setup, but no substantial progress was ever made. The posts below, as well as some of the firmware section, are the results of this research.

1.24.12: It turns out that there was someone else who had the exact same intentions as I did (Dual extrusion, Ramps, Marlin), but he was just quicker to figure it out than I was. Awesome, less work for me. But now that I have the proper firmware (found here), I've changed the proper lines in the configuration.h and pins.h files, and so in theory it should work. The Mondo is almost assembled, and one of my colleagues is looking into the specific build of Skeinforge that supposedly is capable of generating G-code for dual extrusion. The goal is to have the printer running with a single extruder in the next week or two, with the dual setup operational shortly thereafter.

1.17.12: It's a new semester, meaning another attempt at Dual Extrusion. After my short battle with it last semester, I'm back and ready to tackle it once and for all. If MakerBot can produce a commercially successful dual extrusion system, I should be able to figure it out with a little help from my colleagues here at Penn State.

10.18.11: Firmware night, and I must say, it's going to be quite the task. I spend the night familiarizing myself with the firmware language and editor, as well as locating the sections of code that will need modification. The actual firmware rework will have to wait though, as I need to see exactly what sort of code will be sent to the machine with regard to tool (extruder) selection. This will happen as soon as I can learn Skeinforge and begin generating the code that will be sent to the machine.

10.11.11: Today marks the beginning of the project. I assessed the feasibility of the project and determined which software, electronics, and hardware to use. The selections can be found in each of the respective sections below.


The development of an Open Hybrid Mendel dual extruder is based upon the current extruder used on the completed OHM machines. This extruder can be viewed below:

OHM Single Extruder Isometric.jpg

The goal for the development of a dual extruder was to use two of these single extruders and mount them both to the same hot plate and OpenX carriage. There were two configurations that seemed to be most plausible for this goal: a gear to gear configuration and a motor to motor configuration. These two configurations can be viewed below:

Gear to Gear Configuration

OHM Dual Extrusion GearToGear.jpg

OHM Dual Extrusion GearToGear Measurement.jpg

This configuration resulted in a horizontal distance between the hot tips of roughly 61mm.

Motor to Motor Configuration

OHM Dual Extrusion MotorToMotor.jpg

OHM Dual Extrusion MotorToMotor Measurement.jpg

This configuration resulted in a horizontal distance between the hot tips of roughly 59mm.

Based on these configurations, it was decided that the arrangement with the smallest distance between the hot tips, the motor to motor configuration, would be further developed. The redesigned OpenX carriage was created using the measurements from a hot plate that would fit both extruders in a motor to motor formation. In order to cram both extruders onto a hot plate that would fit on a single carriage, the carriage needed to be elongated by 30mm. Two of the notches that extend the width of the carriage in order to better support the weight needed to be moved slightly to allow the extruders to properly mount to the hot plate, and the hot plate to properly mount to the carriage.

Ben's OpenX Dual Extruder Carriage

Bens OpenX Dual Carriage Isometric.jpg

Bens OpenX Dual Carriage Top.jpg

Full dual extruder assembly, including both extruders, hot plate, OpenX carriage, and all hardware:


OHM Dual Extruder Assembly Isometric.jpg


OHM Dual Extruder Assembly Bottom.jpg


OHM Dual Extruder Assembly Side.jpg




In order to drive a dual extrusion configuration, the use of Rambo electronics is likely a good choice. RAMBo electronics are essentially an arduino Mega and RAMPS electronics combined onto a single board. Furthermore, RAMBo electronics, unlike RAMPS, come almost fully assembled and include support for two extruders (as well as a fan per extruder, a heated bed, and a plethora of other goodies). It is likely possible to utilize the RAMPS electronics that are on many of the other recently assembled machines, but it may take more work to get the system to work together properly.


We've made a few decisions as to the configuration of the system. We are going to be using RAMPS electronics, a shield that attaches to an Arduino unit, to drive the machine. Tentatively, the firmware used will be Marlin, a derivative of sprinter but with a few upgrades that make it a step above. All of this will be mounted on a Mondo RepRap, allowing for more room and hopefully some really big and cool prints.

Changes of the day:

Under configuration.h

#define EXTRUDERS 1 becomes #define EXTRUDERS 2 (to specify 2 extruders instead of 1)

#define MOTHERBOARD 7 becomes #define MOTHERBOARD 33 (to load the pin configuration for RAMPS 1.3 and 1.4)

I commented this line #define DEFAULT_AXIS_STEPS_PER_UNIT   {78.7402,78.7402,200*8/3,760*1.1}
and uncommented this line #define DEFAULT_AXIS_STEPS_PER_UNIT   {80.3232, 80.8900, 2284.7651, 757.2218}

This was to bring the parameters to what is specified for the SAE Prusa specs, I'll need to check on these for our current machines.

Thoughts to work with for next time.

This line was located about 3/4 of the way down on the Marlin.h tab.

#if (EXTRUDERS > 1) && defined(E1_ENABLE_PIN) && (E1_ENABLE_PIN > -1)
  #define enable_e1() WRITE(E1_ENABLE_PIN, E_ENABLE_ON)
  #define disable_e1() WRITE(E1_ENABLE_PIN,!E_ENABLE_ON)

I believe that tracking down these other parameters will help me figure out more about how to tackle the firmware.





Below are the SolidWorks files for the printable parts of an OHM Dual Extruder (and technically a single extruder too...):

Part Description File Link
Extruder Body PSU Greg's-Wade's Open Hybrid Extruder Media:Psu_greg-wade_hybrid_extruder.SLDPRT |
Idler for Open Hybrid Mendel Extruder Body Media:Idler.SLDPRT
OpenXY Bracket for OpenX Carriage Media:OpenXY_bracket_rev1.SLDPRT
OpenX 45 Arm for OpenX Carriage Media:OpenX_arm45_F.SLDPRT
Extruder Gear Driving Gear - i.e. attached to the motor Media:Extruder_gear_rev4.SLDPRT
Extruder Plate Plate for dual extruder Media:Dual_Extruder_Plate.SLDPRT
Ben's Dual Extruder OpenX Carriage Modified OpenX carriage Media:Bens_OpenX_Dual_Carriage.SLDPRT


Below are the STL files for the printable parts of an OHM Dual Extruder:

Part Description File Link
Extruder Body PSU Greg's-Wade's Open Hybrid Extruder Media:Psu_greg-wade_hybrid_extruder.STL
Idler for Open Hybrid Mendel Extruder Body Media:Idler.STL
OpenXY Bracket for OpenX Carriage Media:OpenXY_bracket_rev1.STL
OpenX 45 Arm for OpenX Carriage Media:OpenX_arm45_F.STL
Extruder Gear Driving Gear - i.e. attached to the motor Media:Small_extruder_gear_rev4.STL
Ben's Dual Extruder OpenX Carriage Modified OpenX carriage Media:Bens_OpenX_Dual_Carriage.STL


Below are zipped folders of files for the printable parts of an OHM Dual Extruder:

Item Description File Link
SolidWorks Zipped Folder Containing OHM Dual Extruder Parts (SLDPRT) |
STL Zipped folder containing OHM Dual Extruder Parts (STL)