-
Notifications
You must be signed in to change notification settings - Fork 126
Tip Forming and Purging
There are two parts to an MMU toolchange that are critical to get set up correctly: tip forming and purging. Tip forming is optional if you go the extra step and configure a filament cutting option, but even if you do, it is advisible to have the ability to create decent tips for times when you are not using the cutter or want to fallback to the "traditional" method. Purging is the process of removing reminants of the old filament (and color) so that your print has clean color changes with sharp edges. Let's look at setting up those two cababilities.
The shape of filament tips is of crucial importance for a reliable system. The filament tips need to look like tiny spears, free of any blobs or long hairs. Here are some proper tips that won’t cause any issue:
A very solid base for filament profile multimaterial section is to use the default filament Prusa MMU profiles. To do that, add an Prusa printer + MMU from the system presets printers, and then select the MMU printer (NOT the Single one). From there, you’ll be able to access the list of filament system presets built for MultiMaterial (they have the @MMU tag in their name, only use those).
Use the filament type of your choice (ABS, PETG, PLA etc.) and use their Multimaterial section settings (Filament Settings) as the basi for your own filaments profiles.
Also, even if not using the slicer tip forming and ONLY using Happy Hare tip forming, you might still want to consult the Prusa Slicer / Super Slicer reference as a starting point for _MMU_FORM_TIP
macro variables since they mimick the behavior of these slicers.
Happy Hare has a default macro to form tips. It uses a similar approach to Super Slicer / Prusa Slicer and thus the leanings from one can be applied to the other. The macro is defined in mmu_form_tip.cfg
but the configuration variables are in mmu_macro_vars.cfg
under the _MMU_FORM_TIP_VARS
section. Tuning tips is a pain (hence the advent of filament cutting) but it can be made easier by following this procedure:
- Remove the bowden tube from your toolhead so you can freely pass in filament
- Cut a 400mm piece of filament you are trying to tune
- Set you extruder temperature
- Hold the fragment of filament up to the extruder gears and type:
MMU_LOAD EXTRUDER_ONLY=1
(assuming the rest of the MMU setup is complete this will load the filament to the nozzle)
- Extrude a few more mm of filament (via console or your favorate UI like Mainsail) to esure the extruder is primed. then:
MMU_TEST_FORM_TIP
(this will run the tip forming macro and eject the filament for inspection)
- To make adjustments you can specify any of the marco variables on the command line. They are sticky so you don't have to set each one each time. E.g.
MMU_TEST_FORM_TIP cooling_moves=5 unloading_speed=15
(although shown chaning two parameters at once it is ofter better to do one at a time so you understand the effect)
- After each test, reinsert the filament and run the
MMU_LOAD EXTRUDER_ONLY=1
command again.
It might take 40-50 attempts until you start to home in on the optimum values for your particular extruder.
Tip
Timesaver: If you have an extruder (entry) sensor configured, then select the bypass before tuning tip forming. Then whenever you insert the filament fragment into the extruder it will automatically be loaded ready for the next test (see bypass_autoload
setting).
Important
The parameters your just set will only be valid until klipper is restarted. To make this persistent, make sure you edit mmu_marco_vars.cfg
and your chosen settings.
In the slicer there are 3 different options when it comes to defining the purging volumes for multi-filament prints:
- Manual definition
- Manual matrix volume
- Advanced purging volume using filament pigmentation
The manual volume definition is simple to setup but lacks depth and may result in wasted filament, the matrix one becomes complicated if you have a high number of tools and finally the advanced purging volume algorithm requires a filament profile for each different pigmentation value. The latter offers the most control and elinination of waste.
Although we are initially talking about how the slicer can create the purge volume matrix who will see later how that information can be passed into Happy Hare for use with custom purge systems that don't require a wipe tower!
This option allows you to define the total purge volume for each tool by defining the unloaded and loaded values. For instance, swapping from Tool 0 to Tool 1, the purge volume used will be the sum of the Tool 0 unloaded and the Tool 1 loaded.
Clicking on the Show advanced settings in the manual purging volume panel will pop the purging matrix. With this, you can define every single transition precisely, from whatever tool to whatever tool you have. As you can see, when you have a lot of tools you’ll have to track a lot of transitions, which can be painful.
If you enable the Advanced wiping volume option in the Printer settings, Single Extruder MM setup section, the slicer will use the Pigment percentage, ranging from 0 to 1, to define the purge volume for each swap. You can adjust the different values of this option to finely tune the final purging volume. Note that if you have the same profile for filaments of different colors, you’ll need to duplicate those filament profiles and adjust, for each, the pigment percentage value. Don’t forget to select the proper filament profile for each tool.
Probably the most versitile option is to instruct Happy Hare to calculate a purge volume matrix based on filament colors. This is achived with the MMU_CALC_PURGE_VOLUMES
command which could be run by hand but generally would be embedded in your print startup gcode. This command allow for the selection of where the filament color defintion comes from:
- gatemap (including imports from Spoolman if configured)
- slicer extruder color definitions available during the print start sequence when gcode file has been parsed
It is based on the from/to color pigmentation but can be scaled by using the
MULTIPLIER
parameter. It is also possible to limit the min and max purge volume outside of the default (0-800 mm^3 range) by specifingMIN=
andMAX=
parameters.
E.g. To populate the purge volume matrix from the filament colors defined in the gate map:
MMU_CALC_PURGE_VOLUMES SOURCE=gatemap MULTIPLIER=1.1
Purge map updated. Use 'MMU_SLICER_TOOL_MAP PURGE_MAP=1' to view
MMU_SLICER_TOOL_MAP PURGE_MAP=1
No slicer tool map loaded
Purge Volume Map (mm^3):
To -> T0 T1 T2 T3 T4 T5 T6 T7 T8
T0 - 129 230 192 221 221 223 480 223
T1 316 - 210 155 393 393 325 606 325
T2 383 179 - 189 354 354 195 551 195
T3 322 78 143 - 359 359 264 570 264
T4 133 155 124 165 - - 165 354 165
T5 133 155 124 165 - - 165 354 165
T6 314 224 98 212 352 352 - 541 -
T7 102 122 120 116 65 65 111 - 111
T8 314 224 98 212 352 352 - 541 -
E.g. To populate the purge volume matrix from the filament colors read in from the slicer with a minimum purge volume of 50mm^3 you would use:
MMU_CALC_PURGE_VOLUMES SOURCE=slicer MIN=50
Note
During a toolchange the printer variable printer.mmu.toolchange_purge_volume
will contain the suggested TOTAL purge volume comprised of the sum of components:
purge_volume_from_matrix + residual_filament + cut_tip_fragment
This is recommended to be read by any purging logic
Normally the purging logic is performed by the slicer and written into the g-code. The purged filament will be deposited onto the wipe tower (BTW that is why enable wipe tower
must be checked to access the purge matrix and then disabled if you want to use the volumes but not the wipe tower).
Even with purge volumes setup correctly the configuration of your toolhead parameters also come into play. Let's assume that you have correctly defined your toolhead geometry here noting that these settings are based on the CAD of your toolhead and are not designed to be tunables. It is still necessary define toolhead_residual_filament
- the amount of filament naturally left behind in the extruder after filament ejection. In addition if cutting the filament the tip will still be in the extruder. Unfortunately the slicer has no way to know this information and thus it is often necessary to over-compensate and set large purge volumes.
Later we describe alternative methods of purging controlled by Happy Hare that take into account, both the configured toolhead_residual_filament
and the cut filament piece to intelligently calculate the necessary extra purge based on your particular setup.
Once you are printing your first multi filament print, check the purge tower to verify that the toolhead calibration settings including toolhead_residual_filament
are correct. If you notice over extrusion during loads (i.e., plastic blobs on the purge tower after a load) you can fine tune using the toolhead_ooze_reduction
setting. This controls a small delta in the theoretical loading distance. Typically this would be 0 or a small positive value to reduce the load distance so that the extruder doesn't prematurely extrude plastic. If you find you need a negative or large value (>5mm) it is likely that your toolhead calibration dimensions or toolhead_residual_filament
settings are sub-optimum and it is recommended that you fix these before tuning toolhead_ooze_reduction
.
To set, if you notice big gaps on the purge tower after a load, you need to decrease the toolhead_ooze_reduction
value. Note that although small negative values are allowed, going negative almost certainly means that the toolhead_extruder_to_nozzle
or toolhead_sensor_to_nozzle
are too long. Here is an example purge tower here, with values for the toolhead_ooze_reduction
from -3 to +8 mm. In this example, the proper value seems to be around 1 mm. Note that because there is some uncertainty in this process (because of the filament tip shape), there will be some slight differences even when the value is the same, as shown in the green to grey and white to orange transitions. As explained in Blobbing and Stringing this value represents the final reduction in load length after the length has already been reduced by the toolhead_residual_filament
and by any cut filament top.
Tweaking this is something that can be done in print with:
MMU_TEST_CONFIG toolhead_ooze_reduction=N
Just don't forget to persist the final result in mmu_parameters.cfg
when the print is done.
Important
This information is included here as a last resort but really the toolhead_residual_filament
should be set first by calibrating the toolhead in the Blobbing and Stringing section since it represents the amount of residual filament left behind in your extruder. That amount is often much bigger that you expect (2-3mm for low flow extruders and 12-15mm for high flow) and thus it is important to run the not automated calibration if you have a toolhead sensor so you have an accurate starting point. Once you have done this you would only really need to tweak at most +/-3mm with toolhead_ooze_reduction
The wipe tower is a great solution for handling the purge necessary when changing tools (Prusa Slicer also has an experiemental "purge to infil" to minimize waste) but it has the downside of taking up a large portion of the build plate. To avoid this an add-on purging system can be used during the toolchange allowing the wipe tower to be disabled! A great example of such a system is Blobifier by Sjon Huisman. In fact the additional macro to drive Blobifier is supplied in the Happy Hare "config/mmu/addons/" directory. It can be added to Happy Hare with a single line addition in mmu_macros_vars.cfg
.
Setting up a purge system is beyond the scope of this page but such a system will require purging volumes discussed above. These purge volumes can be automatically pre-processed from the g-code and stored by Happy Hare for the duration of the print. This information is made available to your macros through printer variables, e.g. printer.mmu.slicer_tool_map
. The other way to setup purge volumes is via the MMU_SLICER_TOOL_MAP
command. All three of these commands would estabish the simple 9-tool matrix shown in the illustration above from Prusa Slicer. Read more about this command here and here
MMU_SLICER_TOOL_MAP PURGE_VOLUMES=70
MMU_SLICER_TOOL_MAP PURGE_VOLUMES=70,70,70,70,70,70,70,70,70 "list of 9 elements"
MMU_SLICER_TOOL_MAP PURGE_VOLUMES=70,70,70,70,70,70,70,70,70,70,... "list of 18 or 81 elements"
> MMU_SLICER_TOOL_MAP PURGE_MAP=1
Purge Volume Map:
To -> T0 T1 T2 T3 T4 T5 T6 T7 T8
T0 - 140 140 140 140 140 140 140 140
T1 140 - 140 140 140 140 140 140 140
T2 140 140 - 140 140 140 140 140 140
T3 140 140 140 - 140 140 140 140 140
T4 140 140 140 140 - 140 140 140 140
T5 140 140 140 140 140 - 140 140 140
T6 140 140 140 140 140 140 - 140 140
T7 140 140 140 140 140 140 140 - 140
T8 140 140 140 140 140 140 140 140 -
Note
- It is unusual but ok for your slicer is setup with less tools that the number of gates in your MMU. If this is the case, the purge map will show all possible tools but only values for slicer defined tools will be shown. This capability is controlled with the
NUM_SLICER_TOOLS
parameter - The CNC world and Happy Hare use tool names that are zero-based. Thus T0 is the first tool. Some slicers prefer to start with tool T1(!) Unfortunately this can lead to confusion but since the actual gcode will always contain
T0
that is the preferred numbering convention. Sorry Prusa
Tip
- Use
MMU_SLICER_TOOL_MAP SPARSE_PURGE_MAP=1
to see a more readable purge map that removes all toolchanges that are not possible in the print - When displaying purge map with slicer setup for less gates than your MMU you can combine
NUM_SLICER_TOOLS=
to trim the matrix
Tuning a tip forming macro is time consuming and very frustrating, mainly because filament type and temperature have a configurable effect meaning its hard to find the sweet spot. You can, however, do away with tip forming altogether and cut the end of the filament instead.
- Advantages:
- Guarantees clean tips without hairs for reliable filament loading
- No need to beat your head against the wall tuning tip forming
- Works with all filament types
- Disadvantages:
- Additional hardware
- Blade is a consumable that will need to be replaced
- Wastes a little more filament and time when purging (if cutter is in toolhead)
Whilst it is possible to added a cutter at the MMU (see EREC), tip cutting is generally achieved by a toolhead mounted cutter. Usually the cutter is activated by moving the toolhead to a specific position which has a depressor or a servo retractable arm which pushes on the activation mechanism of the toolhead cutter as the toolhead moves into the cutting position.
Tip cutting is activated by changing form_tip_macro
to _MMU_CUT_TIP
in mmu_parameters.cfg
telling Happy Hare to use the tip cutting routine instead of the tip forming routine.
Tip cutting is activated when Happy Hare sees a tool change command in the g-code. When this happens, happy hare starts by moving the toolhead to the prime tower location (or other specified location), then preparing the toolhead for cutting.
The toolhead is prepared with a few cooling moves, then positions the filament to the cutting position. The cooling moves help keep the cut tip from jamming up while the filament swap happens.
The filament is then moved to the cutting position (inside the toolhead, the toolhead doesn't move during this operation), which is tuned by the user to cut the filament using the minimum necessary amount of filament behind while still having a good tip.
Then, the toolhead is moved to the cutting staging position. This is a position just outside the cut position which is a safe location from which to start the cut move.
Next the toolhead makes a slow approach to the depressor, then a quick move to cut the filament, a quick retract move, then a slow move back to the staging position.
Finally, Happy Hare unloads the filament, loads the new filament, then purges, and resumes printing.
The bulk of tip cutting, and indeed, the only user editable parameters, is in mmu_macro_vars.cfg
. There are several parameters which need attention, but this isn't overwhelming. Just take it step by step, as laid out in the config file. For detailed explanation of all the parameters read Configuring mmu_macro_vars.cfg.
- Slicer Setup
- [Tip Forming and Purging]
- Toolchange Movement
(\_/)
( *,*)
(")_(") Happy Hare Ready
Copyright (C) 2022-2024 Paul Morgan
1. Introduction
2. Installation
3. Essential Configuration
4. Calibration
5. Operation
-- YOUR MMU IS READY TO PLAY WITH --
6. Slicer-MMU Setup
-- NOW YOU ARE READY TO PRINT! --
7. Tuning
8. Optional Feature Setup
9. Advanced Configuration
10. Advanced Concepts
- State Persistence
- Statistics and Counters
- Tool and Gate Maps
- Filament Bypass
- Runout/Clog Detection
- Consumption Counters
- Synchronized Gear/Extruder
11. Quick References
12. Troubleshooting
13. FAQ
14. MCU Board Reference 🆕
15. Change Log
Happy Hare Discord