Home Artists Posts Import Register

Content

Mixing Extruders are becoming far more common. Thanks to your support Marlin 1.2 will be ready for them. #RepRap #3DPrinting

A few years ago, a student in the University of Bath's Mechanical Engineering Department named Pia Taubert, under the supervision of Dr. Bowyer et. al, wrote a dissertation on how to make a mixing extruder, proposing an implementation to be added to Marlin firmware.

As I read Pia's dissertation I was gratified to see changes which I had contributed to Marlin forming the basis of the implementation. At least I would be roaming in familiar territory, and if anything was hard to unpack then I would have no one but myself to blame.

The method was straightforward, and the paper over 4 years old, so I was surprised that no one had integrated this feature yet. I got out my Notes app and started taking apart the planner and stepper code, to see where changes would be needed. Pia's reference code pointed the way, but as it was based on some very old code I wanted to make sure I didn't miss a trick.

Once I began to implement the feature, it became clear that some major assumptions in Marlin would need to be put aside, starting with the "one stepper motor for each extruder" assumption. I didn't go so far as to make it possible to set any number of steppers for any number of extruders. But I did make it possible to do this for one extruder, which is certainly going to suffice for almost everyone.

How Color-Mixing Works

When you do a print with a mixing extruder, by default your mixing extruder will make an even mixture of all colors. For a single color you should set the mix to 1.0 for the channel you want and set the rest to 0.0. To change to a new color, you can set the mix inside a G1 command during a move, or you can use M649 to set it outside a move. The parameters A B C D H I allow you to set up to 6 components. The new color mixture persists until the next time it's changed, so you don't need to balloon your G-Code. During the print process Marlin automatically moves the steppers in proportion to the mixture, still tracking a single E axis and E step count.

The Slicer Approach

This feature adds some extra logic and indirection to Marlin which arguably might be better left to the slicer software. In theory the G-Code should describe all movements, while the printer firmware should do only minimal calculation. Such an approach would need to specify every E axis that changes in every move, producing a much larger G-Code file. The method Pia proposed, and which I support, reduces the size of G-Code significantly while adding only a tiny amount of overhead to the planner / stepper handling.

Mixing Extruders

More and more mixing extruders are beginning to appear, both in the RepRap world and in some higher-end commercial printers. Here are some of those I was able to locate pretty easily online:

Builder 3D - Their Dual-Feed printers use their own custom dual-channel mixing extruder which allows for fine color gradients in prints. They provide special printing software that resides behind a paywall and only works on Windows.

3-way Quick-fit Extruder and Colour Blending Nozzle - A custom design on Thingiverse that you can build. It's huge, heavy, and ugly, but really amazing when it comes down to it.

Diamond Hotend - An elegant solution taking input from three Bowden tubes. The output can be calibrated so that hard color transitions are possible.

Try It, You'll Like It!

I encourage users of mixing extruders to give this Marlin a try and see if it performs for your setup. I would also like to see what kinds of tricks you can make it do using various colors and materials! You can find my implementation and offer your commentary at the following links:

Mixing Extruder for Marlin

https://github.com/MarlinFirmware/MarlinDev/pull/361

Files

(No title)

Comments

Anonymous

FYI deleting the new_mixing_extruder branch broke the link to it here.