From ac2e0afb62bd201608e27e5ef5e0d4ccc5ac9fe5 Mon Sep 17 00:00:00 2001 From: Luc Van Daele Date: Thu, 12 Apr 2018 01:59:46 +0200 Subject: [PATCH] Low Point for delta calibration (#10363) --- Marlin/src/gcode/calibrate/G33.cpp | 2 +- Marlin/src/module/probe.cpp | 33 ++++++++---------------------- Marlin/src/module/probe.h | 2 +- 3 files changed, 10 insertions(+), 27 deletions(-) diff --git a/Marlin/src/gcode/calibrate/G33.cpp b/Marlin/src/gcode/calibrate/G33.cpp index 72f4a01067..036b3425f3 100644 --- a/Marlin/src/gcode/calibrate/G33.cpp +++ b/Marlin/src/gcode/calibrate/G33.cpp @@ -137,7 +137,7 @@ static void G33_cleanup( inline float calibration_probe(const float nx, const float ny, const bool stow) { #if HAS_BED_PROBE - return probe_pt(nx, ny, stow ? PROBE_PT_STOW : PROBE_PT_RAISE, 0, true); + return probe_pt(nx, ny, stow ? PROBE_PT_STOW : PROBE_PT_RAISE, 0, false); #else UNUSED(stow); return lcd_probe_pt(nx, ny); diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index ed585299bf..932bb3f4b2 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -539,28 +539,15 @@ static bool do_probe_move(const float z, const float fr_mm_m) { * * @return The raw Z position where the probe was triggered */ -#define HAS_CALIBRATION_PROBE (ENABLED(DELTA_AUTO_CALIBRATION) && Z_PROBE_LOW_POINT < 0) -static float run_z_probe( - #if HAS_CALIBRATION_PROBE - const bool is_calibration - #endif -) { + static float run_z_probe() { #if ENABLED(DEBUG_LEVELING_FEATURE) if (DEBUGGING(LEVELING)) DEBUG_POS(">>> run_z_probe", current_position); #endif - #if Z_PROBE_LOW_POINT < 0 - // Stop the probe before it goes too low to prevent damage. - // If Z isn't known or this is a "calibration probe" then probe to -10mm. - #if !HAS_CALIBRATION_PROBE - constexpr bool is_calibration = false; - #endif - const float z_probe_low_point = !is_calibration && axis_known_position[Z_AXIS] ? -zprobe_zoffset + Z_PROBE_LOW_POINT : -10.0; - #else - // Assertively move down in all cases - constexpr float z_probe_low_point = -10.0; - #endif + // Stop the probe before it goes too low to prevent damage. + // If Z isn't known then probe to -10mm. + const float z_probe_low_point = axis_known_position[Z_AXIS] ? -zprobe_zoffset + Z_PROBE_LOW_POINT : -10.0; // Double-probing does a fast probe followed by a slow probe #if MULTIPLE_PROBING == 2 @@ -645,14 +632,14 @@ static float run_z_probe( * - Raise to the BETWEEN height * - Return the probed Z position */ -float probe_pt(const float &rx, const float &ry, const ProbePtRaise raise_after/*=PROBE_PT_NONE*/, const uint8_t verbose_level/*=0*/, const bool is_calibration/*=false*/) { +float probe_pt(const float &rx, const float &ry, const ProbePtRaise raise_after/*=PROBE_PT_NONE*/, const uint8_t verbose_level/*=0*/, const bool probe_relative/*=true*/) { #if ENABLED(DEBUG_LEVELING_FEATURE) if (DEBUGGING(LEVELING)) { SERIAL_ECHOPAIR(">>> probe_pt(", LOGICAL_X_POSITION(rx)); SERIAL_ECHOPAIR(", ", LOGICAL_Y_POSITION(ry)); SERIAL_ECHOPAIR(", ", raise_after == PROBE_PT_RAISE ? "raise" : raise_after == PROBE_PT_STOW ? "stow" : "none"); SERIAL_ECHOPAIR(", ", int(verbose_level)); - SERIAL_ECHOPAIR(", ", is_calibration ? "nozzle" : "probe"); + SERIAL_ECHOPAIR(", ", probe_relative ? "probe" : "nozzle"); SERIAL_ECHOLNPGM("_relative)"); DEBUG_POS("", current_position); } @@ -660,7 +647,7 @@ float probe_pt(const float &rx, const float &ry, const ProbePtRaise raise_after/ // TODO: Adapt for SCARA, where the offset rotates float nx = rx, ny = ry; - if (!is_calibration) { + if (probe_relative) { if (!position_is_reachable_by_probe(rx, ry)) return NAN; // The given position is in terms of the probe nx -= (X_PROBE_OFFSET_FROM_EXTRUDER); // Get the nozzle position ny -= (Y_PROBE_OFFSET_FROM_EXTRUDER); @@ -684,11 +671,7 @@ float probe_pt(const float &rx, const float &ry, const ProbePtRaise raise_after/ float measured_z = NAN; if (!DEPLOY_PROBE()) { - measured_z = run_z_probe( - #if HAS_CALIBRATION_PROBE - is_calibration - #endif - ) + zprobe_zoffset; + measured_z = run_z_probe() + zprobe_zoffset; if (raise_after == PROBE_PT_RAISE) do_blocking_move_to_z(current_position[Z_AXIS] + Z_CLEARANCE_BETWEEN_PROBES, MMM_TO_MMS(Z_PROBE_SPEED_FAST)); diff --git a/Marlin/src/module/probe.h b/Marlin/src/module/probe.h index 60052e3ec2..655fad8701 100644 --- a/Marlin/src/module/probe.h +++ b/Marlin/src/module/probe.h @@ -40,7 +40,7 @@ PROBE_PT_STOW, // Do a complete stow after run_z_probe PROBE_PT_RAISE // Raise to "between" clearance after run_z_probe }; - float probe_pt(const float &rx, const float &ry, const ProbePtRaise raise_after=PROBE_PT_NONE, const uint8_t verbose_level=0, const bool is_calibration=false); + float probe_pt(const float &rx, const float &ry, const ProbePtRaise raise_after=PROBE_PT_NONE, const uint8_t verbose_level=0, const bool probe_relative=true); #define DEPLOY_PROBE() set_probe_deployed(true) #define STOW_PROBE() set_probe_deployed(false) #else