Bed level checking and bed temperature prior to print - Can it be optimized so we have less waiting?
 
Notifications
Clear all

Bed level checking and bed temperature prior to print - Can it be optimized so we have less waiting?  

  RSS
KyferEz
(@kyferez)
Member
Bed level checking and bed temperature prior to print - Can it be optimized so we have less waiting?

I've been wondering why the printer does a few of the things it does... Seems to me they could be optimized to speed up our printing, but I suspect there may be good reasons, so I thought I'd ask.

1. When you print, the bed fully heats before the printer starts checking the bed is level. Why doesn't it start doing this sooner? I thought maybe temperature could cause subtle height changes, but that would be alleviated if you waited till the bed was about 10-15degrees from the target temperature. Then we would have less waiting.

2. When the printer checks bed leveling, it does so for the entire bed prior to printing, even when only a small portion of the bed may be used for the print. It seems this could be optimized such that it only checks the area around the print to speed up prints, and perhaps even be more accurate by checking a few more spots in the print area rather than 40 spots across the entire bed. For example, I'm printing a part that takes only about 10 cm x 12 cm. It checked the entire bed, 40 checks. Why not just check the 10x12cm area for 10 checks? It'd be more accurate in that area then and take much less time!

Thanks!

Posted : 26/06/2023 11:32 pm
Thejiral
(@thejiral)
Noble Member
RE:

ad1: It does so because of thermal expansion. You want to probe your bed once it is at operating temperature because then it is also deformed the way it is at operating temperature. It doesn't hurt that one doesn't rush that either as it can take a bit longer to equalibrate all across the bed and not just at the thermistor. One could start already when the temperature is still shifting but why introduce unnecessary error just to speed up the print by a min or two? I never tried to change the bed levelling procedure but I would assume if you want it to be more rushed, you could change the starting g-code to that end. If it is not in the starting g-code you'd have to modfiy the firmware and recompile it. 

ad2: It could but only if the priming line is then put dynamically next to your print instead of at the edge of the build plate. I am not sure the Mk3 can do that. the Mk4 actually does just that. 

This post was modified 1 year ago 2 times by Thejiral

Mk3s MMU2s, Voron 0.1, Voron 2.4

Posted : 27/06/2023 9:06 am
FoxRun3D
(@foxrun3d)
Famed Member
RE: Bed level checking and bed temperature prior to print - Can it be optimized so we have less waiting?

As @Thejiral said, there's a reason for heating up the bed, and for most prints the time spent waiting for heating up is negligible compared to the overall time.

Why it probes the whole bed is less clear to me. On my XL, only the area around the object gets probed.

ad2: It could but only if the priming line is then put dynamically next to your print instead of at the edge of the build plate. I am not sure the Mk3 can do that. the Mk4 actually does just that. 

Not sure that's a valid reason. For the prime line, a little imperfection wouldn't matter. Plus, you can manually move the prime line in the startup gcode. I don't have my Mk4 yet but didn't they change the location of the prime line back to where it is on the Mk3? For the fun of it, I changed my Mk3S startup gcode to position the prime line where the Mk4 puts it but after a few weeks I went back to the old location.

Formerly known on this forum as @fuchsr -- until all hell broke loose with the forum software...

Posted : 27/06/2023 12:22 pm
Thejiral
(@thejiral)
Noble Member
RE: Bed level checking and bed temperature prior to print - Can it be optimized so we have less waiting?

I assume that one could indeed print the prime line on a part of the bed without proper bed levelling if it is printed a bit higher. There is a higher risk of complications though. 

Maybe I am mistaken, I thought the Mk3 can't handle a command used in the Mk4 for the dynamically located prime line. But you say you had no problems getting that functionality on the Mk3 as well? I am curious, what was your start g-code for a dynamic prime line for the Mk3?

Mk3s MMU2s, Voron 0.1, Voron 2.4

Posted : 27/06/2023 1:03 pm
KyferEz
(@kyferez)
Member
Topic starter answered:
RE:

1. Ok thanks, that makes sense. I hadn't thought about there only being one temp sensor.

2. Not sure what "priming line" is, however couldn't it just scan the existing priming line and then move to the area where the print will be and check level on that?

While I understand the waiting is largely on the print, I have found I must actively monitor the first few layers and hardly monitor the remaining print at all. Thus the waiting I have to actively be engaged in is all at the beginning of the print! Therefore if it were optimized, it would expense a lot less of my time. I have even started a habit of pre-warming the bed while prepping the part in PrusaSlicer in order to save some of that waiting time. Basically the goal is that I want to spend less time monitoring at the beginning of the print - it's costing me way too much time - and with how many projects I have going on that's not good for any of them.

This post was modified 1 year ago by KyferEz
Posted : 27/06/2023 2:37 pm
FoxRun3D
(@foxrun3d)
Famed Member
RE:

I thought the Mk3 can't handle a command used in the Mk4 for the dynamically located prime line. But you say you had no problems getting that functionality on the Mk3 as well? I am curious, what was your start g-code for a dynamic prime line for the Mk3?

It's not that the Mk3 can't do it, but it requires the latest version of PrusaSlicer that supports a new set of custom gcode variables such as bed size, print size etc.

As I said, I moved away from the prime line being close to the model because I noticed it tends to be a bit more difficult to remove and leave some "shadows" on the bed, which doesn't matter when the prime line is in the left front corner outside of the print area. But because you've asked, here's my Mk3 startup code with the prime line moved to the model. Caveat: I pulled it from a backup, so this may or may not be last version I used before moving back to a corner prime line.

; PrusaSlicer start gcode for Prusa i3 Mk3S
; Last updated 20230418 - RF - Originally adopted from Bob George

M862.3 P "[printer_model]" ; printer model check
M862.1 P[nozzle_diameter] ; nozzle diameter check
M115 U3.11.0 ; tell printer latest fw version
; Set coordinate modes
G90 ; use absolute coordinates
M83 ; extruder relative mode
; Reset speed and extrusion rates
M200 D0 ; disable volumetric e
M220 S100 ; reset speed
; Set initial warmup temps
M104 S{first_layer_temperature[0] - 40}; set extruder temp to 40 lower than print temp to prevent oozing
M140 S[first_layer_bed_temperature] ; set bed temp
M109 S{first_layer_temperature[0] - 40} ; wait for extruder no-ooze warmup temp before mesh bed leveling, cool hot PINDA
G28 W ; home all without mesh bed level
G80 ; mesh bed leveling
; Final warmup routine
G0 Z80; Raise nozzle to avoid denting bed while nozzle heats
M140 S[first_layer_bed_temperature] ; set bed final temp
M104 S[first_layer_temperature] ; set extruder final temp
M109 S[first_layer_temperature] ; wait for extruder final temp
M190 S[first_layer_bed_temperature] ; wait for bed final temp
; Prime line
G0 Z0.15 ; Restore nozzle position - (thanks tim.m30)
G92 E0.0 ; reset extrusion distance
;new move to prime line near model
G1 X{(min(print_bed_max[0],first_layer_print_min[0]+110)-110)} Y{(max(-3,first_layer_print_min[1])-3)} F1000
; previous positioning in older version 
;G1 Y-3.0 F1000.0 ; go outside print area
G1 E2 F1000 ; de-retract and push ooze
G1 X{(min(print_bed_max[0],first_layer_print_min[0]+110)-110)+20} E6  F1000.0 ; fat 20mm intro line @ 0.30
G1 X{(min(print_bed_max[0],first_layer_print_min[0]+110)-110)+60} E3.2  F1000.0 ; thin +40mm intro line @ 0.08
G1 X{(min(print_bed_max[0],first_layer_print_min[0]+110)-110)+100} E6  F1000.0 ; fat +40mm intro line @ 0.15
G1 E-0.8 F3000; retract to avoid stringing
G1 X{(min(print_bed_max[0],first_layer_print_min[0]+110)-110)+99.5} E0 F1000.0 ; -0.5mm wipe action to avoid string
G1 X{(min(print_bed_max[0],first_layer_print_min[0]+110)-110)+110} E0 F1000.0 ; +10mm wipe action
G1 E0.6 F1500; de-retract
G92 E0.0 ; reset extrusion distance 

; end mods

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}
This post was modified 1 year ago by

Formerly known on this forum as @fuchsr -- until all hell broke loose with the forum software...

Posted : 27/06/2023 5:54 pm
Thejiral liked
Thejiral
(@thejiral)
Noble Member
RE: Bed level checking and bed temperature prior to print - Can it be optimized so we have less waiting?

 

Posted by: @kyferez

2. Not sure what "priming line" is, however couldn't it just scan the existing priming line and then move to the area where the print will be and check level on that?

While I understand the waiting is largely on the print, I have found I must actively monitor the first few layers and hardly monitor the remaining print at all. Thus the waiting I have to actively be engaged in is all at the beginning of the print! Therefore if it were optimized, it would expense a lot less of my time. I have even started a habit of pre-warming the bed while prepping the part in PrusaSlicer in order to save some of that waiting time. Basically the goal is that I want to spend less time monitoring at the beginning of the print - it's costing me way too much time - and with how many projects I have going on that's not good for any of them.

The priming line is the line the Mk3 prints at the very beginning near to the edge of the build plate. Its purpose is to flush the nozzle with some initial material so that there is a nice and spotless extrusion ensured once it is done with the priming line. 

Like fuchsr said, the priming line probably doesn't need a very well levelled bed for itself. It just needs to be correct enough as not to be rammed into the bed or printed so high that it doesn't stick to the bed at all. The tolerance here is considerably larger than for the actual model. 

While you are right, the first layers are the most critical part of the print job, I think once your printer is well dialed in and you have a reliable build plate cleaning routine, you don't need to actively monitor the start. Just start the print job and maybe 30 min later or so, once the first layer is, or the first few layers are completed, just have a quick look if everything is fine or not. 

If you are printing with an enclosure and print engineering materials like ABS or ASA, having a temperature calibration time of 10 or 15 min, after you actually have reached the correct bed temps, is actually a good thing to do. So that is why I don't really care about the speed of the startup procedure. 

 

Mk3s MMU2s, Voron 0.1, Voron 2.4

Posted : 28/06/2023 11:42 am
Share: