# Initial auto-leveling configuration

I'm near the end of a full electronics swap of a dead 3d printer. I'm using an MKS Gen 1.4 board with Repetier firmware. This is my first try at attempting to set up auto-leveling from scratch.

I've got the inductive probe mounted, positioned and calibrated so that running a G30 (single probe) works perfectly and returns valid results.

However, when I try a G28 (home), then G29 to do a full auto-leveling sequence, just prior to each probing, the Y axis lurches forward (roughly)70 mm, and stays cumulatively out of position by the amount it lurched forward. Since 70mm x 3 is bigger than the depth of my bed (200x200) the Y-axis bangs and grinds against it's physical limit. Additionally, that puts the Z-probe beyond the edge of the bed, which causes the firmware to go into error mode, because the actual z-low limit switch is hit without ever tripping the Z-probe. Which, annoying sends the Z-Axis moving up, until it ultimately crashes into its physical limit and grinds until I kill the power.

1. Why is my config causing this lurching behavior? How do I fix it?
2. Can the error behavior be configured/changed to NOT attempt infinite movement in the Z+ direction? (It might not matter once #1 is fixed, but I don't like the idea of my printer going into a mode where the Z-stepper could burn itself out if the power isn't flipped.)

Here is the Z-probe section of my config.h:

(Note: I have tried changing Z_PROBE_Y_OFFSET to -75, to see if I was entering the offset incorrectly. It didn't seem to change the behavior noticeably.)

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

#define Z_PROBE_Z_OFFSET 0.2
#define Z_PROBE_Z_OFFSET_MODE 0
#define UI_BED_COATING 1
#define FEATURE_Z_PROBE 1
#define Z_PROBE_BED_DISTANCE 8.0 // Higher than max bed level distance error in mm
#define Z_PROBE_PIN ORIG_Y_MAX_PIN
#define Z_PROBE_PULLUP 0
#define Z_PROBE_ON_HIGH 1
#define Z_PROBE_X_OFFSET 10
#define Z_PROBE_Y_OFFSET 75
#define Z_PROBE_WAIT_BEFORE_TEST 0
#define Z_PROBE_SPEED 5
#define Z_PROBE_XY_SPEED 150
#define Z_PROBE_SWITCHING_DISTANCE 1.5
#define Z_PROBE_REPETITIONS 5 // Repetitions for probing at one point.
#define Z_PROBE_HEIGHT 22.68
#define Z_PROBE_START_SCRIPT "m117 Autoleveling..."
#define Z_PROBE_FINISHED_SCRIPT "m117 Autoleveling Complete"
#define Z_PROBE_REQUIRES_HEATING 0
#define Z_PROBE_MIN_TEMPERATURE 150
#define FEATURE_AUTOLEVEL 1
#define Z_PROBE_X1 20
#define Z_PROBE_Y1 00
#define Z_PROBE_X2 160
#define Z_PROBE_Y2 00
#define Z_PROBE_X3 100
#define Z_PROBE_Y3 120
#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

• Seems like a high-Z limit switch (perhaps also X&Y axis...) might be advisable if the tool is crashing into the physical limits. Naturally, something is not right there, as well, but from time to time something won't be right, and limit switches can help to deal with that, either by causing a software abort/halt or by actually cutting power to the axis directly. In this sense, cartesian axes are easier than deltabots to set limit switches on. Apr 22 '17 at 23:35

Well, I´m using marlin for my printers and normally the offset is negative, this difference is from the 0.0 Z value sensor and nozzle.

For example, I have an aluminum plate, so this material is less inductive and I'm getting a height of nozzle 1.2 mm; normally this value should be above 5mm, but my printers reads 1.2mm

So my offset is 1.2mm (this values is dangerous for me) because I can bend the plate if sensor stop working.

the safety z height on G28 is 4mm and also for auto probing G29, the speed testing for Z is lower than travel X and Y.

    #ifdef AUTO_BED_LEVELING_GRID

// set the rectangle in which to probe
#define LEFT_PROBE_BED_POSITION 8
#define RIGHT_PROBE_BED_POSITION 156
#define BACK_PROBE_BED_POSITION 156
#define FRONT_PROBE_BED_POSITION 8

// set the number of grid points per dimension
// I wouldn't see a reason to go above 3 (=9 probing points on the bed)
#define AUTO_BED_LEVELING_GRID_POINTS 2

#else  // not AUTO_BED_LEVELING_GRID
// with no grid, just probe 3 arbitrary points.  A simple cross-product
// is used to esimate the plane of the print bed

#define ABL_PROBE_PT_1_X 15
#define ABL_PROBE_PT_1_Y 156
#define ABL_PROBE_PT_2_X 15
#define ABL_PROBE_PT_2_Y 20
#define ABL_PROBE_PT_3_X 156
#define ABL_PROBE_PT_3_Y 20

#endif // AUTO_BED_LEVELING_GRID

// these are the offsets to the probe relative to the extruder tip (Hotend - Probe)
// X and Y offsets must be integers
#define X_PROBE_OFFSET_FROM_EXTRUDER 0 //25
#define Y_PROBE_OFFSET_FROM_EXTRUDER 0 //29
#define Z_PROBE_OFFSET_FROM_EXTRUDER -1.2 //-12.35

#define Z_RAISE_BEFORE_HOMING 4       // (in mm) Raise Z before homing (G28) for Probe Clearance.
// Be sure you have this distance over your Z_MAX_POS in case

#define XY_TRAVEL_SPEED 7000         // X and Y axis travel speed between probes, in mm/min

#define Z_RAISE_BEFORE_PROBING 4    //How much the extruder will be raised before traveling to the first probing point.
#define Z_RAISE_BETWEEN_PROBINGS 4  //How much the extruder will be raised when traveling from between next probing points


I hope this help to understand your settings.

I have set the values to Zero instead 25 and 29 because I pre defined the testing points manually to 8 and 156; of course the center of the nozzle is moved 25 and 29 mm from the plate center, this avoids collision to X0 and Y0. And I just the level using 4 points once, if your bed is warped so is needed more internal points

  #define X_PROBE_OFFSET_FROM_EXTRUDER 0 //25
#define Y_PROBE_OFFSET_FROM_EXTRUDER 0 //29