Z won't move after homing with repetier dev

edited November 2016 in Repetier-Firmware
UPDATE 2:  I lowered the bed about 2/3rd the way down.  then ran G28 Z.  My wife then pushed both z min's and the bed homed about half way.   She held down the limit switches and I could no longer move Z.  Soon as she let go of the Z mins the bed would move.  I've also confirmed that after homing, holding either zmin prevents that side stepper from moving.  I believe this is the intended feature when homing, BUT, should not be the case durring regular movment of the bed.  One option I see is increasing the Z distance after homing.  Will try that later

UPDATE: I homed the bed in the middle, and this issue doesn't appear.  Difference I see is when bed is at the bottom the z limit switches are low.  When the bed is at the top in the proper z homed position the Z limit switches are H.  21:12:44.856: endstops hit: x_min:L y_min:L z_min:H z2_minmax:H.  

So possibly, if the limit switches are high, the FW is denying any moves along Z.

I'm testing out repetier dev on my coreXY.  I'm using the dual zmin since it allows me to ensure the gantry is always level and no binding occurs since my print bed is 40x40cm.  However, I've noticed that after homing, I can't, via host software or LCD, move the bed along Z.  It seems like it's stuck.   But, if I turn the shaft couplers a tiny bit, then I can move Z all I want.  If I do NOT home, then I can move Z all the way up/down with no binding.

So it seems like there's a possiblity of a bug locking the bed after homing.  I will try to take a video and post it here.

To add to the pain, when printing, the bed doesn't move in the Z direction either.   So the bed will just stay stationary and never move.

Here's the gCode log: http://pastie.org/10964580

Comments

  • Update 3. I tried setting back on home z to which works since the limit switches are no longer high. But that means the starting point height is now 2mm+first layer height. This option could work but I'd have to find a height that is far enough to release the switch but low enough for that first layer.

    Will have to try this more later.
  • Ok, so if your bed is at top it touches extruder so it is your min position?

    Moves are prevented if z in move direction is enabled. So moving away from home should always be possible. One possible bug I see is that z2_minmax might also be checked as max endstop preventing move.

    Setting ALWAYS_CHECK_ENDSTOPS 0 should remove this test.
  • edited November 2016
    Yes top is the min position. In this case moving in zmax is also prevented. Ill try the allways_check_endstops idea. But that would mean I could accidentally be at z min and further move z min and break my Endstops and smash the nozzle into the bed. So doesn't seem like a safe idea. For now I set the back on home z to 1.4. I then changed my first layer height to .1. This seems to work and I can get adhesion. Would it be possible to fix this bug?

    RE z2minmax being check as a max endstop, I don't think that's the case.  here's my endstop config
    #define MULTI_ZENDSTOP_HOMING 1
    #define ENDSTOP_PULLUP_X_MIN true
    #define ENDSTOP_X_MIN_INVERTING true
    #define MIN_HARDWARE_ENDSTOP_X true
    #define ENDSTOP_PULLUP_Y_MIN true
    #define ENDSTOP_Y_MIN_INVERTING true
    #define MIN_HARDWARE_ENDSTOP_Y true
    #define ENDSTOP_PULLUP_Z_MIN true
    #define ENDSTOP_Z_MIN_INVERTING true
    #define MIN_HARDWARE_ENDSTOP_Z true
    #define ENDSTOP_PULLUP_Z2_MINMAX true
    #define ENDSTOP_Z2_MINMAX_INVERTING true
    #define MINMAX_HARDWARE_ENDSTOP_Z2 true
    #define ENDSTOP_PULLUP_X_MAX true
    #define ENDSTOP_X_MAX_INVERTING false
    #define MAX_HARDWARE_ENDSTOP_X false
    #define ENDSTOP_PULLUP_Y_MAX true
    #define ENDSTOP_Y_MAX_INVERTING false
    #define MAX_HARDWARE_ENDSTOP_Y false
    #define ENDSTOP_PULLUP_Z_MAX true
    #define ENDSTOP_Z_MAX_INVERTING false
    #define MAX_HARDWARE_ENDSTOP_Z false
    #define max_software_endstop_r true

    #define min_software_endstop_x false
    #define min_software_endstop_y false
    #define min_software_endstop_z false
    #define max_software_endstop_x true
    #define max_software_endstop_y true
    #define max_software_endstop_z true
    #define DOOR_PIN -1
    #define DOOR_PULLUP 1
    #define DOOR_INVERTING 1
    #define ENDSTOP_X_BACK_MOVE 5
    #define ENDSTOP_Y_BACK_MOVE 5
    #define ENDSTOP_Z_BACK_MOVE 2
    #define ENDSTOP_X_RETEST_REDUCTION_FACTOR 3
    #define ENDSTOP_Y_RETEST_REDUCTION_FACTOR 3
    #define ENDSTOP_Z_RETEST_REDUCTION_FACTOR 3
    #define ENDSTOP_X_BACK_ON_HOME 1
    #define ENDSTOP_Y_BACK_ON_HOME 1
    #define ENDSTOP_Z_BACK_ON_HOME .14 //was 0 need to release
    #define ALWAYS_CHECK_ENDSTOPS 1
    #define MOVE_X_WHEN_HOMED 0
    #define MOVE_Y_WHEN_HOMED 0
    #define MOVE_Z_WHEN_HOMED 0
  • I think I might have found the reason. Can you test this code in motion.h line 320

    #if MULTI_ZENDSTOP_HOMING
               {
                   if(Printer::isHoming()) {
               if(isZNegativeMove())
               {
    if(Endstops::zMin())
    Printer::multiZHomeFlags &= ~1;
    if(Endstops::z2MinMax())
      Printer::multiZHomeFlags &= ~2;
    if(Printer::multiZHomeFlags == 0)
    setZMoveFinished();
               }
               else if(isZPositiveMove())
               {
    if(Endstops::zMax())
    Printer::multiZHomeFlags &= ~1;
    if(Endstops::z2MinMax())
    Printer::multiZHomeFlags &= ~2;
    if(Printer::multiZHomeFlags == 0) {
              #if MAX_HARDWARE_ENDSTOP_Z
    Printer::stepsRemainingAtZHit = stepsRemaining;
              #endif
    setZMoveFinished();
    }
               }
                   } else {
               if(isZNegativeMove() && Endstops::zMin())
               {
                   setZMoveFinished();
               }
               else if(isZPositiveMove() && Endstops::zMax())
               {
                   #if MAX_HARDWARE_ENDSTOP_Z
                   Printer::stepsRemainingAtZHit = stepsRemaining;
                   #endif
                   setZMoveFinished();
               }                   
                   }                          
    }           

    instead of the old content. I think that should work better but I have no test printer with dual z endstops.
  • Yup. Will test and get back to you
  • yep that worked!

    for clarity.  the replacement code is from line 320 in motion.h to 360:
    #if MULTI_ZENDSTOP_HOMING
               {
                   if(Printer::isHoming()) {
               if(isZNegativeMove())
               {
            if(Endstops::zMin())
              Printer::multiZHomeFlags &= ~1;
            if(Endstops::z2MinMax())
               Printer::multiZHomeFlags &= ~2;
            if(Printer::multiZHomeFlags == 0)
              setZMoveFinished();
               }
               else if(isZPositiveMove())
               {
            if(Endstops::zMax())
              Printer::multiZHomeFlags &= ~1;
            if(Endstops::z2MinMax())
              Printer::multiZHomeFlags &= ~2;
            if(Printer::multiZHomeFlags == 0) {
                 #if MAX_HARDWARE_ENDSTOP_Z
              Printer::stepsRemainingAtZHit = stepsRemaining;
                 #endif
              setZMoveFinished();
            }
               }
                   } else {
               if(isZNegativeMove() && Endstops::zMin())
               {
                   setZMoveFinished();
               }
               else if(isZPositiveMove() && Endstops::zMax())
               {
                   #if MAX_HARDWARE_ENDSTOP_Z
                   Printer::stepsRemainingAtZHit = stepsRemaining;
                   #endif
                   setZMoveFinished();
               }                   
                   }                          
    }      

    the #endif @ the end is required and was part of the code that was there, but if you remove this, compling fails.
  • @Repetier, has this fixed been pushed into the latest dev?
  • @Repetier , has this fix been pushed into the latest dev? I did open an issue in the GitHub repo. https://github.com/repetier/Repetier-Firmware/issues/598
  • No it's not online. I'm working on a big modification that needs some more testing before I publish it. Don't want top get many bug reports just because I updated early.
  • @Repetier has this been fixed in the latest dev? I went through your last big commit but didn't see anything re this. Thx for the hard work!
  • I guess I have forgotten to mention this as I modified it before pasting here if I remember right. So it should meanwhile be included in dev.
Sign In or Register to comment.