Z Axis Homed Then moves wrong up or down

Hey everyone,

New to 3d printing period, built a reprapguru V2 which has the arduino 2560 & Ramps 1.4 with marlin 1.8.3 installed. So I've been looking all around just trying to get this thing to run right and I almost have it good but I am stuck currently. Basically, after I home the Z, to which it will travel down and hit the endstop just fine, but after that if I hit the manual control to move it ether up or down using the .01, .1, 1 or 10 buttons it automatically starts to move down towards the endstop. I am not sure the exact distance but its equal to about 3 inches of travel. I was looking through the code in marlin and couldn't see anything out of the ordinary (Im new to c++ however) and there is no home offset in the eeprom settings. Also, the X and Y don't have this problem, can anyone offer a suggestion?


  • Host only sends the proper command, but the error is in Marlin configuration, except if you have set homing position wrong in host. In Printer settings->shape you set z homing pos 0 or zmax depedning on pos.

    A typical beginner error is to set motor direction wrong just to be able to home to the desired place. So if you have z min homing you have homing direction -1 and you mist adjust invert z motor to make it work.
  • In the printer shape settings, I have all three axis set to zero home. Do you mean since I reversed it it needs to be my max z height size say -200 home position? Also, with the z position I've reversed the endstop and motor position in marlin to both the bed and the gantry top. Both setups the z stops after it hits the ends stop and retracts a couple mm then parks. However again as soon as I hit the manual control to move it ether up or down it proceeds to move toward the end stop what I would say is the whole home travel distance. It's like after it homes, the manual movement control wants to redo the homing process, to which I have to hit the emergency stop.
  • -200 is no valid z position. If your printer height is 200 it is either 0 or 200. You can home and send M114 to query firmware positions and enter that as homing position.

    You should also make sure 0 means bed and extruder are touching. 200 in this example would be max. distance between extruder and bed hence max endstop homing with homing dir = 1.

    Firmware and host must be configured identically to work together.
  • Yup, so I double checked the config adv tab in marlin and kept playing with the settings in the basaic config and finally got it. Not im just trying to balance out the Esteps for the Z, its only moving half the distance. Thanks again for your input, you saved me from damaging it permanently lol
  • edited October 17
    Hey man can you tell me how you solve your problem.  I'm having the same problem.
  • edited October 18
    setting up Marlin is confusing enough, but the text in the code does not help much, does it?
    this is probably better asked in Marlin Github, but.......
    There are a couple of things and they are all in configuration.h
    I can't speak specifically to the version of Marlin you are using. I am using 1.1.x bugfix, so the code may be slightly different.

    There are settings: - these are my values for a CoreXY printer - yours will be different.
    that will reverse the motors. The variable is true or false. Since there is no convention you just need to play with it.
    // Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way.
    #define INVERT_X_DIR false
    #define INVERT_Y_DIR false
    #define INVERT_Z_DIR true
    below that are the settings for the extruder

    that change the steps/mm for each motor. The axis are by calculation, the extruder is by experiment.
     * Default Axis Steps Per Unit (steps/mm)
     * Override with M92
     *                                      X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]]
    #define DEFAULT_AXIS_STEPS_PER_UNIT   { 200, 200, 800, 185.2 }

    that will change the speed of homing and the bounce speed (off end stop) using a multiplier. This one is in configuration_adv.h
    //homing hits the endstop, then retracts by this distance, before it tries to slowly bump again:
    #define X_HOME_BUMP_MM 5
    #define Y_HOME_BUMP_MM 5
    #define Z_HOME_BUMP_MM 2
    #define HOMING_BUMP_DIVISOR {2, 2, 2}
    The Z divisor default = 4.  --- 2 is faster.

    that controls the endstop direction - if you are using min or max endstops.
    // Direction of endstops when homing; 1=MAX, -1=MIN
    // :[-1,1]
    #define X_HOME_DIR -1
    #define Y_HOME_DIR -1
    #define Z_HOME_DIR -1
    your version may just be whether you are using min or max endstops. I think the above is new.

    that set the bed size
    // The size of the print bed
    #define X_BED_SIZE 335 //** max size
    #define Y_BED_SIZE 305 //** max size

    // Travel limits (mm) after homing, corresponding to endstop positions.
    #define X_MIN_POS 0
    #define Y_MIN_POS 0
    #define Z_MIN_POS 0
    #define X_MAX_POS X_BED_SIZE
    #define Y_MAX_POS Y_BED_SIZE
    #define Z_MAX_POS 295 //**

    that sets the homing feed rate
    // Homing speeds (mm/m)
    #define HOMING_FEEDRATE_XY (50*60)
    #define HOMING_FEEDRATE_Z  (8*60)

    If you unit only bounce off endstop but does not go back to touch it again, that isn't right.
    work with the direction till you get it right.

    there is also config setting for the endstops, that could be an issue. you are on your own there.

    I've been there too. good luck.

  •  I've changed somethings  but  don't work  so i upload the old version of marlin that i already had and used to work before , so i think that maybe would be hardware

    thanks anyway
  • Finally i find out


    ''My guess is that you have set Home Z to 0 instead of printer height also in shape tab. You must there enter the geight returned by firmware when you have homed and send M114.''

Sign In or Register to comment.