Z-axis not moving up

  • I'm near the end of the build of a i3 MK2 clone and have run into a problem with the Z-axis motors. Specifically, the Z-axis will move down (and trigger the endstop) but it will only make a quick noise if I try to move it up.

    M119 shows all endstops open. Min software stops are currently disabled, as I try to set the printer up. Using Marlin 1.1.3 with a RAMPS 1.4. Both motors turn and I've even uncoupled the entire X-axis carriage.

    Additional test: reversed the z-axis motor wires and they only go up. Inverted the motor direction in software and they also only go up.

    Any advice? I've definitely done a few searches but haven't solved the problem.

    Config.h is as follows (clipped due to posting restrictions):

    //============================== Endstop Settings ===========================

    // @section homing

    // Specify here all the endstop connectors that are connected to any endstop or probe.
    // Almost all printers will be using one per axis. Probes will use one or more of the
    // extra connectors. Leave undefined any used for non-endstop and non-probe purposes.
    #define USE_XMIN_PLUG
    #define USE_YMIN_PLUG
    #define USE_ZMIN_PLUG
    //#define USE_XMAX_PLUG
    //#define USE_YMAX_PLUG
    //#define USE_ZMAX_PLUG

    // coarse Endstop Settings
    //#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors

    // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined

    // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
    #define X_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
    #define Y_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
    #define Z_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
    #define X_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
    #define Y_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
    #define Z_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
    #define Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the probe.

    // Enable this feature if all enabled endstop pins are interrupt-capable.
    // This will remove the need to poll the interrupt pins, saving many CPU cycles.

    //============================== Movement Settings ============================
    // @section motion

    * Default Settings
    * These settings can be reset by M502
    * Note that if EEPROM is enabled, saved values will override these.

    * With this option each E stepper can have its own factors for the
    * following movement settings. If fewer factors are given than the
    * total number of extruders, the last value applies to the rest.
    //#define DISTINCT_E_FACTORS

    * Default Axis Steps Per Unit (steps/mm)
    * Override with M92
    * X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]]
    #define DEFAULT_AXIS_STEPS_PER_UNIT { 100, 100, 4000, 120 }

    * Default Max Feed Rate (mm/s)
    * Override with M203
    * X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]]
    #define DEFAULT_MAX_FEEDRATE { 200, 200, 3, 25 }

    * Default Max Acceleration (change/s) change = mm/s
    * (Maximum start speed for accelerated moves)
    * Override with M201
    * X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]]
    #define DEFAULT_MAX_ACCELERATION { 3000, 3000, 100, 10000 }

    * Default Acceleration (change/s) change = mm/s
    * Override with M204
    * M204 P Acceleration
    * M204 R Retract Acceleration
    * M204 T Travel Acceleration
    #define DEFAULT_ACCELERATION 3000 // X, Y, Z and E acceleration for printing moves
    #define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration for retracts
    #define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration for travel (non printing) moves

    * Default Jerk (mm/s)
    * Override with M205 X Y Z E
    * "Jerk" specifies the minimum speed change that requires acceleration.
    * When changing speed and direction, if the difference is less than the
    * value set here, it may happen instantaneously.
    #define DEFAULT_XJERK 10.0
    #define DEFAULT_YJERK 10.0
    #define DEFAULT_ZJERK 0.4
    #define DEFAULT_EJERK 2.0

    //============================= Z Probe Options =============================
    // @section probes

    // See http://marlinfw.org/configuration/probes.html

    * Enable this option for a probe connected to the Z Min endstop pin.

    * Enable this option for a probe connected to any pin except Z-Min.
    * (By default Marlin assumes the Z-Max endstop pin.)
    * To use a custom Z Probe pin, set Z_MIN_PROBE_PIN below.
    * - The simplest option is to use a free endstop connector.
    * - Use 5V for powered (usually inductive) sensors.
    * - RAMPS 1.3/1.4 boards may use the 5V, GND, and Aux4->D32 pin:
    * - For simple switches connect...
    * - normally-closed switches to GND and D32.
    * - normally-open switches to 5V and D32.
    * WARNING: Setting the wrong pin may have unexpected and potentially
    * disastrous consequences. Use with caution and do your homework.
    //#define Z_MIN_PROBE_ENDSTOP
    //#define Z_MIN_PROBE_PIN Z_MAX_PIN

    * Probe Type
    * Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc.
    * You must activate one of these to use Auto Bed Leveling below.

    * The "Manual Probe" provides a means to do "Auto" Bed Leveling without a probe.
    * Use G29 repeatedly, adjusting the Z height at each point with movement commands
    * or (with LCD_BED_LEVELING) the LCD controller.
    //#define PROBE_MANUALLY

    * A Fix-Mounted Probe either doesn't deploy or needs manual deployment.
    * (e.g., an inductive probe or a nozzle-based probe-switch.)

    * Z Servo Probe, such as an endstop switch on a rotating arm.
    //#define Z_ENDSTOP_SERVO_NR 0 // Defaults to SERVO 0 connector.
    //#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles

    * The BLTouch probe uses a Hall effect sensor and emulates a servo.
    //#define BLTOUCH
    //#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed

    * Enable if probing seems unreliable. Heaters and/or fans - consistent with the
    * options selected below - will be disabled during probing so as to minimize
    * potential EM interference by quieting/silencing the source of the 'noise' (the change
    * in current flowing through the wires). This is likely most useful to users of the
    * BLTouch probe, but may also help those with inductive or other probe types.
    //#define PROBING_HEATERS_OFF // Turn heaters off when probing
    //#define PROBING_FANS_OFF // Turn fans off when probing

    // A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
    //#define SOLENOID_PROBE

    // A sled-mounted probe like those designed by Charles Bell.
    //#define Z_PROBE_SLED
    //#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like.

    // For Z_PROBE_ALLEN_KEY see the Delta example configurations.

    * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
    * X and Y offsets must be integers.
    * In the following example the X and Y offsets are both positive:
    * +-- BACK ---+
    * | |
    * L | (+) P | R <-- probe (20,20)
    * E | | I
    * F | (-) N (+) | G <-- nozzle (10,10)
    * T | | H
    * | (-) | T
    * | |
    * O-- FRONT --+
    * (0,0)
    #define X_PROBE_OFFSET_FROM_EXTRUDER 22 // X offset: -left +right [of the nozzle]
    #define Y_PROBE_OFFSET_FROM_EXTRUDER 12 // Y offset: -front +behind [the nozzle]
    #define Z_PROBE_OFFSET_FROM_EXTRUDER 0 // Z offset: -below +above [the nozzle]

    // X and Y axis travel speed (mm/m) between probes
    #define XY_PROBE_SPEED 8000

    // Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)

    // Speed for the "accurate" probe of each point

    // Use double touch for probing
    //#define PROBE_DOUBLE_TOUCH

    * Z probes require clearance when deploying, stowing, and moving between
    * probe points to avoid hitting the bed and other hardware.
    * Servo-mounted probes require extra space for the arm to rotate.
    * Inductive probes need space to keep from triggering early.
    * Use these settings to specify the distance (mm) to raise the probe (or
    * lower the bed). The values set here apply over and above any (negative)
    * probe Z Offset set with Z_PROBE_OFFSET_FROM_EXTRUDER, M851, or the LCD.
    * Only integer values >= 1 are valid here.
    * Example: `M851 Z-5` with a CLEARANCE of 4 => 9mm from bed to nozzle.
    * But: `M851 Z+1` with a CLEARANCE of 2 => 2mm from bed to nozzle.
    #define Z_CLEARANCE_DEPLOY_PROBE 10 // Z Clearance for Deploy/Stow
    #define Z_CLEARANCE_BETWEEN_PROBES 5 // Z Clearance between probe points

    // For M851 give a range for adjusting the Z probe offset
    #define Z_PROBE_OFFSET_RANGE_MIN -20

    // Enable the M48 repeatability test to test probe accuracy

    // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
    // :{ 0:'Low', 1:'High' }
    #define X_ENABLE_ON 0
    #define Y_ENABLE_ON 0
    #define Z_ENABLE_ON 0
    #define E_ENABLE_ON 0 // For all extruders

    // Disables axis stepper immediately when it's not being used.
    // WARNING: When motors turn off there is a chance of losing position accuracy!
    #define DISABLE_X false
    #define DISABLE_Y false
    #define DISABLE_Z false
    // Warn on display about possibly reduced accuracy

    // @section extruder

    #define DISABLE_E false // For all extruders
    #define DISABLE_INACTIVE_EXTRUDER true // Keep only the active extruder enabled.

    // @section machine

    // 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 false

    // Enable this option for Toshiba stepper drivers

    // @section extruder

    // For direct drive extruder v9 set to true, for geared extruder set to false.
    #define INVERT_E0_DIR false
    #define INVERT_E1_DIR false
    #define INVERT_E2_DIR false
    #define INVERT_E3_DIR false
    #define INVERT_E4_DIR false

    // @section homing

    //#define Z_HOMING_HEIGHT 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
    // Be sure you have this distance over your Z_MAX_POS in case.

    // 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

    // @section machine

    // Travel limits after homing (units are in mm)
    #define X_MIN_POS 0
    #define Y_MIN_POS 0
    #define Z_MIN_POS 0
    #define X_MAX_POS 230
    #define Y_MAX_POS 200
    #define Z_MAX_POS 200

    // If enabled, axes won't move below MIN_POS in response to movement commands.
    // If enabled, axes won't move above MAX_POS in response to movement commands.

    * Filament Runout Sensor
    * A mechanical or opto endstop is used to check for the presence of filament.
    * RAMPS-based boards use SERVO3_PIN.
    * For other boards you may need to define FIL_RUNOUT_PIN.
    * By default the firmware assumes HIGH = has filament, LOW = ran out
    #define FIL_RUNOUT_INVERTING false // set to true to invert the logic of the sensor.
    #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.

  • UPDATE: Turns out to have been a faulty RAMPS. Replaced the card and made NO changes; z-axis is now behaving properly. Thank you all.

  • This sounds similar to Prusa i3 Z axis only goes down (even on up command) and My Prusa i3's z-axis will only go up. Please check the answers to those questions.

    The usual cause of your problem is that you need to:

    • install/configure the end stops, and;

    • home the Z-axis.

    You say that you have already installed ad configured the end stops. Have you homed it yet, though?

    However, check your wiring first as it could just be a simple case of a loose or misplaced connection.

    Also, something else to consider, if your stepper is making a grunting noise, and trying to move but can not, then maybe your stepper driver is not supplying enough current, or maybe too much. See my answer to Extruder stepper motor problem, what can be wrong?. Yes, the answer is for an extruder, but all steppers drivers can suffer the same mis-configuration.

    Thanks Greenonline. Yes, I've homed the system. Proterface even counts up mm in the z-axis when I try to move it, but it does not physically move. When I reversed the z-axis direction in software, the carriage DOES move up, but not down; so it does not seem to be a too little current issue.

  • If the carriage is moving in one direction but not the other is seems like a stepper driver problem to me. Or possibly a electrical contact problem as the stepper drvers have one pin each (pin DIR) to control the direction of the stepper.

    Have you tried to change the drivers on your RAMPS 1.4? I suggest you temporarily change the stepper driver with an axis you know functions.

    Thanks, Axel. Sure have tried swapping the drivers. I'm beginning to suspect that it could just as easily be the RAMPS.

License under CC-BY-SA with attribution

Content dated before 7/24/2021 11:53 AM