A MMU is basically just automating the filament swaps. But if you limit the required filament changes to a small number this can be done by hand. People have been using this with layer height-based filament swaps for quite some time. But this forces you to print specific layers completely in just one color each.
But if we look at prints like e.g. signs or flat surfaces with colored text or patterns, why would we actually need a MMU to print these? Actually, you don’t! I created a profile for the Prusa i3 MK3 that enables you to print in up to 5 colors without the need of any additional hardware.
The profile works with 5 “virtual” extruders. So, it allows you to slice any multi color object in the same way you would do it for a multi material printer.
The required M600 commands for filament changes will be added automatically where required. This means it allows you to change color up to 5 times as well in the middle of a layer.
Getting started: How to use this with your MK3?
Download the required files here: Rainers MK3 Multicolor profile 1.0 and extract the archive to a new folder on your PC.
i am using the currently latest Slic3r version 1.42.0 alpha 5. This or any later version should work with the provided profile file.
Startup Slic3r in the Menu open File=>Import=>Import Config
now import the file „RainerS Prusa i3 MK3 Multicolor.ini“
This is how Slic3r should look like with the imported profile:
A new Printer, a print profile and 5 different PLA Filaments have been loaded automatically. You can use your own Filaments of course, but you should set the correct color for each filament. Preferable you should choose „pure“ colors where the RGB values are either 0 or 255.
In this example of a yellow filament you can see that Red and green are both set to 255 and blue is 0. This will help when printing as the filament change script i created will calculate the correct color names for all „pure“ colors based on these RGB values.
Slicing a multicolor object
Ok now where the profile is loaded, let’s start with a simple 2 color print.
Click on the „+“ symbol in the plate view just as you would normaly do it to add an STL file. The one thing which we are doing different here ist hat we will directly add 3 STL files with one add operation instead of just one. So in the file dialog, navigate to the „Test STLs“ folder and select the following 3 files:
Then click on „open“ to load the files. A dialog will appear, asking you how to import the files:
As we want to print this as a multicolor object, choose „yes“
The STLs are now loaded. Click somewhere on the empty area of the build plate and you screen should look similar to this:
On the right, you can see the 3 individual files that we have loaded. Each represents an individual part of the combined object.
By default slic3r will automatically assign a separate extruder to each file. You should adjust that in order to have the correct „extruder“ for each color.
We are going to print this with a yellow base and a red for the border & text, so click on the extruder numbers to choose the extruder with the correct color for each of the parts:
The “multicolor sign base.stl” should be yellow, yellow filament is assigned to extruder #1 above so choose „1“ for that part.
The other 2 parts should both be in red, so assign them to extruder #2.
Later when we print, the generated GCODE will automatically add a manual filament change command whenever the print needs to change to a different extruder #.
Previewing the sliced object
Now we are ready for slicing, so click on „slice now“ and change to the „preview“ tab in Slic3r.
As you can see, the object has been sliced correctly using the different extruder colors.
So now is a good time to send it to your printer. If you are using Octoprint, you have to set the connection details for your Octoprint instance as usual, alternatively export the GCode and transfer it to your SD card.
Printing the multicolor object
When printing, the color of extruder #1 will be used first (assuming that your initial layer contains that color), so start with loading yellow PLA filament into your printer.
as soon as a filament change is needed, the printer will display a message like „change to red extruder 2“. Unluckily the message will only be displayed for 1-2 seconds. This is due to a limitation / bad implementation of the m117 / m600 commands.
As we are printing with only 2 colors, it is quite easy to guess which filament color should be loaded next.. in this case red.
There will be one further filament change back to yellow required for this specific print before it is done.
Advanced: Printing with more than 2 colors
Printing with more than 2 colors works basically just like the example above. only difference is that you assign more than 2 extruders to the parts in your print.
Where it gets a little more challenging is the order of the filament changes.
If you want to get a list of filament changes in your print, you can achieve this quite easy.
first slice your object using more than 2 extruders. than export your GCode file (i chose “multicolor.gcode” as the filename) to a folder on your PC and open a command-line.
Change to the folder where you saved the GCode (in my example c:\temp)
now type the followng command:
find “change to” multicolor.gcode
If you used a different file name, change it it in the command accordingly.
you can ignore the line starting with “; toolchange gcode”.
the other lines tell you the order of filament changes in your print
M117 change to 1 red
M117 change to 2 black
M117 change to 0 yellow
M117 change to 1 red
This does not include the initial color which would be the color of extruder 1 (yellow) in this case.
The color names will only be displayed if your filaments have been assigned “pure RGB colors with RGB values of only 0 or 255, or all 3 values set to 127 for “silver”
Ok, thats all.. if you have any questions or want to leave some feedback, just leave a comment.
How this could be enhanced. Change Request for the Prusa MK3 firmware. Get Involved!
One thing i am not totally happy with is the way the user is getting informed which color you need to change to next. I have some gcode included that outputs a message using the M117, which displays a message like ” change to 1 red ” just before the M600 command.
Due to limitations in how Prusa implemented the M600 command, the message will be cleared as soon as the printhead reaches the “FIlament Change position”.
I already raised a feature request to add a message parameter to the M600 command which would keep this message visible at the beginning of the filament change. So far it did not get a lot of attention, so if you want to support this, leave a comment in the change request to push this a bit.
here is the link to the feature request: https://github.com/prusa3d/Prusa-Firmware/issues/1471
Update 2019-03-09: Thanks to the work of guy.k2 on the Prusa forum we have a working prototype and a Pull request for the official Prusa MK3 forum for a small change to the M600 command to add a new “Q” parameter which allows to suppress the initial filament change message of m600. This allows the message of the m117 command to be made persistent. I currently run a compiled version of this on my MK3 and can confirm it s working great!
If you want to read about the details or give it a try yourself check out this thread on the Prusa forum:
Creating more STL files optimized for this printing method
i created some customizable things that are optimized for this method. the color will be limited to about 2 layers so the number of required filament changes wil stay reasonable low. check this page for the customizable sign workshop
Another example is my customizable comic sign