RE: Oozing nozzle while doing bed leveling?
OK, here is the code I put together. I took the minimal Prusa code and added a softening temp (150) and retraction, then heat up and extrusion after the bed leveling. I put retraction of 4mm to see what would happen. I could use multiple 2mm retractions if that doesn’t work well. Also, adding extrusion during the prime lines could make up for the earlier retraction, but I included a specific make up extrusion to see what happens. On the Lulzbot, the retraction and make up extrusion don’t seem to be equal. Maybe expansion & contraction change the numbers.
Would appreciate a review by the experts before I crash my machine.
M862.3 P "[printer_model]" ; printer model check |
M862.1 P[nozzle_diameter] ; nozzle diameter check |
M115 U3.8.1 ; tell printer latest fw version |
G90 ; use absolute coordinates |
M83 ; extruder relative mode |
M104 S150; set extruder SOFT temp |
M140 S[first_layer_bed_temperature] ; set L1 bed temp |
M190 S[first_layer_bed_temperature] ; wait for L1 bed temp |
M109 S150 ; wait for extruder SOFT temp |
G1 E -4; extruder retract 4mm (test limit) |
G28 W ; home all without mesh bed level |
G80 ; mesh bed leveling |
G1 Y-3.0 F1000.0 ; go outside print area |
M104 S[first_layer_temperature] ; set extruder L1 temp |
M109 S[first_layer_temperature] ; wait for extruder L1 temp |
G1 E 4; extrude 4mm |
G92 E0.0 |
G1 X60.0 E9.0 F1000.0 ; intro line |
G1 X100.0 E12.5 F1000.0 ; intro line |
G92 E0.0 |
M221 S{if layer_height<0.075}100{else}96{endif} |
RE: Oozing nozzle while doing bed leveling?
That gcode should do what you've described. A couple of notes:
- The nozzle will usually heat up much faster than the bed. I swap the M190 and M109 order. Not a big deal, but you can tuck any other desired functions between these, then wait for the final bed temp with M190 when ready to go.
- The retraction should relieve pressure in the nozzle, so hopefully eliminate the dots during mesh bed leveling. Don't forget to try a 0 retraction though (control). I found that simply keeping the nozzle at the no-ooze temp sufficed to avoid dots.
- I don't get oozing up until around 180C with most PLA. If your retractions are a problem, you can go a bit higher with your no-ooze temp.
- Note that anything already on the nozzle at the start will either still be there, or have dropped off during mesh bed leveling. Hopefully, the prime line will trap it before the print starts.
The prime line itself can be a source of some stringing from the final end of the line to your print or skirt. I put a small "wipe" action at the end of the prime line.
G1 E-0.8 F3000; retract to avoid stringing
G1 X99.5 E0 F1000.0 ; -0.5mm wipe action to avoid string
G1 X110.0 E0 F1000.0 ; +10mm intro line @ 0.00
G1 E0.6 F1500; de-retract
G92 E0.0 ; reset extrusion distance
Other than those points, it looks good. Give 'er a go and see if you like the results.
If you want to more closely emulate your Taz, you can experiment with the prime line itself. I've seen a few elaborate variations. I wonder if the Taz-style zig-zag would be any more effective at trapping crud off the nozzle than the usual straight line.
A quick note in case you want to use this same approach with other slicers. The M83 at the top sets the extruder to relative mode. Some slicers expect the extruder to be in absolute mode and will print the prime line just fine, but go bonkers at the start of the print. If this happens, you may want to put an M82 at the end of your startup gcode for those slicers.
and miscellaneous other tech projects
He is intelligent, but not experienced. His pattern indicates two dimensional thinking. -- Spock in Star Trek: The Wrath of Khan
RE: Oozing nozzle while doing bed leveling?
@bobstro
FYI, as far as I know, the Lulzbot Mini and Taz only differ in size and use the same software control schemes. My Mini wipes in a zigzag motion over a felt pad. I guess the zigzag helps wipe the edges and adds to the length of the path. It did a very poor job most of the time, and I wound up wiping it again with the little steel wool tipped brush they included. The latest Cura from them seems to have fixed the problem.
I have a question about the meaning of several G codes. Can you set a temp for the extruder
M104 S[first_layer_temperature] ; set extruder temp |
then use
M109 S150 to detect the temp, followed by
G92 E-2 to do a withdrawal on the fly.
In other words, do you have to set the SOFT temp first, then detect it and retract or can you catch it on the fly as it goes to L1 temp?
I have a 3 hr print going, so will see the results later.
RE: Oozing nozzle while doing bed leveling?
I toyed with thoughts about putting a wire brush or rough surface (maybe even blue tape) along the prime strip for cleaning, but found that the 2-step warmup process along with the "blort & wipe" prime line fixed the problem for me. Good point about a zig-zag increasing the travel distance. It might be interesting to look at Cura's gcode that improved it on the Taz. Do you have a small gcode file that could be examined?
- M104 Sxx will set the hotend temperature and move on, allowing execution of following gcode commands as the nozzle waits.
- M109 Sxx will set and wait for the hotend temperature, pausing gcode execution until the target temperature is hit.
Some Marlin firmware variations allow you to use a M109 Rxx parameter to detect the specified temp or higher and move on, but unfortunately, Prusa has implemented it only as M109 Sxx to wait for the hotend to cool or heat exactly the specified temp.
In my experience, you can use a M109 without a preceding M104, but the convention is to use both. I think the idea is you start the warmup with M104, execute some other gcode commands, then wait a hopefully shorter interval for final warmup. You also seem to be able to omit the S parameter to wait for a temp specified in a preceding M104 with some firmware, but I've decided not to trust these undocumented behaviors.
So to answer your question: Yes, that sequence should work, provided your filament retracts well at 150C. I haven't tried this myself, so can't comment.
and miscellaneous other tech projects
He is intelligent, but not experienced. His pattern indicates two dimensional thinking. -- Spock in Star Trek: The Wrath of Khan
RE: Oozing nozzle while doing bed leveling?
OK, here is the latest startup code for my Mini. Note it has commands for an LCD display, which my older model does not have. The origin is at the center of the bed. I see the retraction is 30mm. It also seems to differentiate between softening temp and wiping temp, although they are both set at 140ºC.
;This G-Code has been generated specifically for the LulzBot Mini with standard extruder |
M73 P0 ; clear GLCD progress bar |
M75 ; Start GLCD Timer |
G26 ; clear potential 'probe fail' condition |
M107 ; disable fans |
M420 S0 ; disable leveling matrix |
G90 ; absolute positioning |
M82 ; set extruder to absolute mode |
G92 E0 ; set extruder position to 0 |
M140 S{material_bed_temperature} ; start bed heating up |
G28 ; home all axes |
G0 X0 Y187 Z156 F200 ; move away from endstops |
M109 R{material_soften_temperature} ; |
G1 E-30 F75 ; retract filament |
M109 R{material_wipe_temperature} ; wait for extruder to reach wiping temp |
G1 X45 Y173 F11520 ; move above wiper pad |
G1 Z0 F1200 ; push nozzle into wiper |
G1 X42 Y173 Z-.5 F4000 ; wiping |
G1 X52 Y171 Z-.5 F4000 ; wiping |
G1 X42 Y173 Z0 F4000 ; wiping |
G1 X52 Y171 F4000 ; wiping |
G1 X42 Y173 F4000 ; wiping |
G1 X52 Y171 F4000 ; wiping |
G1 X42 Y173 F4000 ; wiping |
G1 X52 Y171 F4000 ; wiping |
G1 X57 Y173 F4000 ; wiping |
G1 X77 Y171 F4000 ; wiping |
G1 X57 Y173 F4000 ; wiping |
G1 X77 Y171 F4000 ; wiping |
G1 X57 Y173 F4000 ; wiping |
G1 X87 Y171 F4000 ; wiping |
G1 X77 Y173 F4000 ; wiping |
G1 X97 Y171 F4000 ; wiping |
G1 X77 Y173 F4000 ; wiping |
G1 X97 Y171 F4000 ; wiping |
G1 X77 Y173 F4000 ; wiping |
G1 X97 Y171 F4000 ; wiping |
G1 X107 Y173 F4000 ; wiping |
G1 X97 Y171 F4000 ; wiping |
G1 X107 Y173 F4000 ; wiping |
G1 X97 Y171 F4000 ; wiping |
G1 X107 Y173 F4000 ; wiping |
G1 X112 Y171 Z-0.5 F1000 ; wiping |
G1 Z10 ; raise extruder |
G28 X0 Y0 ; home X and Y |
G0 X0 Y187 F200 ; move away from endstops |
M109 R{material_probe_temperature} ; wait for extruder to reach probe temp |
M204 S300 ; set probing acceleration |
G29 ; start auto-leveling sequence |
M420 S1 ; enable leveling matrix |
M425 Z ; use measured Z backlash for compensation |
M425 Z F0 ; turn off measured Z backlash compensation. (if activated in the quality settings, this command will automatically be ignored) |
M204 S2000 ; restore standard acceleration |
G28 X0 Y0 ; re-home to account for build variance of earlier mini builds |
G0 X0 Y187 F200 ; move away from endstops |
G0 Y152 F4000 ; move in front of wiper pad |
G4 S1 ; pause |
M400 ; wait for moves to finish |
M117 Heating... ; progress indicator message on LCD |
M109 R{material_print_temperature} ; wait for extruder to reach printing temp |
M190 S{material_bed_temperature_layer_0} ; wait for bed to reach printing temp |
G1 Z2 E0 F75 ; prime tiny bit of filament into the nozzle |
M117 Mini Printing... ; progress indicator message on LCD |
RE: Oozing nozzle while doing bed leveling?
That Taz pattern is interesting. Looks like it buries the nozzle into a (felt?) pad, then does a series of long, flat diamond moves. They've got an impressive array of warmup temps available. I don't see any actual prime line, other than that 2mm prime at the end.
I played with various movements early on in testing, but found the "blob at start" method worked best (IME) for trapping accumulated crud and stringing. A wipe move at the end of the prime line pretty well eliminated any stringing from the prime line to the print.
and miscellaneous other tech projects
He is intelligent, but not experienced. His pattern indicates two dimensional thinking. -- Spock in Star Trek: The Wrath of Khan
RE: Oozing nozzle while doing bed leveling?
@bobstro
You are right, they don’t use a prime line. All the re-extrusion is done on the border line around the object. One holds their breath hoping the filament will appear before it jumps to the object. Same is true with the newest version on L-Cura, but seems to work better.
Apparently, they consider the border line to be the prime line. On a small object, you can be in trouble.
RE: Oozing nozzle while doing bed leveling?
You are right, they don’t use a prime line. All the re-extrusion is done on the border line around the object. One holds their breath hoping the filament will appear before it jumps to the object. Same is true with the newest version on L-Cura, but seems to work better.
Ah, makes sense. I've gone the other way, and have stopped printing the skirt before the print. Both a prime line and skirt seem to be a bit redundant, although good in a "belt and suspenders" way I suppose. Nothing wrong with the skirt, but I keep losing little fiddly bits around the printer that I have to clean up.
and miscellaneous other tech projects
He is intelligent, but not experienced. His pattern indicates two dimensional thinking. -- Spock in Star Trek: The Wrath of Khan
RE: Oozing nozzle while doing bed leveling?
OK, first try. I put in two E-2 commands to retract 4mm. It didn't do anything I could see. However, the 150ºC on the extruder didn’t ooze at all, so the bed leveling was clean with no blotches. (My Lulzbot Mini also goes through all the steps at 140ºC before it does a final heat up and print.)
Then it parked at the start of the prime line and heated up. There was no 4mm extrude to make up for the initial retract. The filament began to ooze, but not enough to cause a problem when the prime motion began. It left a blob at the beginning with a solid line for the first prime. This sounds like bobstra’s inital prime blob. I think the effect may be identical.
UPDATE: Now I see I used the wrong E command. I used G1 E2. It should have been G92 E2.
Overall, the sequence was - heat the extruder to 150 / heat the bed to 70 / do bed leveling / go to prime start / heat the extruder to 220 / print primes, then go to object gcode.
I can tell from the jump from the prime line to the object line if the adhesion is OK. Usualy, the jump is clean and the end of the prime line is straight. When the end of the prime line curls toward the bed, I may have an adhesion problem.
Question: My first layer extrusion width is too thin. The adjacent runs don't join together smoothly in some places and doesn’t look very good when that is the top of the object. I need to increase the first layer extrusion ratio. I don’t see a command to do that.
RE: Oozing nozzle while doing bed leveling?
Extrusion widths are set under print profile settings.
Also why use 2 sets of -2 extrusion commands ? Why not just use -4 ? When we said that more than 2 is the maximum for the mk3 we weren’t talking about a limit in the firmware, we were talking about 2mm being the maximum recommended distance due to the physical heat transition zone. You can set however big a value you want in slicer and it will do it.
RE: Oozing nozzle while doing bed leveling?
OK, I was looking for an extruder multiplier as in Cura. I guess the equivalent is Extrusion Width / First Layer.
RE: Oozing nozzle while doing bed leveling?
@ben-g16
Theres the global extrusion multiplier defined as part of each filament profile, as each filament can vary it allows you to set it on a per filament basis. Although its usually better to leave it at 1 and actually enter in your filaments measured diameter if you want it best matched.
Extrusion widths for all the various types of extrusion can also be defined but those are located under the Print Settings >Advanced.
If your first layer print traces arent merging then its far more likely that your z height is not properly adjusted. Instead of using the built in method which is pretty poor, its better to use the Jeff Jordan method. https://forum.prusa3d.com/forum/original-prusa-i3-mk3s-mk3-assembly-and-first-prints-troubleshooting/life-adjust-z-my-way/ At the end of that process in which you essentially print a 75mm 0.2 height square and adjust as its printing you should get a nice sheet of plastic where the lines cant be pulled apart. This is fundamental to pretty much everything that follows after.
Once you know your height is set right and your bed is clean to ensure bed adhesion then you can start looking at anything else that may need adjusting. Without those 2 things being solid then its pointless proceeding.
RE: Oozing nozzle while doing bed leveling?
Extrusion Multiplier: I don’t find a first layer extrusion multiplier as in Cura. PS has a first line width command and a multiplier command for all the layers. Maybe I have missed something. Even with adjustments, my first layer still has some unmerged spots. I did the Z layer calibration. everything is better, but not as good as a first layer extrusion multiplier, as in Cura.
Gcode for oozing: I cannot get filament retraction during warmup on my MK3. I have tried various versions of an extruder command with
G1 E-2.0 F1000 being the latest.
M104 S150; set extruder SOFT temp
M140 S[first_layer_bed_temperature] ; set L1 bed temp
M190 S[first_layer_bed_temperature] ; wait for L1 bed temp
M109 S150 ; wait for extruder SOFT temp
G1 E-2.0 F1000; extruder retract 2mm (test limit)
G28 W ; home all without mesh bed level
Nothing happens. I wonder if there is an internal requirement that the filament temp must be above X or the extrude command won't work. I haven't been through the motions to test. The bottom line is doing the bed leveling with a low extruder temp works well, and
At the end of a print, when the head retracts, filament oozes from the nozzle. If this can be eliminated by a retraction, then on the next startup, the SOFT temp would eliminate the ooze and the whole startup process should be clean.
I am contemplating trying to get the head to park much higher at the end of a run. The Lulzbot Mini parks the head at the upper right hand corner, which allows a good view of the nozzle for cleaning as needed, and gives max space at the bed for wipe down.
I am not sure I have a good handle on the head park command
{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up
do this properly. Maybe
{if layer_z < max_print_height}G1 Z{max_print_height-30)}{endif} ;
would work.
RE: Oozing nozzle while doing bed leveling?
Extrusion Multiplier: I don’t find a first layer extrusion multiplier as in Cura. PS has a first line width command and a multiplier command for all the layers. Maybe I have missed something. Even with adjustments, my first layer still has some unmerged spots. I did the Z layer calibration. Everything is better, but not as good as a first layer extrusion multiplier, as in Cura.
Gcode for oozing: I cannot get filament retraction during warmup on my MK3. I have tried various versions of an extruder command with
G1 E-2.0 F1000 being the latest.
M104 S150; set extruder SOFT temp
M140 S[first_layer_bed_temperature] ; set L1 bed temp
M190 S[first_layer_bed_temperature] ; wait for L1 bed temp
M109 S150 ; wait for extruder SOFT temp
G1 E-2.0 F1000; extruder retract 2mm (test limit)
G28 W ; home all without mesh bed level
Nothing happens. I wonder if there is an internal requirement that the filament temp must be above X or the extrude command won't work. I haven't been through the motions to test. The bottom line is doing the bed leveling with a low extruder temp works well, and
At the end of a print, when the head retracts, filament oozes from the nozzle. If this can be eliminated by a retraction, then on the next startup, the SOFT temp would eliminate the ooze and the whole startup process should be clean.
I am contemplating trying to get the head to park much higher at the end of a run. The Lulzbot Mini parks the head at the upper right hand corner, which allows a good view of the nozzle for cleaning as needed, and gives max space at the bed for wipe down.
I am not sure I have a good handle on the head park command
{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up
to do this properly. Maybe
{if layer_z < max_print_height}G1 Z{max_print_height-30}{endif} ; OR just
G1 Z{max_print_height-30}
would work.
RE: Oozing nozzle while doing bed leveling?
Extrusion Multiplier: I don’t find a first layer extrusion multiplier as in Cura. PS has a first line width command and a multiplier command for all the layers. Maybe I have missed something. Even with adjustments, my first layer still has some unmerged spots. I did the Z layer calibration. everything is better, but not as good as a first layer extrusion multiplier, as in Cura.
PrusaSlicer does not currently provide a different flow rate for the 1st layer. It should, however, ensure that extrusions overlap. If you are experiencing unmerged gaps on your 1st layer, that usually indicates that your Live-Z is too high or that you are under extruding. I recommend using Jeff Jordan's "Life Adjust" procedure for Live-Z calibration.
Gcode for oozing: I cannot get filament retraction during warmup on my MK3. I have tried various versions of an extruder command with [...] Nothing happens. I wonder if there is an internal requirement that the filament temp must be above X or the extrude command won't work. I haven't been through the motions to test. The bottom line is doing the bed leveling with a low extruder temp works well, and
Are you putting the extruder into relative mode before using negative positioning (retractions)? Or establishing 0? There is a minimal extrusion temp (170C IIRC), but this results in an error and the job aborts.t the end of a print, when the head retracts, filament oozes from the nozzle. If this can be eliminated by a retraction, then on the next startup, the SOFT temp would eliminate the ooze and the whole startup process should be clean.
I am contemplating trying to get the head to park much higher at the end of a run. The Lulzbot Mini parks the head at the upper right hand corner, which allows a good view of the nozzle for cleaning as needed, and gives max space at the bed for wipe down.
I originally had my start up routine do this while the bed heated. It was nice and gave me a few seconds to check the bed and nozzle before each print. Unfortunately, the need to heat the PINDA probe required me to adjust this to positioning the nozzle above the bed. You can certainly modify the existing Prusa end gcode to do this if you like.
I am not sure I have a good handle on the head park command
{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up
do this properly. Maybe
{if layer_z < max_print_height}G1 Z{max_print_height-30)}{endif} ;
would work.
I'd start with:
{if layer_z < max_print_height}G1 Z{max_print_height)}{endif} ;
Or since we know the max print height is 210 and we want to stay 30 below that at 180:
{if layer_z < 180}G1 Z180{endif} ;
Be very careful not to send a hot nozzle back into the top of your big print. Always make sure to check that the final position is below the maximum print height! That's an experience you don't want more than once.
and miscellaneous other tech projects
He is intelligent, but not experienced. His pattern indicates two dimensional thinking. -- Spock in Star Trek: The Wrath of Khan
RE: Oozing nozzle while doing bed leveling?
Final results for the minimal approach to prevent oozing: The key is the last step.
1. Heat filament to softening temp, but not enough to ooze. I use 150, others use up to 170ºC for PLA. Lulzbot uses 140ºC.
2. Heat the bed, do leveling.
3. Warm up the print head. This is where oozing could cause a mess. Why is there no oozing, and no mess? Because
4. At end of a print, retract the filament 4mm.
At the end of a print, the filament usually oozes during cool down. By retracting at this point, the nozzle is completely clean at the beginning of the next print. It also helps break the spider web coming off the print at the end. All we have to do then is not ooze too much during the startup procedure. On my MK3, it takes 30 seconds to go from 150 to 220ºC, during that time the PLA doesn’t expand enough to exit the nozzle.
The whole procedure adds two steps to the original startup procedure - holding the filament temp low until time to start printing, and retracting enough filament at shutdown. A third optional step is to add some extrusion to the first prime line to refill the nozzle.
RE: Oozing nozzle while doing bed leveling?
Update: I had to keep increasing the retraction at the end of the print. Sometimes it would not ooze and sometimes it would. I kept nibbling away until I go it up to -15mm retraction. This seems to work every time. With this much retraction, the prime line on the next print has a big gap until the second prime extrusion kicks in. I could fix it by adding to the first prime line extrusion, but I think I will leave it alone, since the second prime line takes care of it OK. (Saves a tiny mount of filament).
The bottom line is, my MK3 will start up with no ooze and stop with a clean nozzle for the next time - with minimal changes to the start and end gcode. Also, it ends a print with the head up in the air on the left side. I can see the nozzle easily to check on it.
RE: Oozing nozzle while doing bed leveling?
@david-a66
It seems to be a general thing on forums these days that people get perfectly sensible and working answers and they ignore them because whatever...
We should keep count how often the simple message of "scrub bed and do proper z-adjust" has had to be posted on the forum over the years 😉
RE: Oozing nozzle while doing bed leveling?
I modified slightly starting gcode, and works flawlessly for me.
160C before mesh leveling (M109 S160 ; Set extruder temp before bed level)
It might be useful to check this one folks :
M862.3 P "[printer_model]" ; printer model check
M862.1 P[nozzle_diameter] ; nozzle diameter check
M115 U3.9.0 ; tell printer latest fw version
G90 ; use absolute coordinates
M83 ; extruder relative mode
M140 S[first_layer_bed_temperature] ; set bed temp
M109 S160 ; Set extruder temp before bed level
M190 S[first_layer_bed_temperature] ; wait for bed temp
G28 W ; home all without mesh bed level
G80 ; mesh bed leveling
M109 S[first_layer_temperature] ; wait for extruder temp
G1 Y-3.0 F1000.0 ; go outside print area
G92 E0.0
G1 E8 ; Purge Bubble
G1 X60.0 E9.0 F1000.0 ; intro line
G1 X100.0 E12.5 F1000.0 ; intro line
G92 E0.0
M221 S{if layer_height<0.075}100{else}95{endif}
RE: Oozing nozzle while doing bed leveling?
Sorry to bump an old thread, but this oozing issue has plagued me on all three of my i3 MK3S printers since day one. It's especially bad on the printer that has a 0.25 nozzle. I cant believe Prusa hasn't altered the default startup g-code to a two stage warmup in all this time.
Anyway, whats the latest best fix g-code I can use to fix this? I found bobstro's webpage on his version (LINK) and it looks like that was last updated in Feb this year. Is that considered the best fix?
If at first you don't succeed, redefine success!