Heating Nozzle and Bed While Auto Leveling Oct 11th 2020 Words: 460

Watching 3D printer start up and monitoring it complete the bottom layers are crucial to a successful print. If anything goes south, you can stop the print and fix it, instead of wasting tons of filament and several hours.

However, one problem I notice is my print cannot manage the work wisely. For example, when I start a print job, the printer will heat up the bed first, then it heats up the nozzle, and after that, do auto leveling. In my opinion, these three jobs can be executed simultaneously.

I found a post where a solution is given by folks.

Although Cura gives you an option to write your own start G-code, a piece of fixed code is always prepended to the final file, as show in the following code block.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
;FLAVOR:Marlin
;TIME:40751
;Filament used: 39.1707m
;Layer height: 0.28
;MINX:56.5
;MINY:16.5
;MINZ:0.28
;MAXX:178.5
;MAXY:218.5
;MAXZ:71.4
;Generated with Cura_SteamEngine master
M140 S50
M105
M190 S50
M104 S200
M105
M109 S200
M82 ;absolute extrusion mode
; Ender 3 Custom Start G-code
; Following code omitted

In the above code, M140 S50 set bed temperature to 50 celsius, M105 means temperature report, and M190 S50 tells the printer to wait for the bed temperature to reach 50 degree. That’s it, we have found the cause of the dumb workflow. G-code Reference

Cura does not provide any setting to modify this fixed start up code, but according to the forum post, if the user use {material_bed_temperature} and {material_print_temperature} in their custom start G-code, Cura will not prepend the heat-up code and handover the control to the user.

I use the following start G-code in Cura.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
; Ender 3 Custom Start G-code

G92 E0 ; Reset Extruder

M105 ; Report temperature
M140 S50 ; Set bed temperature
M104 S200 ; Set hotend temperature

M280 P0 S160 ; BLTouch alarm release
G4 P100 ; delay for BLTouch
G28 ; Home all axes
G29 ; Auto Leveling

M190 S50 ; Wait for bed temperature
M109 S200 ; Wait for hotend temperature
; Following code omitted

It will produce the final G-code like this:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
;FLAVOR:Marlin
;TIME:610
;Filament used: 0.303727m
;Layer height: 0.16
;MINX:101.5
;MINY:101.5
;MINZ:0.2
;MAXX:133.5
;MAXY:133.5
;MAXZ:10
;Generated with Cura_SteamEngine master
M82 ;absolute extrusion mode
; Ender 3 Custom Start G-code

G92 E0 ; Reset Extruder

M105 ; Report temperature
M140 S50 ; Set bed temperature
M104 S200 ; Set hotend temperature

M280 P0 S160 ; BLTouch alarm release
G4 P100 ; delay for BLTouch
G28 ; Home all axes; Following code omitted
M190 S50 ; Wait for bed temperature
M109 S200 ; Wait for hotend temperature
; Following code omitted

Note if auto leveling while heating up, the bed material’s thermal expansion coefficient must be take into consideration. I use a glass bed so the expansion is negligible.