Skip to content
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

QUICK_HOME_SECONDARY_AXES #27005

Open
wants to merge 4 commits into
base: bugfix-2.1.x
Choose a base branch
from

Conversation

DerAndere1
Copy link
Contributor

Description

QUICK_HOME_SECONDARY_AXES extends QUICK_HOME to include secondary axes I(A), J(B), K(C). U, V, W. With QUICK_HOME_SECONDARY_AXES enabled, G28 first does a coordinated quick home of all axes except Z. When one axis reaches home, each remaining axis is homed individually. This PR is more a show case of what changes are necessary. I do not encourage to merge this, because there is hardly a single homing sequence that works for every multi-axis machine. For such complex machines, a custom-tailored safe homing sequence should be implemented by the machine builder.

Requirements

Benefits

fix #26868

Configurations

None

Related Issues

#26868

@Elias-Ta
Copy link

Elias-Ta commented Apr 24, 2024

@DerAndere1 , thank you for this pull request ,

  1. I added your changes and activated QUICK_HOME_SECONDARY_AXES in Configuration_adv.h and I tried to home secondary axis on my machine however nothing changed, the machine is still following the old sequence as before I added your changes (Z, XY, A, B, C ), I think there is some conflict between the old QUICK_HOME and the new QUICK_HOME_SECONDARY_AXES, maybe in sometime we may replace the original QUICK_HOME as your code can include it anyway and it's more general.

  2. I believe in G28.cpp the code :

    #if ENABLED(QUICK_HOME)
          if (doX && doY) {
            #if ENABLED(QUICK_HOME_ALL_NON_Z_AXES)
              // move all axes except Z towards 0 first if all are homing
              if (SECONDARY_AXIS_GANG(doI, && doJ, && doK, && doU, && doV, && doW))
                quick_home_xyijkuvw();
              else
                quick_home_xy();
            #else
              // Diagonal move first if both x and y but not not all secondary axes are homing
              quick_home_xy();
            #endif
          }
        #endif

    should be:

    #if ENABLED(QUICK_HOME)
          if (doX && doY) {
            #if ENABLED(QUICK_HOME_SECONDARY_AXES)
              // move all axes except Z towards 0 first if all are homing
              if (SECONDARY_AXIS_GANG(doI, && doJ, && doK, && doU, && doV, && doW))
                quick_home_xyijkuvw();
              else
                quick_home_xy();
            #else
              // Diagonal move first if both x and y but not not all secondary axes are homing
              quick_home_xy();
            #endif
          }
        #endif

    using QUICK_HOME_SECONDARY_AXES instead of QUICK_HOME_ALL_NON_Z_AXES

@DerAndere1
Copy link
Contributor Author

Oh the joy of intruducing bugs while updating code and changing names last minute. fixed as you proposed

@Elias-Ta
Copy link

Do you have any suggestions about n.1 ? actually the code is still not changing the default behaviour, and non-Z axis are not moving simultaneously to their home position

@sjasonsmith sjasonsmith added the S: Don't Merge Work in progress or under discussion. label Apr 28, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S: Don't Merge Work in progress or under discussion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[FR] Quick Homing Sequence with extra axis
3 participants