-
-
Notifications
You must be signed in to change notification settings - Fork 19.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Safe Z homing for Power Loss Recovery #16909
Safe Z homing for Power Loss Recovery #16909
Conversation
If printer loses the Z-axis position during power loss, it needs to be recovered safely during the power loss recovery stage. 1) Safely home the Z axis (assumes print can be avoided) 2) Restore the Z position before XY
|
The head drops about 2mm due to the pitch of the lead screw, but the print can be recovered, as at the point the power goes, the current z position is saved to the PLR file. Regarding general support for the Chiron, I have written a new pin def, config file and an interface for the factory fitted TFT panel using the extensible UI API which together provides full support for the factory build Chiron. Need to have a chat about how to do a PR for that, as it has dependencies for config files and core Marlin which are now 2 separate repositories. Any suggestions welcome! |
G28 Z might collide the half printed part... |
Yes that is possible, TBH it would have been better if they used a Z Axis lead screw with a shallower pitch , so the axis doesn't move when powered down. |
28c6bd2
to
ebd2bcc
Compare
I have a Chiron here, so I can assist with testing. I replaced its board before finding out that a special driver is needed before you can see it over USB, so I have to re-check my wires and maybe put back the original board because I did a sloppy job. |
YES ITS RECOVERABLE , but with my idea , to add a ZMAX endstop instead of a ZMIN , the homing will low down the bed to find the endstop and will raise to the perfect z value But , need to install a ZMAX endstop |
39fe6ef
to
7aed32d
Compare
Marlin/src/feature/powerloss.cpp
Outdated
dtostrf(info.current_position.y, 1, 3, str_2) | ||
); | ||
gcode.process_subcommands_now(cmd); | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a bad idea. You don't want to do a sideways move when Z is at the lower height. Power Loss Recovery currently does the sideways move before lowering the Z axis in order to avoid knocking over the model.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I had swapped the Z and XY resume moves, but a better option would be to restore Z above the print before moving back to resume printing.
7b92348
to
37176ed
Compare
I think homing Z during power loss recovery as an option could be a great feature.
if the feature will be realized in the a similar way and users could disable it or customize it for their machines it would be great and a solid addition |
Standard resume now: 1) raises Z by POWER_LOSS_ZRAISE Added: 2) home XY 3) home Z 4) Raise Z to savedZ + POWER_LOSS_ZRAISE Standard resume then: 5) restores XY 6) drops Z back to savedZ 7) resumes print.
Previously (Marlin 2.0.5.3) it didn`t home Z at all during recovery.
it raised Z. Then homed xy. Then recovered xy. Then "recovered z" (assumed
z stayed as it was) then continued printing.
The best solution for a printer like ender 3 that has a safe place on xy
plane to home Z without it knocking down print is to:
raise Z, Then home xy, Move to the safe place outside the bed, home Z,
raise Z to previous Z+some delta, restore xy, restore Z and continue
printing.
for example for an ender 3 the safe space is at Xmin Ymin. so you will do a
normal home immediately after moving up (won`t work with safe homing option
or probes),
then raising to Z+delta (without moving in xy plane) restoring xy restoring
z and continuing.
this "safe spot" for homing is necessary for POWER_LOSS_ZHOME to work as
expected.
if you home z before safely moving to the safe place at the origin you may
collide with the print or build plate.
it is important to home xy before moving to safe space and homing z.
I highly appreciate your contribution and attention. Thank you very much
for your work. I would test the new feature but would also love
if you consider my suggestion.
Moshe.
|
Settings added to specify a safe XY position to use for Z homing after power loss that avoids colliding with print.
I've added some options to the POWER_LOSS_ZHOME switch in Advanced Config so you can set a 'safe' position to restore z after power loss. |
Cannot be used when Z_SAFE_HOMING enabled
I have modified the original powerloss.cpp file using SwiftNick`s code to fix the bugs that prevented hot end temperature from restoring. SwiftNick made changes to SanityCheck.h and configuration_adv.h |
4274255
to
a97a1ae
Compare
Brought this up to date with the latest settings and PLR behavior. I added a |
Looks like that's covered already, so one more quick patch… |
Requirements
Add option to home the Z axis during power loss recovery
During recovery, all axes are homed, then Z position is restored before X & Y
Description
Adds a parameters to the POWER_LOSS_RECOVERY block in configuration_adv.h
If enabled, during PrintJobRecovery::resume() will now
The feature is disabled by default and will be blocked if Z_SAFE_HOMING is enabled.
Benefits
This allows print to resume after power loss if the Z position cannot be guaranteed provided that there is a safe region to home the Z axis
Modified files
configuration_adv.h
feature\power_loss_recovery.cpp
inc\SanityCheck.h