Jump to content
  • 0

Looking for the best way to "start up things" on the Voron



Let me clarify a bit. First of all, I just finished a 2.4r2 build so I'm very new to Klipper and what you can do with it.

Basically, here's what I have: klipper running on the Pi, Octopus MCU, Euclid probe, and Klipperscreen running on the Pi for the BTT TFT50 touchscreen display.

There's stuff I have to do each time I turn on the printer - home xyz, QGL, then CALIBRATE_Z. Then heat up the nozzle to load filament.

The above are all separate steps. Here's what I'd like to do:

  1. Press one button on the Klipperscreen (somewhere, not sure how/where to do this) that runs what I think should be a macro.
  2. Home x, y, and z.
  3. deploy the euclid probe (M401)
  4. do a quad gantry level
  5. re-home (z only?)
  6. run CALIBRATE_Z to measure the z-stop, probe switch body, and bed levels to auto generate the z-offset based on the bed plate I've chosen (this setup).
  7. home z again (I'm pretty sure)
  8. stow the probe back in it's dock

I am not sure which z-home commands can be removed, and where they need to be. The main issues I have with the above:

  • the calibrate_z command has a config where you can specify "start" end "end" gcode commands, in this case M401 and M402 for the probe.
  • the euclid probe config has sections for "renaming" the quad gantry level command to _QUAD_GANTRY_LEVEL_ORIGINAL, essentially wrapping the original into probe deploy and stow gcode calls

I *think * I need to do the following:

  • modify the calibrate_z config and leave out the M401/M402 start/end calls.
  • create (rename?) the G32 macro and have it do these things:
    • home x,y,z
    • call m401 to deploy probe
    • call _QUAD_GANTRY_LEVEL_ORIGINAL to do a QGL without probe stuff
    • I think I need another G28 here .. not sure but don't the values change a little after a QGL?
    • call CALIBRATE_Z to run the script to calculate the z offset
    • call M402 to stow probe

So my main issue with the above is -- if I use the console and accidentally call CALIBRATE_Z before the probe is deployed, what happens? The switch on the probe end is wired NC like the other stops, so would CALIBRATE_Z stop right away because it thinks the probe is "triggered"? If so then I guess it doesn't matter if I accidentally run calibrate_z without the probe deployed. I could always just try it and get ready to stop the printer if it looks like it's going to try and take measurements without the probe attached.

Anyway, wordy post here but I wanted to try and be clear. Also I didn't address the auto pre-heating, but I don't think that's going to be hard to stick into the end of some macro.


Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 0

This is my start up routine:

[gcode_macro START_PRINT]
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(240)|float %}
    # Start bed heating
    M140 S{BED_TEMP}
    # Use absolute coordinates
    # Reset the G-Code Z offset (adjust Z offset if needed)
    # Home the printer
    #M109 S{EXTRUDER_TEMP}      ;wait for nozzle to reach temperature
    # QGL
    # Bed Mesh
    # Calibrate Z-Offset
    #Move to middle of bed
    G0 X150 Y150 Z10
    # Move the nozzle near the bed
    G1 Z5 F3000
    # Move the nozzle very close to the bed
    #G1 Z0.15 F300
    # Wait for bed to reach temperature
    M190 S{BED_TEMP}
    # Set and wait for nozzle to reach temperature


Not the best as the probe gets docked after each routine: QGL, Bed mesh and Z calibrate. But it works for me. Maybe someone more proficient in macro creation can simplify this. But use if you find it useful. Obvious I have Macro's for QUAD_GANTRY_LEVEL, BED_MESH_CALIBRATE CLEAN_NOZZLE and CALIBRATE_Z

Link to comment
Share on other sites

  • 0

This is what I have the printer do at the start of every print:

  1. Home, if needed.
  2. Heat soak if needed (e.g., ABS)
  3. Attach Klicky probe
  4. Z Tilt Adjust (QGL for V2)
  5. Run adaptive bed mesh
  6. Heat nozzle
  7. Nozzle scrub
  8. Calibrate Z
  9. Dock Klicky Probe
  10. Prime Line

I don't have the printer do anything like home on power up since with my print start macro it's not necessary.

If you want the gory details, I have my config backup here: https://github.com/claudermilk/TridentBackup

Link to comment
Share on other sites

  • 0

Now it makes we wonder about the bed mesh procedure.

In the Voron docs it talks about not having to do this with some statement like "it's a new printer, so be sure not to save your mesh" or something like that.

I feel like it should be important at any time, including after first building the printer.

Thoughts on this? When do folks CLEAR their bed mesh? How often do you run the calibrate bed mesh macro?

Link to comment
Share on other sites

  • 0

At first don't worry about it. In general you should be fine without.

I'm picky, so I use the adaptive mesh macro as part of my print_start. So, I recalculate each print--but only the section of the bed that's going to be used. But that's something to look at after all the basics are settled.

  • Like 1
Link to comment
Share on other sites

  • 0

Hi ! do you think this could be useful ?


# QGL if not already QGLd (only if QGL section exists in config)
{% if printer.configfile.settings.quad_gantry_level %}
{% if printer.quad_gantry_level.applied == False %}
G28 Z
{% endif %}
{% endif %}
It is made so that QGL only runs once. I am trying it out. What you guys think  ?


Edited by leo etchaas
  • Like 1
Link to comment
Share on other sites

  • 0
55 minutes ago, leo etchaas said:

It is made so that QGL only runs once. I am trying it out. What you guys think  ?

I get a little Z sag on one or more corners as my printers sits idle. I know this because when I look at the Z values when I'm performing a QGL, my gantry is off by at least 0.5mm every time I calibrate after it's been sitting for a few hours or more. When I print parts one after another... My printer only needs 1-2 passes to get an accurate QGL.

So, I would say... it could be beneficial if you print parts one after another. Obviously you would want to do at least one QGL before skipping the process between prints.

  • Like 1
Link to comment
Share on other sites

  • 0

That's right, I am looking for a way to avoid doing QGL on evry print start "if the motors have not been IDLE"

any idea on what that means: "| lower", I saw this addition online also :


printer.quad_gantry_level.applied | lower


Is there a way to detect if motors have been powered off because of IDLE timeout and then make a QGL if motor lost current ?
A variable like "motors.lost.current.since.last.print = 1"

Link to comment
Share on other sites

  • 0

If your printer times out if turns everything off including steppers, then you will need to Home and QGL again in Mainsail  the movement button turn Orange to blue and vise versa. The idle timeout should by default be in your printer.cfg  [idle_timeout] timeout: 1800       #3600 = 1 hour.

I do a 15 min heat soak warmer up whit the Hot Bed @ 110'c  and my nevermore under the bed @ 25% fan speed to push the hot air..

at the 15 min mark start the Hot end warm up, do a HOME and QGL,  once it done I print over and over until I'm done I never redo Home or QGL.. 

Like Penatr8tor said it only a problem if you let it sit for long periods of time,, and that just for filaments that need preheating, chamber ect .. 

Once you get the printer and Slicer dialed in it pretty much prints it self ..   get a cam to keep an eye on it 

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...