problem with Z-homing

Hi everybody,
I have built a modified version of TAZ printer. It worked well up to now as I was using Z-max end stop. I am trying to switch to Z-min end stop but I am getting a problem. I think it is my problem as I am missing something very simple. When I home z axes it behaves correctly, hits the end stop (optical), backs up, does it second time and after it moves head up for 2 mm as it written in configuration file. t this point the host shows Z=0, if in settings of printer shape in host Z home is =0. If I change this number to 2, then host shows z=2 mm. Up to this point everything seems logic and correct. But when after this I try to move Z to a new hight, lets say 10 mm then first it moves head 2 mm and only after it to another 10 mm. Result is that my head now is at 14 mm instead of 10 mm.
Same thing happens with two other axes, but those could be managed by moving end stops. In case of Z axes, the end stop can not be moved lower, as the head will push on bed.
Please help, I can not understand what I am doing wrong. 
My printer is XY cartezyan printer with 320 x 320 mm heated bed, Z is 220 mm. It has a MKS-Base motherboard, 3 optical end stops, Repetier firmware 1.0.2, Below is part of my config file.
// ################ Endstop configuration #####################

#define MULTI_ZENDSTOP_HOMING 0
#define ENDSTOP_PULLUP_X_MIN false
#define ENDSTOP_X_MIN_INVERTING false
#define MIN_HARDWARE_ENDSTOP_X true
#define ENDSTOP_PULLUP_Y_MIN false
#define ENDSTOP_Y_MIN_INVERTING false
#define MIN_HARDWARE_ENDSTOP_Y true
#define ENDSTOP_PULLUP_Z_MIN false
#define ENDSTOP_Z_MIN_INVERTING false
#define MIN_HARDWARE_ENDSTOP_Z true
#define ENDSTOP_PULLUP_Z2_MINMAX false
#define ENDSTOP_Z2_MINMAX_INVERTING false
#define MINMAX_HARDWARE_ENDSTOP_Z2 false
#define ENDSTOP_PULLUP_X_MAX false
#define ENDSTOP_X_MAX_INVERTING false
#define MAX_HARDWARE_ENDSTOP_X false
#define ENDSTOP_PULLUP_Y_MAX false
#define ENDSTOP_Y_MAX_INVERTING false
#define MAX_HARDWARE_ENDSTOP_Y false
#define ENDSTOP_PULLUP_Z_MAX false
#define ENDSTOP_Z_MAX_INVERTING false
#define MAX_HARDWARE_ENDSTOP_Z false
#define ENDSTOP_PULLUP_X2_MIN true
#define ENDSTOP_PULLUP_Y2_MIN true
#define ENDSTOP_PULLUP_Z2_MINMAX true
#define ENDSTOP_PULLUP_X2_MAX true
#define ENDSTOP_PULLUP_Y2_MAX true
#define ENDSTOP_X2_MIN_INVERTING false
#define ENDSTOP_Y2_MIN_INVERTING false
#define ENDSTOP_X2_MAX_INVERTING false
#define ENDSTOP_Y2_MAX_INVERTING false
#define MIN_HARDWARE_ENDSTOP_X2 false
#define MIN_HARDWARE_ENDSTOP_Y2 false
#define MAX_HARDWARE_ENDSTOP_X2 false
#define MAX_HARDWARE_ENDSTOP_Y2 false
#define X2_MIN_PIN -1
#define X2_MAX_PIN -1
#define Y2_MIN_PIN -1
#define Y2_MAX_PIN -1
#define Z2_MINMAX_PIN -1

#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 1
#define ALWAYS_CHECK_ENDSTOPS 1
#define MOVE_X_WHEN_HOMED 0
#define MOVE_Y_WHEN_HOMED 0
#define MOVE_Z_WHEN_HOMED 0

// ################# XYZ movements ###################

#define X_ENABLE_ON 0
#define Y_ENABLE_ON 0
#define Z_ENABLE_ON 0
#define DISABLE_X 0
#define DISABLE_Y 0
#define DISABLE_Z 0
#define DISABLE_E 0
#define INVERT_X_DIR 0
#define INVERT_X2_DIR 0
#define INVERT_Y_DIR 0
#define INVERT_Y2_DIR 0
#define INVERT_Z_DIR 0
#define INVERT_Z2_DIR 0
#define INVERT_Z3_DIR 0
#define INVERT_Z4_DIR 0
#define X_HOME_DIR -1
#define Y_HOME_DIR -1
#define Z_HOME_DIR -1
#define X_MAX_LENGTH 320
#define Y_MAX_LENGTH 320
#define Z_MAX_LENGTH 220
#define X_MIN_POS 0
#define Y_MIN_POS 0
#define Z_MIN_POS 0
#define PARK_POSITION_X 150
#define PARK_POSITION_Y 150
#define PARK_POSITION_Z_RAISE 10


#define DISTORTION_CORRECTION 0
#define DISTORTION_CORRECTION_POINTS 5
#define DISTORTION_LIMIT_TO 2
#define DISTORTION_CORRECTION_R 100
#define DISTORTION_PERMANENT 1
#define DISTORTION_UPDATE_FREQUENCY 15
#define DISTORTION_START_DEGRADE 0.5
#define DISTORTION_END_HEIGHT 1
#define DISTORTION_EXTRAPOLATE_CORNERS 0
#define DISTORTION_XMIN 10
#define DISTORTION_YMIN 10
#define DISTORTION_XMAX 310
#define DISTORTION_YMAX 310

// ##########################################################################################
// ##                           Movement settings                                          ##
// ##########################################################################################

#define FEATURE_BABYSTEPPING 1
#define BABYSTEP_MULTIPLICATOR 1

Thank you very much,            Simon

Comments

  • First please update to dev version. Since 1.0.2 we modified so much for correct and better z probe handling that it is worth the update plus many improvements.

    You did not show z probe settings. Important is that you do not have any moves in z probe scripts. These would mess up positions during homing.

    #define ENDSTOP_Z_BACK_ON_HOME 1

    should be 0. This means it should go up 1mm from the real bed level, but that is bad here. It was ok for z max probing to not trigger the end stop, but on bottom we do want to know bed level. Use z probe bed height to calibrate correct distance after probing. Use G30 to test it Take a metal block or drill with known thickness and move z so that it just lightly touches the object. Run G30 to see what distance gets measured and modify z probe height until you get the height of the block. Only with calibrated z probe you can expect homing to be correct.

    After G28 you see in log the homing position assumed by firmware. Use this in host so host assumes the same position.

    Hope one of these already covers the problem.
  • Hi Repetier,
    Thanks for quick response and very good advise. I don't have Z-probe, and did not change anything in Z-probe settings.
    I tested your suggestions and they worked. I was afraid that if head will stay at Z=0 it will trigger the z-min end stop. 
    Thanks again for great help.
           Simon
Sign In or Register to comment.