Low Point for delta calibration (#10363)
This commit is contained in:
parent
57a899a412
commit
ac2e0afb62
3 changed files with 10 additions and 27 deletions
|
@ -137,7 +137,7 @@ static void G33_cleanup(
|
||||||
|
|
||||||
inline float calibration_probe(const float nx, const float ny, const bool stow) {
|
inline float calibration_probe(const float nx, const float ny, const bool stow) {
|
||||||
#if HAS_BED_PROBE
|
#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
|
#else
|
||||||
UNUSED(stow);
|
UNUSED(stow);
|
||||||
return lcd_probe_pt(nx, ny);
|
return lcd_probe_pt(nx, ny);
|
||||||
|
|
|
@ -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
|
* @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() {
|
||||||
static float run_z_probe(
|
|
||||||
#if HAS_CALIBRATION_PROBE
|
|
||||||
const bool is_calibration
|
|
||||||
#endif
|
|
||||||
) {
|
|
||||||
|
|
||||||
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
||||||
if (DEBUGGING(LEVELING)) DEBUG_POS(">>> run_z_probe", current_position);
|
if (DEBUGGING(LEVELING)) DEBUG_POS(">>> run_z_probe", current_position);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if Z_PROBE_LOW_POINT < 0
|
|
||||||
// Stop the probe before it goes too low to prevent damage.
|
// 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 Z isn't known then probe to -10mm.
|
||||||
#if !HAS_CALIBRATION_PROBE
|
const float z_probe_low_point = axis_known_position[Z_AXIS] ? -zprobe_zoffset + Z_PROBE_LOW_POINT : -10.0;
|
||||||
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
|
|
||||||
|
|
||||||
// Double-probing does a fast probe followed by a slow probe
|
// Double-probing does a fast probe followed by a slow probe
|
||||||
#if MULTIPLE_PROBING == 2
|
#if MULTIPLE_PROBING == 2
|
||||||
|
@ -645,14 +632,14 @@ static float run_z_probe(
|
||||||
* - Raise to the BETWEEN height
|
* - Raise to the BETWEEN height
|
||||||
* - Return the probed Z position
|
* - 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 ENABLED(DEBUG_LEVELING_FEATURE)
|
||||||
if (DEBUGGING(LEVELING)) {
|
if (DEBUGGING(LEVELING)) {
|
||||||
SERIAL_ECHOPAIR(">>> probe_pt(", LOGICAL_X_POSITION(rx));
|
SERIAL_ECHOPAIR(">>> probe_pt(", LOGICAL_X_POSITION(rx));
|
||||||
SERIAL_ECHOPAIR(", ", LOGICAL_Y_POSITION(ry));
|
SERIAL_ECHOPAIR(", ", LOGICAL_Y_POSITION(ry));
|
||||||
SERIAL_ECHOPAIR(", ", raise_after == PROBE_PT_RAISE ? "raise" : raise_after == PROBE_PT_STOW ? "stow" : "none");
|
SERIAL_ECHOPAIR(", ", raise_after == PROBE_PT_RAISE ? "raise" : raise_after == PROBE_PT_STOW ? "stow" : "none");
|
||||||
SERIAL_ECHOPAIR(", ", int(verbose_level));
|
SERIAL_ECHOPAIR(", ", int(verbose_level));
|
||||||
SERIAL_ECHOPAIR(", ", is_calibration ? "nozzle" : "probe");
|
SERIAL_ECHOPAIR(", ", probe_relative ? "probe" : "nozzle");
|
||||||
SERIAL_ECHOLNPGM("_relative)");
|
SERIAL_ECHOLNPGM("_relative)");
|
||||||
DEBUG_POS("", current_position);
|
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
|
// TODO: Adapt for SCARA, where the offset rotates
|
||||||
float nx = rx, ny = ry;
|
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
|
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
|
nx -= (X_PROBE_OFFSET_FROM_EXTRUDER); // Get the nozzle position
|
||||||
ny -= (Y_PROBE_OFFSET_FROM_EXTRUDER);
|
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;
|
float measured_z = NAN;
|
||||||
if (!DEPLOY_PROBE()) {
|
if (!DEPLOY_PROBE()) {
|
||||||
measured_z = run_z_probe(
|
measured_z = run_z_probe() + zprobe_zoffset;
|
||||||
#if HAS_CALIBRATION_PROBE
|
|
||||||
is_calibration
|
|
||||||
#endif
|
|
||||||
) + zprobe_zoffset;
|
|
||||||
|
|
||||||
if (raise_after == PROBE_PT_RAISE)
|
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));
|
do_blocking_move_to_z(current_position[Z_AXIS] + Z_CLEARANCE_BETWEEN_PROBES, MMM_TO_MMS(Z_PROBE_SPEED_FAST));
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
PROBE_PT_STOW, // Do a complete stow after run_z_probe
|
PROBE_PT_STOW, // Do a complete stow after run_z_probe
|
||||||
PROBE_PT_RAISE // Raise to "between" clearance 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 DEPLOY_PROBE() set_probe_deployed(true)
|
||||||
#define STOW_PROBE() set_probe_deployed(false)
|
#define STOW_PROBE() set_probe_deployed(false)
|
||||||
#else
|
#else
|
||||||
|
|
Reference in a new issue