From d8e3c2b4811fef67021d05a5c3f9cfc84c7cab8c Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Fri, 30 Aug 2024 20:56:19 +0200 Subject: [PATCH] Relax 3x3 MBL threshold --- Firmware/Marlin_main.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index b7e27f7ed..ee9f19584 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -2583,7 +2583,8 @@ static void gcode_G80() { constexpr float XY_AXIS_FEEDRATE = (homing_feedrate[X_AXIS] * 3) / 60; constexpr float Z_LIFT_FEEDRATE = homing_feedrate[Z_AXIS] / 60; - constexpr float Z_CALIBRATION_THRESHOLD = 0.35f; + constexpr float Z_CALIBRATION_THRESHOLD_TIGHT = 0.35f; // used for 7x7 MBL + constexpr float Z_CALIBRATION_THRESHOLD_RELAXED = 1.f; // used for 3x3 MBL constexpr float MESH_HOME_Z_SEARCH_FAST = 0.35f; st_synchronize(); if (planner_aborted) @@ -2618,6 +2619,10 @@ static void gcode_G80() if (uint8_t codeSeen = code_seen('N'), value = code_value_uint8(); codeSeen && (value == 7 || value == 3)) nMeasPoints = value; + // 7x7 region MBL needs tighter thresholds for triggering a Z realignment. This is because you want to have as little of a misalignment as possible between + // the "inner" MBL region and "outer" MBL region which is interpolated from Z calibration values. + const float Z_CALIBRATION_THRESHOLD = (nMeasPoints == 3) ? Z_CALIBRATION_THRESHOLD_RELAXED : Z_CALIBRATION_THRESHOLD_TIGHT; + uint8_t nProbeRetryCount = eeprom_read_byte((uint8_t*)EEPROM_MBL_PROBE_NR); if (uint8_t codeSeen = code_seen('C'), value = code_value_uint8(); codeSeen && value >= 1 && value <= 10) nProbeRetryCount = value;