From ea0dbee3c93fa221b8c7d3b6c566d635eae2afd2 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 25 Sep 2016 23:17:39 -0500 Subject: [PATCH 1/2] Enable ABL by type, support bilinear on cartesian --- .travis.yml | 16 +- Marlin/Conditionals_post.h | 25 +-- Marlin/Configuration.h | 165 +++++++++++++----- Marlin/Marlin.h | 6 +- Marlin/Marlin_main.cpp | 97 +++++----- Marlin/SanityCheck.h | 73 +++++--- .../Cartesio/Configuration.h | 108 ++++++------ .../Felix/Configuration.h | 108 ++++++------ .../Felix/DUAL/Configuration.h | 108 ++++++------ .../Hephestos/Configuration.h | 108 ++++++------ .../Hephestos_2/Configuration.h | 108 ++++++------ .../K8200/Configuration.h | 108 ++++++------ .../K8400/Configuration.h | 108 ++++++------ .../K8400/Dual-head/Configuration.h | 108 ++++++------ .../RepRapWorld/Megatronics/Configuration.h | 108 ++++++------ .../RigidBot/Configuration.h | 108 ++++++------ .../SCARA/Configuration.h | 108 ++++++------ .../TAZ4/Configuration.h | 108 ++++++------ .../WITBOX/Configuration.h | 108 ++++++------ .../adafruit/ST7565/Configuration.h | 108 ++++++------ .../delta/biv2.5/Configuration.h | 114 ++++++------ .../delta/generic/Configuration.h | 114 ++++++------ .../delta/kossel_mini/Configuration.h | 114 ++++++------ .../delta/kossel_pro/Configuration.h | 114 ++++++------ .../delta/kossel_xl/Configuration.h | 114 ++++++------ .../makibox/Configuration.h | 108 ++++++------ .../tvrrug/Round2/Configuration.h | 108 ++++++------ Marlin/planner.cpp | 24 +-- Marlin/planner.h | 6 +- Marlin/qr_solve.cpp | 2 +- Marlin/qr_solve.h | 2 +- Marlin/ultralcd.cpp | 2 +- Marlin/vector_3.cpp | 4 +- Marlin/vector_3.h | 4 +- 34 files changed, 1466 insertions(+), 1258 deletions(-) diff --git a/.travis.yml b/.travis.yml index fe43525425..5638542e76 100644 --- a/.travis.yml +++ b/.travis.yml @@ -106,9 +106,9 @@ script: - opt_enable FIX_MOUNTED_PROBE Z_SAFE_HOMING - build_marlin # - # ...with AUTO_BED_LEVELING_FEATURE, Z_MIN_PROBE_REPEATABILITY_TEST, & DEBUG_LEVELING_FEATURE + # ...with AUTO_BED_LEVELING_LINEAR, Z_MIN_PROBE_REPEATABILITY_TEST, & DEBUG_LEVELING_FEATURE # - - opt_enable AUTO_BED_LEVELING_FEATURE Z_MIN_PROBE_REPEATABILITY_TEST DEBUG_LEVELING_FEATURE + - opt_enable AUTO_BED_LEVELING_LINEAR Z_MIN_PROBE_REPEATABILITY_TEST DEBUG_LEVELING_FEATURE - opt_set ABL_GRID_POINTS_X 16 - opt_set ABL_GRID_POINTS_Y 16 - build_marlin @@ -119,9 +119,9 @@ script: - opt_enable Z_PROBE_SLED - build_marlin # - # ...with AUTO_BED_LEVELING_FEATURE & DEBUG_LEVELING_FEATURE + # ...with AUTO_BED_LEVELING_LINEAR & DEBUG_LEVELING_FEATURE # - - opt_enable AUTO_BED_LEVELING_FEATURE DEBUG_LEVELING_FEATURE + - opt_enable AUTO_BED_LEVELING_LINEAR DEBUG_LEVELING_FEATURE - build_marlin # # Test a Servo Probe @@ -130,9 +130,9 @@ script: - opt_enable NUM_SERVOS Z_ENDSTOP_SERVO_NR Z_SERVO_ANGLES DEACTIVATE_SERVOS_AFTER_MOVE - build_marlin # - # ...with AUTO_BED_LEVELING_FEATURE & DEBUG_LEVELING_FEATURE + # ...with AUTO_BED_LEVELING_3POINT & DEBUG_LEVELING_FEATURE # - - opt_enable AUTO_BED_LEVELING_FEATURE DEBUG_LEVELING_FEATURE + - opt_enable AUTO_BED_LEVELING_3POINT DEBUG_LEVELING_FEATURE - build_marlin # # Test MESH_BED_LEVELING feature, with LCD @@ -360,7 +360,7 @@ script: # - use_example_configs delta/generic - opt_disable DISABLE_MIN_ENDSTOPS - - opt_enable AUTO_BED_LEVELING_FEATURE Z_PROBE_ALLEN_KEY + - opt_enable AUTO_BED_LEVELING_BILINEAR Z_PROBE_ALLEN_KEY - build_marlin # # Delta Config (Mini Kossel) @@ -376,7 +376,7 @@ script: # SCARA Config # - use_example_configs SCARA - - opt_enable AUTO_BED_LEVELING_FEATURE FIX_MOUNTED_PROBE USE_ZMIN_PLUG EEPROM_SETTINGS EEPROM_CHITCHAT ULTIMAKERCONTROLLER + - opt_enable AUTO_BED_LEVELING_BILINEAR FIX_MOUNTED_PROBE USE_ZMIN_PLUG EEPROM_SETTINGS EEPROM_CHITCHAT ULTIMAKERCONTROLLER - build_marlin # # tvrrug Config need to check board type for sanguino atmega644p diff --git a/Marlin/Conditionals_post.h b/Marlin/Conditionals_post.h index d23c82299e..a7a8a6ccea 100644 --- a/Marlin/Conditionals_post.h +++ b/Marlin/Conditionals_post.h @@ -117,8 +117,6 @@ /** * Auto Bed Leveling and Z Probe Repeatability Test */ - #define HAS_PROBING_PROCEDURE (ENABLED(AUTO_BED_LEVELING_FEATURE) || ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST)) - #define HOMING_Z_WITH_PROBE (HAS_BED_PROBE && Z_HOME_DIR < 0 && ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)) /** @@ -644,25 +642,14 @@ #endif /** - * Specify the exact style of auto bed leveling - * - * 3POINT - 3 Point Probing with the least-squares solution. - * LINEAR - Grid Probing with the least-squares solution. - * NONLINEAR - Grid Probing with a mesh solution. Best for large beds. + * Set ABL options based on the specific type of leveling */ - #if ENABLED(AUTO_BED_LEVELING_FEATURE) - #if DISABLED(AUTO_BED_LEVELING_GRID) - #define AUTO_BED_LEVELING_LINEAR - #define AUTO_BED_LEVELING_3POINT - #elif IS_KINEMATIC - #define AUTO_BED_LEVELING_NONLINEAR - #else - #define AUTO_BED_LEVELING_LINEAR - #define AUTO_BED_LEVELING_LINEAR_GRID - #endif - #endif + #define ABL_PLANAR (ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_3POINT)) + #define ABL_GRID (ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR)) + #define HAS_ABL (ABL_PLANAR || ABL_GRID) - #define PLANNER_LEVELING (ENABLED(MESH_BED_LEVELING) || ENABLED(AUTO_BED_LEVELING_FEATURE)) + #define HAS_PROBING_PROCEDURE (HAS_ABL || ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST)) + #define PLANNER_LEVELING (HAS_ABL || ENABLED(MESH_BED_LEVELING)) /** * Buzzer/Speaker diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 08b6b75b09..eccfc9e6ca 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -516,7 +516,7 @@ // Probes are sensors/switches that are activated / deactivated before/after use. // // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. +// You must activate one of these to use Auto Bed Leveling below. // // Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. // @@ -738,69 +738,142 @@ #endif // MESH_BED_LEVELING //=========================================================================== -//============================ Bed Auto Leveling ============================ +//============================ Auto Bed Leveling ============================ //=========================================================================== - // @section bedlevel -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) +/** + * Select one form of Auto Bed Leveling below. + * + * If you're also using the Probe for Z Homing, it's + * highly recommended to enable Z_SAFE_HOMING also! + * + * - 3POINT + * Probe 3 arbitrary points on the bed (that aren't collinear) + * You specify the XY coordinates of all 3 points. + * The result is a single tilted plane. Best for a flat bed. + * + * - LINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a single tilted plane. Best for a flat bed. + * + * - BILINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a mesh, best for large or uneven beds. + */ +//#define AUTO_BED_LEVELING_3POINT +//#define AUTO_BED_LEVELING_LINEAR +//#define AUTO_BED_LEVELING_BILINEAR -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. +/** + * Enable detailed logging of G28, G29, M48, etc. + * Turn on with the command 'M111 S32'. + * NOTE: Requires a lot of PROGMEM! + */ //#define DEBUG_LEVELING_FEATURE -#if ENABLED(AUTO_BED_LEVELING_FEATURE) +#if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR) - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. + // Set the number of grid points per dimension. + #define ABL_GRID_POINTS_X 3 + #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID + // Set the boundaries for probing (where the probe can reach). + #define LEFT_PROBE_BED_POSITION 15 + #define RIGHT_PROBE_BED_POSITION 170 + #define FRONT_PROBE_BED_POSITION 20 + #define BACK_PROBE_BED_POSITION 170 - #if ENABLED(AUTO_BED_LEVELING_GRID) + // The Z probe minimum outer margin (to validate G29 parameters). + #define MIN_PROBE_EDGE 10 - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 170 +#elif ENABLED(AUTO_BED_LEVELING_3POINT) - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. + // 3 arbitrary points to probe. + // A simple cross-product is used to estimate the plane of the bed. + #define ABL_PROBE_PT_1_X 15 + #define ABL_PROBE_PT_1_Y 180 + #define ABL_PROBE_PT_2_X 15 + #define ABL_PROBE_PT_2_Y 20 + #define ABL_PROBE_PT_3_X 170 + #define ABL_PROBE_PT_3_Y 20 - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define ABL_GRID_POINTS_X 3 - #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X +#endif - #else // !AUTO_BED_LEVELING_GRID +/** + * Commands to execute at the end of G29 probing. + * Useful to retract or move the Z probe out of the way. + */ +//#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - #endif // !AUTO_BED_LEVELING_GRID +/** + * Select one form of Auto Bed Leveling below. + * + * If you're also using the Probe for Z Homing, it's + * highly recommended to enable Z_SAFE_HOMING also! + * + * - 3POINT + * Probe 3 arbitrary points on the bed (that aren't collinear) + * You specify the XY coordinates of all 3 points. + * The result is a single tilted plane. Best for a flat bed. + * + * - LINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a single tilted plane. Best for a flat bed. + * + * - BILINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a mesh, best for large or uneven beds. + */ +//#define AUTO_BED_LEVELING_3POINT +//#define AUTO_BED_LEVELING_LINEAR +//#define AUTO_BED_LEVELING_BILINEAR - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. +/** + * Enable detailed logging of G28, G29, M48, etc. + * Turn on with the command 'M111 S32'. + * NOTE: Requires a lot of PROGMEM! + */ +//#define DEBUG_LEVELING_FEATURE - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! +#if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR) -#endif // AUTO_BED_LEVELING_FEATURE + // Set the number of grid points per dimension. + #define ABL_GRID_POINTS_X 3 + #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X + + // Set the boundaries for probing (where the probe can reach). + #define LEFT_PROBE_BED_POSITION 15 + #define RIGHT_PROBE_BED_POSITION 170 + #define FRONT_PROBE_BED_POSITION 20 + #define BACK_PROBE_BED_POSITION 170 + + // The Z probe minimum outer margin (to validate G29 parameters). + #define MIN_PROBE_EDGE 10 + +#elif ENABLED(AUTO_BED_LEVELING_3POINT) + + // 3 arbitrary points to probe. + // A simple cross-product is used to estimate the plane of the bed. + #define ABL_PROBE_PT_1_X 15 + #define ABL_PROBE_PT_1_Y 180 + #define ABL_PROBE_PT_2_X 15 + #define ABL_PROBE_PT_2_Y 20 + #define ABL_PROBE_PT_3_X 170 + #define ABL_PROBE_PT_3_Y 20 + +#endif + +/** + * Commands to execute at the end of G29 probing. + * Useful to retract or move the Z probe out of the way. + */ +//#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // @section homing diff --git a/Marlin/Marlin.h b/Marlin/Marlin.h index f62dfef66b..1daefe7623 100644 --- a/Marlin/Marlin.h +++ b/Marlin/Marlin.h @@ -319,9 +319,9 @@ float code_value_temp_diff(); void forward_kinematics_SCARA(const float &a, const float &b); #endif -#if ENABLED(AUTO_BED_LEVELING_NONLINEAR) - extern int nonlinear_grid_spacing[2]; - float nonlinear_z_offset(float logical[XYZ]); +#if ENABLED(AUTO_BED_LEVELING_BILINEAR) + extern int bilinear_grid_spacing[2]; + float bilinear_z_offset(float logical[XYZ]); #endif #if ENABLED(Z_DUAL_ENDSTOPS) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 5d6351f161..f3d5d1f073 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -21,7 +21,6 @@ */ /** - * * About Marlin * * This firmware is a mashup between Sprinter and grbl. @@ -34,11 +33,11 @@ #include "Marlin.h" -#if ENABLED(AUTO_BED_LEVELING_FEATURE) +#if HAS_ABL #include "vector_3.h" #endif -#if ENABLED(AUTO_BED_LEVELING_LINEAR_GRID) +#if ENABLED(AUTO_BED_LEVELING_LINEAR) #include "qr_solve.h" #elif ENABLED(MESH_BED_LEVELING) #include "mesh_bed_leveling.h" @@ -397,7 +396,7 @@ static uint8_t target_extruder; #define PLANNER_XY_FEEDRATE() (min(planner.max_feedrate_mm_s[X_AXIS], planner.max_feedrate_mm_s[Y_AXIS])) -#if ENABLED(AUTO_BED_LEVELING_FEATURE) +#if HAS_ABL float xy_probe_feedrate_mm_s = MMM_TO_MMS(XY_PROBE_SPEED); #define XY_PROBE_FEEDRATE_MM_S xy_probe_feedrate_mm_s #elif defined(XY_PROBE_SPEED) @@ -490,8 +489,8 @@ static uint8_t target_extruder; #endif -#if ENABLED(AUTO_BED_LEVELING_NONLINEAR) - int nonlinear_grid_spacing[2] = { 0 }; +#if ENABLED(AUTO_BED_LEVELING_BILINEAR) + int bilinear_grid_spacing[2] = { 0 }; float bed_level_grid[ABL_GRID_POINTS_X][ABL_GRID_POINTS_Y]; #endif @@ -631,7 +630,7 @@ static void report_current_position(); print_xyz(prefix, suffix, xyz[X_AXIS], xyz[Y_AXIS], xyz[Z_AXIS]); } - #if ENABLED(AUTO_BED_LEVELING_FEATURE) + #if HAS_ABL void print_xyz(const char* prefix, const char* suffix, const vector_3 &xyz) { print_xyz(prefix, suffix, xyz.x, xyz.y, xyz.z); } @@ -2120,7 +2119,7 @@ static void clean_up_after_endstop_or_probe_move() { #endif // HAS_BED_PROBE -#if ENABLED(AUTO_BED_LEVELING_FEATURE) +#if HAS_ABL /** * Reset calibration results to zero. @@ -2134,16 +2133,16 @@ static void clean_up_after_endstop_or_probe_move() { #if ENABLED(DEBUG_LEVELING_FEATURE) if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPGM("reset_bed_level"); #endif - #if ENABLED(AUTO_BED_LEVELING_LINEAR) + #if ABL_PLANAR planner.bed_level_matrix.set_to_identity(); - #elif ENABLED(AUTO_BED_LEVELING_NONLINEAR) + #elif ENABLED(AUTO_BED_LEVELING_BILINEAR) memset(bed_level_grid, 0, sizeof(bed_level_grid)); #endif } -#endif // AUTO_BED_LEVELING_FEATURE +#endif // HAS_ABL -#if ENABLED(AUTO_BED_LEVELING_NONLINEAR) +#if ENABLED(AUTO_BED_LEVELING_BILINEAR) /** * Extrapolate a single point from its neighbors @@ -2189,7 +2188,7 @@ static void clean_up_after_endstop_or_probe_move() { } } -#endif // AUTO_BED_LEVELING_NONLINEAR +#endif // AUTO_BED_LEVELING_BILINEAR /** * Home an individual linear axis @@ -2980,7 +2979,7 @@ inline void gcode_G28() { stepper.synchronize(); // For auto bed leveling, clear the level matrix - #if ENABLED(AUTO_BED_LEVELING_FEATURE) + #if HAS_ABL reset_bed_level(); #endif @@ -3392,7 +3391,7 @@ inline void gcode_G28() { report_current_position(); } -#elif ENABLED(AUTO_BED_LEVELING_FEATURE) +#elif HAS_ABL /** * G29: Detailed Z probe, probes the bed at 3 or more points. @@ -3400,7 +3399,7 @@ inline void gcode_G28() { * * Enhanced G29 Auto Bed Leveling Probe Routine * - * Parameters With AUTO_BED_LEVELING_GRID: + * Parameters With ABL_GRID: * * P Set the size of the grid that will be probed (P x P points). * Not supported by non-linear delta printer bed leveling. @@ -3454,9 +3453,9 @@ inline void gcode_G28() { bool dryrun = code_seen('D'), stow_probe_after_each = code_seen('E'); - #if ENABLED(AUTO_BED_LEVELING_GRID) + #if ABL_GRID - #if ENABLED(AUTO_BED_LEVELING_LINEAR) + #if ABL_PLANAR bool do_topography_map = verbose_level > 2 || code_seen('T'); #endif @@ -3468,7 +3467,7 @@ inline void gcode_G28() { int abl_grid_points_x = ABL_GRID_POINTS_X, abl_grid_points_y = ABL_GRID_POINTS_Y; - #if ENABLED(AUTO_BED_LEVELING_LINEAR) + #if ABL_PLANAR if (code_seen('P')) abl_grid_points_x = abl_grid_points_y = code_value_int(); if (abl_grid_points_x < 2) { SERIAL_PROTOCOLLNPGM("?Number of probed (P)oints is implausible (2 minimum)."); @@ -3512,7 +3511,7 @@ inline void gcode_G28() { return; } - #endif // AUTO_BED_LEVELING_GRID + #endif // ABL_GRID stepper.synchronize(); @@ -3541,25 +3540,25 @@ inline void gcode_G28() { float xProbe = 0, yProbe = 0, measured_z = 0; - #if ENABLED(AUTO_BED_LEVELING_GRID) + #if ABL_GRID // probe at the points of a lattice grid const float xGridSpacing = (right_probe_bed_position - left_probe_bed_position) / (abl_grid_points_x - 1), yGridSpacing = (back_probe_bed_position - front_probe_bed_position) / (abl_grid_points_y - 1); - #if ENABLED(AUTO_BED_LEVELING_NONLINEAR) + #if ENABLED(AUTO_BED_LEVELING_BILINEAR) float zoffset = zprobe_zoffset; if (code_seen('Z')) zoffset += code_value_axis_units(Z_AXIS); - if (xGridSpacing != nonlinear_grid_spacing[X_AXIS] || yGridSpacing != nonlinear_grid_spacing[Y_AXIS]) { - nonlinear_grid_spacing[X_AXIS] = xGridSpacing; - nonlinear_grid_spacing[Y_AXIS] = yGridSpacing; + if (xGridSpacing != bilinear_grid_spacing[X_AXIS] || yGridSpacing != bilinear_grid_spacing[Y_AXIS]) { + bilinear_grid_spacing[X_AXIS] = xGridSpacing; + bilinear_grid_spacing[Y_AXIS] = yGridSpacing; // Can't re-enable (on error) until the new grid is written abl_should_reenable = false; } - #elif ENABLED(AUTO_BED_LEVELING_LINEAR_GRID) + #elif ENABLED(AUTO_BED_LEVELING_LINEAR) /** * solve the plane equation ax + by + d = z @@ -3578,7 +3577,7 @@ inline void gcode_G28() { eqnBVector[abl2], // "B" vector of Z points mean = 0.0; - #endif // AUTO_BED_LEVELING_LINEAR_GRID + #endif // AUTO_BED_LEVELING_LINEAR bool zig = abl_grid_points_y & 1; //always end at [RIGHT_PROBE_BED_POSITION, BACK_PROBE_BED_POSITION] @@ -3605,7 +3604,7 @@ inline void gcode_G28() { float xBase = left_probe_bed_position + xGridSpacing * xCount; xProbe = floor(xBase + (xBase < 0 ? 0 : 0.5)); - #if ENABLED(AUTO_BED_LEVELING_LINEAR_GRID) + #if ENABLED(AUTO_BED_LEVELING_LINEAR) indexIntoAB[xCount][yCount] = ++probePointCounter; #endif @@ -3622,7 +3621,7 @@ inline void gcode_G28() { return; } - #if ENABLED(AUTO_BED_LEVELING_LINEAR_GRID) + #if ENABLED(AUTO_BED_LEVELING_LINEAR) mean += measured_z; eqnBVector[probePointCounter] = measured_z; @@ -3630,7 +3629,7 @@ inline void gcode_G28() { eqnAMatrix[probePointCounter + 1 * abl2] = yProbe; eqnAMatrix[probePointCounter + 2 * abl2] = 1; - #elif ENABLED(AUTO_BED_LEVELING_NONLINEAR) + #elif ENABLED(AUTO_BED_LEVELING_BILINEAR) bed_level_grid[xCount][yCount] = measured_z + zoffset; @@ -3700,12 +3699,12 @@ inline void gcode_G28() { #endif // Calculate leveling, print reports, correct the position - #if ENABLED(AUTO_BED_LEVELING_NONLINEAR) + #if ENABLED(AUTO_BED_LEVELING_BILINEAR) if (!dryrun) extrapolate_unprobed_bed_level(); print_bed_level(); - #elif ENABLED(AUTO_BED_LEVELING_LINEAR_GRID) + #elif ENABLED(AUTO_BED_LEVELING_LINEAR) // For LINEAR leveling calculate matrix, print reports, correct the position @@ -3802,9 +3801,9 @@ inline void gcode_G28() { } } //do_topography_map - #endif // AUTO_BED_LEVELING_LINEAR_GRID + #endif // AUTO_BED_LEVELING_LINEAR - #if ENABLED(AUTO_BED_LEVELING_LINEAR) + #if ABL_PLANAR // For LINEAR and 3POINT leveling correct the current position @@ -3863,7 +3862,7 @@ inline void gcode_G28() { #endif } - #endif // AUTO_BED_LEVELING_LINEAR + #endif // ABL_PLANAR #ifdef Z_PROBE_END_SCRIPT #if ENABLED(DEBUG_LEVELING_FEATURE) @@ -3885,7 +3884,7 @@ inline void gcode_G28() { planner.abl_enabled = dryrun ? abl_should_reenable : true; } -#endif // AUTO_BED_LEVELING_FEATURE +#endif // HAS_ABL #if HAS_BED_PROBE @@ -3894,7 +3893,7 @@ inline void gcode_G28() { */ inline void gcode_G30() { - #if ENABLED(AUTO_BED_LEVELING_FEATURE) + #if HAS_ABL reset_bed_level(); #endif @@ -4340,7 +4339,7 @@ inline void gcode_M42() { SERIAL_PROTOCOLLNPGM("Positioning the probe..."); // Disable bed level correction in M48 because we want the raw data when we probe - #if ENABLED(AUTO_BED_LEVELING_FEATURE) + #if HAS_ABL reset_bed_level(); #endif @@ -6806,7 +6805,7 @@ void tool_change(const uint8_t tmp_extruder, const float fr_mm_s/*=0.0*/, bool n } #endif - // No extra case for AUTO_BED_LEVELING_FEATURE in DUAL_X_CARRIAGE. Does that mean they don't work together? + // No extra case for HAS_ABL in DUAL_X_CARRIAGE. Does that mean they don't work together? #else // !DUAL_X_CARRIAGE #if ENABLED(SWITCHING_EXTRUDER) @@ -6865,7 +6864,7 @@ void tool_change(const uint8_t tmp_extruder, const float fr_mm_s/*=0.0*/, bool n * Z software endstop. But this is technically correct (and * there is no viable alternative). */ - #if ENABLED(AUTO_BED_LEVELING_LINEAR) + #if ABL_PLANAR // Offset extruder, make sure to apply the bed level rotation matrix vector_3 tmp_offset_vec = vector_3(hotend_offset[X_AXIS][tmp_extruder], hotend_offset[Y_AXIS][tmp_extruder], @@ -6893,7 +6892,7 @@ void tool_change(const uint8_t tmp_extruder, const float fr_mm_s/*=0.0*/, bool n float xydiff[2] = { offset_vec.x, offset_vec.y }; current_position[Z_AXIS] += offset_vec.z; - #else // !AUTO_BED_LEVELING_LINEAR + #else // !ABL_PLANAR float xydiff[2] = { hotend_offset[X_AXIS][tmp_extruder] - hotend_offset[X_AXIS][active_extruder], @@ -6917,7 +6916,7 @@ void tool_change(const uint8_t tmp_extruder, const float fr_mm_s/*=0.0*/, bool n #endif // MESH_BED_LEVELING - #endif // !AUTO_BED_LEVELING_FEATURE + #endif // !HAS_ABL #if ENABLED(DEBUG_LEVELING_FEATURE) if (DEBUGGING(LEVELING)) { @@ -7140,11 +7139,11 @@ void process_next_command() { gcode_G28(); break; - #if ENABLED(AUTO_BED_LEVELING_FEATURE) || ENABLED(MESH_BED_LEVELING) + #if HAS_ABL || ENABLED(MESH_BED_LEVELING) case 29: // G29 Detailed Z probe, probes the bed at 3 or more points. gcode_G29(); break; - #endif // AUTO_BED_LEVELING_FEATURE + #endif // HAS_ABL #if HAS_BED_PROBE @@ -7780,17 +7779,17 @@ void ok_to_send() { #endif -#if ENABLED(AUTO_BED_LEVELING_NONLINEAR) +#if ENABLED(AUTO_BED_LEVELING_BILINEAR) // Get the Z adjustment for non-linear bed leveling - float nonlinear_z_offset(float cartesian[XYZ]) { + float bilinear_z_offset(float cartesian[XYZ]) { int half_x = (ABL_GRID_POINTS_X - 1) / 2, half_y = (ABL_GRID_POINTS_Y - 1) / 2; float hx2 = half_x - 0.001, hx1 = -hx2, hy2 = half_y - 0.001, hy1 = -hy2, - grid_x = max(hx1, min(hx2, RAW_X_POSITION(cartesian[X_AXIS]) / nonlinear_grid_spacing[X_AXIS])), - grid_y = max(hy1, min(hy2, RAW_Y_POSITION(cartesian[Y_AXIS]) / nonlinear_grid_spacing[Y_AXIS])); + grid_x = max(hx1, min(hx2, RAW_X_POSITION(cartesian[X_AXIS]) / bilinear_grid_spacing[X_AXIS])), + grid_y = max(hy1, min(hy2, RAW_Y_POSITION(cartesian[Y_AXIS]) / bilinear_grid_spacing[Y_AXIS])); int floor_x = floor(grid_x), floor_y = floor(grid_y); float ratio_x = grid_x - floor_x, ratio_y = grid_y - floor_y, z1 = bed_level_grid[floor_x + half_x][floor_y + half_y], @@ -7819,7 +7818,7 @@ void ok_to_send() { return (1 - ratio_x) * left + ratio_x * right; } -#endif // AUTO_BED_LEVELING_NONLINEAR +#endif // AUTO_BED_LEVELING_BILINEAR #if ENABLED(DELTA) diff --git a/Marlin/SanityCheck.h b/Marlin/SanityCheck.h index b97a72d29f..dee708ab02 100644 --- a/Marlin/SanityCheck.h +++ b/Marlin/SanityCheck.h @@ -69,8 +69,6 @@ #error "CUSTOM_MENDEL_NAME is now CUSTOM_MACHINE_NAME. Please update your configuration." #elif defined(HAS_AUTOMATIC_VERSIONING) #error "HAS_AUTOMATIC_VERSIONING is now USE_AUTOMATIC_VERSIONING. Please update your configuration." -#elif defined(ENABLE_AUTO_BED_LEVELING) - #error "ENABLE_AUTO_BED_LEVELING is now AUTO_BED_LEVELING_FEATURE. Please update your configuration." #elif defined(SDSLOW) #error "SDSLOW deprecated. Set SPI_SPEED to SPI_HALF_SPEED instead." #elif defined(SDEXTRASLOW) @@ -137,8 +135,12 @@ #error "PREVENT_DANGEROUS_EXTRUDE is now PREVENT_COLD_EXTRUSION. Please update your configuration." #elif defined(SCARA) #error "SCARA is now MORGAN_SCARA. Please update your configuration." -#elif defined(AUTO_BED_LEVELING_GRID_POINTS) - #error "AUTO_BED_LEVELING_GRID_POINTS is now ABL_GRID_POINTS_X and ABL_GRID_POINTS_Y. Please update your configuration." +#elif defined(ENABLE_AUTO_BED_LEVELING) + #error "ENABLE_AUTO_BED_LEVELING is deprecated. Specify AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR, or AUTO_BED_LEVELING_3POINT." +#elif defined(AUTO_BED_LEVELING_FEATURE) + #error "AUTO_BED_LEVELING_FEATURE is deprecated. Specify AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR, or AUTO_BED_LEVELING_3POINT." +#elif defined(ABL_GRID_POINTS) + #error "ABL_GRID_POINTS is now ABL_GRID_POINTS_X and ABL_GRID_POINTS_Y. Please update your configuration." #elif defined(BEEPER) #error "BEEPER is now BEEPER_PIN. Please update your pins definitions." #elif defined(SDCARDDETECT) @@ -205,7 +207,7 @@ #if DISABLED(USE_XMAX_PLUG) && DISABLED(USE_YMAX_PLUG) && DISABLED(USE_ZMAX_PLUG) #error "You probably want to use Max Endstops for DELTA!" #endif - #if ENABLED(AUTO_BED_LEVELING_GRID) + #if ABL_GRID #if (ABL_GRID_POINTS_X & 1) == 0 || (ABL_GRID_POINTS_Y & 1) == 0 #error "DELTA requires ABL_GRID_POINTS_X and ABL_GRID_POINTS_Y to be odd numbers." #elif ABL_GRID_POINTS_X < 3 @@ -339,29 +341,56 @@ #error "To use BED_LIMIT_SWITCHING you must disable PIDTEMPBED." #endif +/** + * Allow only one bed leveling option to be defined + */ +#if HAS_ABL + #define COUNT_LEV_1 0 + #if ENABLED(AUTO_BED_LEVELING_LINEAR) + #define COUNT_LEV_2 INCREMENT(COUNT_LEV_1) + #else + #define COUNT_LEV_2 COUNT_LEV_1 + #endif + #if ENABLED(AUTO_BED_LEVELING_3POINT) + #define COUNT_LEV_3 INCREMENT(COUNT_LEV_2) + #else + #define COUNT_LEV_3 COUNT_LEV_2 + #endif + #if ENABLED(AUTO_BED_LEVELING_BILINEAR) + #define COUNT_LEV_4 INCREMENT(COUNT_LEV_3) + #else + #define COUNT_LEV_4 COUNT_LEV_3 + #endif + #if ENABLED(MESH_BED_LEVELING) + #define COUNT_LEV_5 INCREMENT(COUNT_LEV_4) + #else + #define COUNT_LEV_5 COUNT_LEV_4 + #endif + #if COUNT_LEV_5 > 1 + #error "Select only one of: MESH_BED_LEVELING, AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_3POINT, or AUTO_BED_LEVELING_BILINEAR." + #endif +#endif + /** * Mesh Bed Leveling */ #if ENABLED(MESH_BED_LEVELING) #if ENABLED(DELTA) #error "MESH_BED_LEVELING does not yet support DELTA printers." - #elif ENABLED(AUTO_BED_LEVELING_FEATURE) - #error "Select AUTO_BED_LEVELING_FEATURE or MESH_BED_LEVELING, not both." #elif MESH_NUM_X_POINTS > 9 || MESH_NUM_Y_POINTS > 9 #error "MESH_NUM_X_POINTS and MESH_NUM_Y_POINTS must be less than 10." #endif #elif ENABLED(MANUAL_BED_LEVELING) - #error "MESH_BED_LEVELING is required for MANUAL_BED_LEVELING." + #error "MANUAL_BED_LEVELING only applies to MESH_BED_LEVELING." #endif /** * Probes */ - #if PROBE_SELECTED /** - * Only allow one probe option to be defined + * Allow only one probe option to be defined */ #define COUNT_PROBE_1 0 #if ENABLED(FIX_MOUNTED_PROBE) @@ -448,8 +477,8 @@ /** * Require some kind of probe for bed leveling and probe testing */ - #if ENABLED(AUTO_BED_LEVELING_FEATURE) - #error "AUTO_BED_LEVELING_FEATURE requires a probe! Define a Z Servo, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or FIX_MOUNTED_PROBE." + #if HAS_ABL + #error "Auto Bed Leveling requires a probe! Define a Z Servo, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or FIX_MOUNTED_PROBE." #elif ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST) #error "Z_MIN_PROBE_REPEATABILITY_TEST requires a probe! Define a Z Servo, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or FIX_MOUNTED_PROBE." #endif @@ -485,19 +514,23 @@ /** * Auto Bed Leveling */ -#if ENABLED(AUTO_BED_LEVELING_FEATURE) +#if HAS_ABL /** - * Delta has limited bed leveling options + * Delta and SCARA have limited bed leveling options */ - #if ENABLED(DELTA) && DISABLED(AUTO_BED_LEVELING_GRID) - #error "You must use AUTO_BED_LEVELING_GRID for DELTA bed leveling." + #if DISABLED(AUTO_BED_LEVELING_BILINEAR) + #if ENABLED(DELTA) + #error "Only AUTO_BED_LEVELING_BILINEAR is supported for DELTA bed leveling." + #elif ENABLED(SCARA) + #error "Only AUTO_BED_LEVELING_BILINEAR is supported for SCARA bed leveling." + #endif #endif /** * Check if Probe_Offset * Grid Points is greater than Probing Range */ - #if ENABLED(AUTO_BED_LEVELING_GRID) + #if ABL_GRID #ifndef DELTA_PROBEABLE_RADIUS // Be sure points are in the right order #if LEFT_PROBE_BED_POSITION > RIGHT_PROBE_BED_POSITION @@ -516,7 +549,7 @@ #error "The given BACK_PROBE_BED_POSITION can't be reached by the Z probe." #endif #endif - #else // !AUTO_BED_LEVELING_GRID + #else // !ABL_GRID // Check the triangulation points #if ABL_PROBE_PT_1_X < MIN_PROBE_X || ABL_PROBE_PT_1_X > MAX_PROBE_X @@ -533,9 +566,9 @@ #error "The given ABL_PROBE_PT_3_Y can't be reached by the Z probe." #endif - #endif // !AUTO_BED_LEVELING_GRID + #endif // !ABL_GRID -#endif // AUTO_BED_LEVELING_FEATURE +#endif // HAS_ABL /** * Advance Extrusion diff --git a/Marlin/example_configurations/Cartesio/Configuration.h b/Marlin/example_configurations/Cartesio/Configuration.h index 434b6a16f7..a1f184212a 100644 --- a/Marlin/example_configurations/Cartesio/Configuration.h +++ b/Marlin/example_configurations/Cartesio/Configuration.h @@ -499,7 +499,7 @@ // Probes are sensors/switches that are activated / deactivated before/after use. // // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. +// You must activate one of these to use Auto Bed Leveling below. // // Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. // @@ -721,69 +721,75 @@ #endif // MESH_BED_LEVELING //=========================================================================== -//============================ Bed Auto Leveling ============================ +//============================ Auto Bed Leveling ============================ //=========================================================================== - // @section bedlevel -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) +/** + * Select one form of Auto Bed Leveling below. + * + * If you're also using the Probe for Z Homing, it's + * highly recommended to enable Z_SAFE_HOMING also! + * + * - 3POINT + * Probe 3 arbitrary points on the bed (that aren't collinear) + * You specify the XY coordinates of all 3 points. + * The result is a single tilted plane. Best for a flat bed. + * + * - LINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a single tilted plane. Best for a flat bed. + * + * - BILINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a mesh, best for large or uneven beds. + */ +//#define AUTO_BED_LEVELING_3POINT +//#define AUTO_BED_LEVELING_LINEAR +//#define AUTO_BED_LEVELING_BILINEAR -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. +/** + * Enable detailed logging of G28, G29, M48, etc. + * Turn on with the command 'M111 S32'. + * NOTE: Requires a lot of PROGMEM! + */ //#define DEBUG_LEVELING_FEATURE -#if ENABLED(AUTO_BED_LEVELING_FEATURE) +#if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR) - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. + // Set the number of grid points per dimension. + #define ABL_GRID_POINTS_X 3 + #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID + // Set the boundaries for probing (where the probe can reach). + #define LEFT_PROBE_BED_POSITION 15 + #define RIGHT_PROBE_BED_POSITION 170 + #define FRONT_PROBE_BED_POSITION 20 + #define BACK_PROBE_BED_POSITION 170 - #if ENABLED(AUTO_BED_LEVELING_GRID) + // The Z probe minimum outer margin (to validate G29 parameters). + #define MIN_PROBE_EDGE 10 - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 170 +#elif ENABLED(AUTO_BED_LEVELING_3POINT) - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. + // 3 arbitrary points to probe. + // A simple cross-product is used to estimate the plane of the bed. + #define ABL_PROBE_PT_1_X 15 + #define ABL_PROBE_PT_1_Y 180 + #define ABL_PROBE_PT_2_X 15 + #define ABL_PROBE_PT_2_Y 20 + #define ABL_PROBE_PT_3_X 170 + #define ABL_PROBE_PT_3_Y 20 - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define ABL_GRID_POINTS_X 3 - #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X +#endif - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE +/** + * Commands to execute at the end of G29 probing. + * Useful to retract or move the Z probe out of the way. + */ +//#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // @section homing diff --git a/Marlin/example_configurations/Felix/Configuration.h b/Marlin/example_configurations/Felix/Configuration.h index 88e11f0f37..3936628ae3 100644 --- a/Marlin/example_configurations/Felix/Configuration.h +++ b/Marlin/example_configurations/Felix/Configuration.h @@ -482,7 +482,7 @@ // Probes are sensors/switches that are activated / deactivated before/after use. // // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. +// You must activate one of these to use Auto Bed Leveling below. // // Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. // @@ -704,69 +704,75 @@ #endif // MESH_BED_LEVELING //=========================================================================== -//============================ Bed Auto Leveling ============================ +//============================ Auto Bed Leveling ============================ //=========================================================================== - // @section bedlevel -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) +/** + * Select one form of Auto Bed Leveling below. + * + * If you're also using the Probe for Z Homing, it's + * highly recommended to enable Z_SAFE_HOMING also! + * + * - 3POINT + * Probe 3 arbitrary points on the bed (that aren't collinear) + * You specify the XY coordinates of all 3 points. + * The result is a single tilted plane. Best for a flat bed. + * + * - LINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a single tilted plane. Best for a flat bed. + * + * - BILINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a mesh, best for large or uneven beds. + */ +//#define AUTO_BED_LEVELING_3POINT +//#define AUTO_BED_LEVELING_LINEAR +//#define AUTO_BED_LEVELING_BILINEAR -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. +/** + * Enable detailed logging of G28, G29, M48, etc. + * Turn on with the command 'M111 S32'. + * NOTE: Requires a lot of PROGMEM! + */ //#define DEBUG_LEVELING_FEATURE -#if ENABLED(AUTO_BED_LEVELING_FEATURE) +#if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR) - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. + // Set the number of grid points per dimension. + #define ABL_GRID_POINTS_X 3 + #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID + // Set the boundaries for probing (where the probe can reach). + #define LEFT_PROBE_BED_POSITION 15 + #define RIGHT_PROBE_BED_POSITION 170 + #define FRONT_PROBE_BED_POSITION 20 + #define BACK_PROBE_BED_POSITION 180 - #if ENABLED(AUTO_BED_LEVELING_GRID) + // The Z probe minimum outer margin (to validate G29 parameters). + #define MIN_PROBE_EDGE 10 - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 180 +#elif ENABLED(AUTO_BED_LEVELING_3POINT) - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. + // 3 arbitrary points to probe. + // A simple cross-product is used to estimate the plane of the bed. + #define ABL_PROBE_PT_1_X 15 + #define ABL_PROBE_PT_1_Y 180 + #define ABL_PROBE_PT_2_X 15 + #define ABL_PROBE_PT_2_Y 20 + #define ABL_PROBE_PT_3_X 170 + #define ABL_PROBE_PT_3_Y 20 - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define ABL_GRID_POINTS_X 3 - #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X +#endif - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE +/** + * Commands to execute at the end of G29 probing. + * Useful to retract or move the Z probe out of the way. + */ +//#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // @section homing diff --git a/Marlin/example_configurations/Felix/DUAL/Configuration.h b/Marlin/example_configurations/Felix/DUAL/Configuration.h index 36bcb64e01..c73a69f02e 100644 --- a/Marlin/example_configurations/Felix/DUAL/Configuration.h +++ b/Marlin/example_configurations/Felix/DUAL/Configuration.h @@ -480,7 +480,7 @@ // Probes are sensors/switches that are activated / deactivated before/after use. // // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. +// You must activate one of these to use Auto Bed Leveling below. // // Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. // @@ -702,69 +702,75 @@ #endif // MESH_BED_LEVELING //=========================================================================== -//============================ Bed Auto Leveling ============================ +//============================ Auto Bed Leveling ============================ //=========================================================================== - // @section bedlevel -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) +/** + * Select one form of Auto Bed Leveling below. + * + * If you're also using the Probe for Z Homing, it's + * highly recommended to enable Z_SAFE_HOMING also! + * + * - 3POINT + * Probe 3 arbitrary points on the bed (that aren't collinear) + * You specify the XY coordinates of all 3 points. + * The result is a single tilted plane. Best for a flat bed. + * + * - LINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a single tilted plane. Best for a flat bed. + * + * - BILINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a mesh, best for large or uneven beds. + */ +//#define AUTO_BED_LEVELING_3POINT +//#define AUTO_BED_LEVELING_LINEAR +//#define AUTO_BED_LEVELING_BILINEAR -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. +/** + * Enable detailed logging of G28, G29, M48, etc. + * Turn on with the command 'M111 S32'. + * NOTE: Requires a lot of PROGMEM! + */ //#define DEBUG_LEVELING_FEATURE -#if ENABLED(AUTO_BED_LEVELING_FEATURE) +#if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR) - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. + // Set the number of grid points per dimension. + #define ABL_GRID_POINTS_X 3 + #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID + // Set the boundaries for probing (where the probe can reach). + #define LEFT_PROBE_BED_POSITION 15 + #define RIGHT_PROBE_BED_POSITION 170 + #define FRONT_PROBE_BED_POSITION 20 + #define BACK_PROBE_BED_POSITION 180 - #if ENABLED(AUTO_BED_LEVELING_GRID) + // The Z probe minimum outer margin (to validate G29 parameters). + #define MIN_PROBE_EDGE 10 - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 180 +#elif ENABLED(AUTO_BED_LEVELING_3POINT) - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. + // 3 arbitrary points to probe. + // A simple cross-product is used to estimate the plane of the bed. + #define ABL_PROBE_PT_1_X 15 + #define ABL_PROBE_PT_1_Y 180 + #define ABL_PROBE_PT_2_X 15 + #define ABL_PROBE_PT_2_Y 20 + #define ABL_PROBE_PT_3_X 170 + #define ABL_PROBE_PT_3_Y 20 - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define ABL_GRID_POINTS_X 3 - #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X +#endif - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE +/** + * Commands to execute at the end of G29 probing. + * Useful to retract or move the Z probe out of the way. + */ +//#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // @section homing diff --git a/Marlin/example_configurations/Hephestos/Configuration.h b/Marlin/example_configurations/Hephestos/Configuration.h index dadaa2eb29..cb9cde6c66 100644 --- a/Marlin/example_configurations/Hephestos/Configuration.h +++ b/Marlin/example_configurations/Hephestos/Configuration.h @@ -491,7 +491,7 @@ // Probes are sensors/switches that are activated / deactivated before/after use. // // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. +// You must activate one of these to use Auto Bed Leveling below. // // Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. // @@ -713,69 +713,75 @@ #endif // MESH_BED_LEVELING //=========================================================================== -//============================ Bed Auto Leveling ============================ +//============================ Auto Bed Leveling ============================ //=========================================================================== - // @section bedlevel -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) +/** + * Select one form of Auto Bed Leveling below. + * + * If you're also using the Probe for Z Homing, it's + * highly recommended to enable Z_SAFE_HOMING also! + * + * - 3POINT + * Probe 3 arbitrary points on the bed (that aren't collinear) + * You specify the XY coordinates of all 3 points. + * The result is a single tilted plane. Best for a flat bed. + * + * - LINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a single tilted plane. Best for a flat bed. + * + * - BILINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a mesh, best for large or uneven beds. + */ +//#define AUTO_BED_LEVELING_3POINT +//#define AUTO_BED_LEVELING_LINEAR +//#define AUTO_BED_LEVELING_BILINEAR -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. +/** + * Enable detailed logging of G28, G29, M48, etc. + * Turn on with the command 'M111 S32'. + * NOTE: Requires a lot of PROGMEM! + */ //#define DEBUG_LEVELING_FEATURE -#if ENABLED(AUTO_BED_LEVELING_FEATURE) +#if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR) - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. + // Set the number of grid points per dimension. + #define ABL_GRID_POINTS_X 3 + #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID + // Set the boundaries for probing (where the probe can reach). + #define LEFT_PROBE_BED_POSITION 15 + #define RIGHT_PROBE_BED_POSITION 170 + #define FRONT_PROBE_BED_POSITION 20 + #define BACK_PROBE_BED_POSITION 170 - #if ENABLED(AUTO_BED_LEVELING_GRID) + // The Z probe minimum outer margin (to validate G29 parameters). + #define MIN_PROBE_EDGE 10 - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 170 +#elif ENABLED(AUTO_BED_LEVELING_3POINT) - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. + // 3 arbitrary points to probe. + // A simple cross-product is used to estimate the plane of the bed. + #define ABL_PROBE_PT_1_X 15 + #define ABL_PROBE_PT_1_Y 180 + #define ABL_PROBE_PT_2_X 15 + #define ABL_PROBE_PT_2_Y 20 + #define ABL_PROBE_PT_3_X 170 + #define ABL_PROBE_PT_3_Y 20 - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define ABL_GRID_POINTS_X 3 - #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X +#endif - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE +/** + * Commands to execute at the end of G29 probing. + * Useful to retract or move the Z probe out of the way. + */ +//#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // @section homing diff --git a/Marlin/example_configurations/Hephestos_2/Configuration.h b/Marlin/example_configurations/Hephestos_2/Configuration.h index 03f3d6e46b..955d004625 100644 --- a/Marlin/example_configurations/Hephestos_2/Configuration.h +++ b/Marlin/example_configurations/Hephestos_2/Configuration.h @@ -493,7 +493,7 @@ // Probes are sensors/switches that are activated / deactivated before/after use. // // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. +// You must activate one of these to use Auto Bed Leveling below. // // Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. // @@ -715,69 +715,75 @@ #endif // MESH_BED_LEVELING //=========================================================================== -//============================ Bed Auto Leveling ============================ +//============================ Auto Bed Leveling ============================ //=========================================================================== - // @section bedlevel -#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) +/** + * Select one form of Auto Bed Leveling below. + * + * If you're also using the Probe for Z Homing, it's + * highly recommended to enable Z_SAFE_HOMING also! + * + * - 3POINT + * Probe 3 arbitrary points on the bed (that aren't collinear) + * You specify the XY coordinates of all 3 points. + * The result is a single tilted plane. Best for a flat bed. + * + * - LINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a single tilted plane. Best for a flat bed. + * + * - BILINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a mesh, best for large or uneven beds. + */ +//#define AUTO_BED_LEVELING_3POINT +#define AUTO_BED_LEVELING_LINEAR +//#define AUTO_BED_LEVELING_BILINEAR -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. +/** + * Enable detailed logging of G28, G29, M48, etc. + * Turn on with the command 'M111 S32'. + * NOTE: Requires a lot of PROGMEM! + */ //#define DEBUG_LEVELING_FEATURE -#if ENABLED(AUTO_BED_LEVELING_FEATURE) +#if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR) - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. + // Set the number of grid points per dimension. + #define ABL_GRID_POINTS_X 3 + #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID + // Set the boundaries for probing (where the probe can reach). + #define LEFT_PROBE_BED_POSITION X_MIN_POS + X_PROBE_OFFSET_FROM_EXTRUDER + #define RIGHT_PROBE_BED_POSITION X_MAX_POS - (X_PROBE_OFFSET_FROM_EXTRUDER) + #define FRONT_PROBE_BED_POSITION Y_MIN_POS + Y_PROBE_OFFSET_FROM_EXTRUDER + #define BACK_PROBE_BED_POSITION Y_MAX_POS - (Y_PROBE_OFFSET_FROM_EXTRUDER) - #if ENABLED(AUTO_BED_LEVELING_GRID) + // The Z probe minimum outer margin (to validate G29 parameters). + #define MIN_PROBE_EDGE 10 - #define LEFT_PROBE_BED_POSITION X_MIN_POS + X_PROBE_OFFSET_FROM_EXTRUDER - #define RIGHT_PROBE_BED_POSITION X_MAX_POS - (X_PROBE_OFFSET_FROM_EXTRUDER) - #define FRONT_PROBE_BED_POSITION Y_MIN_POS + Y_PROBE_OFFSET_FROM_EXTRUDER - #define BACK_PROBE_BED_POSITION Y_MAX_POS - (Y_PROBE_OFFSET_FROM_EXTRUDER) +#elif ENABLED(AUTO_BED_LEVELING_3POINT) - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. + // 3 arbitrary points to probe. + // A simple cross-product is used to estimate the plane of the bed. + #define ABL_PROBE_PT_1_X X_MIN_POS + X_PROBE_OFFSET_FROM_EXTRUDER + #define ABL_PROBE_PT_1_Y Y_MIN_POS + Y_PROBE_OFFSET_FROM_EXTRUDER + #define ABL_PROBE_PT_2_X X_MAX_POS - (X_PROBE_OFFSET_FROM_EXTRUDER) + #define ABL_PROBE_PT_2_Y Y_MIN_POS + Y_PROBE_OFFSET_FROM_EXTRUDER + #define ABL_PROBE_PT_3_X ((X_MIN_POS + X_MAX_POS) / 2) + #define ABL_PROBE_PT_3_Y Y_MAX_POS - (Y_PROBE_OFFSET_FROM_EXTRUDER) - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define ABL_GRID_POINTS_X 3 - #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X +#endif - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X X_MIN_POS + X_PROBE_OFFSET_FROM_EXTRUDER - #define ABL_PROBE_PT_1_Y Y_MIN_POS + Y_PROBE_OFFSET_FROM_EXTRUDER - #define ABL_PROBE_PT_2_X X_MAX_POS - (X_PROBE_OFFSET_FROM_EXTRUDER) - #define ABL_PROBE_PT_2_Y Y_MIN_POS + Y_PROBE_OFFSET_FROM_EXTRUDER - #define ABL_PROBE_PT_3_X ((X_MIN_POS + X_MAX_POS) / 2) - #define ABL_PROBE_PT_3_Y Y_MAX_POS - (Y_PROBE_OFFSET_FROM_EXTRUDER) - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE +/** + * Commands to execute at the end of G29 probing. + * Useful to retract or move the Z probe out of the way. + */ +//#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // @section homing diff --git a/Marlin/example_configurations/K8200/Configuration.h b/Marlin/example_configurations/K8200/Configuration.h index 08ee8676e4..a8a4d47373 100644 --- a/Marlin/example_configurations/K8200/Configuration.h +++ b/Marlin/example_configurations/K8200/Configuration.h @@ -516,7 +516,7 @@ // Probes are sensors/switches that are activated / deactivated before/after use. // // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. +// You must activate one of these to use Auto Bed Leveling below. // // Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. // @@ -738,69 +738,75 @@ #endif // MESH_BED_LEVELING //=========================================================================== -//============================ Bed Auto Leveling ============================ +//============================ Auto Bed Leveling ============================ //=========================================================================== - // @section bedlevel -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) +/** + * Select one form of Auto Bed Leveling below. + * + * If you're also using the Probe for Z Homing, it's + * highly recommended to enable Z_SAFE_HOMING also! + * + * - 3POINT + * Probe 3 arbitrary points on the bed (that aren't collinear) + * You specify the XY coordinates of all 3 points. + * The result is a single tilted plane. Best for a flat bed. + * + * - LINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a single tilted plane. Best for a flat bed. + * + * - BILINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a mesh, best for large or uneven beds. + */ +//#define AUTO_BED_LEVELING_3POINT +//#define AUTO_BED_LEVELING_LINEAR +//#define AUTO_BED_LEVELING_BILINEAR -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. +/** + * Enable detailed logging of G28, G29, M48, etc. + * Turn on with the command 'M111 S32'. + * NOTE: Requires a lot of PROGMEM! + */ //#define DEBUG_LEVELING_FEATURE -#if ENABLED(AUTO_BED_LEVELING_FEATURE) +#if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR) - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. + // Set the number of grid points per dimension. + #define ABL_GRID_POINTS_X 3 + #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID + // Set the boundaries for probing (where the probe can reach). + #define LEFT_PROBE_BED_POSITION 15 + #define RIGHT_PROBE_BED_POSITION 170 + #define FRONT_PROBE_BED_POSITION 20 + #define BACK_PROBE_BED_POSITION 170 - #if ENABLED(AUTO_BED_LEVELING_GRID) + // The Z probe minimum outer margin (to validate G29 parameters). + #define MIN_PROBE_EDGE 10 - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 170 +#elif ENABLED(AUTO_BED_LEVELING_3POINT) - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. + // 3 arbitrary points to probe. + // A simple cross-product is used to estimate the plane of the bed. + #define ABL_PROBE_PT_1_X 15 + #define ABL_PROBE_PT_1_Y 180 + #define ABL_PROBE_PT_2_X 15 + #define ABL_PROBE_PT_2_Y 20 + #define ABL_PROBE_PT_3_X 170 + #define ABL_PROBE_PT_3_Y 20 - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define ABL_GRID_POINTS_X 3 - #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X +#endif - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE +/** + * Commands to execute at the end of G29 probing. + * Useful to retract or move the Z probe out of the way. + */ +//#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // @section homing diff --git a/Marlin/example_configurations/K8400/Configuration.h b/Marlin/example_configurations/K8400/Configuration.h index 31bef4e60e..76b81e4277 100644 --- a/Marlin/example_configurations/K8400/Configuration.h +++ b/Marlin/example_configurations/K8400/Configuration.h @@ -499,7 +499,7 @@ // Probes are sensors/switches that are activated / deactivated before/after use. // // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. +// You must activate one of these to use Auto Bed Leveling below. // // Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. // @@ -721,69 +721,75 @@ #endif // MESH_BED_LEVELING //=========================================================================== -//============================ Bed Auto Leveling ============================ +//============================ Auto Bed Leveling ============================ //=========================================================================== - // @section bedlevel -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) +/** + * Select one form of Auto Bed Leveling below. + * + * If you're also using the Probe for Z Homing, it's + * highly recommended to enable Z_SAFE_HOMING also! + * + * - 3POINT + * Probe 3 arbitrary points on the bed (that aren't collinear) + * You specify the XY coordinates of all 3 points. + * The result is a single tilted plane. Best for a flat bed. + * + * - LINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a single tilted plane. Best for a flat bed. + * + * - BILINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a mesh, best for large or uneven beds. + */ +//#define AUTO_BED_LEVELING_3POINT +//#define AUTO_BED_LEVELING_LINEAR +//#define AUTO_BED_LEVELING_BILINEAR -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. +/** + * Enable detailed logging of G28, G29, M48, etc. + * Turn on with the command 'M111 S32'. + * NOTE: Requires a lot of PROGMEM! + */ //#define DEBUG_LEVELING_FEATURE -#if ENABLED(AUTO_BED_LEVELING_FEATURE) +#if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR) - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. + // Set the number of grid points per dimension. + #define ABL_GRID_POINTS_X 3 + #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID + // Set the boundaries for probing (where the probe can reach). + #define LEFT_PROBE_BED_POSITION 15 + #define RIGHT_PROBE_BED_POSITION 170 + #define FRONT_PROBE_BED_POSITION 20 + #define BACK_PROBE_BED_POSITION 170 - #if ENABLED(AUTO_BED_LEVELING_GRID) + // The Z probe minimum outer margin (to validate G29 parameters). + #define MIN_PROBE_EDGE 10 - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 170 +#elif ENABLED(AUTO_BED_LEVELING_3POINT) - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. + // 3 arbitrary points to probe. + // A simple cross-product is used to estimate the plane of the bed. + #define ABL_PROBE_PT_1_X 15 + #define ABL_PROBE_PT_1_Y 180 + #define ABL_PROBE_PT_2_X 15 + #define ABL_PROBE_PT_2_Y 20 + #define ABL_PROBE_PT_3_X 170 + #define ABL_PROBE_PT_3_Y 20 - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define ABL_GRID_POINTS_X 3 - #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X +#endif - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE +/** + * Commands to execute at the end of G29 probing. + * Useful to retract or move the Z probe out of the way. + */ +//#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // @section homing diff --git a/Marlin/example_configurations/K8400/Dual-head/Configuration.h b/Marlin/example_configurations/K8400/Dual-head/Configuration.h index ac8e2c2c01..1fba72ac39 100644 --- a/Marlin/example_configurations/K8400/Dual-head/Configuration.h +++ b/Marlin/example_configurations/K8400/Dual-head/Configuration.h @@ -499,7 +499,7 @@ // Probes are sensors/switches that are activated / deactivated before/after use. // // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. +// You must activate one of these to use Auto Bed Leveling below. // // Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. // @@ -721,69 +721,75 @@ #endif // MESH_BED_LEVELING //=========================================================================== -//============================ Bed Auto Leveling ============================ +//============================ Auto Bed Leveling ============================ //=========================================================================== - // @section bedlevel -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) +/** + * Select one form of Auto Bed Leveling below. + * + * If you're also using the Probe for Z Homing, it's + * highly recommended to enable Z_SAFE_HOMING also! + * + * - 3POINT + * Probe 3 arbitrary points on the bed (that aren't collinear) + * You specify the XY coordinates of all 3 points. + * The result is a single tilted plane. Best for a flat bed. + * + * - LINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a single tilted plane. Best for a flat bed. + * + * - BILINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a mesh, best for large or uneven beds. + */ +//#define AUTO_BED_LEVELING_3POINT +//#define AUTO_BED_LEVELING_LINEAR +//#define AUTO_BED_LEVELING_BILINEAR -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. +/** + * Enable detailed logging of G28, G29, M48, etc. + * Turn on with the command 'M111 S32'. + * NOTE: Requires a lot of PROGMEM! + */ //#define DEBUG_LEVELING_FEATURE -#if ENABLED(AUTO_BED_LEVELING_FEATURE) +#if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR) - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. + // Set the number of grid points per dimension. + #define ABL_GRID_POINTS_X 3 + #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID + // Set the boundaries for probing (where the probe can reach). + #define LEFT_PROBE_BED_POSITION 15 + #define RIGHT_PROBE_BED_POSITION 170 + #define FRONT_PROBE_BED_POSITION 20 + #define BACK_PROBE_BED_POSITION 170 - #if ENABLED(AUTO_BED_LEVELING_GRID) + // The Z probe minimum outer margin (to validate G29 parameters). + #define MIN_PROBE_EDGE 10 - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 170 +#elif ENABLED(AUTO_BED_LEVELING_3POINT) - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. + // 3 arbitrary points to probe. + // A simple cross-product is used to estimate the plane of the bed. + #define ABL_PROBE_PT_1_X 15 + #define ABL_PROBE_PT_1_Y 180 + #define ABL_PROBE_PT_2_X 15 + #define ABL_PROBE_PT_2_Y 20 + #define ABL_PROBE_PT_3_X 170 + #define ABL_PROBE_PT_3_Y 20 - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define ABL_GRID_POINTS_X 3 - #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X +#endif - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE +/** + * Commands to execute at the end of G29 probing. + * Useful to retract or move the Z probe out of the way. + */ +//#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // @section homing diff --git a/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h b/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h index 928051c658..1a11606f55 100644 --- a/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h +++ b/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h @@ -499,7 +499,7 @@ // Probes are sensors/switches that are activated / deactivated before/after use. // // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. +// You must activate one of these to use Auto Bed Leveling below. // // Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. // @@ -721,69 +721,75 @@ #endif // MESH_BED_LEVELING //=========================================================================== -//============================ Bed Auto Leveling ============================ +//============================ Auto Bed Leveling ============================ //=========================================================================== - // @section bedlevel -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) +/** + * Select one form of Auto Bed Leveling below. + * + * If you're also using the Probe for Z Homing, it's + * highly recommended to enable Z_SAFE_HOMING also! + * + * - 3POINT + * Probe 3 arbitrary points on the bed (that aren't collinear) + * You specify the XY coordinates of all 3 points. + * The result is a single tilted plane. Best for a flat bed. + * + * - LINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a single tilted plane. Best for a flat bed. + * + * - BILINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a mesh, best for large or uneven beds. + */ +//#define AUTO_BED_LEVELING_3POINT +//#define AUTO_BED_LEVELING_LINEAR +//#define AUTO_BED_LEVELING_BILINEAR -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. +/** + * Enable detailed logging of G28, G29, M48, etc. + * Turn on with the command 'M111 S32'. + * NOTE: Requires a lot of PROGMEM! + */ //#define DEBUG_LEVELING_FEATURE -#if ENABLED(AUTO_BED_LEVELING_FEATURE) +#if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR) - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. + // Set the number of grid points per dimension. + #define ABL_GRID_POINTS_X 3 + #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID + // Set the boundaries for probing (where the probe can reach). + #define LEFT_PROBE_BED_POSITION 15 + #define RIGHT_PROBE_BED_POSITION 170 + #define FRONT_PROBE_BED_POSITION 20 + #define BACK_PROBE_BED_POSITION 170 - #if ENABLED(AUTO_BED_LEVELING_GRID) + // The Z probe minimum outer margin (to validate G29 parameters). + #define MIN_PROBE_EDGE 10 - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 170 +#elif ENABLED(AUTO_BED_LEVELING_3POINT) - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. + // 3 arbitrary points to probe. + // A simple cross-product is used to estimate the plane of the bed. + #define ABL_PROBE_PT_1_X 15 + #define ABL_PROBE_PT_1_Y 180 + #define ABL_PROBE_PT_2_X 15 + #define ABL_PROBE_PT_2_Y 20 + #define ABL_PROBE_PT_3_X 170 + #define ABL_PROBE_PT_3_Y 20 - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define ABL_GRID_POINTS_X 3 - #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X +#endif - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE +/** + * Commands to execute at the end of G29 probing. + * Useful to retract or move the Z probe out of the way. + */ +//#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // @section homing diff --git a/Marlin/example_configurations/RigidBot/Configuration.h b/Marlin/example_configurations/RigidBot/Configuration.h index 435e018fc1..be1c017522 100644 --- a/Marlin/example_configurations/RigidBot/Configuration.h +++ b/Marlin/example_configurations/RigidBot/Configuration.h @@ -497,7 +497,7 @@ // Probes are sensors/switches that are activated / deactivated before/after use. // // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. +// You must activate one of these to use Auto Bed Leveling below. // // Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. // @@ -719,69 +719,75 @@ #endif // MESH_BED_LEVELING //=========================================================================== -//============================ Bed Auto Leveling ============================ +//============================ Auto Bed Leveling ============================ //=========================================================================== - // @section bedlevel -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) +/** + * Select one form of Auto Bed Leveling below. + * + * If you're also using the Probe for Z Homing, it's + * highly recommended to enable Z_SAFE_HOMING also! + * + * - 3POINT + * Probe 3 arbitrary points on the bed (that aren't collinear) + * You specify the XY coordinates of all 3 points. + * The result is a single tilted plane. Best for a flat bed. + * + * - LINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a single tilted plane. Best for a flat bed. + * + * - BILINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a mesh, best for large or uneven beds. + */ +//#define AUTO_BED_LEVELING_3POINT +//#define AUTO_BED_LEVELING_LINEAR +//#define AUTO_BED_LEVELING_BILINEAR -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. +/** + * Enable detailed logging of G28, G29, M48, etc. + * Turn on with the command 'M111 S32'. + * NOTE: Requires a lot of PROGMEM! + */ //#define DEBUG_LEVELING_FEATURE -#if ENABLED(AUTO_BED_LEVELING_FEATURE) +#if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR) - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. + // Set the number of grid points per dimension. + #define ABL_GRID_POINTS_X 3 + #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID + // Set the boundaries for probing (where the probe can reach). + #define LEFT_PROBE_BED_POSITION 15 + #define RIGHT_PROBE_BED_POSITION 170 + #define FRONT_PROBE_BED_POSITION 20 + #define BACK_PROBE_BED_POSITION 170 - #if ENABLED(AUTO_BED_LEVELING_GRID) + // The Z probe minimum outer margin (to validate G29 parameters). + #define MIN_PROBE_EDGE 10 - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 170 +#elif ENABLED(AUTO_BED_LEVELING_3POINT) - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. + // 3 arbitrary points to probe. + // A simple cross-product is used to estimate the plane of the bed. + #define ABL_PROBE_PT_1_X 15 + #define ABL_PROBE_PT_1_Y 180 + #define ABL_PROBE_PT_2_X 15 + #define ABL_PROBE_PT_2_Y 20 + #define ABL_PROBE_PT_3_X 170 + #define ABL_PROBE_PT_3_Y 20 - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define ABL_GRID_POINTS_X 3 - #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X +#endif - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE +/** + * Commands to execute at the end of G29 probing. + * Useful to retract or move the Z probe out of the way. + */ +//#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // @section homing diff --git a/Marlin/example_configurations/SCARA/Configuration.h b/Marlin/example_configurations/SCARA/Configuration.h index 99ceb678de..46ec2c1f5b 100644 --- a/Marlin/example_configurations/SCARA/Configuration.h +++ b/Marlin/example_configurations/SCARA/Configuration.h @@ -514,7 +514,7 @@ // Probes are sensors/switches that are activated / deactivated before/after use. // // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. +// You must activate one of these to use Auto Bed Leveling below. // // Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. // @@ -736,69 +736,75 @@ #endif // MESH_BED_LEVELING //=========================================================================== -//============================ Bed Auto Leveling ============================ +//============================ Auto Bed Leveling ============================ //=========================================================================== - // @section bedlevel -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) +/** + * Select one form of Auto Bed Leveling below. + * + * If you're also using the Probe for Z Homing, it's + * highly recommended to enable Z_SAFE_HOMING also! + * + * - 3POINT + * Probe 3 arbitrary points on the bed (that aren't collinear) + * You specify the XY coordinates of all 3 points. + * The result is a single tilted plane. Best for a flat bed. + * + * - LINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a single tilted plane. Best for a flat bed. + * + * - BILINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a mesh, best for large or uneven beds. + */ +//#define AUTO_BED_LEVELING_3POINT +//#define AUTO_BED_LEVELING_LINEAR +//#define AUTO_BED_LEVELING_BILINEAR -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. +/** + * Enable detailed logging of G28, G29, M48, etc. + * Turn on with the command 'M111 S32'. + * NOTE: Requires a lot of PROGMEM! + */ //#define DEBUG_LEVELING_FEATURE -#if ENABLED(AUTO_BED_LEVELING_FEATURE) +#if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR) - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. + // Set the number of grid points per dimension. + #define ABL_GRID_POINTS_X 3 + #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID + // Set the boundaries for probing (where the probe can reach). + #define LEFT_PROBE_BED_POSITION 15 + #define RIGHT_PROBE_BED_POSITION 170 + #define FRONT_PROBE_BED_POSITION 20 + #define BACK_PROBE_BED_POSITION 170 - #if ENABLED(AUTO_BED_LEVELING_GRID) + // The Z probe minimum outer margin (to validate G29 parameters). + #define MIN_PROBE_EDGE 10 - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 170 +#elif ENABLED(AUTO_BED_LEVELING_3POINT) - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. + // 3 arbitrary points to probe. + // A simple cross-product is used to estimate the plane of the bed. + #define ABL_PROBE_PT_1_X 15 + #define ABL_PROBE_PT_1_Y 180 + #define ABL_PROBE_PT_2_X 15 + #define ABL_PROBE_PT_2_Y 20 + #define ABL_PROBE_PT_3_X 170 + #define ABL_PROBE_PT_3_Y 20 - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define ABL_GRID_POINTS_X 3 - #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X +#endif - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE +/** + * Commands to execute at the end of G29 probing. + * Useful to retract or move the Z probe out of the way. + */ +//#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // @section homing diff --git a/Marlin/example_configurations/TAZ4/Configuration.h b/Marlin/example_configurations/TAZ4/Configuration.h index 3f62c57b48..d768eac8e2 100644 --- a/Marlin/example_configurations/TAZ4/Configuration.h +++ b/Marlin/example_configurations/TAZ4/Configuration.h @@ -520,7 +520,7 @@ // Probes are sensors/switches that are activated / deactivated before/after use. // // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. +// You must activate one of these to use Auto Bed Leveling below. // // Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. // @@ -742,69 +742,75 @@ #endif // MESH_BED_LEVELING //=========================================================================== -//============================ Bed Auto Leveling ============================ +//============================ Auto Bed Leveling ============================ //=========================================================================== - // @section bedlevel -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) +/** + * Select one form of Auto Bed Leveling below. + * + * If you're also using the Probe for Z Homing, it's + * highly recommended to enable Z_SAFE_HOMING also! + * + * - 3POINT + * Probe 3 arbitrary points on the bed (that aren't collinear) + * You specify the XY coordinates of all 3 points. + * The result is a single tilted plane. Best for a flat bed. + * + * - LINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a single tilted plane. Best for a flat bed. + * + * - BILINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a mesh, best for large or uneven beds. + */ +//#define AUTO_BED_LEVELING_3POINT +//#define AUTO_BED_LEVELING_LINEAR +//#define AUTO_BED_LEVELING_BILINEAR -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. +/** + * Enable detailed logging of G28, G29, M48, etc. + * Turn on with the command 'M111 S32'. + * NOTE: Requires a lot of PROGMEM! + */ //#define DEBUG_LEVELING_FEATURE -#if ENABLED(AUTO_BED_LEVELING_FEATURE) +#if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR) - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. + // Set the number of grid points per dimension. + #define ABL_GRID_POINTS_X 3 + #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID + // Set the boundaries for probing (where the probe can reach). + #define LEFT_PROBE_BED_POSITION 15 + #define RIGHT_PROBE_BED_POSITION 170 + #define FRONT_PROBE_BED_POSITION 20 + #define BACK_PROBE_BED_POSITION 170 - #if ENABLED(AUTO_BED_LEVELING_GRID) + // The Z probe minimum outer margin (to validate G29 parameters). + #define MIN_PROBE_EDGE 10 - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 170 +#elif ENABLED(AUTO_BED_LEVELING_3POINT) - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. + // 3 arbitrary points to probe. + // A simple cross-product is used to estimate the plane of the bed. + #define ABL_PROBE_PT_1_X 15 + #define ABL_PROBE_PT_1_Y 180 + #define ABL_PROBE_PT_2_X 15 + #define ABL_PROBE_PT_2_Y 20 + #define ABL_PROBE_PT_3_X 170 + #define ABL_PROBE_PT_3_Y 20 - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define ABL_GRID_POINTS_X 3 - #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X +#endif - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE +/** + * Commands to execute at the end of G29 probing. + * Useful to retract or move the Z probe out of the way. + */ +//#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // @section homing diff --git a/Marlin/example_configurations/WITBOX/Configuration.h b/Marlin/example_configurations/WITBOX/Configuration.h index 672b88f915..1cb2140bda 100644 --- a/Marlin/example_configurations/WITBOX/Configuration.h +++ b/Marlin/example_configurations/WITBOX/Configuration.h @@ -491,7 +491,7 @@ // Probes are sensors/switches that are activated / deactivated before/after use. // // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. +// You must activate one of these to use Auto Bed Leveling below. // // Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. // @@ -713,69 +713,75 @@ #endif // MESH_BED_LEVELING //=========================================================================== -//============================ Bed Auto Leveling ============================ +//============================ Auto Bed Leveling ============================ //=========================================================================== - // @section bedlevel -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) +/** + * Select one form of Auto Bed Leveling below. + * + * If you're also using the Probe for Z Homing, it's + * highly recommended to enable Z_SAFE_HOMING also! + * + * - 3POINT + * Probe 3 arbitrary points on the bed (that aren't collinear) + * You specify the XY coordinates of all 3 points. + * The result is a single tilted plane. Best for a flat bed. + * + * - LINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a single tilted plane. Best for a flat bed. + * + * - BILINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a mesh, best for large or uneven beds. + */ +//#define AUTO_BED_LEVELING_3POINT +//#define AUTO_BED_LEVELING_LINEAR +//#define AUTO_BED_LEVELING_BILINEAR -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. +/** + * Enable detailed logging of G28, G29, M48, etc. + * Turn on with the command 'M111 S32'. + * NOTE: Requires a lot of PROGMEM! + */ //#define DEBUG_LEVELING_FEATURE -#if ENABLED(AUTO_BED_LEVELING_FEATURE) +#if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR) - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. + // Set the number of grid points per dimension. + #define ABL_GRID_POINTS_X 3 + #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID + // Set the boundaries for probing (where the probe can reach). + #define LEFT_PROBE_BED_POSITION 15 + #define RIGHT_PROBE_BED_POSITION 170 + #define FRONT_PROBE_BED_POSITION 20 + #define BACK_PROBE_BED_POSITION 170 - #if ENABLED(AUTO_BED_LEVELING_GRID) + // The Z probe minimum outer margin (to validate G29 parameters). + #define MIN_PROBE_EDGE 10 - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 170 +#elif ENABLED(AUTO_BED_LEVELING_3POINT) - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. + // 3 arbitrary points to probe. + // A simple cross-product is used to estimate the plane of the bed. + #define ABL_PROBE_PT_1_X 15 + #define ABL_PROBE_PT_1_Y 180 + #define ABL_PROBE_PT_2_X 15 + #define ABL_PROBE_PT_2_Y 20 + #define ABL_PROBE_PT_3_X 170 + #define ABL_PROBE_PT_3_Y 20 - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define ABL_GRID_POINTS_X 3 - #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X +#endif - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE +/** + * Commands to execute at the end of G29 probing. + * Useful to retract or move the Z probe out of the way. + */ +//#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // @section homing diff --git a/Marlin/example_configurations/adafruit/ST7565/Configuration.h b/Marlin/example_configurations/adafruit/ST7565/Configuration.h index 2186bd7fc0..b885b924c5 100644 --- a/Marlin/example_configurations/adafruit/ST7565/Configuration.h +++ b/Marlin/example_configurations/adafruit/ST7565/Configuration.h @@ -499,7 +499,7 @@ // Probes are sensors/switches that are activated / deactivated before/after use. // // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. +// You must activate one of these to use Auto Bed Leveling below. // // Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. // @@ -721,69 +721,75 @@ #endif // MESH_BED_LEVELING //=========================================================================== -//============================ Bed Auto Leveling ============================ +//============================ Auto Bed Leveling ============================ //=========================================================================== - // @section bedlevel -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) +/** + * Select one form of Auto Bed Leveling below. + * + * If you're also using the Probe for Z Homing, it's + * highly recommended to enable Z_SAFE_HOMING also! + * + * - 3POINT + * Probe 3 arbitrary points on the bed (that aren't collinear) + * You specify the XY coordinates of all 3 points. + * The result is a single tilted plane. Best for a flat bed. + * + * - LINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a single tilted plane. Best for a flat bed. + * + * - BILINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a mesh, best for large or uneven beds. + */ +//#define AUTO_BED_LEVELING_3POINT +//#define AUTO_BED_LEVELING_LINEAR +//#define AUTO_BED_LEVELING_BILINEAR -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. +/** + * Enable detailed logging of G28, G29, M48, etc. + * Turn on with the command 'M111 S32'. + * NOTE: Requires a lot of PROGMEM! + */ //#define DEBUG_LEVELING_FEATURE -#if ENABLED(AUTO_BED_LEVELING_FEATURE) +#if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR) - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. + // Set the number of grid points per dimension. + #define ABL_GRID_POINTS_X 3 + #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID + // Set the boundaries for probing (where the probe can reach). + #define LEFT_PROBE_BED_POSITION 15 + #define RIGHT_PROBE_BED_POSITION 170 + #define FRONT_PROBE_BED_POSITION 20 + #define BACK_PROBE_BED_POSITION 170 - #if ENABLED(AUTO_BED_LEVELING_GRID) + // The Z probe minimum outer margin (to validate G29 parameters). + #define MIN_PROBE_EDGE 10 - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 170 +#elif ENABLED(AUTO_BED_LEVELING_3POINT) - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. + // 3 arbitrary points to probe. + // A simple cross-product is used to estimate the plane of the bed. + #define ABL_PROBE_PT_1_X 15 + #define ABL_PROBE_PT_1_Y 180 + #define ABL_PROBE_PT_2_X 15 + #define ABL_PROBE_PT_2_Y 20 + #define ABL_PROBE_PT_3_X 170 + #define ABL_PROBE_PT_3_Y 20 - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define ABL_GRID_POINTS_X 3 - #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X +#endif - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE +/** + * Commands to execute at the end of G29 probing. + * Useful to retract or move the Z probe out of the way. + */ +//#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // @section homing diff --git a/Marlin/example_configurations/delta/biv2.5/Configuration.h b/Marlin/example_configurations/delta/biv2.5/Configuration.h index 1795c41404..56e6119d06 100644 --- a/Marlin/example_configurations/delta/biv2.5/Configuration.h +++ b/Marlin/example_configurations/delta/biv2.5/Configuration.h @@ -542,7 +542,7 @@ // Probes are sensors/switches that are activated / deactivated before/after use. // // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. +// You must activate one of these to use Auto Bed Leveling below. // // Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. // @@ -811,73 +811,77 @@ #endif // MESH_BED_LEVELING //=========================================================================== -//============================ Bed Auto Leveling ============================ +//============================ Auto Bed Leveling ============================ //=========================================================================== - // @section bedlevel -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) +/** + * Select one form of Auto Bed Leveling below. + * + * If you're also using the Probe for Z Homing, it's + * highly recommended to enable Z_SAFE_HOMING also! + * + * - 3POINT + * Probe 3 arbitrary points on the bed (that aren't collinear) + * You specify the XY coordinates of all 3 points. + * The result is a single tilted plane. Best for a flat bed. + * + * - LINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a single tilted plane. Best for a flat bed. + * + * - BILINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a mesh, best for large or uneven beds. + */ +//#define AUTO_BED_LEVELING_3POINT +//#define AUTO_BED_LEVELING_LINEAR +//#define AUTO_BED_LEVELING_BILINEAR -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. +/** + * Enable detailed logging of G28, G29, M48, etc. + * Turn on with the command 'M111 S32'. + * NOTE: Requires a lot of PROGMEM! + */ //#define DEBUG_LEVELING_FEATURE -#if ENABLED(AUTO_BED_LEVELING_FEATURE) +#if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR) - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. + // Set the number of grid points per dimension. + // Works best with 5 or more points in each dimension. + #define ABL_GRID_POINTS_X 9 + #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID // Deltas only support grid mode. + // Set the boundaries for probing (where the probe can reach). + #define DELTA_PROBEABLE_RADIUS (DELTA_PRINTABLE_RADIUS - 10) + #define LEFT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) + #define RIGHT_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS + #define FRONT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) + #define BACK_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS - #if ENABLED(AUTO_BED_LEVELING_GRID) + // The Z probe minimum outer margin (to validate G29 parameters). + #define MIN_PROBE_EDGE 10 - // Set the rectangle in which to probe. - #define DELTA_PROBEABLE_RADIUS (DELTA_PRINTABLE_RADIUS - 10) - #define LEFT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) - #define RIGHT_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS - #define FRONT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) - #define BACK_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS +#elif ENABLED(AUTO_BED_LEVELING_3POINT) - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. + // 3 arbitrary points to probe. + // A simple cross-product is used to estimate the plane of the bed. + #define ABL_PROBE_PT_1_X 15 + #define ABL_PROBE_PT_1_Y 180 + #define ABL_PROBE_PT_2_X 15 + #define ABL_PROBE_PT_2_Y 20 + #define ABL_PROBE_PT_3_X 170 + #define ABL_PROBE_PT_3_Y 20 - // Non-linear bed leveling will be used. - // Compensate by interpolating between the nearest four Z probe values for each point. - // Useful for deltas where the print surface may appear like a bowl or dome shape. - // Works best with 5 or more points in each dimension. - #define ABL_GRID_POINTS_X 9 - #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X +#endif - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE +/** + * Commands to execute at the end of G29 probing. + * Useful to retract or move the Z probe out of the way. + */ +//#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // @section homing diff --git a/Marlin/example_configurations/delta/generic/Configuration.h b/Marlin/example_configurations/delta/generic/Configuration.h index 57d30de42d..63291f9233 100644 --- a/Marlin/example_configurations/delta/generic/Configuration.h +++ b/Marlin/example_configurations/delta/generic/Configuration.h @@ -542,7 +542,7 @@ // Probes are sensors/switches that are activated / deactivated before/after use. // // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. +// You must activate one of these to use Auto Bed Leveling below. // // Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. // @@ -805,73 +805,77 @@ #endif // MESH_BED_LEVELING //=========================================================================== -//============================ Bed Auto Leveling ============================ +//============================ Auto Bed Leveling ============================ //=========================================================================== - // @section bedlevel -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) +/** + * Select one form of Auto Bed Leveling below. + * + * If you're also using the Probe for Z Homing, it's + * highly recommended to enable Z_SAFE_HOMING also! + * + * - 3POINT + * Probe 3 arbitrary points on the bed (that aren't collinear) + * You specify the XY coordinates of all 3 points. + * The result is a single tilted plane. Best for a flat bed. + * + * - LINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a single tilted plane. Best for a flat bed. + * + * - BILINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a mesh, best for large or uneven beds. + */ +//#define AUTO_BED_LEVELING_3POINT +//#define AUTO_BED_LEVELING_LINEAR +//#define AUTO_BED_LEVELING_BILINEAR -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. +/** + * Enable detailed logging of G28, G29, M48, etc. + * Turn on with the command 'M111 S32'. + * NOTE: Requires a lot of PROGMEM! + */ //#define DEBUG_LEVELING_FEATURE -#if ENABLED(AUTO_BED_LEVELING_FEATURE) +#if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR) - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. + // Set the number of grid points per dimension. + // Works best with 5 or more points in each dimension. + #define ABL_GRID_POINTS_X 9 + #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID // Deltas only support grid mode. + // Set the boundaries for probing (where the probe can reach). + #define DELTA_PROBEABLE_RADIUS (DELTA_PRINTABLE_RADIUS - 10) + #define LEFT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) + #define RIGHT_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS + #define FRONT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) + #define BACK_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS - #if ENABLED(AUTO_BED_LEVELING_GRID) + // The Z probe minimum outer margin (to validate G29 parameters). + #define MIN_PROBE_EDGE 10 - // Set the rectangle in which to probe - #define DELTA_PROBEABLE_RADIUS (DELTA_PRINTABLE_RADIUS - 10) - #define LEFT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) - #define RIGHT_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS - #define FRONT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) - #define BACK_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS +#elif ENABLED(AUTO_BED_LEVELING_3POINT) - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. + // 3 arbitrary points to probe. + // A simple cross-product is used to estimate the plane of the bed. + #define ABL_PROBE_PT_1_X 15 + #define ABL_PROBE_PT_1_Y 180 + #define ABL_PROBE_PT_2_X 15 + #define ABL_PROBE_PT_2_Y 20 + #define ABL_PROBE_PT_3_X 170 + #define ABL_PROBE_PT_3_Y 20 - // Non-linear bed leveling will be used. - // Compensate by interpolating between the nearest four Z probe values for each point. - // Useful for deltas where the print surface may appear like a bowl or dome shape. - // Works best with 5 or more points in each dimension. - #define ABL_GRID_POINTS_X 9 - #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X +#endif - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE +/** + * Commands to execute at the end of G29 probing. + * Useful to retract or move the Z probe out of the way. + */ +//#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // @section homing diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration.h b/Marlin/example_configurations/delta/kossel_mini/Configuration.h index 56a206a1ea..f9e82f16bf 100644 --- a/Marlin/example_configurations/delta/kossel_mini/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_mini/Configuration.h @@ -542,7 +542,7 @@ // Probes are sensors/switches that are activated / deactivated before/after use. // // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. +// You must activate one of these to use Auto Bed Leveling below. // // Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. // @@ -808,73 +808,77 @@ #endif // MESH_BED_LEVELING //=========================================================================== -//============================ Bed Auto Leveling ============================ +//============================ Auto Bed Leveling ============================ //=========================================================================== - // @section bedlevel -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) +/** + * Select one form of Auto Bed Leveling below. + * + * If you're also using the Probe for Z Homing, it's + * highly recommended to enable Z_SAFE_HOMING also! + * + * - 3POINT + * Probe 3 arbitrary points on the bed (that aren't collinear) + * You specify the XY coordinates of all 3 points. + * The result is a single tilted plane. Best for a flat bed. + * + * - LINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a single tilted plane. Best for a flat bed. + * + * - BILINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a mesh, best for large or uneven beds. + */ +//#define AUTO_BED_LEVELING_3POINT +//#define AUTO_BED_LEVELING_LINEAR +//#define AUTO_BED_LEVELING_BILINEAR -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. +/** + * Enable detailed logging of G28, G29, M48, etc. + * Turn on with the command 'M111 S32'. + * NOTE: Requires a lot of PROGMEM! + */ //#define DEBUG_LEVELING_FEATURE -#if ENABLED(AUTO_BED_LEVELING_FEATURE) +#if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR) - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. + // Set the number of grid points per dimension. + // Works best with 5 or more points in each dimension. + #define ABL_GRID_POINTS_X 9 + #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID // Deltas only support grid mode. + // Set the boundaries for probing (where the probe can reach). + #define DELTA_PROBEABLE_RADIUS (DELTA_PRINTABLE_RADIUS - 10) + #define LEFT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) + #define RIGHT_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS + #define FRONT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) + #define BACK_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS - #if ENABLED(AUTO_BED_LEVELING_GRID) + // The Z probe minimum outer margin (to validate G29 parameters). + #define MIN_PROBE_EDGE 10 - // Set the rectangle in which to probe - #define DELTA_PROBEABLE_RADIUS (DELTA_PRINTABLE_RADIUS - 10) - #define LEFT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) - #define RIGHT_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS - #define FRONT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) - #define BACK_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS +#elif ENABLED(AUTO_BED_LEVELING_3POINT) - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. + // 3 arbitrary points to probe. + // A simple cross-product is used to estimate the plane of the bed. + #define ABL_PROBE_PT_1_X 15 + #define ABL_PROBE_PT_1_Y 180 + #define ABL_PROBE_PT_2_X 15 + #define ABL_PROBE_PT_2_Y 20 + #define ABL_PROBE_PT_3_X 170 + #define ABL_PROBE_PT_3_Y 20 - // Non-linear bed leveling will be used. - // Compensate by interpolating between the nearest four Z probe values for each point. - // Useful for deltas where the print surface may appear like a bowl or dome shape. - // Works best with 5 or more points in each dimension. - #define ABL_GRID_POINTS_X 9 - #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X +#endif - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE +/** + * Commands to execute at the end of G29 probing. + * Useful to retract or move the Z probe out of the way. + */ +//#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // @section homing diff --git a/Marlin/example_configurations/delta/kossel_pro/Configuration.h b/Marlin/example_configurations/delta/kossel_pro/Configuration.h index 06b2766f8c..7def761bca 100644 --- a/Marlin/example_configurations/delta/kossel_pro/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_pro/Configuration.h @@ -538,7 +538,7 @@ // Probes are sensors/switches that are activated / deactivated before/after use. // // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. +// You must activate one of these to use Auto Bed Leveling below. // // Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. // @@ -809,73 +809,77 @@ #endif // MESH_BED_LEVELING //=========================================================================== -//============================ Bed Auto Leveling ============================ +//============================ Auto Bed Leveling ============================ //=========================================================================== - // @section bedlevel -#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) +/** + * Select one form of Auto Bed Leveling below. + * + * If you're also using the Probe for Z Homing, it's + * highly recommended to enable Z_SAFE_HOMING also! + * + * - 3POINT + * Probe 3 arbitrary points on the bed (that aren't collinear) + * You specify the XY coordinates of all 3 points. + * The result is a single tilted plane. Best for a flat bed. + * + * - LINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a single tilted plane. Best for a flat bed. + * + * - BILINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a mesh, best for large or uneven beds. + */ +//#define AUTO_BED_LEVELING_3POINT +//#define AUTO_BED_LEVELING_LINEAR +#define AUTO_BED_LEVELING_BILINEAR -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. +/** + * Enable detailed logging of G28, G29, M48, etc. + * Turn on with the command 'M111 S32'. + * NOTE: Requires a lot of PROGMEM! + */ //#define DEBUG_LEVELING_FEATURE -#if ENABLED(AUTO_BED_LEVELING_FEATURE) +#if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR) - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. + // Set the number of grid points per dimension. + // Works best with 5 or more points in each dimension. + #define ABL_GRID_POINTS_X 7 + #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID // Deltas only support grid mode. + // Set the boundaries for probing (where the probe can reach). + #define DELTA_PROBEABLE_RADIUS (DELTA_PRINTABLE_RADIUS-25) + #define LEFT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) + #define RIGHT_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS + #define FRONT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) + #define BACK_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS - #if ENABLED(AUTO_BED_LEVELING_GRID) + // The Z probe minimum outer margin (to validate G29 parameters). + #define MIN_PROBE_EDGE 10 - // Set the rectangle in which to probe - #define DELTA_PROBEABLE_RADIUS (DELTA_PRINTABLE_RADIUS-25) - #define LEFT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) - #define RIGHT_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS - #define FRONT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) - #define BACK_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS +#elif ENABLED(AUTO_BED_LEVELING_3POINT) - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. + // 3 arbitrary points to probe. + // A simple cross-product is used to estimate the plane of the bed. + #define ABL_PROBE_PT_1_X 15 + #define ABL_PROBE_PT_1_Y 180 + #define ABL_PROBE_PT_2_X 15 + #define ABL_PROBE_PT_2_Y 20 + #define ABL_PROBE_PT_3_X 170 + #define ABL_PROBE_PT_3_Y 20 - // Non-linear bed leveling will be used. - // Compensate by interpolating between the nearest four Z probe values for each point. - // Useful for deltas where the print surface may appear like a bowl or dome shape. - // Works best with 5 or more points in each dimension. - #define ABL_GRID_POINTS_X 7 - #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X +#endif - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE +/** + * Commands to execute at the end of G29 probing. + * Useful to retract or move the Z probe out of the way. + */ +//#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // @section homing diff --git a/Marlin/example_configurations/delta/kossel_xl/Configuration.h b/Marlin/example_configurations/delta/kossel_xl/Configuration.h index f2992d11e3..b7e7dff71a 100644 --- a/Marlin/example_configurations/delta/kossel_xl/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_xl/Configuration.h @@ -548,7 +548,7 @@ // Probes are sensors/switches that are activated / deactivated before/after use. // // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. +// You must activate one of these to use Auto Bed Leveling below. // // Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. // @@ -811,73 +811,77 @@ #endif // MESH_BED_LEVELING //=========================================================================== -//============================ Bed Auto Leveling ============================ +//============================ Auto Bed Leveling ============================ //=========================================================================== - // @section bedlevel -#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) +/** + * Select one form of Auto Bed Leveling below. + * + * If you're also using the Probe for Z Homing, it's + * highly recommended to enable Z_SAFE_HOMING also! + * + * - 3POINT + * Probe 3 arbitrary points on the bed (that aren't collinear) + * You specify the XY coordinates of all 3 points. + * The result is a single tilted plane. Best for a flat bed. + * + * - LINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a single tilted plane. Best for a flat bed. + * + * - BILINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a mesh, best for large or uneven beds. + */ +//#define AUTO_BED_LEVELING_3POINT +//#define AUTO_BED_LEVELING_LINEAR +#define AUTO_BED_LEVELING_BILINEAR -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. +/** + * Enable detailed logging of G28, G29, M48, etc. + * Turn on with the command 'M111 S32'. + * NOTE: Requires a lot of PROGMEM! + */ //#define DEBUG_LEVELING_FEATURE -#if ENABLED(AUTO_BED_LEVELING_FEATURE) +#if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR) - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. + // Set the number of grid points per dimension. + // Works best with 5 or more points in each dimension. + #define ABL_GRID_POINTS_X 5 + #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID // Deltas only support grid mode. + // Set the boundaries for probing (where the probe can reach). + #define DELTA_PROBEABLE_RADIUS (DELTA_PRINTABLE_RADIUS - 10) + #define LEFT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) + #define RIGHT_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS + #define FRONT_PROBE_BED_POSITION - (DELTA_PROBEABLE_RADIUS - 20) + #define BACK_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS - 40 - #if ENABLED(AUTO_BED_LEVELING_GRID) + // The Z probe minimum outer margin (to validate G29 parameters). + #define MIN_PROBE_EDGE 10 - // Set the rectangle in which to probe - #define DELTA_PROBEABLE_RADIUS (DELTA_PRINTABLE_RADIUS - 10) - #define LEFT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) - #define RIGHT_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS - #define FRONT_PROBE_BED_POSITION - (DELTA_PROBEABLE_RADIUS - 20) - #define BACK_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS - 40 +#elif ENABLED(AUTO_BED_LEVELING_3POINT) - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. + // 3 arbitrary points to probe. + // A simple cross-product is used to estimate the plane of the bed. + #define ABL_PROBE_PT_1_X 15 + #define ABL_PROBE_PT_1_Y 180 + #define ABL_PROBE_PT_2_X 15 + #define ABL_PROBE_PT_2_Y 20 + #define ABL_PROBE_PT_3_X 170 + #define ABL_PROBE_PT_3_Y 20 - // Non-linear bed leveling will be used. - // Compensate by interpolating between the nearest four Z probe values for each point. - // Useful for deltas where the print surface may appear like a bowl or dome shape. - // Works best with 5 or more points in each dimension. - #define ABL_GRID_POINTS_X 5 - #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X +#endif - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE +/** + * Commands to execute at the end of G29 probing. + * Useful to retract or move the Z probe out of the way. + */ +//#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // @section homing diff --git a/Marlin/example_configurations/makibox/Configuration.h b/Marlin/example_configurations/makibox/Configuration.h index c80bace9e7..89d833e12f 100644 --- a/Marlin/example_configurations/makibox/Configuration.h +++ b/Marlin/example_configurations/makibox/Configuration.h @@ -502,7 +502,7 @@ // Probes are sensors/switches that are activated / deactivated before/after use. // // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. +// You must activate one of these to use Auto Bed Leveling below. // // Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. // @@ -724,69 +724,75 @@ #endif // MESH_BED_LEVELING //=========================================================================== -//============================ Bed Auto Leveling ============================ +//============================ Auto Bed Leveling ============================ //=========================================================================== - // @section bedlevel -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) +/** + * Select one form of Auto Bed Leveling below. + * + * If you're also using the Probe for Z Homing, it's + * highly recommended to enable Z_SAFE_HOMING also! + * + * - 3POINT + * Probe 3 arbitrary points on the bed (that aren't collinear) + * You specify the XY coordinates of all 3 points. + * The result is a single tilted plane. Best for a flat bed. + * + * - LINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a single tilted plane. Best for a flat bed. + * + * - BILINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a mesh, best for large or uneven beds. + */ +//#define AUTO_BED_LEVELING_3POINT +//#define AUTO_BED_LEVELING_LINEAR +//#define AUTO_BED_LEVELING_BILINEAR -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. +/** + * Enable detailed logging of G28, G29, M48, etc. + * Turn on with the command 'M111 S32'. + * NOTE: Requires a lot of PROGMEM! + */ //#define DEBUG_LEVELING_FEATURE -#if ENABLED(AUTO_BED_LEVELING_FEATURE) +#if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR) - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. + // Set the number of grid points per dimension. + #define ABL_GRID_POINTS_X 3 + #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID + // Set the boundaries for probing (where the probe can reach). + #define LEFT_PROBE_BED_POSITION 15 + #define RIGHT_PROBE_BED_POSITION 170 + #define FRONT_PROBE_BED_POSITION 20 + #define BACK_PROBE_BED_POSITION 170 - #if ENABLED(AUTO_BED_LEVELING_GRID) + // The Z probe minimum outer margin (to validate G29 parameters). + #define MIN_PROBE_EDGE 10 - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 170 +#elif ENABLED(AUTO_BED_LEVELING_3POINT) - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. + // 3 arbitrary points to probe. + // A simple cross-product is used to estimate the plane of the bed. + #define ABL_PROBE_PT_1_X 15 + #define ABL_PROBE_PT_1_Y 180 + #define ABL_PROBE_PT_2_X 15 + #define ABL_PROBE_PT_2_Y 20 + #define ABL_PROBE_PT_3_X 170 + #define ABL_PROBE_PT_3_Y 20 - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define ABL_GRID_POINTS_X 3 - #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X +#endif - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE +/** + * Commands to execute at the end of G29 probing. + * Useful to retract or move the Z probe out of the way. + */ +//#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // @section homing diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration.h b/Marlin/example_configurations/tvrrug/Round2/Configuration.h index 98b74a646b..8149f6c8ed 100644 --- a/Marlin/example_configurations/tvrrug/Round2/Configuration.h +++ b/Marlin/example_configurations/tvrrug/Round2/Configuration.h @@ -495,7 +495,7 @@ // Probes are sensors/switches that are activated / deactivated before/after use. // // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. +// You must activate one of these to use Auto Bed Leveling below. // // Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. // @@ -717,69 +717,75 @@ #endif // MESH_BED_LEVELING //=========================================================================== -//============================ Bed Auto Leveling ============================ +//============================ Auto Bed Leveling ============================ //=========================================================================== - // @section bedlevel -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) +/** + * Select one form of Auto Bed Leveling below. + * + * If you're also using the Probe for Z Homing, it's + * highly recommended to enable Z_SAFE_HOMING also! + * + * - 3POINT + * Probe 3 arbitrary points on the bed (that aren't collinear) + * You specify the XY coordinates of all 3 points. + * The result is a single tilted plane. Best for a flat bed. + * + * - LINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a single tilted plane. Best for a flat bed. + * + * - BILINEAR + * Probe several points in a grid. + * You specify the rectangle and the density of sample points. + * The result is a mesh, best for large or uneven beds. + */ +//#define AUTO_BED_LEVELING_3POINT +//#define AUTO_BED_LEVELING_LINEAR +//#define AUTO_BED_LEVELING_BILINEAR -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. +/** + * Enable detailed logging of G28, G29, M48, etc. + * Turn on with the command 'M111 S32'. + * NOTE: Requires a lot of PROGMEM! + */ //#define DEBUG_LEVELING_FEATURE -#if ENABLED(AUTO_BED_LEVELING_FEATURE) +#if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR) - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. + // Set the number of grid points per dimension. + #define ABL_GRID_POINTS_X 3 + #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID + // Set the boundaries for probing (where the probe can reach). + #define LEFT_PROBE_BED_POSITION 15 + #define RIGHT_PROBE_BED_POSITION 170 + #define FRONT_PROBE_BED_POSITION 20 + #define BACK_PROBE_BED_POSITION 170 - #if ENABLED(AUTO_BED_LEVELING_GRID) + // The Z probe minimum outer margin (to validate G29 parameters). + #define MIN_PROBE_EDGE 10 - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 170 +#elif ENABLED(AUTO_BED_LEVELING_3POINT) - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. + // 3 arbitrary points to probe. + // A simple cross-product is used to estimate the plane of the bed. + #define ABL_PROBE_PT_1_X 15 + #define ABL_PROBE_PT_1_Y 180 + #define ABL_PROBE_PT_2_X 15 + #define ABL_PROBE_PT_2_Y 20 + #define ABL_PROBE_PT_3_X 170 + #define ABL_PROBE_PT_3_Y 20 - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define ABL_GRID_POINTS_X 3 - #define ABL_GRID_POINTS_Y ABL_GRID_POINTS_X +#endif - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE +/** + * Commands to execute at the end of G29 probing. + * Useful to retract or move the Z probe out of the way. + */ +//#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // @section homing diff --git a/Marlin/planner.cpp b/Marlin/planner.cpp index 45cd467f07..c55770e256 100644 --- a/Marlin/planner.cpp +++ b/Marlin/planner.cpp @@ -98,11 +98,11 @@ float Planner::min_feedrate_mm_s, Planner::max_e_jerk, Planner::min_travel_feedrate_mm_s; -#if ENABLED(AUTO_BED_LEVELING_FEATURE) +#if HAS_ABL bool Planner::abl_enabled = false; // Flag that auto bed leveling is enabled #endif -#if ENABLED(AUTO_BED_LEVELING_LINEAR) +#if ABL_PLANAR matrix_3x3 Planner::bed_level_matrix; // Transform to compensate for bed level #endif @@ -142,7 +142,7 @@ void Planner::init() { memset(position, 0, sizeof(position)); memset(previous_speed, 0, sizeof(previous_speed)); previous_nominal_speed = 0.0; - #if ENABLED(AUTO_BED_LEVELING_LINEAR) + #if ABL_PLANAR bed_level_matrix.set_to_identity(); #endif } @@ -529,7 +529,7 @@ void Planner::check_axes_activity() { void Planner::apply_leveling(float &lx, float &ly, float &lz) { - #if ENABLED(AUTO_BED_LEVELING_FEATURE) + #if HAS_ABL if (!abl_enabled) return; #endif @@ -538,7 +538,7 @@ void Planner::check_axes_activity() { if (mbl.active()) lz += mbl.get_z(RAW_X_POSITION(lx), RAW_Y_POSITION(ly)); - #elif ENABLED(AUTO_BED_LEVELING_LINEAR) + #elif ABL_PLANAR float dx = RAW_X_POSITION(lx) - (X_TILT_FULCRUM), dy = RAW_Y_POSITION(ly) - (Y_TILT_FULCRUM), @@ -550,20 +550,20 @@ void Planner::check_axes_activity() { ly = LOGICAL_Y_POSITION(dy + Y_TILT_FULCRUM); lz = LOGICAL_Z_POSITION(dz); - #elif ENABLED(AUTO_BED_LEVELING_NONLINEAR) + #elif ENABLED(AUTO_BED_LEVELING_BILINEAR) float tmp[XYZ] = { lx, ly, 0 }; #if ENABLED(DELTA) - float offset = nonlinear_z_offset(tmp); + float offset = bilinear_z_offset(tmp); lx += offset; ly += offset; lz += offset; #else - lz += nonlinear_z_offset(tmp); + lz += bilinear_z_offset(tmp); #endif @@ -572,7 +572,7 @@ void Planner::check_axes_activity() { void Planner::unapply_leveling(float logical[XYZ]) { - #if ENABLED(AUTO_BED_LEVELING_FEATURE) + #if HAS_ABL if (!abl_enabled) return; #endif @@ -581,7 +581,7 @@ void Planner::check_axes_activity() { if (mbl.active()) logical[Z_AXIS] -= mbl.get_z(RAW_X_POSITION(logical[X_AXIS]), RAW_Y_POSITION(logical[Y_AXIS])); - #elif ENABLED(AUTO_BED_LEVELING_LINEAR) + #elif ABL_PLANAR matrix_3x3 inverse = matrix_3x3::transpose(bed_level_matrix); @@ -595,9 +595,9 @@ void Planner::check_axes_activity() { logical[Y_AXIS] = LOGICAL_Y_POSITION(dy + Y_TILT_FULCRUM); logical[Z_AXIS] = LOGICAL_Z_POSITION(dz); - #elif ENABLED(AUTO_BED_LEVELING_NONLINEAR) + #elif ENABLED(AUTO_BED_LEVELING_BILINEAR) - logical[Z_AXIS] -= nonlinear_z_offset(logical); + logical[Z_AXIS] -= bilinear_z_offset(logical); #endif } diff --git a/Marlin/planner.h b/Marlin/planner.h index 27505e9386..499f9eb529 100644 --- a/Marlin/planner.h +++ b/Marlin/planner.h @@ -35,7 +35,7 @@ #include "types.h" #include "MarlinConfig.h" -#if ENABLED(AUTO_BED_LEVELING_FEATURE) +#if HAS_ABL #include "vector_3.h" #endif @@ -136,7 +136,7 @@ class Planner { static float max_e_jerk; static float min_travel_feedrate_mm_s; - #if ENABLED(AUTO_BED_LEVELING_FEATURE) + #if HAS_ABL static bool abl_enabled; // Flag that bed leveling is enabled static matrix_3x3 bed_level_matrix; // Transform to compensate for bed level #endif @@ -202,7 +202,7 @@ class Planner { static bool is_full() { return (block_buffer_tail == BLOCK_MOD(block_buffer_head + 1)); } - #if ENABLED(AUTO_BED_LEVELING_FEATURE) || ENABLED(MESH_BED_LEVELING) + #if HAS_ABL || ENABLED(MESH_BED_LEVELING) #define ARG_X float lx #define ARG_Y float ly #define ARG_Z float lz diff --git a/Marlin/qr_solve.cpp b/Marlin/qr_solve.cpp index 9404f8ee5e..20bbb62994 100644 --- a/Marlin/qr_solve.cpp +++ b/Marlin/qr_solve.cpp @@ -22,7 +22,7 @@ #include "qr_solve.h" -#if ENABLED(AUTO_BED_LEVELING_LINEAR_GRID) +#if ENABLED(AUTO_BED_LEVELING_LINEAR) #include #include diff --git a/Marlin/qr_solve.h b/Marlin/qr_solve.h index a83509db78..c409220d31 100644 --- a/Marlin/qr_solve.h +++ b/Marlin/qr_solve.h @@ -22,7 +22,7 @@ #include "MarlinConfig.h" -#if ENABLED(AUTO_BED_LEVELING_GRID) +#if ENABLED(AUTO_BED_LEVELING_LINEAR) void daxpy(int n, float da, float dx[], int incx, float dy[], int incy); float ddot(int n, float dx[], int incx, float dy[], int incy); diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index d327103c9e..644ee40849 100755 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -1212,7 +1212,7 @@ void kill_screen(const char* lcd_msg) { // // Level Bed // - #if ENABLED(AUTO_BED_LEVELING_FEATURE) + #if HAS_ABL MENU_ITEM(gcode, MSG_LEVEL_BED, axis_homed[X_AXIS] && axis_homed[Y_AXIS] ? PSTR("G29") : PSTR("G28\nG29") ); diff --git a/Marlin/vector_3.cpp b/Marlin/vector_3.cpp index 1cca0d9d8d..c5f0cc0547 100644 --- a/Marlin/vector_3.cpp +++ b/Marlin/vector_3.cpp @@ -41,7 +41,7 @@ #include #include "Marlin.h" -#if ENABLED(AUTO_BED_LEVELING_FEATURE) +#if HAS_ABL #include "vector_3.h" vector_3::vector_3() : x(0), y(0), z(0) { } @@ -156,5 +156,5 @@ void matrix_3x3::debug(const char title[]) { } } -#endif // AUTO_BED_LEVELING_FEATURE +#endif // HAS_ABL diff --git a/Marlin/vector_3.h b/Marlin/vector_3.h index e76188b04b..efc0132fe5 100644 --- a/Marlin/vector_3.h +++ b/Marlin/vector_3.h @@ -41,7 +41,7 @@ #ifndef VECTOR_3_H #define VECTOR_3_H -#if ENABLED(AUTO_BED_LEVELING_FEATURE) +#if HAS_ABL class matrix_3x3; struct vector_3 { @@ -77,6 +77,6 @@ struct matrix_3x3 { void apply_rotation_xyz(matrix_3x3 rotationMatrix, float& x, float& y, float& z); -#endif // AUTO_BED_LEVELING_FEATURE +#endif // HAS_ABL #endif // VECTOR_3_H From 18e40de39c55685e293b90ee1d3ae1eefc3fe482 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 26 Sep 2016 00:11:27 -0500 Subject: [PATCH 2/2] Adjust final Z after bilinear G29 --- Marlin/Marlin_main.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index f3d5d1f073..e5257f87fd 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -3818,7 +3818,7 @@ inline void gcode_G28() { // 1. Get the distance from the current position to the reference point. float x_dist = RAW_CURRENT_POSITION(X_AXIS) - X_TILT_FULCRUM, y_dist = RAW_CURRENT_POSITION(Y_AXIS) - Y_TILT_FULCRUM, - z_real = RAW_CURRENT_POSITION(Z_AXIS), + z_real = current_position[Z_AXIS], z_zero = 0; #if ENABLED(DEBUG_LEVELING_FEATURE) @@ -3853,7 +3853,7 @@ inline void gcode_G28() { // 5. The rotated XY and corrected Z are now current_position current_position[X_AXIS] = LOGICAL_X_POSITION(x_dist) + X_TILT_FULCRUM; current_position[Y_AXIS] = LOGICAL_Y_POSITION(y_dist) + Y_TILT_FULCRUM; - current_position[Z_AXIS] = LOGICAL_Z_POSITION(new_z); + current_position[Z_AXIS] = new_z; SYNC_PLAN_POSITION_KINEMATIC(); @@ -3862,6 +3862,22 @@ inline void gcode_G28() { #endif } + #elif ENABLED(AUTO_BED_LEVELING_BILINEAR) + + if (!dryrun) { + #if ENABLED(DEBUG_LEVELING_FEATURE) + if (DEBUGGING(LEVELING)) SERIAL_ECHOPAIR("G29 uncorrected Z:", current_position[Z_AXIS]); + #endif + + current_position[Z_AXIS] -= bilinear_z_offset(current_position); + + SYNC_PLAN_POSITION_KINEMATIC(); + + #if ENABLED(DEBUG_LEVELING_FEATURE) + if (DEBUGGING(LEVELING)) SERIAL_ECHOPAIR("G29 corrected Z:", current_position[Z_AXIS]); + #endif + } + #endif // ABL_PLANAR #ifdef Z_PROBE_END_SCRIPT