Z chaning after each print
Hello,
I don't get it, my MK3s drives me nuts with constantly changing Z height. I have done a bunch of first layer calibrations and I think I have it down to a good system. Problem is that now after upgrading to firmware 3.9.1 it seems as if the first layer height changes after each print.
I make a print with perfect first layer calibration. I always watch the first layer going down. Remove the objects after the print is done and immediately start the next print but only to find out that the nozzle is too high as the lines are no longer bonding. So I turn it down just slightly until they bond again. Works fine until the print is done. When I start the next print, I notice that the nozzle is digging into the first layer and accumulates blobs on itself. I then stop the print and clean the mess and restart it.
Due to the nozzle digging into the print, I have to rise Z again ever so slightly until all is good again. Only for the next print to have a similar situation.
I have no idea what is going on. The printer is assembled from kit and I exclusively use Prusament PETG with the powder coated steel sheet.. It has about 20 days of pure printing time on the counter. Worked fine all the time until recently when I started having it run almost 24/7 (which happened after the 3.9.1 upgrade). I have to basically readjust Z every print I start. That's not normal and I don't know why.
My conclusion:
The only thing I can think of is that it is a mechanical issue since the Z value itself never changes in the menu. Maybe the Y bearings are shot and they are responsible for slight tolerances that have me chasing Z all the time...
Best Regards,
Velvia
RE: Z chaning after each print
The PINDA is temperature sensitive, and prints should be started at the same temperature to achieve the same layer 1.
Here's a segment of gcode that cools the PINDA down, then soaks it to 37.5c (printer settings tab, Custom gcode, startup gcode) - it can add a significant delay - but the result is worth it. You can also change from 37 to 35. But don't go lower.
; cool down PINDA
M106 S255 ; turn on fan
M104 S0 ; turn off nozzle heat
M140 S0 ; turn off bed heat
M860 S35 ; wait until PINDA is less than 35C
M106 S0 ; turn off fan
; preheat nozzle to a low temp, get plastic mushy before driving into the bed with G28
M140 S[first_layer_bed_temperature] ; set bed temp
M109 S175 ; wait for extruder temp
M190 S[first_layer_bed_temperature] ; set & wait for bed temp
G28 W ; home all without mesh bed level
; soak PINDA then level
G0 X50 Y50 Z1 F3000; this is a good PINDA heating position
M860 S37.5 ; wait until PINDA is >= 35C in winter, 37.5C spring/fall, 40C summer
G80 N7 R5; mesh bed leveling
RE: Z chaning after each print
Just to confirm: You have run the on-board Live-Z calibration procedure through to completion at least once, correct? This is necessary to set a flag indicating that it has been done. If not set, you can experience drift.
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: Z chaning after each print
The PINDA is temperature sensitive, and prints should be started at the same temperature to achieve the same layer 1.
Here's a segment of gcode that cools the PINDA down, then soaks it to 37.5c (printer settings tab, Custom gcode, startup gcode) - it can add a significant delay - but the result is worth it. You can also change from 37 to 35. But don't go lower.
; cool down PINDA
M106 S255 ; turn on fan
M104 S0 ; turn off nozzle heat
M140 S0 ; turn off bed heat
M860 S35 ; wait until PINDA is less than 35C
M106 S0 ; turn off fan
; preheat nozzle to a low temp, get plastic mushy before driving into the bed with G28
M140 S[first_layer_bed_temperature] ; set bed temp
M109 S175 ; wait for extruder temp
M190 S[first_layer_bed_temperature] ; set & wait for bed temp
G28 W ; home all without mesh bed level
; soak PINDA then level
G0 X50 Y50 Z1 F3000; this is a good PINDA heating position
M860 S37.5 ; wait until PINDA is >= 35C in winter, 37.5C spring/fall, 40C summer
G80 N7 R5; mesh bed leveling
I will give this a try. I always thought that the Pinda was compensating for the temperature. I set the bed mesh leveling to 7 x 7 grid with 5 passes each. Seemed like the best choice, especially if I need a lot of build plate.
RE: Z chaning after each print
Just to confirm: You have run the on-board Live-Z calibration procedure through to completion at least once, correct? This is necessary to set a flag indicating that it has been done. If not set, you can experience drift.
Yes, I did run the Z first layer calibration from the menu. Afterwards I only do live Z adjust to compensate for the flavor of the day ...
RE: Z chaning after each print
Just noticed your avatar. Are you printing tabletop military miniatures? I just printed out a hundred or so vehicles for my sons for Christmas.
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: Z chaning after each print
Just noticed your avatar. Are you printing tabletop military miniatures? I just printed out a hundred or so vehicles for my sons for Christmas.
No that was just a test (lovely one), I currently print commercial parts with it. Although I might print a few automotive parts if I get around to it. Printer is fully booked for the next few months. If I am happy with the Mk3s I might buy a few more and get a print farm going.
RE: Z chaning after each print
The problem still persists. Took me 10 tries yesterday to get a first layer going. If I leave it at the perfect settings from the previous prints and the printer cools down (because I did not catch the finished print quick enough) it leaves gaps in between each line on the next prints. Have to lower the nozzle until it is perfect. At some point its going to dig back into the print again when its hot again.
I am currently running -1.290 Z when hot and -1.310 cold
Once the current print finishes I will give it a try with the previously mentioned additional gcode. Although it makes me wonder since it worked perfectly fine previously
RE: Z chaning after each print
Using the code I provided I never have to change Live-Z because of room or prior print temperature. Post a zipped copy of a project file you are having problems with (save project as .3mf then zip).
RE: Z chaning after each print
Using the code I provided I never have to change Live-Z because of room or prior print temperature. Post a zipped copy of a project file you are having problems with (save project as .3mf then zip).
I will give it a try as soon as the current print is done. I took a closer look at your gcode lines and I think its a good hack.Good that there are comments or I would not understand what it does.
Unfortunately, I can't provide a 3mf as it is a commercial product. However I am confident that the issue would arise with any other file as well.
Do you have any good resource that describes how the printer makes use of the Pinda probe and how it influences first layer/mesh bed leveling?
RE: Z chaning after each print
The PINDA is temperature sensitive, and prints should be started at the same temperature to achieve the same layer 1.
Here's a segment of gcode that cools the PINDA down, then soaks it to 37.5c (printer settings tab, Custom gcode, startup gcode) - it can add a significant delay - but the result is worth it. You can also change from 37 to 35. But don't go lower.
; cool down PINDA
M106 S255 ; turn on fan
M104 S0 ; turn off nozzle heat
M140 S0 ; turn off bed heat
M860 S35 ; wait until PINDA is less than 35C
M106 S0 ; turn off fan
; preheat nozzle to a low temp, get plastic mushy before driving into the bed with G28
M140 S[first_layer_bed_temperature] ; set bed temp
M109 S175 ; wait for extruder temp
M190 S[first_layer_bed_temperature] ; set & wait for bed temp
G28 W ; home all without mesh bed level
; soak PINDA then level
G0 X50 Y50 Z1 F3000; this is a good PINDA heating position
M860 S37.5 ; wait until PINDA is >= 35C in winter, 37.5C spring/fall, 40C summer
G80 N7 R5; mesh bed leveling
I don't get this, in my 'Custom G-code' tab, there is already a whole bunch of code in the 'Start G-code' section. There is a lot of stuff going on there and some functions are redundant with what you posted. Here is what I have:
M862.3 P "[printer_model]" ; printer model check
M862.1 P[nozzle_diameter] ; nozzle diameter check
M115 U3.9.1 ; tell printer latest fw version
G90 ; use absolute coordinates
M83 ; extruder relative mode
M104 S[first_layer_temperature] ; set extruder temp
M140 S[first_layer_bed_temperature] ; set bed temp
M190 S[first_layer_bed_temperature] ; wait for bed temp
M109 S[first_layer_temperature] ; wait for extruder temp
G28 W ; home all without mesh bed level
G80 ; mesh bed leveling
G1 Y-3.0 F1000.0 ; go outside print area
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}95{endif}
; Don't change E values below. Excessive value can damage the printer.
{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3).*/}M907 E430 ; set extruder motor current{endif}
{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif}
RE: Z chaning after each print
That gcode above is only partial - the part that monitors the PINDA during warmup.
My startup is different from stock because I want certain things to happen certain ways. Here's my full startup ... the verbose comments tell what each line is doing. Nothing in here should be Mk3/Mk3S specific, and you should be safe replacing your startup gcode with mine. The only place I should mention is my squiggly purge line is a work in progress.
M115 U3.7.1 ; tell printer latest fw version
G90 ; use absolute coordinates
M83 ; extruder relative mode
; M104 = set hot end temp
; M109 = wait for hot end temp <Sxxx and Rxxx interchangable>
; M140 = set bed temp
; M190 = wait for bed temp <Sxxx ignores too hot, and Rxxx waits for heats or cools as needed>
; cool down PINDA
M106 S255 ; turn on fan
M104 S0 ; turn off nozzle heat
M140 S0 ; turn off bed heat
M860 S35 ; wait until PINDA is less than 35C
M106 S0 ; turn off fan
; preheat nozzle to a low temp, get plastic mushy before driving into the bed with G28
M140 S[first_layer_bed_temperature] ; set bed temp
M109 R175 ; wait for extruder temp
M190 R[first_layer_bed_temperature] ; set & wait for bed temp
G28 W ; home all without mesh bed level
; soak PINDA then level
G0 X50 Y50 Z1 F3000; this is a good PINDA heating position
M860 S37.5 ; wait until PINDA is >= 35C in winter, 37.5C spring/fall, 40C summer
G80 N7 R5; mesh bed leveling
; heat to extrude temp
G0 X0 Y-3.0 Z10 F3000; this is a good nozzle heating position
M109 R[first_layer_temperature] ; set & wait extruder temp
; squiggly purge
G1 Y-3.0 Z0.20 F1000.0 ; go outside print area
G92 E0.0
G1 X1.0 Y-1.0 E0.5 F500.0 ; scribble 1
G1 X1.0 Y-3.0 E0.5 F500.0 ; scribble 1
G1 X2.0 Y-1.0 E0.5 F500.0 ; scribble 2
G1 X2.0 Y-3.0 E0.5 F500.0 ; scribble 2
G1 X3.0 Y-1.0 E0.5 F500.0 ; scribble 3
G1 X3.0 Y-3.0 E0.5 F500.0 ; scribble 3
G1 X60.0 E9.0 F1000.0 ; intro line
G1 X100.0 E12.0 F1200.0 ; intro line
G1 X97.0 F2000.0 ; wipe left
G1 X105.0 F3000.0 ; wipe right
G92 E0.0
M221 S{if layer_height<0.075}100{else}95{endif}
; end Printer Start gcode
RE: Z chaning after each print
That gcode above is only partial - the part that monitors the PINDA during warmup.
My startup is different from stock because I want certain things to happen certain ways. Here's my full startup ... the verbose comments tell what each line is doing. Nothing in here should be Mk3/Mk3S specific, and you should be safe replacing your startup gcode with mine. The only place I should mention is my squiggly purge line is a work in progress.
M115 U3.7.1 ; tell printer latest fw version
G90 ; use absolute coordinates
M83 ; extruder relative mode
; M104 = set hot end temp
; M109 = wait for hot end temp <Sxxx and Rxxx interchangable>
; M140 = set bed temp
; M190 = wait for bed temp <Sxxx ignores too hot, and Rxxx waits for heats or cools as needed>
; cool down PINDA
M106 S255 ; turn on fan
M104 S0 ; turn off nozzle heat
M140 S0 ; turn off bed heat
M860 S35 ; wait until PINDA is less than 35C
M106 S0 ; turn off fan
; preheat nozzle to a low temp, get plastic mushy before driving into the bed with G28
M140 S[first_layer_bed_temperature] ; set bed temp
M109 R175 ; wait for extruder temp
M190 R[first_layer_bed_temperature] ; set & wait for bed temp
G28 W ; home all without mesh bed level
; soak PINDA then level
G0 X50 Y50 Z1 F3000; this is a good PINDA heating position
M860 S37.5 ; wait until PINDA is >= 35C in winter, 37.5C spring/fall, 40C summer
G80 N7 R5; mesh bed leveling
; heat to extrude temp
G0 X0 Y-3.0 Z10 F3000; this is a good nozzle heating position
M109 R[first_layer_temperature] ; set & wait extruder temp
; squiggly purge
G1 Y-3.0 Z0.20 F1000.0 ; go outside print area
G92 E0.0
G1 X1.0 Y-1.0 E0.5 F500.0 ; scribble 1
G1 X1.0 Y-3.0 E0.5 F500.0 ; scribble 1
G1 X2.0 Y-1.0 E0.5 F500.0 ; scribble 2
G1 X2.0 Y-3.0 E0.5 F500.0 ; scribble 2
G1 X3.0 Y-1.0 E0.5 F500.0 ; scribble 3
G1 X3.0 Y-3.0 E0.5 F500.0 ; scribble 3
G1 X60.0 E9.0 F1000.0 ; intro line
G1 X100.0 E12.0 F1200.0 ; intro line
G1 X97.0 F2000.0 ; wipe left
G1 X105.0 F3000.0 ; wipe right
G92 E0.0
M221 S{if layer_height<0.075}100{else}95{endif}
; end Printer Start gcode
Perfect! Makes sense now. I will give it a try and use your start code to see if it improves things. I agree that certain things might be different for each application. What does your purge line do differently than stock? (before I try it out)
Something that bugs me forever is the nozzle heating up before the MBL is done. Way too much time wasted with the nozzle hot and plastic seeping out and getting squished against the nozzle. Have to abort about 50% of the prints to get one clean first layer without globs of plastic sticking to the nozzle. Then you add the varying Z and babysitting this printer is a full time job lol.
RE: Z chaning after each print
Ideally you want everything at operating temps before doing a level: thermal expansion al all. Preheating the nozzle is needed.
My gcode limits nozzle temp to 175 while waiting for the bed and PINDA. This stops 99.95% of the ooze. After leveling, it then raises the nozzle to a safe distance from the bed (rather than hugging the purge start 0,-3) then heats to print temps .
The purge is safe, just different. Rather than a straight line, I wiggle the nozzle to scrub off any extra filament that might have been attached for who knows why - and it sometimes works.
RE: Z chaning after each print
Ideally you want everything at operating temps before doing a level: thermal expansion al all. Preheating the nozzle is needed.
My gcode limits nozzle temp to 175 while waiting for the bed and PINDA. This stops 99.95% of the ooze. After leveling, it then raises the nozzle to a safe distance from the bed (rather than hugging the purge start 0,-3) then heats to print temps .
The purge is safe, just different. Rather than a straight line, I wiggle the nozzle to scrub off any extra filament that might have been attached for who knows why - and it sometimes works.
Ive ran 2 10 hour prints with your startup code. Print nr 3 (10 hours too - They are all the same) is currently printing and I really like the change!
First of all, there is no oozing anymore and I did not need to touch Z again so far. But the printer did not have time to cool down between prints, so I can't make a final statement yet.
I d like to thank you lots for providing me with the modified startup code! If things continue like this, you slapped 2 flies with 1 swing 😊 I am really liking the new change. But I have to wait and see if it really fixes the issue.
On a sidenote, I will order new linear bearings to replace the Y bearings. They started making noises and I am not putting lots of confidence in them. Better to swap them out with Misumis. I got a few Misumis as part of an RMA and there really are differences
RE: Z chaning after each print
Ideally you want everything at operating temps before doing a level: thermal expansion al all. Preheating the nozzle is needed.
My gcode limits nozzle temp to 175 while waiting for the bed and PINDA. This stops 99.95% of the ooze. After leveling, it then raises the nozzle to a safe distance from the bed (rather than hugging the purge start 0,-3) then heats to print temps .
The purge is safe, just different. Rather than a straight line, I wiggle the nozzle to scrub off any extra filament that might have been attached for who knows why - and it sometimes works.
Its working! I had a few cool downs in between prints, and its always back spot on without having me diddling with Z.
Thank you so much! Saved me a bunch of headaches messing around with stuff. I will keep the start up code in for any future prints. No reason not to do so.