New setup Z homing crashes into bed

I've got an AM8 style printer with an induction z probe.  When I z home it homes x and y perfect then the z lowers till the probe is triggered then it raises back up then lowers back down again but when the probe triggers it just keeps going down until I power off.  I've tried a few things but am lost on this firmware.

Here's my config

#ifndef CONFIGURATION_H
#define CONFIGURATION_H

#define NUM_EXTRUDER 4
#define MOTHERBOARD 33
#include "pins.h"

// ################## EDIT THESE SETTINGS MANUALLY ################
#define MICROSTEP_MODES { 16,16,16,16,16,16 } // [1,2,4,8,16]

// ################ END MANUAL SETTINGS ##########################

#undef FAN_PIN
#define FAN_PIN 45
#undef FAN_BOARD_PIN
#define FAN_BOARD_PIN -1
#define BOARD_FAN_SPEED 255
#define BOARD_FAN_MIN_SPEED 0
#define FAN_THERMO_PIN -1
#define FAN_THERMO_MIN_PWM 128
#define FAN_THERMO_MAX_PWM 255
#define FAN_THERMO_MIN_TEMP 45
#define FAN_THERMO_MAX_TEMP 60
#define FAN_THERMO_THERMISTOR_PIN -1
#define FAN_THERMO_THERMISTOR_TYPE 1

//#define EXTERNALSERIAL  use Arduino serial library instead of build in. Requires more ram, has only 63 byte input buffer.
// Uncomment the following line if you are using Arduino compatible firmware made for Arduino version earlier then 1.0
// If it is incompatible you will get compiler errors about write functions not being compatible!
//#define COMPAT_PRE1
#define BLUETOOTH_SERIAL  -1
#define BLUETOOTH_BAUD  115200
#define MIXING_EXTRUDER 0

#define DRIVE_SYSTEM 0
#define XAXIS_STEPS_PER_MM 80
#define YAXIS_STEPS_PER_MM 80
#define ZAXIS_STEPS_PER_MM 400
#define EXTRUDER_FAN_COOL_TEMP 50
#define PDM_FOR_EXTRUDER 0
#define PDM_FOR_COOLER 0
#define DECOUPLING_TEST_MAX_HOLD_VARIANCE 20
#define DECOUPLING_TEST_MIN_TEMP_RISE 1
#define KILL_IF_SENSOR_DEFECT 0
#define RETRACT_ON_PAUSE 2
#define PAUSE_START_COMMANDS ""
#define PAUSE_END_COMMANDS ""
#define SHARED_EXTRUDER_HEATER 0
#define EXT0_X_OFFSET 0
#define EXT0_Y_OFFSET 0
#define EXT0_Z_OFFSET 0
#define EXT0_STEPS_PER_MM 148
#define EXT0_TEMPSENSOR_TYPE 1
#define EXT0_TEMPSENSOR_PIN 13
#define EXT0_HEATER_PIN 10
#define EXT0_STEP_PIN ORIG_E0_STEP_PIN
#define EXT0_DIR_PIN ORIG_E0_DIR_PIN
#define EXT0_INVERSE 1
#define EXT0_ENABLE_PIN ORIG_E0_ENABLE_PIN
#define EXT0_ENABLE_ON 0
#define EXT0_MIRROR_STEPPER 0
#define EXT0_STEP2_PIN ORIG_E0_STEP_PIN
#define EXT0_DIR2_PIN ORIG_E0_DIR_PIN
#define EXT0_INVERSE2 0
#define EXT0_ENABLE2_PIN ORIG_E0_ENABLE_PIN
#define EXT0_MAX_FEEDRATE 50
#define EXT0_MAX_START_FEEDRATE 20
#define EXT0_MAX_ACCELERATION 5000
#define EXT0_HEAT_MANAGER 1
#define EXT0_PREHEAT_TEMP 185
#define EXT0_WATCHPERIOD 1
#define EXT0_PID_INTEGRAL_DRIVE_MAX 230
#define EXT0_PID_INTEGRAL_DRIVE_MIN 40
#define EXT0_PID_PGAIN_OR_DEAD_TIME 34.7
#define EXT0_PID_I 4.11
#define EXT0_PID_D 73.21
#define EXT0_PID_MAX 255
#define EXT0_ADVANCE_K 0
#define EXT0_ADVANCE_L 0
#define EXT0_ADVANCE_BACKLASH_STEPS 0
#define EXT0_WAIT_RETRACT_TEMP 150
#define EXT0_WAIT_RETRACT_UNITS 0
#define EXT0_SELECT_COMMANDS ""
#define EXT0_DESELECT_COMMANDS ""
#define EXT0_EXTRUDER_COOLER_PIN -1
#define EXT0_EXTRUDER_COOLER_SPEED 255
#define EXT0_DECOUPLE_TEST_PERIOD 12000
#define EXT0_JAM_PIN -1
#define EXT0_JAM_PULLUP 0
#define EXT1_X_OFFSET 2834
#define EXT1_Y_OFFSET -32
#define EXT1_Z_OFFSET 0
#define EXT1_STEPS_PER_MM 148
#define EXT1_TEMPSENSOR_TYPE 1
#define EXT1_TEMPSENSOR_PIN 14
#define EXT1_HEATER_PIN 9
#define EXT1_STEP_PIN ORIG_E1_STEP_PIN
#define EXT1_DIR_PIN ORIG_E1_DIR_PIN
#define EXT1_INVERSE 1
#define EXT1_ENABLE_PIN ORIG_E1_ENABLE_PIN
#define EXT1_ENABLE_ON 0
#define EXT1_MIRROR_STEPPER 0
#define EXT1_STEP2_PIN ORIG_E1_STEP_PIN
#define EXT1_DIR2_PIN ORIG_E1_DIR_PIN
#define EXT1_INVERSE2 0
#define EXT1_ENABLE2_PIN ORIG_E1_ENABLE_PIN
#define EXT1_MAX_FEEDRATE 50
#define EXT1_MAX_START_FEEDRATE 20
#define EXT1_MAX_ACCELERATION 5000
#define EXT1_HEAT_MANAGER 1
#define EXT1_PREHEAT_TEMP 185
#define EXT1_WATCHPERIOD 1
#define EXT1_PID_INTEGRAL_DRIVE_MAX 230
#define EXT1_PID_INTEGRAL_DRIVE_MIN 40
#define EXT1_PID_PGAIN_OR_DEAD_TIME 34.7
#define EXT1_PID_I 4.11
#define EXT1_PID_D 73.21
#define EXT1_PID_MAX 255
#define EXT1_ADVANCE_K 0
#define EXT1_ADVANCE_L 0
#define EXT1_ADVANCE_BACKLASH_STEPS 0
#define EXT1_WAIT_RETRACT_TEMP 150
#define EXT1_WAIT_RETRACT_UNITS 0
#define EXT1_SELECT_COMMANDS ""
#define EXT1_DESELECT_COMMANDS ""
#define EXT1_EXTRUDER_COOLER_PIN -1
#define EXT1_EXTRUDER_COOLER_SPEED 255
#define EXT1_DECOUPLE_TEST_PERIOD 12000
#define EXT1_JAM_PIN -1
#define EXT1_JAM_PULLUP 0
#define EXT2_X_OFFSET 28
#define EXT2_Y_OFFSET 5146
#define EXT2_Z_OFFSET 0
#define EXT2_STEPS_PER_MM 148
#define EXT2_TEMPSENSOR_TYPE 1
#define EXT2_TEMPSENSOR_PIN 11
#define EXT2_HEATER_PIN 4
#define EXT2_STEP_PIN ORIG_E2_STEP_PIN
#define EXT2_DIR_PIN ORIG_E2_DIR_PIN
#define EXT2_INVERSE 0
#define EXT2_ENABLE_PIN ORIG_E2_ENABLE_PIN
#define EXT2_ENABLE_ON 0
#define EXT2_MIRROR_STEPPER 0
#define EXT2_STEP2_PIN ORIG_E2_STEP_PIN
#define EXT2_DIR2_PIN ORIG_E2_DIR_PIN
#define EXT2_INVERSE2 0
#define EXT2_ENABLE2_PIN ORIG_E2_ENABLE_PIN
#define EXT2_MAX_FEEDRATE 50
#define EXT2_MAX_START_FEEDRATE 20
#define EXT2_MAX_ACCELERATION 5000
#define EXT2_HEAT_MANAGER 1
#define EXT2_PREHEAT_TEMP 185
#define EXT2_WATCHPERIOD 1
#define EXT2_PID_INTEGRAL_DRIVE_MAX 230
#define EXT2_PID_INTEGRAL_DRIVE_MIN 40
#define EXT2_PID_PGAIN_OR_DEAD_TIME 34.7
#define EXT2_PID_I 4.11
#define EXT2_PID_D 73.21
#define EXT2_PID_MAX 255
#define EXT2_ADVANCE_K 0
#define EXT2_ADVANCE_L 0
#define EXT2_ADVANCE_BACKLASH_STEPS 0
#define EXT2_WAIT_RETRACT_TEMP 150
#define EXT2_WAIT_RETRACT_UNITS 0
#define EXT2_SELECT_COMMANDS ""
#define EXT2_DESELECT_COMMANDS ""
#define EXT2_EXTRUDER_COOLER_PIN -1
#define EXT2_EXTRUDER_COOLER_SPEED 255
#define EXT2_DECOUPLE_TEST_PERIOD 12000
#define EXT2_JAM_PIN -1
#define EXT2_JAM_PULLUP 0
#define EXT3_X_OFFSET 2824
#define EXT3_Y_OFFSET 5145
#define EXT3_Z_OFFSET 0
#define EXT3_STEPS_PER_MM 148
#define EXT3_TEMPSENSOR_TYPE 1
#define EXT3_TEMPSENSOR_PIN 12
#define EXT3_HEATER_PIN 5
#define EXT3_STEP_PIN ORIG_E3_STEP_PIN
#define EXT3_DIR_PIN ORIG_E3_DIR_PIN
#define EXT3_INVERSE 0
#define EXT3_ENABLE_PIN ORIG_E3_ENABLE_PIN
#define EXT3_ENABLE_ON 0
#define EXT3_MIRROR_STEPPER 0
#define EXT3_STEP2_PIN ORIG_E3_STEP_PIN
#define EXT3_DIR2_PIN ORIG_E3_DIR_PIN
#define EXT3_INVERSE2 0
#define EXT3_ENABLE2_PIN ORIG_E3_ENABLE_PIN
#define EXT3_MAX_FEEDRATE 50
#define EXT3_MAX_START_FEEDRATE 20
#define EXT3_MAX_ACCELERATION 5000
#define EXT3_HEAT_MANAGER 1
#define EXT3_PREHEAT_TEMP 185
#define EXT3_WATCHPERIOD 1
#define EXT3_PID_INTEGRAL_DRIVE_MAX 230
#define EXT3_PID_INTEGRAL_DRIVE_MIN 40
#define EXT3_PID_PGAIN_OR_DEAD_TIME 34.7
#define EXT3_PID_I 4.11
#define EXT3_PID_D 73.21
#define EXT3_PID_MAX 255
#define EXT3_ADVANCE_K 0
#define EXT3_ADVANCE_L 0
#define EXT3_ADVANCE_BACKLASH_STEPS 0
#define EXT3_WAIT_RETRACT_TEMP 150
#define EXT3_WAIT_RETRACT_UNITS 0
#define EXT3_SELECT_COMMANDS ""
#define EXT3_DESELECT_COMMANDS ""
#define EXT3_EXTRUDER_COOLER_PIN -1
#define EXT3_EXTRUDER_COOLER_SPEED 255
#define EXT3_DECOUPLE_TEST_PERIOD 12000
#define EXT3_JAM_PIN -1
#define EXT3_JAM_PULLUP 0

#define FEATURE_RETRACTION 1
#define AUTORETRACT_ENABLED 0
#define RETRACTION_LENGTH 3
#define RETRACTION_LONG_LENGTH 13
#define RETRACTION_SPEED 40
#define RETRACTION_Z_LIFT 0
#define RETRACTION_UNDO_EXTRA_LENGTH 0
#define RETRACTION_UNDO_EXTRA_LONG_LENGTH 0
#define RETRACTION_UNDO_SPEED 20
#define FILAMENTCHANGE_X_POS 0
#define FILAMENTCHANGE_Y_POS 0
#define FILAMENTCHANGE_Z_ADD  2
#define FILAMENTCHANGE_REHOME 1
#define FILAMENTCHANGE_SHORTRETRACT 5
#define FILAMENTCHANGE_LONGRETRACT 50
#define JAM_METHOD 1
#define JAM_STEPS 220
#define JAM_SLOWDOWN_STEPS 320
#define JAM_SLOWDOWN_TO 70
#define JAM_ERROR_STEPS 500
#define JAM_MIN_STEPS 10
#define JAM_ACTION 1

#define RETRACT_DURING_HEATUP true
#define PID_CONTROL_RANGE 20
#define SKIP_M109_IF_WITHIN 2
#define SCALE_PID_TO_MAX 0
#define TEMP_HYSTERESIS 2
#define EXTRUDE_MAXLENGTH 160
#define NUM_TEMPS_USERTHERMISTOR0 0
#define USER_THERMISTORTABLE0 {}
#define NUM_TEMPS_USERTHERMISTOR1 0
#define USER_THERMISTORTABLE1 {}
#define NUM_TEMPS_USERTHERMISTOR2 0
#define USER_THERMISTORTABLE2 {}
#define GENERIC_THERM_VREF 5
#define GENERIC_THERM_NUM_ENTRIES 33
#define HEATER_PWM_SPEED 0
#define COOLER_PWM_SPEED 0

// ############# Heated bed configuration ########################

#define HAVE_HEATED_BED 1
#define HEATED_BED_PREHEAT_TEMP 50
#define HEATED_BED_MAX_TEMP 120
#define SKIP_M190_IF_WITHIN 3
#define HEATED_BED_SENSOR_TYPE 1
#define HEATED_BED_SENSOR_PIN 15
#define HEATED_BED_HEATER_PIN 6
#define HEATED_BED_SET_INTERVAL 5000
#define HEATED_BED_HEAT_MANAGER 1
#define HEATED_BED_PID_INTEGRAL_DRIVE_MAX 255
#define HEATED_BED_PID_INTEGRAL_DRIVE_MIN 80
#define HEATED_BED_PID_PGAIN_OR_DEAD_TIME   296.05
#define HEATED_BED_PID_IGAIN   16.89
#define HEATED_BED_PID_DGAIN 1297.53
#define HEATED_BED_PID_MAX 255
#define HEATED_BED_DECOUPLE_TEST_PERIOD 300000
#define MIN_EXTRUDER_TEMP 150
#define MAXTEMP 275
#define MIN_DEFECT_TEMPERATURE -10
#define MAX_DEFECT_TEMPERATURE 290
#define MILLISECONDS_PREHEAT_TIME 30000

// ##########################################################################################
// ##                             Laser configuration                                      ##
// ##########################################################################################

#define SUPPORT_LASER 0
#define LASER_PIN -1
#define LASER_ON_HIGH 1
#define LASER_WARMUP_TIME 0
#define LASER_PWM_MAX 255
#define LASER_WATT 2

// ##                              CNC configuration                                       ##

/*
If the firmware is in CNC mode, it can control a mill with M3/M4/M5. It works
similar to laser mode, but mill keeps enabled during G0 moves and it allows
setting rpm (only with event extension that supports this) and milling direction.
It also can add a delay to wait for spindle to run on full speed.
*/

#define SUPPORT_CNC 0
#define CNC_WAIT_ON_ENABLE 300
#define CNC_WAIT_ON_DISABLE 0
#define CNC_ENABLE_PIN -1
#define CNC_ENABLE_WITH 1
#define CNC_DIRECTION_PIN -1
#define CNC_DIRECTION_CW 1
#define CNC_PWM_MAX 255
#define CNC_RPM_MAX 8000
#define CNC_SAFE_Z 150

#define DEFAULT_PRINTER_MODE 0

// ################ Endstop configuration #####################

#define MULTI_ZENDSTOP_HOMING 0
#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 false
#define MINMAX_HARDWARE_ENDSTOP_Z2 false
#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 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 MINMAX_HARDWARE_ENDSTOP_Z2 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 0
#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 0
#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 310
#define Y_MAX_LENGTH 310
#define Z_MAX_LENGTH 290
#define X_MIN_POS -10
#define Y_MIN_POS -10
#define Z_MIN_POS 0
#define PARK_POSITION_X 10
#define PARK_POSITION_Y 10
#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 190
#define DISTORTION_YMAX 190

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

#define FEATURE_BABYSTEPPING 1
#define BABYSTEP_MULTIPLICATOR 1

#define DELTA_SEGMENTS_PER_SECOND_PRINT 180 // Move accurate setting for print moves
#define DELTA_SEGMENTS_PER_SECOND_MOVE 70 // Less accurate setting for other moves
#define EXACT_DELTA_MOVES 1

// Delta settings
#define DELTA_HOME_ON_POWER 0

#define DELTASEGMENTS_PER_PRINTLINE 20
#define STEPPER_INACTIVE_TIME 360L
#define MAX_INACTIVE_TIME 0L
#define MAX_FEEDRATE_X 80
#define MAX_FEEDRATE_Y 50
#define MAX_FEEDRATE_Z 2
#define HOMING_FEEDRATE_X 40
#define HOMING_FEEDRATE_Y 40
#define HOMING_FEEDRATE_Z 2
#define HOMING_ORDER HOME_ORDER_XYZ
#define ZHOME_PRE_RAISE 2
#define ZHOME_PRE_RAISE_DISTANCE 10
#define RAISE_Z_ON_TOOLCHANGE 2
#define ZHOME_MIN_TEMPERATURE 0
#define ZHOME_HEAT_ALL 1
#define ZHOME_HEAT_HEIGHT 20
#define ZHOME_X_POS 999999
#define ZHOME_Y_POS 999999
#define ENABLE_BACKLASH_COMPENSATION 0
#define X_BACKLASH 0
#define Y_BACKLASH 0
#define Z_BACKLASH 0
#define RAMP_ACCELERATION 1
#define STEPPER_HIGH_DELAY 0
#define DIRECTION_DELAY 0
#define STEP_DOUBLER_FREQUENCY 12000
#define ALLOW_QUADSTEPPING 1
#define DOUBLE_STEP_DELAY 0 // time in microseconds
#define MAX_ACCELERATION_UNITS_PER_SQ_SECOND_X 1000
#define MAX_ACCELERATION_UNITS_PER_SQ_SECOND_Y 1000
#define MAX_ACCELERATION_UNITS_PER_SQ_SECOND_Z 100
#define MAX_TRAVEL_ACCELERATION_UNITS_PER_SQ_SECOND_X 1000
#define MAX_TRAVEL_ACCELERATION_UNITS_PER_SQ_SECOND_Y 1000
#define MAX_TRAVEL_ACCELERATION_UNITS_PER_SQ_SECOND_Z 100
#define INTERPOLATE_ACCELERATION_WITH_Z 0
#define ACCELERATION_FACTOR_TOP 100
#define MAX_JERK 20
#define MAX_ZJERK 0.3
#define PRINTLINE_CACHE_SIZE 16
#define MOVE_CACHE_LOW 10
#define LOW_TICKS_PER_MOVE 250000
#define EXTRUDER_SWITCH_XY_SPEED 100
#define DUAL_X_AXIS 0
#define DUAL_X_RESOLUTION 0
#define X2AXIS_STEPS_PER_MM 100
#define FEATURE_TWO_XSTEPPER 0
#define X2_STEP_PIN   ORIG_E1_STEP_PIN
#define X2_DIR_PIN    ORIG_E1_DIR_PIN
#define X2_ENABLE_PIN ORIG_E1_ENABLE_PIN
#define FEATURE_TWO_YSTEPPER 0
#define Y2_STEP_PIN   ORIG_E1_STEP_PIN
#define Y2_DIR_PIN    ORIG_E1_DIR_PIN
#define Y2_ENABLE_PIN ORIG_E1_ENABLE_PIN
#define FEATURE_TWO_ZSTEPPER 1
#define Z2_STEP_PIN   ORIG_E4_STEP_PIN
#define Z2_DIR_PIN    ORIG_E4_DIR_PIN
#define Z2_ENABLE_PIN ORIG_E4_ENABLE_PIN
#define FEATURE_THREE_ZSTEPPER 0
#define Z3_STEP_PIN   ORIG_E2_STEP_PIN
#define Z3_DIR_PIN    ORIG_E2_DIR_PIN
#define Z3_ENABLE_PIN ORIG_E2_ENABLE_PIN
#define FEATURE_FOUR_ZSTEPPER 0
#define Z4_STEP_PIN   ORIG_E3_STEP_PIN
#define Z4_DIR_PIN    ORIG_E3_DIR_PIN
#define Z4_ENABLE_PIN ORIG_E3_ENABLE_PIN
#define FEATURE_DITTO_PRINTING 0
#define USE_ADVANCE 0
#define ENABLE_QUADRATIC_ADVANCE 0

#define DRV_TMC2130

// Uncomment if you use the stall guard for homing. Only for cartesian printers and xy direction

// The drivers with set CS pin will be used, all others are normal step/dir/enable drivers
#define TMC2130_X_CS_PIN 32
#define TMC2130_Y_CS_PIN 47
#define TMC2130_Z_CS_PIN -1
#define TMC2130_EXT0_CS_PIN -1
#define TMC2130_EXT1_CS_PIN -1
#define TMC2130_EXT2_CS_PIN -1

// Per-axis current setting in mA { X, Y, Z, E0, E1, E2}
#define MOTOR_CURRENT { 1000,1000,1000,1000,1000,1000 }

/**  Global settings - these apply to all configured drivers
Per-axis values will override these
*/
#define TMC2130_STEALTHCHOP         1  // Enable extremely quiet stepping
#define TMC2130_INTERPOLATE_256  1  // Enable internal driver microstep interpolation
#define TMC2130_STALLGUARD          0  // Sensorless homing sensitivity (between -63 and +64)

/** PWM values for chopper tuning
only change if you know what you're doing
*/
#define TMC2130_PWM_AMPL          255
#define TMC2130_PWM_GRAD            1
#define TMC2130_PWM_AUTOSCALE    1
#define TMC2130_PWM_FREQ            2

/**  Per-axis parameters

To define different values for certain parameters on each axis,
append either _X, _Y, _Z, _EXT0, _EXT1 or _EXT2
to the name of the global parameter.

Examples for the X axis:

#define TMC2130_STEALTHCHOP_X         1
#define TMC2130_INTERPOLATE_256_X  true
*/

/** Minimum speeds for stall detection.

These values may need to be adjusted if SENSORLESS_HOMING is enabled,
but endstops trigger prematurely or don't trigger at all.
The exact value is dependent on the duration of one microstep,
but good approximations can be determined by experimentation.
*/
#define TMC2130_TCOOLTHRS_X 300
#define TMC2130_TCOOLTHRS_Y 300
#define TMC2130_TCOOLTHRS_Z 300

// ################# Misc. settings ##################

#define BAUDRATE 115200
#define ENABLE_POWER_ON_STARTUP 1
#define POWER_INVERTING 0
#define AUTOMATIC_POWERUP 0
#define KILL_METHOD 1
#define ACK_WITH_LINENUMBER 1
#define KEEP_ALIVE_INTERVAL 2000
#define WAITING_IDENTIFIER "wait"
#define ECHO_ON_EXECUTE 1
#define EEPROM_MODE 1
#undef PS_ON_PIN
#define PS_ON_PIN -1
#define JSON_OUTPUT 0

/* ======== Servos =======
Control the servos with
M340 P<servoId> S<pulseInUS>   / ServoID = 0..3  pulseInUs = 500..2500
Servos are controlled by a pulse width normally between 500 and 2500 with 1500ms in center position. 0 turns servo off.
WARNING: Servos can draw a considerable amount of current. Make sure your system can handle this or you may risk your hardware!
*/
#define FEATURE_SERVO 0
#define SERVO0_PIN 11
#define SERVO1_PIN -1
#define SERVO2_PIN -1
#define SERVO3_PIN -1
#define SERVO0_NEUTRAL_POS  -1
#define SERVO1_NEUTRAL_POS  -1
#define SERVO2_NEUTRAL_POS  -1
#define SERVO3_NEUTRAL_POS  -1
#define UI_SERVO_CONTROL 0
#define FAN_KICKSTART_TIME  200
#define MAX_FAN_PWM 255

        #define FEATURE_WATCHDOG 1

// #################### Z-Probing #####################

#define Z_PROBE_Z_OFFSET 0
#define Z_PROBE_Z_OFFSET_MODE 0
#define UI_BED_COATING 0
#define FEATURE_Z_PROBE 1
#define EXTRUDER_IS_Z_PROBE 1
#define Z_PROBE_DISABLE_HEATERS 1
#define Z_PROBE_BED_DISTANCE 10
#define Z_PROBE_PIN ORIG_Z_MIN_PIN
#define Z_PROBE_PULLUP 0
#define Z_PROBE_ON_HIGH 0
#define Z_PROBE_X_OFFSET 17
#define Z_PROBE_Y_OFFSET -23
#define Z_PROBE_WAIT_BEFORE_TEST 0
#define Z_PROBE_SPEED 2
#define Z_PROBE_XY_SPEED 150
#define Z_PROBE_SWITCHING_DISTANCE 1
#define Z_PROBE_REPETITIONS 1
#define Z_PROBE_HEIGHT 0.5
#define Z_PROBE_DELAY 0
#define Z_PROBE_START_SCRIPT ""
#define Z_PROBE_FINISHED_SCRIPT ""
#define Z_PROBE_RUN_AFTER_EVERY_PROBE ""
#define Z_PROBE_REQUIRES_HEATING 0
#define Z_PROBE_MIN_TEMPERATURE 150
#define FEATURE_AUTOLEVEL 1
#define FEATURE_SOFTWARE_LEVELING 0
#define Z_PROBE_X1 25
#define Z_PROBE_Y1 50
#define Z_PROBE_X2 290
#define Z_PROBE_Y2 50
#define Z_PROBE_X3 25
#define Z_PROBE_Y3 290
#define BED_LEVELING_METHOD 1
#define BED_CORRECTION_METHOD 0
#define BED_LEVELING_GRID_SIZE 5
#define BED_LEVELING_REPETITIONS 5
#define BED_MOTOR_1_X 0
#define BED_MOTOR_1_Y 0
#define BED_MOTOR_2_X 200
#define BED_MOTOR_2_Y 0
#define BED_MOTOR_3_X 100
#define BED_MOTOR_3_Y 200
#define BENDING_CORRECTION_A 0
#define BENDING_CORRECTION_B 0
#define BENDING_CORRECTION_C 0
#define FEATURE_AXISCOMP 1
#define AXISCOMP_TANXY 0
#define AXISCOMP_TANYZ 0
#define AXISCOMP_TANXZ 0

#ifndef SDSUPPORT  // Some boards have sd support on board. These define the values already in pins.h
#define SDSUPPORT 1
#undef SDCARDDETECT
#define SDCARDDETECT -1
#define SDCARDDETECTINVERTED 0
#define SD_EXTENDED_DIR 1 /** Show extended directory including file length. Don't use this with Pronterface! */
#define SD_RUN_ON_STOP ""
#define SD_STOP_HEATER_AND_MOTORS_ON_STOP 1
#define ARC_SUPPORT 1
#define FEATURE_MEMORY_POSITION 1
#define FEATURE_CHECKSUM_FORCED 0
#define FEATURE_FAN_CONTROL 1
#define FEATURE_FAN2_CONTROL 0
#define FEATURE_CONTROLLER 11
#define ADC_KEYPAD_PIN -1
#define LANGUAGE_EN_ACTIVE 1
#define LANGUAGE_DE_ACTIVE 0
#define LANGUAGE_NL_ACTIVE 0
#define LANGUAGE_PT_ACTIVE 0
#define LANGUAGE_IT_ACTIVE 0
#define LANGUAGE_ES_ACTIVE 0
#define LANGUAGE_FI_ACTIVE 0
#define LANGUAGE_SE_ACTIVE 0
#define LANGUAGE_FR_ACTIVE 0
#define LANGUAGE_CZ_ACTIVE 0
#define LANGUAGE_PL_ACTIVE 0
#define LANGUAGE_TR_ACTIVE 0
#define UI_PRINTER_NAME "AM8 Multi"
#define UI_PRINTER_COMPANY "Home made"
#define UI_PAGES_DURATION 4000
#define UI_SPEEDDEPENDENT_POSITIONING 0
#define UI_DISABLE_AUTO_PAGESWITCH 1
#define UI_AUTORETURN_TO_MENU_AFTER 30000
#define FEATURE_UI_KEYS 0
#define UI_ENCODER_SPEED 2
#define UI_REVERSE_ENCODER 1
#define UI_KEY_BOUNCETIME 10
#define UI_KEY_FIRST_REPEAT 500
#define UI_KEY_REDUCE_REPEAT 50
#define UI_KEY_MIN_REPEAT 50
#define FEATURE_BEEPER 0
#define CASE_LIGHTS_PIN -1
#define CASE_LIGHT_DEFAULT_ON 1
#define UI_START_SCREEN_DELAY 1000
#define UI_DYNAMIC_ENCODER_SPEED 0
        /**
Beeper sound definitions for short beeps during key actions
and longer beeps for important actions.
Parameter is delay in microseconds and the secons is the number of repetitions.
Values must be in range 1..255
*/
#define BEEPER_SHORT_SEQUENCE 2,2
#define BEEPER_LONG_SEQUENCE 8,8
#define UI_SET_MIN_HEATED_BED_TEMP  30
#define UI_SET_MAX_HEATED_BED_TEMP 120
#define UI_SET_MIN_EXTRUDER_TEMP   170
#define UI_SET_MAX_EXTRUDER_TEMP   260
#define UI_SET_EXTRUDER_FEEDRATE 2
#define UI_SET_EXTRUDER_RETRACT_DISTANCE 2.7


#define NUM_MOTOR_DRIVERS 0




Comments

  • It will go down #define Z_PROBE_HEIGHT 0.5 and then raise #define Z_PROBE_Z_OFFSET 0 (bed coating). Does not look like much but you should check the eeprom values. They may differ and explain the problem.
  • There was nothing in the eeprom as this is a new flash and nothing has been set.  Everything having to do with Z in the EEPROM is 0.

    I also did a load f EEPROM.

    I just tried autobedlevel and it did the exact same thing.  The z came down till the probe triggered, then it went up the few mm specified then it went back down but never stopped.
  • edited April 26
    Ok while moving my z axis, I found that when I put a metal ruler under the probe, the min endstop still says off.  I'll disable the bed leveling stuff and see if I can get the endstop part working.

    Edit: Homeing works perfect without z-probing enabled.

    I re-enabled z-probing and raised my carriage up about 100 mm.  I then told it to home and used my ruler to stop it.  It triggers fine, but then it is told to go down 42 mm.  I can see it on the LCD on the right where it shows the z axis position.  After homing is done it says Z:   -42.00 and when it gets to -42 it stops and the z axis says Z:   0.00.
  • I just noticed that when I home the z axis, I can trigger the probe with my ruler then it goes up then down again for a second time, the LDC goes back to the main info screen and when it is slowly going down to sense the bed (or ruler in this case) once it senses it the z axis goes down even faster to -42 mm, but on the bottom of the LCD is says "could not activate z".  I know it sees the probe because it triggers it to do the second check then it speeds up once that is done, but something in the way z-probing is configure is causing this thing to act funky.  Nowhere in my settings do I have anything telling it to go down 42 mm.
  • Positions during homing are not relevant. They are always longer then needed as they want to hit the endstop and use a safe value to hit it. This is at least for the first 2 moves in endstop direction. After that the correction of rotation/bed coating/z probe height happens.

    If everything is 0 in eeprom it is wrong as you said in config it is 0.5mm. 

    How did you home without z-probe? You should not have z-min endstop and z probe. That will not really work. Preferred solution is to home to z max and use z probe to calculate height to top.
  • Thanks for the reply.  I know during homing it sets a negative number looking for the endstop to be triggered, but this happens after the endstop is triggered.  I have the z-probe as the z min endstop so when z-probing is disabled the probe itself acts as the endstop switch and triggers it to stop and zero the axis.  This works perfect and I, in theory, could start printing.  But because I have a 300x300 bed and it is not perfectly flat and I have multiple extruders that are slightly higher on one side (maybe .05 mm give or take), I need to use bed leveling to compensate.

    I do not have a z_max endstop, or even a plug for one, and it would take forever to go up almost 300mm at the speed it goes.  

    Is there another solution besides the "preferred"? 

    With Marlin I had no issues using the z probe as z min endstop and using auto bed leveling.  I know this is not Marlin and I am hoping for a better solution than Marlin as it does not work for my extruder configuration and I am having issues getting support.  I've been messing with this for weeks and don't want to have wasted time and money on a setup I cannot get working.
  • If you have a inductive probe fitted, shouldn't this be 0 #define EXTRUDER_IS_Z_PROBE 1
  • Thanks for the suggestion, but I tried that too.  These are my current z-probe settings.

    // #################### Z-Probing #####################

    #define Z_PROBE_Z_OFFSET 0
    #define Z_PROBE_Z_OFFSET_MODE 0
    #define UI_BED_COATING 0
    #define FEATURE_Z_PROBE 1
    #define EXTRUDER_IS_Z_PROBE 0
    #define Z_PROBE_DISABLE_HEATERS 1
    #define Z_PROBE_BED_DISTANCE 1
    #define Z_PROBE_PIN ORIG_Z_MIN_PIN
    #define Z_PROBE_PULLUP 0
    #define Z_PROBE_ON_HIGH 0
    #define Z_PROBE_X_OFFSET 17
    #define Z_PROBE_Y_OFFSET -23
    #define Z_PROBE_WAIT_BEFORE_TEST 0
    #define Z_PROBE_SPEED 2
    #define Z_PROBE_XY_SPEED 150
    #define Z_PROBE_SWITCHING_DISTANCE 1
    #define Z_PROBE_REPETITIONS 1
    #define Z_PROBE_HEIGHT -0.5
    #define Z_PROBE_DELAY 0
    #define Z_PROBE_START_SCRIPT ""
    #define Z_PROBE_FINISHED_SCRIPT ""
    #define Z_PROBE_RUN_AFTER_EVERY_PROBE ""
    #define Z_PROBE_REQUIRES_HEATING 0
    #define Z_PROBE_MIN_TEMPERATURE 0
    #define FEATURE_AUTOLEVEL 1
    #define FEATURE_SOFTWARE_LEVELING 0
    #define Z_PROBE_X1 25
    #define Z_PROBE_Y1 50
    #define Z_PROBE_X2 290
    #define Z_PROBE_Y2 50
    #define Z_PROBE_X3 25
    #define Z_PROBE_Y3 290
    #define BED_LEVELING_METHOD 1
    #define BED_CORRECTION_METHOD 0
    #define BED_LEVELING_GRID_SIZE 5
    #define BED_LEVELING_REPETITIONS 5
    #define BED_MOTOR_1_X 0
    #define BED_MOTOR_1_Y 0
    #define BED_MOTOR_2_X 200
    #define BED_MOTOR_2_Y 0
    #define BED_MOTOR_3_X 100
    #define BED_MOTOR_3_Y 200
    #define BENDING_CORRECTION_A 0
    #define BENDING_CORRECTION_B 0
    #define BENDING_CORRECTION_C 0
    #define FEATURE_AXISCOMP 0
    #define AXISCOMP_TANXY 0
    #define AXISCOMP_TANYZ 0
    #define AXISCOMP_TANXZ 0

  • A few observations from my setup.

    #define Z_PROBE_BED_DISTANCE 1    <<<set this to 5 so that probe is lifted enough to untrigger between probe repetitions
    #define Z_PROBE_SWITCHING_DISTANCE  <<set to 5 for same reason
    #define Z_PROBE_HEIGHT -0.5 <<<unlike marlin,  Z probe height should be a positive number
  • I just tried those settings and get the same result.  Even before with those set to 1 the probe had time to untrigger.  After probing 2 times, the z axis lowered 42 mm without fail.  I am currently starting the homing at 60 mm for this reason and am using my metal ruler to trigger the probe.

    Do you have a separate z endstop and probe?
  • I use the probe as the z min endstop.
    When you make changes, are you editing the eeprom or are you changing values in the config.h?

    If the latter, are you sending a M502 and M500 to the printer to update the eeprom.

  • I make all changes in config.h and upload.  In Marlin I only edit the EEPROM after everything worked and I only edit z offset.

    Can you post your config.h so I can compare?
  • Making changes in config.h and uploading will not over write the data in the eeprom (so the printer still uses old values in eeprom)
    Thats why you need to send the M502,M500 combo to update eeprom values from the config, or erase the eeprom prior to uploading.


  • edited April 26
    I never set anything in the EEPROM to begin with on Repetier, plus I did a Load f. EEPROM from the LCD also.

    Also when I go to move and choose Z fast, the min endstop says off even if the LED on the probe is on (triggered).  If I disable z-probing the min endstop actually changes from off if I trigger the probe.  Does yours do that?

    Just for giggles, I set the z offset in the LCD to 1mm and saved settings to EEPROM.  It does the same thing and the z axis goes down 42 mm AFTER homing.
  • edited April 26
    I just want to see if this thing prints right now so I turned off z probing and set my z offset to -0.10 so it will lower 0.1 mm after homing (at least that's what the other firmware does).  I set the z offset then saved to eeprom and homed the z axis.  The z offset is now reset to 0.00.  No matter what I do the z offset always goes back to 0.00.  

    Well, you were both right about it being something in the EEPROM.  I disabled it and it looks like it is working.  I'll see about setting it to EEPROM set 2 and see what happens.

    The confusing part is I never set anything in EEPROM and I loaded factory EEPROM, but it did not help.
  •  So I learned the hard way that unlike the old firmware I used , this firmware loads into EEPROM and the next time you load firmware the old EEPROM settings are still there from the last firmware upload.  I have to disable EEPROM until I get the z offset correct then I can enable it.  It's just not what I'm used to, but now that I know... <span>:smile:</span>
  • you can change #define EEPROM_MODE 1 to a different number before uploading to EEPROM. It should overwrite. Also I run the clear_eeprom sketch before uploading.
  • repetier host has a eeprom editor in the config menu,so you could edit the eeprom directly with no need to recompile firmware.

  • @Roko
    I did not realize that the z_probe_height I entered in the config.h was then put in the EEPROM on day 1 when I uploaded.  I thought the firmware values were used until I manually put something in EEPROM.  That was how the last firmware I used was.  I finally figured that out and will do that from now on.

    @MartinH
    I'll have to check that out, but still like to make sure everything is in my config.h so if I ever need to re-upload to a new board I do not have to worry about forgetting or losing critical settings.

    Thank you all for your help and I am sure I will need more :wink:
  • And after disabling the z_min endstop, I am finally printing!  I've got some modifications and bed size/position calibrations to do, but I'm printing!  :smiley:

    The first thing I notice is I cannot move my x/y as fast or it just sits there vibrating.  I have TMC2130 drivers on both with the current set to 1 amp and the steppers can handle 2 amps.  Any tips on getting them faster without the skipping or vibration issues?  Feedrate on both is 80 mm/s and acceleration is 100 mm/s2.

    The second thing I notice is my extruder 1 stepper is half the temp that is was with Marlin.  In fact, all my steppers that are being used are almost cold, but when using the latest Marlin firmware they ran hot.  Maybe part of it is the speed, but even the extruder stepper is cool compared to Marlin.  So that's a major plus!

    The filament is also laying out smoother, but I think that is due to the fact that the stepper is not overheating causing the filament to slip in the teeth.  That was a serious issue with the other firmware.

    Next test this afternoon is to see how Repetier does with my multi extruders :smile: 
  • @MartinH
    Can you post or send me your config.h?  While I am up and running, doing a home all yields results that aren't quite right.  When I print, the bed leveling does good, but if you are able to properly home all and bed level, I'd love to see how your config.h looks to handle that properly.

    I do believe my y skipping was from a bad stepper bracket that warped when the old steppers got too hot.  I'm designing a new bracket to keep it straight and prevent warping, even though the heat issue is under control.
  • Attached is my config, had to zip it to upload it.
    Main things to note are homing method, use one with pre-heat option so you can set the x y coords for Z homeing.
    Allso, grid locations for bed probing.

  • There is no file attached.  I PMed you my email if you need to send it that way.
  • Ok I got the file that time.  That was exactly what I needed!  The firmware configuration tool was always setting ENDSTOP_PULLUP_Z_MIN to true, but yours was false.  Once manually set in the Arduino IDE it is working as expected on my printer.

    Now to figure out all the other kinks in my setup lol.  

    I did manage to print 2 things with only one minor skip in the y axis.  I know my steppers should be able to handle more, but not sure how much of a bind the Y is in and speeding the print up didn't help.  But now that I have Z homing working and just about have probing working, I can work on the x/y axis more.

    Thanks again for all your help!
  • edited April 28
    I also have to set extruder_is_z_probe 1 or it doesn't work for me.  

    But I can now home, probe and print.  Time for more fine tuning.  The hardest part is keeping these 4 extruders at the same height.
Sign In or Register to comment.