taz quickstart (skip leveling/wipe)

Sometimes I need to do very quick prints in rapid succession. In this case, the various temp changes of the start-up process kill my iteration time.

Is there any reason the leveling/calibration need to be repeated between very short prints, any more-so than it would over the course of a multi-hour print?

What I am thinking is, create a new printer profile called “Quickstart” and just comment out non-critical sections of gcode.

My attempt at “quickstart g-code” (unnecessary commands commented out):

;This G-Code has been generated specifically for the LulzBot TAZ 6 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 previous leveling matrix
G90 ; absolute positioning
M82 ; set extruder to absolute mode
G92 E0 ; set extruder position to 0
;M140 S{material_bed_temperature_layer_0} ; start bed heating up
;M109 R{material_soften_temperature} ; soften filament before homing Z
G28 ; Home all axis
;G1 E-30 F100 ; retract filament
;M109 R{material_wipe_temperature} ; wait for extruder to reach wiping temp
;G1 X-15 Y100 F3000 ; move above wiper pad
;wipe commands removed
G1 Z10 ; raise extruder
;M109 R{material_probe_temperature} ; wait for extruder to reach probe temp
;G1 X-9 Y-9 ; move above first probe point
;M204 S100 ; set probing acceleration
;G29 ; start auto-leveling sequence
;M420 S1 ; activate bed level 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 S500 ; restore standard acceleration
;G1 X0 Y0 Z15 F5000 ; move up off last probe point
;G4 S1 ; pause
M400 ; wait for moves to finish
M117 Heating... ; progress indicator message on LCD
M109 R{material_print_temperature_layer_0} ; wait for extruder to reach printing temp
M190 R{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 TAZ 6 Printing... ; progress indicator message on LCD

Anything wrong with this approach? What about M425, will just just use the previous backlash setting the way I have it?

Hello @AverageJoe, have you had success with this startup sequence? Although I lack sufficient experience to be able to comment on your re-written startup, the results of any experiments you may have run with it would be of interest.

Nope, didn’t quite get it figured out unfortunately

Can you detail your process for us and then tell us what didn’t work, we might be able to help figure it out. I’m assuming you are slicing (with which slicer?) the same .stl file twice, once with a profile containing the normal start code and once with a profile containing the quickstart profile.

How do you send these two .gcode files to the printer?

I have a 2 separate printer definitions in Cura. If I have performed a normal start very recently, I use the quick start configuration instead. At least that was the plan anyway.

The code below is where I left it, it does the wipe even though they are commented out, not sure why.

;This G-Code has been generated specifically for the LulzBot TAZ 6 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 previous leveling matrix
G90 ; absolute positioning
M82 ; set extruder to absolute mode
G92 E0 ; set extruder position to 0
M140 S{material_bed_temperature_layer_0} ; start bed heating up
M109 R{material_soften_temperature} ; soften filament before homing Z
G28 ; Home all axis
G1 E-30 F100 ; retract filament
M109 S{material_print_temperature_layer_0} ;start nozzle heatup					++
;M109 R{material_wipe_temperature} ; wait for extruder to reach wiping temp 	--
G1 X-15 Y100 F3000 ; move above wiper pad
;G1 Z1 ; push nozzle into wiper         --
;G1 X-17 Y95 F1000 ; slow wipe          --
;G1 X-17 Y90 F1000 ; slow wipe          --
;G1 X-17 Y85 F1000 ; slow wipe          --
;G1 X-15 Y90 F1000 ; slow wipe          --
;G1 X-17 Y80 F1000 ; slow wipe          --
;G1 X-15 Y95 F1000 ; slow wipe          --
;G1 X-17 Y75 F2000 ; fast wipe          --
;G1 X-15 Y65 F2000 ; fast wipe          --
;G1 X-17 Y70 F2000 ; fast wipe          --
;G1 X-15 Y60 F2000 ; fast wipe          --
;G1 X-17 Y55 F2000 ; fast wipe          --
;G1 X-15 Y50 F2000 ; fast wipe          --
;G1 X-17 Y40 F2000 ; fast wipe          --
;G1 X-15 Y45 F2000 ; fast wipe          --
;G1 X-17 Y35 F2000 ; fast wipe          --
;G1 X-15 Y40 F2000 ; fast wipe          --
;G1 X-17 Y70 F2000 ; fast wipe          --
;G1 X-15 Y30 Z2 F2000 ; fast wipe       --
;G1 X-17 Y35 F2000 ; fast wipe          --
;G1 X-15 Y25 F2000 ; fast wipe          --
;G1 X-17 Y30 F2000 ; fast wipe          --
;G1 X-15 Y25 Z1.5 F1000 ; slow wipe     --
;G1 X-17 Y23 F1000 ; slow wipe          --
G1 Z10 ; raise extruder
M109 R{material_probe_temperature} ; wait for extruder to reach probe temp
G1 X-9 Y-9 ; move above first probe point
M204 S100 ; set probing acceleration
G29 ; start auto-leveling sequence
M420 S1 ; activate bed level 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 S500 ; restore standard acceleration
G1 X0 Y0 Z15 F5000 ; move up off last probe point
G4 S1 ; pause
M400 ; wait for moves to finish
M117 Heating... ; progress indicator message on LCD
M109 R{material_print_temperature_layer_0} ; wait for extruder to reach printing temp
M190 R{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 TAZ 6 Printing... ; progress indicator message on LCD

I decided to try it on my TAZ 6 (connected to an Raspberry Pi 3B running OctoPi 0.17.0 / OctoPrint 1.4.2). I had the new M175 tool head installed but the differences between the start gcode for the Single Extruder V2.1 and the M175 are minimal and the end gcode is the same for both. I have attached a .zip (with a bogus .obj added to satisfy the forum gods) with the files I used.

I defined a new printer in CuraLE 3.6.22 and then changed the start gcode to the “Quick” version. I sliced Test_Cube.stl twice, once with the normal printer profile (Test_Cube.gcode) and once with the “Quick” profile (Test_Cube_Quick.gcode), uploaded both files to OctoPrint. I printed the normal one, removed it from the build plate, and then printed the quick one. Both prints were successful.

Temp.zip.obj (15.3 KB)

For me, your code seems to run fine, but the print fails. The z-height seems off, presumably due to reverting to some default parameters instead of saving whichever ones we determined during probe on the standard run.

Hopefully will have some time to debug tonite, let me know if you have any ideas. Do you know if your probe results (which I assume consist of a temporary z-offset) are being conserved for the quickrun?

I’m using the stock “probe” which is the tip of the nozzle against the 4 corner washers. I believe there is only one z-offset which is set in the firmware (M851) and is nominally the height of the corner washer from the actual bed surface, 1.2mm.

There is one possible problem with my code. According to the Marlin M420 documentation, G28 turns off the bed leveling so an M420 S1 may be needed after the G28. I’ve also read that the bed leveling matrix is stored with M500. Also of note, M420 V will print the current matrix.

Perhaps the sequence should be after the G29 in the full start gcode, add an M500 to save the leveling matrix (and an M420 V to display it?). In the quick start gcode, add an M420 S1 (with a V?).

Yeah sorry, juggling several printers, by “offset” I was referring to whatever information is stored as a result of touching the corners, “leveling matrix” sounds about right.

Will give your suggestions a try tonite

I just did some manual testing and it looks like my analysis and changes are correct.

1 Like