#Z Stepper Powered Post Print
44 messages · Page 1 of 1 (latest)
just...don't turn them off...
there's probably an M84 or something in your print_end macro that's turning off all the motors
get rid of it, and you should be set
There could be an M18 command as well (does the same thing as M84), though just about all code examples you may have gotten a print_end macro from will use M84.
If you want to turn off only specific steppers (where something like M84 E doesn't seem to work, though it does in for example Marlin), you can do SET_STEPPER_ENABLE STEPPER=extruder ENABLE=0
thats not a thing
maybe there's something in the actual slicer end code?
only other thing would be are you sure they're turning off immediately? could it just be a short idle timeout fireing, say, 10 minutes after the end of the print?
immediately
Maybe try to see if klicky has been updated? Maybe that might fix it?
is that klippy.log?
yep
forgive me, but can I ask a really silly question: how do you know the motors turned off? (I just really don't see any reason they would, based on this config)
Honestly, Im just assuming they are based on it running the homing routine and QGL each and every print. and when I swap filaments sometimes, i can feel the gantry drop, but i'll double check the immediately after this next print ends in 37m
I wouldn't assume that at all: there's nothing in your start code that does any decision making, it just runs through the whole thing...
So what could it be? Sorry, I don't have much experience with coding and g-code and such
Sorry, I'm not following.
Your start_code doesn't check whether things are already homed or not
oh! got ya!
Your start code simply runs through all the calibration steps every time it is run
Is there a way to tell it to check and skip if it is already homed and leveled?
Its possible, yes. There are examples around, though I'm not sure I have them at my fingertips right now
okie dokie I'll see if I can find anything. Thanks for the help!
There's cg28 here https://docs.vorondesign.com/community/macros/macros/120decibell.html
ty!
I did something like
QUAD_GANTRY_LEVEL
{% endif %}```
to avoid unnecessary qgl stuff.
(though I guess one probably could do the slightly neater {% if !printer.quad_gantry_level.applied %}), i think that state is stored as a boolean)
If you just want to quickly check if printer is homed / qgl'ed, you can just look at the homing buttons in the UI (in the "toolhead" section on the dashboard). At least in my mainsail (with the default color scheme), they are blue if homed/leveled, otherwise yellow. And as long as the steppers are kept enabled, they "homing state" is still valid.
Thx! I'll try that out. I tried another example with no luck. This one didn't work after restart.
[gcode_macro CQGL]
gcode:
{% if printer.quad_gantry_level.applied == False %}
{% if "xyz" not in printer.toolhead.homed_axes %}
G28 ; home if not already homed
{% endif %}
QUAD_GANTRY_LEVEL
G28 Z
{% endif %}
by "restart", do you mean "starting a second print"? if you actually restart klipper, it will forget it's homing/qgl state.
I mean restart the printer after saving the printer.cfg, followed by a manual home and QGL followed by trying to print a file.
The gcode you posted earlier calls G32 from print_start, what does that do? In my example config (that I forgot where I got it from), G32 does an "unconditional" full home (G28) and QGL regardless of what has already been done. I just don't call G32 from print_start though.
Honestly, I think that was default from wherever I got the compiled FW from. I never messed with changing settings other than basic setup such as assigning the correct mobo pins and such.
If you've added that CQGL macro, it won't do anything if print_start still calls a "dumb" G32 macro instead. Either
• Make G32 do what you want (with "conditional" homing/qgl), maybe call that version CG32 or something (for "conditional") and call that from print_start
• Have print_start call CQGL instead (and the G28 commands you want) and not use G32
• Put the entire homing code you want in print_start and don't call G32 or CQGL or other such macros (what I did)
They'll all accomplish the same thing, whatever makes sense to you.