Skip to content

[FR] Allow POWER_LOSS_RECOVER_ZHOME and Z_SAFE_HOMING to work #22763

@moham96

Description

@moham96

Did you test the latest bugfix-2.0.x code?

Yes, and the problem still exists.

Bug Description

Hi
I enabled POWER_LOSS_RECOVER_ZHOME while enabling Z_SAFE_HOMING which caused this error POWER_LOSS_RECOVER_ZHOME cannot be used with Z_SAFE_HOMING.
So I understand that these settings can't be enabled simultaneously because the printer can't ensure that the Z homing will not collide with the model, unfortunately for my setup enabling these settings at the same time is necessary because my X gantry always falls a few millimeters down after the power is lost which causes wrong z height when the print resumes.
So I changed the homing positions to a safe position where it doesn't collide with the model

 #define Z_SAFE_HOMING_X_POINT 0
 #define Z_SAFE_HOMING_Y_POINT 10

And disabled that error in the SanityCheck.h file

The firmware compiles fine now, but the resume function doesn't work properly:

After triggering the power loss function using the POWER_LOSS_PIN the printer homes two times(which is weird) and then the print starts from a higher layer than what it was before power loss (i.e if the printer stopped at 0.2 z height it would resume at 0.6 z height)

Bug Timeline

not sure

Expected behavior

I would expect the printer to home once and then continue the print exactly where it left of in X, Y, Z axis.

Actual behavior

The printer is resuming the print job where it left of in the X and Y axis but is the position is not correct in regards to the Z axis

Steps to Reproduce

1- enable the POWER_LOSS_RECOVERY settings as follows:

  #define POWER_LOSS_RECOVERY
  #if ENABLED(POWER_LOSS_RECOVERY)
    #define PLR_ENABLED_DEFAULT   true
    #define BACKUP_POWER_SUPPLY       
    #define POWER_LOSS_ZRAISE       5 
    #define POWER_LOSS_STATE     HIGH
    #define POWER_LOSS_PULLDOWN
    #define POWER_LOSS_PURGE_LEN   10 
    #define POWER_LOSS_RETRACT_LEN 10
    #define POWER_LOSS_MIN_Z_CHANGE 0.05
    #define POWER_LOSS_RECOVER_ZHOME
    #if ENABLED(POWER_LOSS_RECOVER_ZHOME)
      #define POWER_LOSS_ZHOME_POS { 0, 10 } 
    #endif
  #endif

2- enable Z_SAFE_HOMING and set the safe position similar to POWER_LOSS_ZHOME_POS, also comment out this line to be able to compile.
3- Start a print job and when it starts printing trigger the power loss by shorting the POWER_LOSS_PIN to vcc(take note of the current Z height before triggering the power loss)
4- Restart the printer and click resume

5- You will notice that the printer homes twice and and start printing in the wrong height.

Version of Marlin Firmware

Marlin bugfix-2.0.x (Sep 12 2021 21:53:19)

Printer model

Creality Ender 3

Electronics

BigTreeTech SKR 1.4 with TMC 2209s

Add-ons

BLTOUCH

Bed Leveling

UBL

Your Slicer

Cura

Host Software

OctoPrint

Additional information & file uploads

Configurations.zip

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions