-
Notifications
You must be signed in to change notification settings - Fork 142
Blobbing and Stringing
This discussion assumes that you have initial setup complete and are now ready to tune the quality of your prints. Although some of the information contained here is useful early in your journey it will make a lot more sense once you have some experience with default or "borrowed" toolhead parameters. Then this will guide you to optimizing a few critical parameters for quality prints that avoids blobbing on your wipetower or print and stringing when moving to change tool.
Specifically in this guide you will learn how to correctly set the following parameters (mmu/base/mmu_parameters.cfg
):
toolhead_extruder_to_nozzle
toolhead_sensor_to_nozzle
toolhead_entry_to_extruder
toolhead_ooze_reduction
Use z-hop and retraction settings to eliminate blobs and stringing during color changes in your prints:
z_hop_height_toolchange
z_hop_ramp
z_hop_speed
-
toolchange_retract
&toolchange_retract_speed
Set key tip cutting macro variables (mmu/base/mmu_macros_vars.cfg
):
variable_blade_pos
variable_retract_length
First it is important to understand that while sensors like a toolhead sensor can help with extruder loading and unloading, the process relies on precise movement distances. These "dimensions" often interact with each other so it is also important that they be set according to their meaning. Doing so will give deterministic toolchanges rather than a "these settings seem to work" scenario.
When the extruder is loaded, Happy Hare will move the filament a precise distance from either the extruder gear or the toolhead sensor to the end of the nozzle. This distance is set with toolhead_extruder_to_nozzle
and/or toolhead_sensor_to_nozzle
and represents the CAD measured distance in a perfectly clean extruder/nozzle. The reality is that once the extruder is "dirty" this distance changes. I.e. some filament is inevitably left behind in the extruder/nozzle shortening this distance. The amount of filament remaining seems to vary greatly from a couple of mm to as much as 15mm in some HF hotends!
To account for this, Happy Hare defines toolhead_extruder_to_nozzle
and toolhead_sensor_to_nozzle
as theoretical and thus should be able to be pulled form CAD drawings or other users. It uses toolhead_ooze_reduction
to represent how much to reduce the loading move by for the new filament to butt up against the old without accidently oozing.
In practice it has been hard to determine these values other than through experimentation and even then it is hard to determine for example, whether to increase toolhead_ooze_reduction
or reduce toolhead_sensor_to_nozzle
.
Let's run through the important steps in a toolchange (for both tip forming and tip cutting cases) and relate to these parameters:
Transitioning from an orange filament to a blue (Click on images to see the detail):
With toolhead tip cutting the procedure is a little more complex and introduces two additional macro variables (defined in mmu_macro_vars.cfg
that configure the tip cutting logic):
Note that the cut piece of filament remaining and the residual filament are automatically accounted for by Happy Hare so long as you have configured the parameters exactly as defined in this illustration.
Important
- The really important reference point is the internal nozzle "shoulder". This is considered the 0mm reference point for most parameters. For CHT nozzle this will be further away from the tip than regular nozzles.
- You can see how the
toolhead_XXX_to_nozzle
settings andtoolhead_ooze_reduction
are related, so while you can tune the former and ignore latter, it is recommended you use them correctly so that Happy Hare is able to optimize print quality and correctly control purge volumes. -
toolhead_ooze_reduction
is dependent on your extruder and nozzle. High flow systems generally have a much higher value (more residual filament stuck in extruder) than regular ones.
Ok, now you know what the correct meaning of the dimensions are the next question is how to discover them for your setup. For everything other than toolhead_ooze_reduction
it is possible to use accurate CAD models to measure them (remember to use the internal shoulder in the nozzle). If you have a toolhead sensor there is now an automated way to measure! If not, then you can refer back to this wiki where we will collate verified measurements for common toolhead combinations and once you have those set experiment to discover the correct toolhead_ooze_reduction
setting.
You have a toolhead sensor...
Now Happy Hare can help with a new MMU_CALIBRATE_TOOLHEAD
command. The complete process is to start with a CLEAN extruder/nozzle. To do this you need to perform a cold pull where you warm up the extruder, purge some filament, then cool. At the right temperature you manually pull the filament out with a bit of force pulling all the old residue and carbon deposits. This is something that most of you probably already know how to do, but for those that need help you can run the supplied MMU_COLD_PULL
macro and follow directions. This is documented later in this page.
Reattach bowden to toolhead, and prepare the MMU: select the gate you wish to use but ensure filament is available but don't try to load the extruder. Then run:
MMU_CALIBRATE_TOOLHEAD CLEAN=1
This will perform some probing with a cold extruder and report back on the critical toolhead parameters. For example:
Notes:
1) toolhead_extruder_to_nozzle, toolhead_sensor_to_nozzle (and toolhead_entry_to_extruder) are calibrated with a CLEAN extruder and the 'CLEAN=1' flag
2) toolhead_ooze_reduction (and toolhead_entry_to_extruder) are calibrated with a normal dirty extruder but without a cut filament tip
3) Optional variable_blade_pos is calibrated with manuall cut tip and the 'CUT=1' flag
Desired gate should be selected but the filament unloaded
Modifying MMU gear stepper run current to 40% for collision detection
Run Current: 0.21A Hold Current: 0.09A
Restoring MMU gear stepper run current to 100% configured
Run Current: 0.49A Hold Current: 0.09A
Measuring clean toolhead dimensions after cold pull...
Measured toolhead_sensor_to_nozzle: 62.1
Measured toolhead_extruder_to_nozzle: 70.6
Measured toolhead_entry_to_extruder: 7.9
-----------------------------------
Calibration Results (clean nozzle):
> toolhead_extruder_to_nozzle: 70.6 (currently: 70.0)
> toolhead_sensor_to_nozzle: 62.1 (currently: 62.0)
> toolhead_entry_to_extruder: 7.9 (currently: 8.5)
-----------------------------------
New toolhead calibration active until restart. Update mmu_parameters.cfg to persist settings
Assuming you didn't run with the SAVE=0
option this will temporarily correct your toolhead parameters.
Tip
- You must remember these and manually update
mmu_parameters.cfg
for them to persist across a restart, but do that later. - If you want to run again before dirtying the extruder you can to validate your results. Add
SAVE=0
to skip updating parameters.
Referring back to the earlier ilustrations, because the extruder was empty we were able to establish the position of the internal nozzle shoulder as well (magically) some other settings: |
Next heat up you extruder, and load and unload a filament:
MMU_LOAD
be sure to manually extrude some filament...
MMU_EJECT
This MUST be done with tip forming and not tip cutting or alternatively, after extruding some filament, manually retract the filament out of the extruder and then park the filament in the MMU gate.
This is run with no parameters. Here is an example below.
MMU_CALIBRATE_TOOLHEAD
...blah blah blah...
-----------------------------------
Calibration Results (dirty nozzle):
> toolhead_ooze_reduction: 3.0 (currently: 3.4)
-----------------------------------
New calibrated ooze reduction active until restart. Update mmu_parameters.cfg to persist
Tip
- You can run a dirty calibration as often as you like and to see if it differs with different filament types, changes you make to your tip forming macro, etc.
- If you are curious you can also use it as a trick way to measure the "filament_remaining" after tip cutting. Just remember to use the
SAVE=0
option because you DON'T want totoolhead_ooze_reduction
to include the cut piece of filament!
If you have a toolhead cutter, now is a good time to calibrate the blade cutting position variable_blade_pos
and set the variable_retract_length
which will control the amount of cut filament left in the extruder because it pulls the filament towards the cutter prior to the cut.
You must set this up correctly. There are two ways to do this:
-
With the extruder unloaded press and HOLD the cutter blade in the closed postion. STAY in this position until the calibration is complete.
-
Load the filament, allow the extruder to cool and then manually press the cut lever a couple of times to ensure the filament is cleanly cut. After you have cut the filament, unload/eject without further tip forming by running
MMU_EJECT SKIP_TIP=1
(did you notice the skip tip option?)
After your chosen method and with the filament unloaded and parked in the MMU, run:
MMU_CALIBRATE_TOOLHEAD CUT=1
...blah blah blah...
-----------------------------------
Calibration Results (cut tip):
> variable_blade_pos: 36.2 (currently: 37.5)
> variable_retract_length: 5.0-36.2, recommend: 32.2 (currently: 32.5)
-----------------------------------
New calibrated variables active until restart. Update mmu_macro_vars.cfg to persist
Tip
The larger the variable_retract_length
the less additional purge is necessary to clean out the prior color. However if you get too aggressive you may experience clogs because you are cutting a hot part of the filament. Experience has shown that about 5mm shorter than the blade position (i.e. 5mm cut length) is about as good as you can get. If you do still run into clogging issues, shorten this value.
Order | Option | Description |
---|---|---|
1 | CLEAN=1 |
This will calibrate toolhead_extruder_to_nozzle , toolhead_sensor_to_nozzle , toolhead_entry_to_extruder and MUST be run on clean extruder after cold-pull |
2 | none | This will calibrate toolhead_ooze_reduction and should be run with a dirty extruder where tip has been formed for filament retracted from extruder. It must not be run after tip cutting |
3 | CUT=1 |
This will calibrate variable_blade_pos and suggest variable_retract_length for the tip cutting macro. This MUST be run after loading the extruder and manually cutting the filament and running MMU_EJECT SKIP_TIP=1 to unload without re-running the tip cutting macro |
With the toolhead now properly configured you should experience better basic loading and uploading with reduction of blobbing and thus stringing. However there is more...
Incorrect toolhead dimensions contribute most to blobbing problems but even when perfect, blobbing can still occur when the toolhead is moved fully loaded. Just like when printing it is often necessary to relax the pressure in the extruder prior to a travel move to prevent the slow oozing that would otherwise occur. The toolchange_retraction
setting is set to the retraction distance and will be applied immediately prior to z-hop move and any travel movements during the toolchange. All the supplied macros will understand this setting and either compensate for this extruder pre movement. At the end of the toolchange process immediately following the reversal of the z-hop move, the un-retract will occur to correctly pressurise the extruder again. In this manner the extruder is never fully loaded during travel moves and thus oozing is minimized.
Note that the retraction and un-retraction speed is set with the related toolchange_retraction_speed
parameter and can thus be set independently (often faster) than your general extruder load/unload speeds.
Note
The toolhead retract is ONLY applied during a print by Happy Hare and is independent of anything performed by the sequence macros.
When a toolchange occurs it is preferable to move the toolhead so the hot nozzle isn't left on the print. Such travel moves can graze the top of the print so you will usually want to perform a z-hop move (raise the toolhead) before travelling. This z-hop height is controlled by z_hop_height_toolchange
. It is performed the moment after the toolchange retraction and usually 2mm is plenty to stay clear of the print.
Despite the retraction and upward movement many filaments will still have a dendency to "string". What is needed is a much larger toolhead movement to "break the string". The z_hop_ramp
setting is thus the horizontal move to combine with the vertical (z_hop_height
) and essentially allows for fast travel moves of a greater distance (vertical movement is generally much slower than horizontal). The horizontal movement component will be towards the center of the build plate followed by a return at the new z-height.
The speed of the z-hop move whether purely vertical or including a ramp is specified with z_hop_speed
.
Tip
If employing a z-hop ramp then you will likely want to set a fast speed similar to your normal printer x/y travel speed. Klipper will always limit a move to the slowest direction and thus this will not accidently try to move faster than possible in the vertical direction. If you are not using a ramp then then z_hop_speed
can be your desired vertical movement only.
The cold pull method of cleaning your extruder should be in your bag of printer maintance tricks already. Generally it is a great way to clean carbon deposits that build up over time and can result in under extrusion. We are using it here to clear to prepare for accurate toolhead dimension measurements.
- Move toolhead to a convenient location, often the front middle of your build plate and at least 20mm above
- Detatch bowden from toolhead
- Open extruder latch, manually load a 250mm fragment of filament and close extruder latch
- Extrude at least 20mm-30mm of filament
- Turn of extruder heat and wait for extruder to cool
- Keep the nozzle completely full by occassionaly extruding 1-2mm more
- Warm extruder back to pull temp
- At this point, pull the filament quite firmly and evenly out of the extruder in a vertical direction
- Inspect the tip to see if it has been successful
To help with the process Happy Hare includes a special macro that will guide you through the process. To run:
- Move toolhead to a convenient location, often the front middle of your build plate and at least 20mm above
- Detatch bowden from toolhead
- Open extruder latch, manually load a 250mm - 300mm fragment of filament and close extruder latch
- Run
MMU_COLD_PULL MATERIAL=nylon|pla|abs|petg
. Optionally you can add temperature overrides e.g.PULL_TEMP=xxx
(see Command Reference for details) to better suite your material (see table of defaults below) - Be ready to pull at the right time .. you will be given a little warning but it is important to pull at the correct temperature when the filament is still slightly pliable. Pull directly upwards with a consistent firm pull, the extruder stepper will aid the pull (unlatch if you want to be 100% manual)
MMU_COLD_PULL MATERIAL=pla
Cold Pull with pull_temp=100°C, hot_temp=250°C, min_extrude_temp=160°C, cold_temp=40°C
Heating hotend to 250°C
Cleaning nozzle tip
Cooling hotend to 40°C...
Stuffing nozzle at 240°C
Stuffing nozzle at 230°C
Stuffing nozzle at 220°C
Stuffing nozzle at 210°C
Stuffing nozzle at 200°C
Stuffing nozzle at 190°C
Stuffing nozzle at 180°C
Stuffing nozzle at 170°C
Stuffing nozzle at 160°C
Waiting for extruder to completely cool. May take some time
Re-warming hotend to 100°C...
Get ready to pull...
>>>>> PULL NOW <<<<<
Cold pull is successful if you can see the shape of the nozzle at the filament end
How do you know if the cold pull was successful? The pulled end of the filament should like like one of the pictures below. You need to be able to see the impression of the nozzle to be sure. On regular nozzles it should look similar to the image on the left, while with CHT nozzles similar to the image on the right. Note that the author of that picture (@igiannakas) should be commended for an excellent result because CHT nozzles require the pull at exactly the right temperature and a bit of luck!
It may take a few pulls to get suitable results...
Tip
- Some materials are better than others for cleaning with nylon often being found to be the best. PLA is also good. PTEG and ABS can be used but often stretch and snap rather than pulling with sufficient force. The cold pulling temperature will be different with each material type so you may need to experiment.
- You may need to repeat the process if the purpose is to completely clean your nozzle of carbon rather than just prepare for calibration
- Feedback is that clear filament may be the strongest. Avoid strong pigmentation.
Material | hot_temp | cold_temp | pull_temp | min_extrude_temp | Suitability |
---|---|---|---|---|---|
NYLON | 260 | 40 | 120 | 190 | Best |
PLA | 250 | 40 | 100 | 160 | Good |
ABS | 255 | 40 | 120 | 190 | Difficult |
PETG | 250 | 40 | 100 | 180 | Difficult |
The min_extrude_temp
is the temperature above which MMU_COLD_PULL
will keep the nozzle pressurized with filament to ensure it is completely full.
Good luck!
(\_/)
( *,*)
(")_(") Happy Hare Ready
Copyright (C) 2022-2025 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