From 3f45a1acf945ada935a3aab284185dd4d67e1726 Mon Sep 17 00:00:00 2001 From: AnHardt Date: Thu, 3 Dec 2015 14:19:29 +0100 Subject: [PATCH] Check probes only when deployed Aim: Test probes in update_endstops only when activated Changes: Configurations Add define for FIX_MOUNTED_PROBE to handle the situation where formerly ENDSTOPS_ONLY_FOR_HOMING had to be set, or lowering the nozzle below Z_PROBE_OFFSET_FROM_EXTRUDER could give an "endstop hit" message. Add define for Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN to indicate a common situation, that we have a probe but it is connected to an endstop pin Add some comments Shift some entries to have related things together. Conditionals.h We have a probe (HAS_Z_MIN_PROBE) if one of the pins is defined AND one of the probes is defined. SanityCheck.h Add some tests if the probe is connected and if we have defined a probe. stepper.cpp Changes to test the probe only when it is deployed (z_probe_is_active). Test update_endstops() when the probe is deployed. MarlinMain.cpp a. set and reset z_probe_is_active in deploy_z_probe(), stow_z_probe() and dock_sled() b. set and reset z_probe_is_active in the case a z-servo is moved to a defined position. The only remaining unhandled servo move is in M280 where we do not end in a defined position. If you want to handle a probe use M401/402 c. skip deploying/stowing when already deployed/stowed in the dedicated deploy/stow functions. d. Handle the new FIX_MOUNTED_PROBE in parallel to a servo driven probe/endstop. To do: In another PR. handle all probes in deploy/stow_z_probe. Sort out SERVO_LEVELING vs. HAS_SERVO_ENDSTOPS. --- Marlin/Conditionals.h | 5 + Marlin/Configuration.h | 103 +++++++++++------- Marlin/Marlin_main.cpp | 103 +++++++++++++----- Marlin/SanityCheck.h | 28 +++++ .../Felix/Configuration.h | 90 +++++++++------ .../Felix/Configuration_DUAL.h | 90 +++++++++------ .../Hephestos/Configuration.h | 90 +++++++++------ .../Hephestos_2/Configuration.h | 75 +++++++------ .../K8200/Configuration.h | 90 +++++++++------ .../RepRapWorld/Megatronics/Configuration.h | 90 +++++++++------ .../RigidBot/Configuration.h | 90 +++++++++------ .../SCARA/Configuration.h | 90 +++++++++------ .../TAZ4/Configuration.h | 59 +++++++++- .../WITBOX/Configuration.h | 90 +++++++++------ .../adafruit/ST7565/Configuration.h | 90 +++++++++------ .../delta/biv2.5/Configuration.h | 90 +++++++++------ .../delta/generic/Configuration.h | 90 +++++++++------ .../delta/kossel_mini/Configuration.h | 90 +++++++++------ .../delta/kossel_pro/Configuration.h | 90 +++++++++------ .../delta/kossel_xl/Configuration.h | 90 +++++++++------ .../makibox/Configuration.h | 90 +++++++++------ .../tvrrug/Round2/Configuration.h | 90 +++++++++------ Marlin/stepper.cpp | 28 +++-- 23 files changed, 1199 insertions(+), 642 deletions(-) diff --git a/Marlin/Conditionals.h b/Marlin/Conditionals.h index 95cab2075..e9a363312 100644 --- a/Marlin/Conditionals.h +++ b/Marlin/Conditionals.h @@ -572,5 +572,10 @@ #endif #endif + #if ( (HAS_Z_MIN && ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)) || HAS_Z_PROBE ) && \ + ( ENABLED(FIX_MOUNTED_PROBE) || defined(Z_ENDSTOP_SERVO_NR) || ENABLED(Z_PROBE_ALLEN_KEY) || ENABLED(Z_PROBE_SLED) ) + #define HAS_Z_MIN_PROBE + #endif + #endif //CONFIGURATION_LCD #endif //CONDITIONALS_H diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index bb8b8ba26..3dfa8f9a3 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -337,10 +337,52 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#define DISABLE_MAX_ENDSTOPS //#define DISABLE_MIN_ENDSTOPS -// If you want to enable the Z probe pin, but disable its use, uncomment the line below. -// This only affects a Z probe endstop if you have separate Z min endstop as well and have -// activated Z_MIN_PROBE_ENDSTOP below. If you are using the Z Min endstop on your Z probe, -// this has no effect. +//=========================================================================== +//============================= Z Probe Options ============================= +//=========================================================================== + +// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z-probe and a Z-min-endstop on the same machine. +// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. +// +// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** +// +// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. +// Example: To park the head outside the bed area when homing with G28. +// +// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. +// +// For a servo-based Z probe, you must set up servo support below, including +// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES. +// +// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. +// - Use 5V for powered (usu. inductive) sensors. +// - Otherwise connect: +// - normally-closed switches to GND and D32. +// - normally-open switches to 5V and D32. +// +// Normally-closed switches are advised and are the default. +// +// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) +// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the +// default pin for all RAMPS-based boards. Some other boards map differently. +// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. +// +// WARNING: +// Setting the wrong pin may have unexpected and potentially disastrous consequences. +// Use with caution and do your homework. +// +//#define Z_MIN_PROBE_ENDSTOP + +// Enable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN to use the Z_MIN_PIN for your Z_MIN_PROBE. +// The Z_MIN_PIN will then be used for both Z-homing and probing. +#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN + +// To use a probe you must enable one of the two options above! + +// This option disables the use of the Z_MIN_PROBE_PIN +// To enable the Z probe pin but disable its use, uncomment the line below. This only affects a +// Z probe switch if you have a separate Z min endstop also and have activated Z_MIN_PROBE_ENDSTOP above. +// If you're using the Z MIN endstop connector for your Z probe, this has no effect. //#define DISABLE_Z_MIN_PROBE_ENDSTOP // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 @@ -521,14 +563,26 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#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. - //#define Z_PROBE_SLED // Turn on if you have a Z probe mounted on a sled like those designed by Charles Bell. - //#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. + // Probes are sensors/switches that need to be activated before they can be used + // and deactivated after the use. + // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE + + // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER + // when the hardware endstops are active. + //#define FIX_MOUNTED_PROBE + + // A Servo Probe can be defined in the servo section below. + + // An Allen Key Probe is currently predefined only in the delta example configurations. + //#define Z_PROBE_SLED // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell. + //#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. - //If you have enabled the Bed Auto Leveling and are using the same Z Probe for Z Homing, - //it is highly recommended you let this Z_SAFE_HOMING enabled!!! + // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, + // it is highly recommended you leave Z_SAFE_HOMING enabled! - #define Z_SAFE_HOMING // This feature is meant to avoid Z homing with Z probe outside the bed area. + #define Z_SAFE_HOMING // Use the z-min-probe for homing to z-min - not the z-min-endstop. + // This feature is meant to avoid Z homing with Z probe outside the bed area. // When defined, it will: // - Allow Z homing only after X and Y homing AND stepper drivers still enabled. // - If stepper drivers timeout, it will need X and Y homing again before Z homing. @@ -542,37 +596,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l #endif - // Support for a dedicated Z probe endstop separate from the Z min endstop. - // If you would like to use both a Z probe and a Z min endstop together, - // uncomment #define Z_MIN_PROBE_ENDSTOP and read the instructions below. - // If you still want to use the Z min endstop for homing, disable Z_SAFE_HOMING above. - // Example: To park the head outside the bed area when homing with G28. - // - // WARNING: - // The Z min endstop will need to set properly as it would without a Z probe - // to prevent head crashes and premature stopping during a print. - // - // To use a separate Z probe endstop, you must have a Z_MIN_PROBE_PIN - // defined in the pins_XXXXX.h file for your control board. - // If you are using a servo based Z probe, you will need to enable NUM_SERVOS, - // Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES in the R/C SERVO support below. - // RAMPS 1.3/1.4 boards may be able to use the 5V, Ground and the D32 pin - // in the Aux 4 section of the RAMPS board. Use 5V for powered sensors, - // otherwise connect to ground and D32 for normally closed configuration - // and 5V and D32 for normally open configurations. - // Normally closed configuration is advised and assumed. - // The D32 pin in Aux 4 on RAMPS maps to the Arduino D32 pin. - // Z_MIN_PROBE_PIN is setting the pin to use on the Arduino. - // Since the D32 pin on the RAMPS maps to D32 on Arduino, this works. - // D32 is currently selected in the RAMPS 1.3/1.4 pin file. - // All other boards will need changes to the respective pins_XXXXX.h file. - // - // WARNING: - // Setting the wrong pin may have unexpected and potentially disastrous outcomes. - // Use with caution and do your homework. - // - //#define Z_MIN_PROBE_ENDSTOP - #endif // AUTO_BED_LEVELING_FEATURE diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 984e2636a..5340c3960 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -462,6 +462,10 @@ void serial_echopair_P(const char* s_P, unsigned long v) { serialprintPGM(s_P); float extrude_min_temp = EXTRUDE_MINTEMP; #endif +#if ENABLED(HAS_Z_MIN_PROBE) + extern volatile bool z_probe_is_active; +#endif + #if ENABLED(SDSUPPORT) #include "SdFatUtil.h" int freeMemory() { return SdFatUtil::FreeRam(); } @@ -619,12 +623,26 @@ void servo_init() { servo[3].detach(); #endif - // Set position of Servo Endstops that are defined - #if HAS_SERVO_ENDSTOPS + #if HAS_SERVO_ENDSTOPS + + z_probe_is_active = false; + + /** + * Set position of all defined Servo Endstops + * + * ** UNSAFE! - NEEDS UPDATE! ** + * + * The servo might be deployed and positioned too low to stow + * when starting up the machine or rebooting the board. + * There's no way to know where the nozzle is positioned until + * homing has been done - no homing with z-probe without init! + * + */ for (int i = 0; i < 3; i++) if (servo_endstop_id[i] >= 0) servo[servo_endstop_id[i]].move(servo_endstop_angle[i][1]); - #endif + + #endif // HAS_SERVO_ENDSTOPS } @@ -1458,6 +1476,8 @@ static void setup_for_endstop_move() { refresh_cmd_timeout(); } + #if ENABLED(HAS_Z_MIN_PROBE) + static void deploy_z_probe() { #if ENABLED(DEBUG_LEVELING_FEATURE) @@ -1466,6 +1486,8 @@ static void setup_for_endstop_move() { } #endif + if (z_probe_is_active) return; + #if HAS_SERVO_ENDSTOPS // Engage Z Servo endstop if enabled @@ -1505,20 +1527,19 @@ static void setup_for_endstop_move() { if (Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE != Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE) feedrate = Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE; - // Move to trigger deployment - if (Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE != Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE) - feedrate = Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE; - if (Z_PROBE_ALLEN_KEY_DEPLOY_3_X != Z_PROBE_ALLEN_KEY_DEPLOY_2_X) - destination[X_AXIS] = Z_PROBE_ALLEN_KEY_DEPLOY_3_X; - if (Z_PROBE_ALLEN_KEY_DEPLOY_3_Y != Z_PROBE_ALLEN_KEY_DEPLOY_2_Y) - destination[Y_AXIS] = Z_PROBE_ALLEN_KEY_DEPLOY_3_Y; - if (Z_PROBE_ALLEN_KEY_DEPLOY_3_Z != Z_PROBE_ALLEN_KEY_DEPLOY_2_Z) - destination[Z_AXIS] = Z_PROBE_ALLEN_KEY_DEPLOY_3_Z; - - prepare_move_raw(); - - #endif - } + // Move to trigger deployment + if (Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE != Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE) + feedrate = Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE; + if (Z_PROBE_ALLEN_KEY_DEPLOY_3_X != Z_PROBE_ALLEN_KEY_DEPLOY_2_X) + destination[X_AXIS] = Z_PROBE_ALLEN_KEY_DEPLOY_3_X; + if (Z_PROBE_ALLEN_KEY_DEPLOY_3_Y != Z_PROBE_ALLEN_KEY_DEPLOY_2_Y) + destination[Y_AXIS] = Z_PROBE_ALLEN_KEY_DEPLOY_3_Y; + if (Z_PROBE_ALLEN_KEY_DEPLOY_3_Z != Z_PROBE_ALLEN_KEY_DEPLOY_2_Z) + destination[Z_AXIS] = Z_PROBE_ALLEN_KEY_DEPLOY_3_Z; + + prepare_move_raw(); + #endif + } // Partially Home X,Y for safety destination[X_AXIS] = destination[X_AXIS] * 0.75; @@ -1545,6 +1566,12 @@ static void setup_for_endstop_move() { #endif // Z_PROBE_ALLEN_KEY + #if ENABLED(FIX_MOUNTED_PROBE) + // Noting to be done. Just set z_probe_is_active + #endif + + z_probe_is_active = true; + } static void stow_z_probe(bool doRaise = true) { @@ -1554,6 +1581,8 @@ static void setup_for_endstop_move() { } #endif + if (!z_probe_is_active) return; + #if HAS_SERVO_ENDSTOPS // Retract Z Servo endstop if enabled @@ -1638,7 +1667,14 @@ static void setup_for_endstop_move() { Stop(); } #endif // Z_PROBE_ALLEN_KEY + + #if ENABLED(FIX_MOUNTED_PROBE) + // Noting to be done. Just set z_probe_is_active + #endif + + z_probe_is_active = false; } + #endif // HAS_Z_MIN_PROBE enum ProbeAction { ProbeStay = 0, @@ -1825,6 +1861,9 @@ static void setup_for_endstop_move() { SERIAL_EOL; } #endif + + if (z_probe_is_active == dock) return; + if (!axis_known_position[X_AXIS] || !axis_known_position[Y_AXIS]) { LCD_MESSAGEPGM(MSG_POSITION_UNKNOWN); SERIAL_ECHO_START; @@ -1847,6 +1886,8 @@ static void setup_for_endstop_move() { digitalWrite(SLED_PIN, HIGH); // turn on magnet } do_blocking_move_to_x(oldXpos); // return to position before docking + + z_probe_is_active = dock; } #endif // Z_PROBE_SLED @@ -1887,9 +1928,7 @@ static void homeaxis(AxisEnum axis) { if (axis == Z_AXIS) { if (axis_home_dir < 0) dock_sled(false); } - #endif - - #if SERVO_LEVELING && DISABLED(Z_PROBE_SLED) + #elif SERVO_LEVELING || ENABLED(FIX_MOUNTED_PROBE) // Deploy a Z probe if there is one, and homing towards the bed if (axis == Z_AXIS) { @@ -1900,8 +1939,10 @@ static void homeaxis(AxisEnum axis) { #if HAS_SERVO_ENDSTOPS // Engage Servo endstop if enabled - if (axis != Z_AXIS && servo_endstop_id[axis] >= 0) + if (axis != Z_AXIS && servo_endstop_id[axis] >= 0) { servo[servo_endstop_id[axis]].move(servo_endstop_angle[axis][0]); + z_probe_is_active = true; + } #endif // Set a flag for Z motor locking @@ -2034,9 +2075,7 @@ static void homeaxis(AxisEnum axis) { if (axis == Z_AXIS) { if (axis_home_dir < 0) dock_sled(true); } - #endif - - #if SERVO_LEVELING && DISABLED(Z_PROBE_SLED) + #elif SERVO_LEVELING || ENABLED(FIX_MOUNTED_PROBE) // Deploy a Z probe if there is one, and homing towards the bed if (axis == Z_AXIS) { @@ -2063,6 +2102,7 @@ static void homeaxis(AxisEnum axis) { } #endif servo[servo_endstop_id[axis]].move(servo_endstop_angle[axis][1]); + z_probe_is_active = false; } #endif } @@ -3195,7 +3235,7 @@ inline void gcode_G28() { #if ENABLED(Z_PROBE_ALLEN_KEY) stow_z_probe(); #elif Z_RAISE_AFTER_PROBING > 0 - raise_z_after_probing(); + raise_z_after_probing(); // ??? #endif #else // !DELTA if (verbose_level > 0) @@ -3279,6 +3319,9 @@ inline void gcode_G28() { } #endif enqueue_and_echo_commands_P(PSTR(Z_PROBE_END_SCRIPT)); + #if ENABLED(HAS_Z_MIN_PROBE) + z_probe_is_active = false; + #endif st_synchronize(); #endif @@ -3292,7 +3335,7 @@ inline void gcode_G28() { } - #if DISABLED(Z_PROBE_SLED) + #if DISABLED(Z_PROBE_SLED) // could be avoided /** * G30: Do a single Z probe at the current XY @@ -3301,11 +3344,11 @@ inline void gcode_G28() { #if HAS_SERVO_ENDSTOPS raise_z_for_servo(); #endif - deploy_z_probe(); // Engage Z Servo endstop if available + deploy_z_probe(); // Engage Z Servo endstop if available. Z_PROBE_SLED is missed her. st_synchronize(); // TODO: clear the leveling matrix or the planner will be set incorrectly - setup_for_endstop_move(); + setup_for_endstop_move(); // to late. Must be done before deploying. feedrate = homing_feedrate[Z_AXIS]; @@ -3318,12 +3361,12 @@ inline void gcode_G28() { SERIAL_PROTOCOL(current_position[Z_AXIS] + 0.0001); SERIAL_EOL; - clean_up_after_endstop_move(); + clean_up_after_endstop_move(); // to early. must be done after the stowing. #if HAS_SERVO_ENDSTOPS raise_z_for_servo(); #endif - stow_z_probe(false); // Retract Z Servo endstop if available + stow_z_probe(false); // Retract Z Servo endstop if available. Z_PROBE_SLED is missed her. } #endif //!Z_PROBE_SLED diff --git a/Marlin/SanityCheck.h b/Marlin/SanityCheck.h index a96ae8b39..98a486038 100644 --- a/Marlin/SanityCheck.h +++ b/Marlin/SanityCheck.h @@ -127,6 +127,34 @@ #error MESH_BED_LEVELING is required for MANUAL_BED_LEVELING. #endif +/** + * Probes + */ + + /** + * A probe needs a pin + */ +#if (!((HAS_Z_MIN && ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)) || HAS_Z_PROBE )) && ( ENABLED(FIX_MOUNTED_PROBE) || defined(Z_ENDSTOP_SERVO_NR) || ENABLED(Z_PROBE_ALLEN_KEY) || ENABLED(Z_PROBE_SLED)) + #error A probe needs a pin! [Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN || HAS_Z_PROBE] +#endif + +#if ((HAS_Z_MIN && ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)) && HAS_Z_PROBE) && ( ENABLED(FIX_MOUNTED_PROBE) || defined(Z_ENDSTOP_SERVO_NR) || ENABLED(Z_PROBE_ALLEN_KEY) || ENABLED(Z_PROBE_SLED)) + #error A probe should not be connected to more then one pin! [Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN || HAS_Z_PROBE] +#endif + + /** + * Require one kind of probe + */ +#if ENABLED(AUTO_BED_LEVELING_FEATURE) && !( ENABLED(FIX_MOUNTED_PROBE) || defined(Z_ENDSTOP_SERVO_NR) || ENABLED(Z_PROBE_ALLEN_KEY) || ENABLED(Z_PROBE_SLED)) + #error For AUTO_BED_LEVELING_FEATURE define one kind of probe! {Servo | Z_PROBE_ALLEN_KEY | Z_PROBE_SLED | FIX_MOUNTED_PROBE] +#endif + +#if ENABLED(Z_SAFE_HOMING)&& !( ENABLED(FIX_MOUNTED_PROBE) || defined(Z_ENDSTOP_SERVO_NR) || ENABLED(Z_PROBE_ALLEN_KEY) || ENABLED(Z_PROBE_SLED)) + #error For Z_SAFE_HOMING define one kind of probe! {Servo | Z_PROBE_ALLEN_KEY | Z_PROBE_SLED | FIX_MOUNTED_PROBE] +#endif + +// To do: Fail with more then one probe defined + /** * Auto Bed Leveling */ diff --git a/Marlin/example_configurations/Felix/Configuration.h b/Marlin/example_configurations/Felix/Configuration.h index c9d7e970e..aa29ce6cd 100644 --- a/Marlin/example_configurations/Felix/Configuration.h +++ b/Marlin/example_configurations/Felix/Configuration.h @@ -319,10 +319,52 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l #define DISABLE_MAX_ENDSTOPS //#define DISABLE_MIN_ENDSTOPS +//=========================================================================== +//============================= Z Probe Options ============================= +//=========================================================================== + +// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z-probe and a Z-min-endstop on the same machine. +// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. +// +// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** +// +// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. +// Example: To park the head outside the bed area when homing with G28. +// +// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. +// +// For a servo-based Z probe, you must set up servo support below, including +// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES. +// +// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. +// - Use 5V for powered (usu. inductive) sensors. +// - Otherwise connect: +// - normally-closed switches to GND and D32. +// - normally-open switches to 5V and D32. +// +// Normally-closed switches are advised and are the default. +// +// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) +// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the +// default pin for all RAMPS-based boards. Some other boards map differently. +// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. +// +// WARNING: +// Setting the wrong pin may have unexpected and potentially disastrous consequences. +// Use with caution and do your homework. +// +//#define Z_MIN_PROBE_ENDSTOP + +// If you want to use the Z_MIN_PIN to connect your Z_MIN_PROBE comment out the next define. +// In other words. The z-min-probe is connected to the Z_MIN_PIN and is used for homing and for probing. +#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN +// If you want to use a probe you do have to define one of the two defines above! + // If you want to enable the Z probe pin, but disable its use, uncomment the line below. // This only affects a Z probe endstop if you have separate Z min endstop as well and have -// activated Z_MIN_PROBE_ENDSTOP below. If you are using the Z Min endstop on your Z probe, +// activated Z_MIN_PROBE_ENDSTOP above. If you are using the Z Min endstop on your Z probe, // this has no effect. +// In other words. If a Z_MIN_PROBE_PIN is defined in your pin file - don't use it. //#define DISABLE_Z_MIN_PROBE_ENDSTOP // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 @@ -503,6 +545,18 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#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. + // Probes are sensors/switches that need to be activated before they can be used + // and deactivated after the use. + // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE + + // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER + // when the hardware endstops are active. + //#define FIX_MOUNTED_PROBE + + // A Servo Probe can be defined in the servo section below. + + // A Allen Key Probe is currently predefined only in the delta example configurations. + //#define Z_PROBE_SLED // Turn on if you have a Z probe mounted on a sled like those designed by Charles Bell. //#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. @@ -510,7 +564,8 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //If you have enabled the Bed Auto Leveling and are using the same Z Probe for Z Homing, //it is highly recommended you let this Z_SAFE_HOMING enabled!!! - #define Z_SAFE_HOMING // This feature is meant to avoid Z homing with Z probe outside the bed area. + #define Z_SAFE_HOMING // Use the z-min-probe for homing to z-min - not the z-min-endstop. + // This feature is meant to avoid Z homing with Z probe outside the bed area. // When defined, it will: // - Allow Z homing only after X and Y homing AND stepper drivers still enabled. // - If stepper drivers timeout, it will need X and Y homing again before Z homing. @@ -524,37 +579,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l #endif - // Support for a dedicated Z probe endstop separate from the Z min endstop. - // If you would like to use both a Z probe and a Z min endstop together, - // uncomment #define Z_MIN_PROBE_ENDSTOP and read the instructions below. - // If you still want to use the Z min endstop for homing, disable Z_SAFE_HOMING above. - // Example: To park the head outside the bed area when homing with G28. - // - // WARNING: - // The Z min endstop will need to set properly as it would without a Z probe - // to prevent head crashes and premature stopping during a print. - // - // To use a separate Z probe endstop, you must have a Z_MIN_PROBE_PIN - // defined in the pins_XXXXX.h file for your control board. - // If you are using a servo based Z probe, you will need to enable NUM_SERVOS, - // Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES in the R/C SERVO support below. - // RAMPS 1.3/1.4 boards may be able to use the 5V, Ground and the D32 pin - // in the Aux 4 section of the RAMPS board. Use 5V for powered sensors, - // otherwise connect to ground and D32 for normally closed configuration - // and 5V and D32 for normally open configurations. - // Normally closed configuration is advised and assumed. - // The D32 pin in Aux 4 on RAMPS maps to the Arduino D32 pin. - // Z_MIN_PROBE_PIN is setting the pin to use on the Arduino. - // Since the D32 pin on the RAMPS maps to D32 on Arduino, this works. - // D32 is currently selected in the RAMPS 1.3/1.4 pin file. - // All other boards will need changes to the respective pins_XXXXX.h file. - // - // WARNING: - // Setting the wrong pin may have unexpected and potentially disastrous outcomes. - // Use with caution and do your homework. - // - //#define Z_MIN_PROBE_ENDSTOP - #endif // AUTO_BED_LEVELING_FEATURE diff --git a/Marlin/example_configurations/Felix/Configuration_DUAL.h b/Marlin/example_configurations/Felix/Configuration_DUAL.h index 6f2cffa61..73f278f96 100644 --- a/Marlin/example_configurations/Felix/Configuration_DUAL.h +++ b/Marlin/example_configurations/Felix/Configuration_DUAL.h @@ -316,10 +316,52 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l #define DISABLE_MAX_ENDSTOPS //#define DISABLE_MIN_ENDSTOPS +//=========================================================================== +//============================= Z Probe Options ============================= +//=========================================================================== + +// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z-probe and a Z-min-endstop on the same machine. +// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. +// +// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** +// +// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. +// Example: To park the head outside the bed area when homing with G28. +// +// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. +// +// For a servo-based Z probe, you must set up servo support below, including +// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES. +// +// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. +// - Use 5V for powered (usu. inductive) sensors. +// - Otherwise connect: +// - normally-closed switches to GND and D32. +// - normally-open switches to 5V and D32. +// +// Normally-closed switches are advised and are the default. +// +// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) +// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the +// default pin for all RAMPS-based boards. Some other boards map differently. +// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. +// +// WARNING: +// Setting the wrong pin may have unexpected and potentially disastrous consequences. +// Use with caution and do your homework. +// +//#define Z_MIN_PROBE_ENDSTOP + +// If you want to use the Z_MIN_PIN to connect your Z_MIN_PROBE comment out the next define. +// In other words. The z-min-probe is connected to the Z_MIN_PIN and is used for homing and for probing. +#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN +// If you want to use a probe you do have to define one of the two defines above! + // If you want to enable the Z probe pin, but disable its use, uncomment the line below. // This only affects a Z probe endstop if you have separate Z min endstop as well and have -// activated Z_MIN_PROBE_ENDSTOP below. If you are using the Z Min endstop on your Z probe, +// activated Z_MIN_PROBE_ENDSTOP above. If you are using the Z Min endstop on your Z probe, // this has no effect. +// In other words. If a Z_MIN_PROBE_PIN is defined in your pin file - don't use it. //#define DISABLE_Z_MIN_PROBE_ENDSTOP // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 @@ -500,6 +542,18 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#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. + // Probes are sensors/switches that need to be activated before they can be used + // and deactivated after the use. + // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE + + // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER + // when the hardware endstops are active. + //#define FIX_MOUNTED_PROBE + + // A Servo Probe can be defined in the servo section below. + + // A Allen Key Probe is currently predefined only in the delta example configurations. + //#define Z_PROBE_SLED // Turn on if you have a Z probe mounted on a sled like those designed by Charles Bell. //#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. @@ -507,7 +561,8 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //If you have enabled the Bed Auto Leveling and are using the same Z Probe for Z Homing, //it is highly recommended you let this Z_SAFE_HOMING enabled!!! - #define Z_SAFE_HOMING // This feature is meant to avoid Z homing with Z probe outside the bed area. + #define Z_SAFE_HOMING // Use the z-min-probe for homing to z-min - not the z-min-endstop. + // This feature is meant to avoid Z homing with Z probe outside the bed area. // When defined, it will: // - Allow Z homing only after X and Y homing AND stepper drivers still enabled. // - If stepper drivers timeout, it will need X and Y homing again before Z homing. @@ -521,37 +576,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l #endif - // Support for a dedicated Z probe endstop separate from the Z min endstop. - // If you would like to use both a Z probe and a Z min endstop together, - // uncomment #define Z_MIN_PROBE_ENDSTOP and read the instructions below. - // If you still want to use the Z min endstop for homing, disable Z_SAFE_HOMING above. - // Example: To park the head outside the bed area when homing with G28. - // - // WARNING: - // The Z min endstop will need to set properly as it would without a Z probe - // to prevent head crashes and premature stopping during a print. - // - // To use a separate Z probe endstop, you must have a Z_MIN_PROBE_PIN - // defined in the pins_XXXXX.h file for your control board. - // If you are using a servo based Z probe, you will need to enable NUM_SERVOS, - // Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES in the R/C SERVO support below. - // RAMPS 1.3/1.4 boards may be able to use the 5V, Ground and the D32 pin - // in the Aux 4 section of the RAMPS board. Use 5V for powered sensors, - // otherwise connect to ground and D32 for normally closed configuration - // and 5V and D32 for normally open configurations. - // Normally closed configuration is advised and assumed. - // The D32 pin in Aux 4 on RAMPS maps to the Arduino D32 pin. - // Z_MIN_PROBE_PIN is setting the pin to use on the Arduino. - // Since the D32 pin on the RAMPS maps to D32 on Arduino, this works. - // D32 is currently selected in the RAMPS 1.3/1.4 pin file. - // All other boards will need changes to the respective pins_XXXXX.h file. - // - // WARNING: - // Setting the wrong pin may have unexpected and potentially disastrous outcomes. - // Use with caution and do your homework. - // - //#define Z_MIN_PROBE_ENDSTOP - #endif // AUTO_BED_LEVELING_FEATURE diff --git a/Marlin/example_configurations/Hephestos/Configuration.h b/Marlin/example_configurations/Hephestos/Configuration.h index 7fdec04dd..1d538a30b 100644 --- a/Marlin/example_configurations/Hephestos/Configuration.h +++ b/Marlin/example_configurations/Hephestos/Configuration.h @@ -329,10 +329,52 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo //#define DISABLE_MAX_ENDSTOPS //#define DISABLE_MIN_ENDSTOPS +//=========================================================================== +//============================= Z Probe Options ============================= +//=========================================================================== + +// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z-probe and a Z-min-endstop on the same machine. +// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. +// +// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** +// +// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. +// Example: To park the head outside the bed area when homing with G28. +// +// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. +// +// For a servo-based Z probe, you must set up servo support below, including +// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES. +// +// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. +// - Use 5V for powered (usu. inductive) sensors. +// - Otherwise connect: +// - normally-closed switches to GND and D32. +// - normally-open switches to 5V and D32. +// +// Normally-closed switches are advised and are the default. +// +// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) +// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the +// default pin for all RAMPS-based boards. Some other boards map differently. +// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. +// +// WARNING: +// Setting the wrong pin may have unexpected and potentially disastrous consequences. +// Use with caution and do your homework. +// +//#define Z_MIN_PROBE_ENDSTOP + +// If you want to use the Z_MIN_PIN to connect your Z_MIN_PROBE comment out the next define. +// In other words. The z-min-probe is connected to the Z_MIN_PIN and is used for homing and for probing. +#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN +// If you want to use a probe you do have to define one of the two defines above! + // If you want to enable the Z probe pin, but disable its use, uncomment the line below. // This only affects a Z probe endstop if you have separate Z min endstop as well and have -// activated Z_MIN_PROBE_ENDSTOP below. If you are using the Z Min endstop on your Z probe, +// activated Z_MIN_PROBE_ENDSTOP above. If you are using the Z Min endstop on your Z probe, // this has no effect. +// In other words. If a Z_MIN_PROBE_PIN is defined in your pin file - don't use it. //#define DISABLE_Z_MIN_PROBE_ENDSTOP // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 @@ -513,6 +555,18 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo //#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. + // Probes are sensors/switches that need to be activated before they can be used + // and deactivated after the use. + // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE + + // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER + // when the hardware endstops are active. + //#define FIX_MOUNTED_PROBE + + // A Servo Probe can be defined in the servo section below. + + // A Allen Key Probe is currently predefined only in the delta example configurations. + //#define Z_PROBE_SLED // Turn on if you have a Z probe mounted on a sled like those designed by Charles Bell. //#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. @@ -520,7 +574,8 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo //If you have enabled the Bed Auto Leveling and are using the same Z Probe for Z Homing, //it is highly recommended you let this Z_SAFE_HOMING enabled!!! - #define Z_SAFE_HOMING // This feature is meant to avoid Z homing with Z probe outside the bed area. + #define Z_SAFE_HOMING // Use the z-min-probe for homing to z-min - not the z-min-endstop. + // This feature is meant to avoid Z homing with Z probe outside the bed area. // When defined, it will: // - Allow Z homing only after X and Y homing AND stepper drivers still enabled. // - If stepper drivers timeout, it will need X and Y homing again before Z homing. @@ -534,37 +589,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo #endif - // Support for a dedicated Z probe endstop separate from the Z min endstop. - // If you would like to use both a Z probe and a Z min endstop together, - // uncomment #define Z_MIN_PROBE_ENDSTOP and read the instructions below. - // If you still want to use the Z min endstop for homing, disable Z_SAFE_HOMING above. - // Example: To park the head outside the bed area when homing with G28. - // - // WARNING: - // The Z min endstop will need to set properly as it would without a Z probe - // to prevent head crashes and premature stopping during a print. - // - // To use a separate Z probe endstop, you must have a Z_MIN_PROBE_PIN - // defined in the pins_XXXXX.h file for your control board. - // If you are using a servo based Z probe, you will need to enable NUM_SERVOS, - // Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES in the R/C SERVO support below. - // RAMPS 1.3/1.4 boards may be able to use the 5V, Ground and the D32 pin - // in the Aux 4 section of the RAMPS board. Use 5V for powered sensors, - // otherwise connect to ground and D32 for normally closed configuration - // and 5V and D32 for normally open configurations. - // Normally closed configuration is advised and assumed. - // The D32 pin in Aux 4 on RAMPS maps to the Arduino D32 pin. - // Z_MIN_PROBE_PIN is setting the pin to use on the Arduino. - // Since the D32 pin on the RAMPS maps to D32 on Arduino, this works. - // D32 is currently selected in the RAMPS 1.3/1.4 pin file. - // All other boards will need changes to the respective pins_XXXXX.h file. - // - // WARNING: - // Setting the wrong pin may have unexpected and potentially disastrous outcomes. - // Use with caution and do your homework. - // - //#define Z_MIN_PROBE_ENDSTOP - #endif // AUTO_BED_LEVELING_FEATURE diff --git a/Marlin/example_configurations/Hephestos_2/Configuration.h b/Marlin/example_configurations/Hephestos_2/Configuration.h index b8a920bc7..4107e09f2 100644 --- a/Marlin/example_configurations/Hephestos_2/Configuration.h +++ b/Marlin/example_configurations/Hephestos_2/Configuration.h @@ -332,10 +332,52 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l #define DISABLE_MAX_ENDSTOPS //#define DISABLE_MIN_ENDSTOPS +//=========================================================================== +//============================= Z Probe Options ============================= +//=========================================================================== + +// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z-probe and a Z-min-endstop on the same machine. +// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. +// +// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** +// +// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. +// Example: To park the head outside the bed area when homing with G28. +// +// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. +// +// For a servo-based Z probe, you must set up servo support below, including +// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES. +// +// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. +// - Use 5V for powered (usu. inductive) sensors. +// - Otherwise connect: +// - normally-closed switches to GND and D32. +// - normally-open switches to 5V and D32. +// +// Normally-closed switches are advised and are the default. +// +// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) +// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the +// default pin for all RAMPS-based boards. Some other boards map differently. +// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. +// +// WARNING: +// Setting the wrong pin may have unexpected and potentially disastrous consequences. +// Use with caution and do your homework. +// +//#define Z_MIN_PROBE_ENDSTOP + +// If you want to use the Z_MIN_PIN to connect your Z_MIN_PROBE comment out the next define. +// In other words. The z-min-probe is connected to the Z_MIN_PIN and is used for homing and for probing. +#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN +// If you want to use a probe you do have to define one of the two defines above! + // If you want to enable the Z probe pin, but disable its use, uncomment the line below. // This only affects a Z probe endstop if you have separate Z min endstop as well and have -// activated Z_MIN_PROBE_ENDSTOP below. If you are using the Z Min endstop on your Z probe, +// activated Z_MIN_PROBE_ENDSTOP above. If you are using the Z Min endstop on your Z probe, // this has no effect. +// In other words. If a Z_MIN_PROBE_PIN is defined in your pin file - don't use it. //#define DISABLE_Z_MIN_PROBE_ENDSTOP // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 @@ -537,37 +579,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l #endif - // Support for a dedicated Z probe endstop separate from the Z min endstop. - // If you would like to use both a Z probe and a Z min endstop together, - // uncomment #define Z_MIN_PROBE_ENDSTOP and read the instructions below. - // If you still want to use the Z min endstop for homing, disable Z_SAFE_HOMING above. - // Example: To park the head outside the bed area when homing with G28. - // - // WARNING: - // The Z min endstop will need to set properly as it would without a Z probe - // to prevent head crashes and premature stopping during a print. - // - // To use a separate Z probe endstop, you must have a Z_MIN_PROBE_PIN - // defined in the pins_XXXXX.h file for your control board. - // If you are using a servo based Z probe, you will need to enable NUM_SERVOS, - // Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES in the R/C SERVO support below. - // RAMPS 1.3/1.4 boards may be able to use the 5V, Ground and the D32 pin - // in the Aux 4 section of the RAMPS board. Use 5V for powered sensors, - // otherwise connect to ground and D32 for normally closed configuration - // and 5V and D32 for normally open configurations. - // Normally closed configuration is advised and assumed. - // The D32 pin in Aux 4 on RAMPS maps to the Arduino D32 pin. - // Z_MIN_PROBE_PIN is setting the pin to use on the Arduino. - // Since the D32 pin on the RAMPS maps to D32 on Arduino, this works. - // D32 is currently selected in the RAMPS 1.3/1.4 pin file. - // All other boards will need changes to the respective pins_XXXXX.h file. - // - // WARNING: - // Setting the wrong pin may have unexpected and potentially disastrous outcomes. - // Use with caution and do your homework. - // - //#define Z_MIN_PROBE_ENDSTOP - #endif // AUTO_BED_LEVELING_FEATURE diff --git a/Marlin/example_configurations/K8200/Configuration.h b/Marlin/example_configurations/K8200/Configuration.h index 45c104eb7..12293b137 100644 --- a/Marlin/example_configurations/K8200/Configuration.h +++ b/Marlin/example_configurations/K8200/Configuration.h @@ -352,10 +352,52 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l #define DISABLE_MAX_ENDSTOPS //#define DISABLE_MIN_ENDSTOPS +//=========================================================================== +//============================= Z Probe Options ============================= +//=========================================================================== + +// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z-probe and a Z-min-endstop on the same machine. +// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. +// +// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** +// +// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. +// Example: To park the head outside the bed area when homing with G28. +// +// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. +// +// For a servo-based Z probe, you must set up servo support below, including +// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES. +// +// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. +// - Use 5V for powered (usu. inductive) sensors. +// - Otherwise connect: +// - normally-closed switches to GND and D32. +// - normally-open switches to 5V and D32. +// +// Normally-closed switches are advised and are the default. +// +// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) +// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the +// default pin for all RAMPS-based boards. Some other boards map differently. +// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. +// +// WARNING: +// Setting the wrong pin may have unexpected and potentially disastrous consequences. +// Use with caution and do your homework. +// +//#define Z_MIN_PROBE_ENDSTOP + +// If you want to use the Z_MIN_PIN to connect your Z_MIN_PROBE comment out the next define. +// In other words. The z-min-probe is connected to the Z_MIN_PIN and is used for homing and for probing. +#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN +// If you want to use a probe you do have to define one of the two defines above! + // If you want to enable the Z probe pin, but disable its use, uncomment the line below. // This only affects a Z probe endstop if you have separate Z min endstop as well and have -// activated Z_MIN_PROBE_ENDSTOP below. If you are using the Z Min endstop on your Z probe, +// activated Z_MIN_PROBE_ENDSTOP above. If you are using the Z Min endstop on your Z probe, // this has no effect. +// In other words. If a Z_MIN_PROBE_PIN is defined in your pin file - don't use it. //#define DISABLE_Z_MIN_PROBE_ENDSTOP // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 @@ -536,6 +578,18 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#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. + // Probes are sensors/switches that need to be activated before they can be used + // and deactivated after the use. + // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE + + // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER + // when the hardware endstops are active. + //#define FIX_MOUNTED_PROBE + + // A Servo Probe can be defined in the servo section below. + + // A Allen Key Probe is currently predefined only in the delta example configurations. + //#define Z_PROBE_SLED // Turn on if you have a Z probe mounted on a sled like those designed by Charles Bell. //#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. @@ -543,7 +597,8 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //If you have enabled the Bed Auto Leveling and are using the same Z Probe for Z Homing, //it is highly recommended you let this Z_SAFE_HOMING enabled!!! - #define Z_SAFE_HOMING // This feature is meant to avoid Z homing with Z probe outside the bed area. + #define Z_SAFE_HOMING // Use the z-min-probe for homing to z-min - not the z-min-endstop. + // This feature is meant to avoid Z homing with Z probe outside the bed area. // When defined, it will: // - Allow Z homing only after X and Y homing AND stepper drivers still enabled. // - If stepper drivers timeout, it will need X and Y homing again before Z homing. @@ -557,37 +612,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l #endif - // Support for a dedicated Z probe endstop separate from the Z min endstop. - // If you would like to use both a Z probe and a Z min endstop together, - // uncomment #define Z_MIN_PROBE_ENDSTOP and read the instructions below. - // If you still want to use the Z min endstop for homing, disable Z_SAFE_HOMING above. - // Example: To park the head outside the bed area when homing with G28. - // - // WARNING: - // The Z min endstop will need to set properly as it would without a Z probe - // to prevent head crashes and premature stopping during a print. - // - // To use a separate Z probe endstop, you must have a Z_MIN_PROBE_PIN - // defined in the pins_XXXXX.h file for your control board. - // If you are using a servo based Z probe, you will need to enable NUM_SERVOS, - // Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES in the R/C SERVO support below. - // RAMPS 1.3/1.4 boards may be able to use the 5V, Ground and the D32 pin - // in the Aux 4 section of the RAMPS board. Use 5V for powered sensors, - // otherwise connect to ground and D32 for normally closed configuration - // and 5V and D32 for normally open configurations. - // Normally closed configuration is advised and assumed. - // The D32 pin in Aux 4 on RAMPS maps to the Arduino D32 pin. - // Z_MIN_PROBE_PIN is setting the pin to use on the Arduino. - // Since the D32 pin on the RAMPS maps to D32 on Arduino, this works. - // D32 is currently selected in the RAMPS 1.3/1.4 pin file. - // All other boards will need changes to the respective pins_XXXXX.h file. - // - // WARNING: - // Setting the wrong pin may have unexpected and potentially disastrous outcomes. - // Use with caution and do your homework. - // - //#define Z_MIN_PROBE_ENDSTOP - #endif // AUTO_BED_LEVELING_FEATURE diff --git a/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h b/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h index 8c5a6080f..a90e92ecf 100644 --- a/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h +++ b/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h @@ -337,10 +337,52 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#define DISABLE_MAX_ENDSTOPS //#define DISABLE_MIN_ENDSTOPS +//=========================================================================== +//============================= Z Probe Options ============================= +//=========================================================================== + +// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z-probe and a Z-min-endstop on the same machine. +// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. +// +// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** +// +// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. +// Example: To park the head outside the bed area when homing with G28. +// +// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. +// +// For a servo-based Z probe, you must set up servo support below, including +// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES. +// +// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. +// - Use 5V for powered (usu. inductive) sensors. +// - Otherwise connect: +// - normally-closed switches to GND and D32. +// - normally-open switches to 5V and D32. +// +// Normally-closed switches are advised and are the default. +// +// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) +// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the +// default pin for all RAMPS-based boards. Some other boards map differently. +// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. +// +// WARNING: +// Setting the wrong pin may have unexpected and potentially disastrous consequences. +// Use with caution and do your homework. +// +//#define Z_MIN_PROBE_ENDSTOP + +// If you want to use the Z_MIN_PIN to connect your Z_MIN_PROBE comment out the next define. +// In other words. The z-min-probe is connected to the Z_MIN_PIN and is used for homing and for probing. +#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN +// If you want to use a probe you do have to define one of the two defines above! + // If you want to enable the Z probe pin, but disable its use, uncomment the line below. // This only affects a Z probe endstop if you have separate Z min endstop as well and have -// activated Z_MIN_PROBE_ENDSTOP below. If you are using the Z Min endstop on your Z probe, +// activated Z_MIN_PROBE_ENDSTOP above. If you are using the Z Min endstop on your Z probe, // this has no effect. +// In other words. If a Z_MIN_PROBE_PIN is defined in your pin file - don't use it. //#define DISABLE_Z_MIN_PROBE_ENDSTOP // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 @@ -521,6 +563,18 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#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. + // Probes are sensors/switches that need to be activated before they can be used + // and deactivated after the use. + // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE + + // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER + // when the hardware endstops are active. + //#define FIX_MOUNTED_PROBE + + // A Servo Probe can be defined in the servo section below. + + // A Allen Key Probe is currently predefined only in the delta example configurations. + //#define Z_PROBE_SLED // Turn on if you have a Z probe mounted on a sled like those designed by Charles Bell. //#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. @@ -528,7 +582,8 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //If you have enabled the Bed Auto Leveling and are using the same Z Probe for Z Homing, //it is highly recommended you let this Z_SAFE_HOMING enabled!!! - #define Z_SAFE_HOMING // This feature is meant to avoid Z homing with Z probe outside the bed area. + #define Z_SAFE_HOMING // Use the z-min-probe for homing to z-min - not the z-min-endstop. + // This feature is meant to avoid Z homing with Z probe outside the bed area. // When defined, it will: // - Allow Z homing only after X and Y homing AND stepper drivers still enabled. // - If stepper drivers timeout, it will need X and Y homing again before Z homing. @@ -542,37 +597,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l #endif - // Support for a dedicated Z probe endstop separate from the Z min endstop. - // If you would like to use both a Z probe and a Z min endstop together, - // uncomment #define Z_MIN_PROBE_ENDSTOP and read the instructions below. - // If you still want to use the Z min endstop for homing, disable Z_SAFE_HOMING above. - // Example: To park the head outside the bed area when homing with G28. - // - // WARNING: - // The Z min endstop will need to set properly as it would without a Z probe - // to prevent head crashes and premature stopping during a print. - // - // To use a separate Z probe endstop, you must have a Z_MIN_PROBE_PIN - // defined in the pins_XXXXX.h file for your control board. - // If you are using a servo based Z probe, you will need to enable NUM_SERVOS, - // Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES in the R/C SERVO support below. - // RAMPS 1.3/1.4 boards may be able to use the 5V, Ground and the D32 pin - // in the Aux 4 section of the RAMPS board. Use 5V for powered sensors, - // otherwise connect to ground and D32 for normally closed configuration - // and 5V and D32 for normally open configurations. - // Normally closed configuration is advised and assumed. - // The D32 pin in Aux 4 on RAMPS maps to the Arduino D32 pin. - // Z_MIN_PROBE_PIN is setting the pin to use on the Arduino. - // Since the D32 pin on the RAMPS maps to D32 on Arduino, this works. - // D32 is currently selected in the RAMPS 1.3/1.4 pin file. - // All other boards will need changes to the respective pins_XXXXX.h file. - // - // WARNING: - // Setting the wrong pin may have unexpected and potentially disastrous outcomes. - // Use with caution and do your homework. - // - //#define Z_MIN_PROBE_ENDSTOP - #endif // AUTO_BED_LEVELING_FEATURE diff --git a/Marlin/example_configurations/RigidBot/Configuration.h b/Marlin/example_configurations/RigidBot/Configuration.h index ce55421b2..aafd04434 100644 --- a/Marlin/example_configurations/RigidBot/Configuration.h +++ b/Marlin/example_configurations/RigidBot/Configuration.h @@ -331,10 +331,52 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#define DISABLE_MAX_ENDSTOPS //#define DISABLE_MIN_ENDSTOPS +//=========================================================================== +//============================= Z Probe Options ============================= +//=========================================================================== + +// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z-probe and a Z-min-endstop on the same machine. +// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. +// +// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** +// +// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. +// Example: To park the head outside the bed area when homing with G28. +// +// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. +// +// For a servo-based Z probe, you must set up servo support below, including +// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES. +// +// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. +// - Use 5V for powered (usu. inductive) sensors. +// - Otherwise connect: +// - normally-closed switches to GND and D32. +// - normally-open switches to 5V and D32. +// +// Normally-closed switches are advised and are the default. +// +// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) +// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the +// default pin for all RAMPS-based boards. Some other boards map differently. +// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. +// +// WARNING: +// Setting the wrong pin may have unexpected and potentially disastrous consequences. +// Use with caution and do your homework. +// +//#define Z_MIN_PROBE_ENDSTOP + +// If you want to use the Z_MIN_PIN to connect your Z_MIN_PROBE comment out the next define. +// In other words. The z-min-probe is connected to the Z_MIN_PIN and is used for homing and for probing. +#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN +// If you want to use a probe you do have to define one of the two defines above! + // If you want to enable the Z probe pin, but disable its use, uncomment the line below. // This only affects a Z probe endstop if you have separate Z min endstop as well and have -// activated Z_MIN_PROBE_ENDSTOP below. If you are using the Z Min endstop on your Z probe, +// activated Z_MIN_PROBE_ENDSTOP above. If you are using the Z Min endstop on your Z probe, // this has no effect. +// In other words. If a Z_MIN_PROBE_PIN is defined in your pin file - don't use it. //#define DISABLE_Z_MIN_PROBE_ENDSTOP // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 @@ -515,6 +557,18 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#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. + // Probes are sensors/switches that need to be activated before they can be used + // and deactivated after the use. + // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE + + // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER + // when the hardware endstops are active. + //#define FIX_MOUNTED_PROBE + + // A Servo Probe can be defined in the servo section below. + + // A Allen Key Probe is currently predefined only in the delta example configurations. + //#define Z_PROBE_SLED // Turn on if you have a Z probe mounted on a sled like those designed by Charles Bell. //#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. @@ -522,7 +576,8 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //If you have enabled the Bed Auto Leveling and are using the same Z Probe for Z Homing, //it is highly recommended you let this Z_SAFE_HOMING enabled!!! - #define Z_SAFE_HOMING // This feature is meant to avoid Z homing with Z probe outside the bed area. + #define Z_SAFE_HOMING // Use the z-min-probe for homing to z-min - not the z-min-endstop. + // This feature is meant to avoid Z homing with Z probe outside the bed area. // When defined, it will: // - Allow Z homing only after X and Y homing AND stepper drivers still enabled. // - If stepper drivers timeout, it will need X and Y homing again before Z homing. @@ -536,37 +591,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l #endif - // Support for a dedicated Z probe endstop separate from the Z min endstop. - // If you would like to use both a Z probe and a Z min endstop together, - // uncomment #define Z_MIN_PROBE_ENDSTOP and read the instructions below. - // If you still want to use the Z min endstop for homing, disable Z_SAFE_HOMING above. - // Example: To park the head outside the bed area when homing with G28. - // - // WARNING: - // The Z min endstop will need to set properly as it would without a Z probe - // to prevent head crashes and premature stopping during a print. - // - // To use a separate Z probe endstop, you must have a Z_MIN_PROBE_PIN - // defined in the pins_XXXXX.h file for your control board. - // If you are using a servo based Z probe, you will need to enable NUM_SERVOS, - // Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES in the R/C SERVO support below. - // RAMPS 1.3/1.4 boards may be able to use the 5V, Ground and the D32 pin - // in the Aux 4 section of the RAMPS board. Use 5V for powered sensors, - // otherwise connect to ground and D32 for normally closed configuration - // and 5V and D32 for normally open configurations. - // Normally closed configuration is advised and assumed. - // The D32 pin in Aux 4 on RAMPS maps to the Arduino D32 pin. - // Z_MIN_PROBE_PIN is setting the pin to use on the Arduino. - // Since the D32 pin on the RAMPS maps to D32 on Arduino, this works. - // D32 is currently selected in the RAMPS 1.3/1.4 pin file. - // All other boards will need changes to the respective pins_XXXXX.h file. - // - // WARNING: - // Setting the wrong pin may have unexpected and potentially disastrous outcomes. - // Use with caution and do your homework. - // - //#define Z_MIN_PROBE_ENDSTOP - #endif // AUTO_BED_LEVELING_FEATURE diff --git a/Marlin/example_configurations/SCARA/Configuration.h b/Marlin/example_configurations/SCARA/Configuration.h index 2e56626b3..efc4e466c 100644 --- a/Marlin/example_configurations/SCARA/Configuration.h +++ b/Marlin/example_configurations/SCARA/Configuration.h @@ -345,10 +345,52 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#define DISABLE_MAX_ENDSTOPS //#define DISABLE_MIN_ENDSTOPS +//=========================================================================== +//============================= Z Probe Options ============================= +//=========================================================================== + +// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z-probe and a Z-min-endstop on the same machine. +// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. +// +// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** +// +// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. +// Example: To park the head outside the bed area when homing with G28. +// +// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. +// +// For a servo-based Z probe, you must set up servo support below, including +// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES. +// +// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. +// - Use 5V for powered (usu. inductive) sensors. +// - Otherwise connect: +// - normally-closed switches to GND and D32. +// - normally-open switches to 5V and D32. +// +// Normally-closed switches are advised and are the default. +// +// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) +// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the +// default pin for all RAMPS-based boards. Some other boards map differently. +// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. +// +// WARNING: +// Setting the wrong pin may have unexpected and potentially disastrous consequences. +// Use with caution and do your homework. +// +//#define Z_MIN_PROBE_ENDSTOP + +// If you want to use the Z_MIN_PIN to connect your Z_MIN_PROBE comment out the next define. +// In other words. The z-min-probe is connected to the Z_MIN_PIN and is used for homing and for probing. +#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN +// If you want to use a probe you do have to define one of the two defines above! + // If you want to enable the Z probe pin, but disable its use, uncomment the line below. // This only affects a Z probe endstop if you have separate Z min endstop as well and have -// activated Z_MIN_PROBE_ENDSTOP below. If you are using the Z Min endstop on your Z probe, +// activated Z_MIN_PROBE_ENDSTOP above. If you are using the Z Min endstop on your Z probe, // this has no effect. +// In other words. If a Z_MIN_PROBE_PIN is defined in your pin file - don't use it. //#define DISABLE_Z_MIN_PROBE_ENDSTOP // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 @@ -529,6 +571,18 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#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. + // Probes are sensors/switches that need to be activated before they can be used + // and deactivated after the use. + // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE + + // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER + // when the hardware endstops are active. + //#define FIX_MOUNTED_PROBE + + // A Servo Probe can be defined in the servo section below. + + // A Allen Key Probe is currently predefined only in the delta example configurations. + //#define Z_PROBE_SLED // Turn on if you have a Z probe mounted on a sled like those designed by Charles Bell. //#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. @@ -536,7 +590,8 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //If you have enabled the Bed Auto Leveling and are using the same Z Probe for Z Homing, //it is highly recommended you let this Z_SAFE_HOMING enabled!!! - //#define Z_SAFE_HOMING // This feature is meant to avoid Z homing with Z probe outside the bed area. + //#define Z_SAFE_HOMING // Use the z-min-probe for homing to z-min - not the z-min-endstop. + // This feature is meant to avoid Z homing with Z probe outside the bed area. // When defined, it will: // - Allow Z homing only after X and Y homing AND stepper drivers still enabled. // - If stepper drivers timeout, it will need X and Y homing again before Z homing. @@ -550,37 +605,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l #endif - // Support for a dedicated Z probe endstop separate from the Z min endstop. - // If you would like to use both a Z probe and a Z min endstop together, - // uncomment #define Z_MIN_PROBE_ENDSTOP and read the instructions below. - // If you still want to use the Z min endstop for homing, disable Z_SAFE_HOMING above. - // Example: To park the head outside the bed area when homing with G28. - // - // WARNING: - // The Z min endstop will need to set properly as it would without a Z probe - // to prevent head crashes and premature stopping during a print. - // - // To use a separate Z probe endstop, you must have a Z_MIN_PROBE_PIN - // defined in the pins_XXXXX.h file for your control board. - // If you are using a servo based Z probe, you will need to enable NUM_SERVOS, - // Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES in the R/C SERVO support below. - // RAMPS 1.3/1.4 boards may be able to use the 5V, Ground and the D32 pin - // in the Aux 4 section of the RAMPS board. Use 5V for powered sensors, - // otherwise connect to ground and D32 for normally closed configuration - // and 5V and D32 for normally open configurations. - // Normally closed configuration is advised and assumed. - // The D32 pin in Aux 4 on RAMPS maps to the Arduino D32 pin. - // Z_MIN_PROBE_PIN is setting the pin to use on the Arduino. - // Since the D32 pin on the RAMPS maps to D32 on Arduino, this works. - // D32 is currently selected in the RAMPS 1.3/1.4 pin file. - // All other boards will need changes to the respective pins_XXXXX.h file. - // - // WARNING: - // Setting the wrong pin may have unexpected and potentially disastrous outcomes. - // Use with caution and do your homework. - // - //#define Z_MIN_PROBE_ENDSTOP - #endif // AUTO_BED_LEVELING_FEATURE diff --git a/Marlin/example_configurations/TAZ4/Configuration.h b/Marlin/example_configurations/TAZ4/Configuration.h index b6671fa6f..6ec4fd336 100644 --- a/Marlin/example_configurations/TAZ4/Configuration.h +++ b/Marlin/example_configurations/TAZ4/Configuration.h @@ -357,10 +357,52 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l #define DISABLE_MAX_ENDSTOPS //#define DISABLE_MIN_ENDSTOPS +//=========================================================================== +//============================= Z Probe Options ============================= +//=========================================================================== + +// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z-probe and a Z-min-endstop on the same machine. +// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. +// +// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** +// +// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. +// Example: To park the head outside the bed area when homing with G28. +// +// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. +// +// For a servo-based Z probe, you must set up servo support below, including +// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES. +// +// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. +// - Use 5V for powered (usu. inductive) sensors. +// - Otherwise connect: +// - normally-closed switches to GND and D32. +// - normally-open switches to 5V and D32. +// +// Normally-closed switches are advised and are the default. +// +// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) +// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the +// default pin for all RAMPS-based boards. Some other boards map differently. +// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. +// +// WARNING: +// Setting the wrong pin may have unexpected and potentially disastrous consequences. +// Use with caution and do your homework. +// +//#define Z_MIN_PROBE_ENDSTOP + +// If you want to use the Z_MIN_PIN to connect your Z_MIN_PROBE comment out the next define. +// In other words. The z-min-probe is connected to the Z_MIN_PIN and is used for homing and for probing. +#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN +// If you want to use a probe you do have to define one of the two defines above! + // If you want to enable the Z probe pin, but disable its use, uncomment the line below. // This only affects a Z probe endstop if you have separate Z min endstop as well and have -// activated Z_MIN_PROBE_ENDSTOP below. If you are using the Z Min endstop on your Z probe, +// activated Z_MIN_PROBE_ENDSTOP above. If you are using the Z Min endstop on your Z probe, // this has no effect. +// In other words. If a Z_MIN_PROBE_PIN is defined in your pin file - don't use it. //#define DISABLE_Z_MIN_PROBE_ENDSTOP // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 @@ -541,6 +583,18 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#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. + // Probes are sensors/switches that need to be activated before they can be used + // and deactivated after the use. + // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE + + // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER + // when the hardware endstops are active. + //#define FIX_MOUNTED_PROBE + + // A Servo Probe can be defined in the servo section below. + + // A Allen Key Probe is currently predefined only in the delta example configurations. + //#define Z_PROBE_SLED // Turn on if you have a Z probe mounted on a sled like those designed by Charles Bell. //#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. @@ -548,7 +602,8 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //If you have enabled the Bed Auto Leveling and are using the same Z Probe for Z Homing, //it is highly recommended you let this Z_SAFE_HOMING enabled!!! - #define Z_SAFE_HOMING // This feature is meant to avoid Z homing with Z probe outside the bed area. + #define Z_SAFE_HOMING // Use the z-min-probe for homing to z-min - not the z-min-endstop. + // This feature is meant to avoid Z homing with Z probe outside the bed area. // When defined, it will: // - Allow Z homing only after X and Y homing AND stepper drivers still enabled. // - If stepper drivers timeout, it will need X and Y homing again before Z homing. diff --git a/Marlin/example_configurations/WITBOX/Configuration.h b/Marlin/example_configurations/WITBOX/Configuration.h index 7ca638c21..0100b1355 100644 --- a/Marlin/example_configurations/WITBOX/Configuration.h +++ b/Marlin/example_configurations/WITBOX/Configuration.h @@ -329,10 +329,52 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo //#define DISABLE_MAX_ENDSTOPS //#define DISABLE_MIN_ENDSTOPS +//=========================================================================== +//============================= Z Probe Options ============================= +//=========================================================================== + +// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z-probe and a Z-min-endstop on the same machine. +// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. +// +// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** +// +// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. +// Example: To park the head outside the bed area when homing with G28. +// +// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. +// +// For a servo-based Z probe, you must set up servo support below, including +// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES. +// +// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. +// - Use 5V for powered (usu. inductive) sensors. +// - Otherwise connect: +// - normally-closed switches to GND and D32. +// - normally-open switches to 5V and D32. +// +// Normally-closed switches are advised and are the default. +// +// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) +// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the +// default pin for all RAMPS-based boards. Some other boards map differently. +// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. +// +// WARNING: +// Setting the wrong pin may have unexpected and potentially disastrous consequences. +// Use with caution and do your homework. +// +//#define Z_MIN_PROBE_ENDSTOP + +// If you want to use the Z_MIN_PIN to connect your Z_MIN_PROBE comment out the next define. +// In other words. The z-min-probe is connected to the Z_MIN_PIN and is used for homing and for probing. +#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN +// If you want to use a probe you do have to define one of the two defines above! + // If you want to enable the Z probe pin, but disable its use, uncomment the line below. // This only affects a Z probe endstop if you have separate Z min endstop as well and have -// activated Z_MIN_PROBE_ENDSTOP below. If you are using the Z Min endstop on your Z probe, +// activated Z_MIN_PROBE_ENDSTOP above. If you are using the Z Min endstop on your Z probe, // this has no effect. +// In other words. If a Z_MIN_PROBE_PIN is defined in your pin file - don't use it. //#define DISABLE_Z_MIN_PROBE_ENDSTOP // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 @@ -513,6 +555,18 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo //#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. + // Probes are sensors/switches that need to be activated before they can be used + // and deactivated after the use. + // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE + + // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER + // when the hardware endstops are active. + //#define FIX_MOUNTED_PROBE + + // A Servo Probe can be defined in the servo section below. + + // A Allen Key Probe is currently predefined only in the delta example configurations. + //#define Z_PROBE_SLED // Turn on if you have a Z probe mounted on a sled like those designed by Charles Bell. //#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. @@ -520,7 +574,8 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo //If you have enabled the Bed Auto Leveling and are using the same Z Probe for Z Homing, //it is highly recommended you let this Z_SAFE_HOMING enabled!!! - #define Z_SAFE_HOMING // This feature is meant to avoid Z homing with Z probe outside the bed area. + #define Z_SAFE_HOMING // Use the z-min-probe for homing to z-min - not the z-min-endstop. + // This feature is meant to avoid Z homing with Z probe outside the bed area. // When defined, it will: // - Allow Z homing only after X and Y homing AND stepper drivers still enabled. // - If stepper drivers timeout, it will need X and Y homing again before Z homing. @@ -534,37 +589,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo #endif - // Support for a dedicated Z probe endstop separate from the Z min endstop. - // If you would like to use both a Z probe and a Z min endstop together, - // uncomment #define Z_MIN_PROBE_ENDSTOP and read the instructions below. - // If you still want to use the Z min endstop for homing, disable Z_SAFE_HOMING above. - // Example: To park the head outside the bed area when homing with G28. - // - // WARNING: - // The Z min endstop will need to set properly as it would without a Z probe - // to prevent head crashes and premature stopping during a print. - // - // To use a separate Z probe endstop, you must have a Z_MIN_PROBE_PIN - // defined in the pins_XXXXX.h file for your control board. - // If you are using a servo based Z probe, you will need to enable NUM_SERVOS, - // Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES in the R/C SERVO support below. - // RAMPS 1.3/1.4 boards may be able to use the 5V, Ground and the D32 pin - // in the Aux 4 section of the RAMPS board. Use 5V for powered sensors, - // otherwise connect to ground and D32 for normally closed configuration - // and 5V and D32 for normally open configurations. - // Normally closed configuration is advised and assumed. - // The D32 pin in Aux 4 on RAMPS maps to the Arduino D32 pin. - // Z_MIN_PROBE_PIN is setting the pin to use on the Arduino. - // Since the D32 pin on the RAMPS maps to D32 on Arduino, this works. - // D32 is currently selected in the RAMPS 1.3/1.4 pin file. - // All other boards will need changes to the respective pins_XXXXX.h file. - // - // WARNING: - // Setting the wrong pin may have unexpected and potentially disastrous outcomes. - // Use with caution and do your homework. - // - //#define Z_MIN_PROBE_ENDSTOP - #endif // AUTO_BED_LEVELING_FEATURE diff --git a/Marlin/example_configurations/adafruit/ST7565/Configuration.h b/Marlin/example_configurations/adafruit/ST7565/Configuration.h index 705b9c39a..ffb1980f6 100644 --- a/Marlin/example_configurations/adafruit/ST7565/Configuration.h +++ b/Marlin/example_configurations/adafruit/ST7565/Configuration.h @@ -337,10 +337,52 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#define DISABLE_MAX_ENDSTOPS //#define DISABLE_MIN_ENDSTOPS +//=========================================================================== +//============================= Z Probe Options ============================= +//=========================================================================== + +// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z-probe and a Z-min-endstop on the same machine. +// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. +// +// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** +// +// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. +// Example: To park the head outside the bed area when homing with G28. +// +// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. +// +// For a servo-based Z probe, you must set up servo support below, including +// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES. +// +// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. +// - Use 5V for powered (usu. inductive) sensors. +// - Otherwise connect: +// - normally-closed switches to GND and D32. +// - normally-open switches to 5V and D32. +// +// Normally-closed switches are advised and are the default. +// +// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) +// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the +// default pin for all RAMPS-based boards. Some other boards map differently. +// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. +// +// WARNING: +// Setting the wrong pin may have unexpected and potentially disastrous consequences. +// Use with caution and do your homework. +// +//#define Z_MIN_PROBE_ENDSTOP + +// If you want to use the Z_MIN_PIN to connect your Z_MIN_PROBE comment out the next define. +// In other words. The z-min-probe is connected to the Z_MIN_PIN and is used for homing and for probing. +#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN +// If you want to use a probe you do have to define one of the two defines above! + // If you want to enable the Z probe pin, but disable its use, uncomment the line below. // This only affects a Z probe endstop if you have separate Z min endstop as well and have -// activated Z_MIN_PROBE_ENDSTOP below. If you are using the Z Min endstop on your Z probe, +// activated Z_MIN_PROBE_ENDSTOP above. If you are using the Z Min endstop on your Z probe, // this has no effect. +// In other words. If a Z_MIN_PROBE_PIN is defined in your pin file - don't use it. //#define DISABLE_Z_MIN_PROBE_ENDSTOP // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 @@ -521,6 +563,18 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#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. + // Probes are sensors/switches that need to be activated before they can be used + // and deactivated after the use. + // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE + + // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER + // when the hardware endstops are active. + //#define FIX_MOUNTED_PROBE + + // A Servo Probe can be defined in the servo section below. + + // A Allen Key Probe is currently predefined only in the delta example configurations. + //#define Z_PROBE_SLED // Turn on if you have a Z probe mounted on a sled like those designed by Charles Bell. //#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. @@ -528,7 +582,8 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //If you have enabled the Bed Auto Leveling and are using the same Z Probe for Z Homing, //it is highly recommended you let this Z_SAFE_HOMING enabled!!! - #define Z_SAFE_HOMING // This feature is meant to avoid Z homing with Z probe outside the bed area. + #define Z_SAFE_HOMING // Use the z-min-probe for homing to z-min - not the z-min-endstop. + // This feature is meant to avoid Z homing with Z probe outside the bed area. // When defined, it will: // - Allow Z homing only after X and Y homing AND stepper drivers still enabled. // - If stepper drivers timeout, it will need X and Y homing again before Z homing. @@ -542,37 +597,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l #endif - // Support for a dedicated Z probe endstop separate from the Z min endstop. - // If you would like to use both a Z probe and a Z min endstop together, - // uncomment #define Z_MIN_PROBE_ENDSTOP and read the instructions below. - // If you still want to use the Z min endstop for homing, disable Z_SAFE_HOMING above. - // Example: To park the head outside the bed area when homing with G28. - // - // WARNING: - // The Z min endstop will need to set properly as it would without a Z probe - // to prevent head crashes and premature stopping during a print. - // - // To use a separate Z probe endstop, you must have a Z_MIN_PROBE_PIN - // defined in the pins_XXXXX.h file for your control board. - // If you are using a servo based Z probe, you will need to enable NUM_SERVOS, - // Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES in the R/C SERVO support below. - // RAMPS 1.3/1.4 boards may be able to use the 5V, Ground and the D32 pin - // in the Aux 4 section of the RAMPS board. Use 5V for powered sensors, - // otherwise connect to ground and D32 for normally closed configuration - // and 5V and D32 for normally open configurations. - // Normally closed configuration is advised and assumed. - // The D32 pin in Aux 4 on RAMPS maps to the Arduino D32 pin. - // Z_MIN_PROBE_PIN is setting the pin to use on the Arduino. - // Since the D32 pin on the RAMPS maps to D32 on Arduino, this works. - // D32 is currently selected in the RAMPS 1.3/1.4 pin file. - // All other boards will need changes to the respective pins_XXXXX.h file. - // - // WARNING: - // Setting the wrong pin may have unexpected and potentially disastrous outcomes. - // Use with caution and do your homework. - // - //#define Z_MIN_PROBE_ENDSTOP - #endif // AUTO_BED_LEVELING_FEATURE diff --git a/Marlin/example_configurations/delta/biv2.5/Configuration.h b/Marlin/example_configurations/delta/biv2.5/Configuration.h index 4b15caa8f..0021b9ee7 100644 --- a/Marlin/example_configurations/delta/biv2.5/Configuration.h +++ b/Marlin/example_configurations/delta/biv2.5/Configuration.h @@ -372,10 +372,52 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo //#define DISABLE_MAX_ENDSTOPS #define DISABLE_MIN_ENDSTOPS // Deltas only use min endstops for probing. +//=========================================================================== +//============================= Z Probe Options ============================= +//=========================================================================== + +// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z-probe and a Z-min-endstop on the same machine. +// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. +// +// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** +// +// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. +// Example: To park the head outside the bed area when homing with G28. +// +// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. +// +// For a servo-based Z probe, you must set up servo support below, including +// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES. +// +// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. +// - Use 5V for powered (usu. inductive) sensors. +// - Otherwise connect: +// - normally-closed switches to GND and D32. +// - normally-open switches to 5V and D32. +// +// Normally-closed switches are advised and are the default. +// +// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) +// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the +// default pin for all RAMPS-based boards. Some other boards map differently. +// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. +// +// WARNING: +// Setting the wrong pin may have unexpected and potentially disastrous consequences. +// Use with caution and do your homework. +// +//#define Z_MIN_PROBE_ENDSTOP + +// If you want to use the Z_MIN_PIN to connect your Z_MIN_PROBE comment out the next define. +// In other words. The z-min-probe is connected to the Z_MIN_PIN and is used for homing and for probing. +#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN +// If you want to use a probe you do have to define one of the two defines above! + // If you want to enable the Z probe pin, but disable its use, uncomment the line below. // This only affects a Z probe endstop if you have separate Z min endstop as well and have -// activated Z_MIN_PROBE_ENDSTOP below. If you are using the Z Min endstop on your Z probe, +// activated Z_MIN_PROBE_ENDSTOP above. If you are using the Z Min endstop on your Z probe, // this has no effect. +// In other words. If a Z_MIN_PROBE_PIN is defined in your pin file - don't use it. //#define DISABLE_Z_MIN_PROBE_ENDSTOP // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 @@ -560,6 +602,18 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo //#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. + // Probes are sensors/switches that need to be activated before they can be used + // and deactivated after the use. + // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE + + // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER + // when the hardware endstops are active. + //#define FIX_MOUNTED_PROBE + + // A Servo Probe can be defined in the servo section below. + + // A Allen Key Probe is currently predefined only in the delta example configurations. + //#define Z_PROBE_SLED // Turn on if you have a Z probe mounted on a sled like those designed by Charles Bell. //#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. @@ -648,7 +702,8 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo //If you have enabled the Bed Auto Leveling and are using the same Z Probe for Z Homing, //it is highly recommended you let this Z_SAFE_HOMING enabled!!! - #define Z_SAFE_HOMING // This feature is meant to avoid Z homing with Z probe outside the bed area. + #define Z_SAFE_HOMING // Use the z-min-probe for homing to z-min - not the z-min-endstop. + // This feature is meant to avoid Z homing with Z probe outside the bed area. // When defined, it will: // - Allow Z homing only after X and Y homing AND stepper drivers still enabled. // - If stepper drivers timeout, it will need X and Y homing again before Z homing. @@ -662,37 +717,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo #endif - // Support for a dedicated Z probe endstop separate from the Z min endstop. - // If you would like to use both a Z probe and a Z min endstop together, - // uncomment #define Z_MIN_PROBE_ENDSTOP and read the instructions below. - // If you still want to use the Z min endstop for homing, disable Z_SAFE_HOMING above. - // Example: To park the head outside the bed area when homing with G28. - // - // WARNING: - // The Z min endstop will need to set properly as it would without a Z probe - // to prevent head crashes and premature stopping during a print. - // - // To use a separate Z probe endstop, you must have a Z_MIN_PROBE_PIN - // defined in the pins_XXXXX.h file for your control board. - // If you are using a servo based Z probe, you will need to enable NUM_SERVOS, - // Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES in the R/C SERVO support below. - // RAMPS 1.3/1.4 boards may be able to use the 5V, Ground and the D32 pin - // in the Aux 4 section of the RAMPS board. Use 5V for powered sensors, - // otherwise connect to ground and D32 for normally closed configuration - // and 5V and D32 for normally open configurations. - // Normally closed configuration is advised and assumed. - // The D32 pin in Aux 4 on RAMPS maps to the Arduino D32 pin. - // Z_MIN_PROBE_PIN is setting the pin to use on the Arduino. - // Since the D32 pin on the RAMPS maps to D32 on Arduino, this works. - // D32 is currently selected in the RAMPS 1.3/1.4 pin file. - // All other boards will need changes to the respective pins_XXXXX.h file. - // - // WARNING: - // Setting the wrong pin may have unexpected and potentially disastrous outcomes. - // Use with caution and do your homework. - // - //#define Z_MIN_PROBE_ENDSTOP - #endif // AUTO_BED_LEVELING_FEATURE diff --git a/Marlin/example_configurations/delta/generic/Configuration.h b/Marlin/example_configurations/delta/generic/Configuration.h index 84dc90a36..6387ea806 100644 --- a/Marlin/example_configurations/delta/generic/Configuration.h +++ b/Marlin/example_configurations/delta/generic/Configuration.h @@ -372,10 +372,52 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo //#define DISABLE_MAX_ENDSTOPS #define DISABLE_MIN_ENDSTOPS // Deltas only use min endstops for probing. +//=========================================================================== +//============================= Z Probe Options ============================= +//=========================================================================== + +// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z-probe and a Z-min-endstop on the same machine. +// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. +// +// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** +// +// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. +// Example: To park the head outside the bed area when homing with G28. +// +// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. +// +// For a servo-based Z probe, you must set up servo support below, including +// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES. +// +// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. +// - Use 5V for powered (usu. inductive) sensors. +// - Otherwise connect: +// - normally-closed switches to GND and D32. +// - normally-open switches to 5V and D32. +// +// Normally-closed switches are advised and are the default. +// +// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) +// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the +// default pin for all RAMPS-based boards. Some other boards map differently. +// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. +// +// WARNING: +// Setting the wrong pin may have unexpected and potentially disastrous consequences. +// Use with caution and do your homework. +// +#define Z_MIN_PROBE_ENDSTOP + +// If you want to use the Z_MIN_PIN to connect your Z_MIN_PROBE comment out the next define. +// In other words. The z-min-probe is connected to the Z_MIN_PIN and is used for homing and for probing. +//#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN +// If you want to use a probe you do have to define one of the two defines above! + // If you want to enable the Z probe pin, but disable its use, uncomment the line below. // This only affects a Z probe endstop if you have separate Z min endstop as well and have -// activated Z_MIN_PROBE_ENDSTOP below. If you are using the Z Min endstop on your Z probe, +// activated Z_MIN_PROBE_ENDSTOP above. If you are using the Z Min endstop on your Z probe, // this has no effect. +// In other words. If a Z_MIN_PROBE_PIN is defined in your pin file - don't use it. //#define DISABLE_Z_MIN_PROBE_ENDSTOP // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 @@ -560,6 +602,18 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo //#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. + // Probes are sensors/switches that need to be activated before they can be used + // and deactivated after the use. + // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE + + // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER + // when the hardware endstops are active. + //#define FIX_MOUNTED_PROBE + + // A Servo Probe can be defined in the servo section below. + + // A Allen Key Probe is currently predefined only in the delta example configurations. + //#define Z_PROBE_SLED // Turn on if you have a Z probe mounted on a sled like those designed by Charles Bell. //#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. @@ -648,7 +702,8 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo //If you have enabled the Bed Auto Leveling and are using the same Z Probe for Z Homing, //it is highly recommended you let this Z_SAFE_HOMING enabled!!! - #define Z_SAFE_HOMING // This feature is meant to avoid Z homing with Z probe outside the bed area. + #define Z_SAFE_HOMING // Use the z-min-probe for homing to z-min - not the z-min-endstop. + // This feature is meant to avoid Z homing with Z probe outside the bed area. // When defined, it will: // - Allow Z homing only after X and Y homing AND stepper drivers still enabled. // - If stepper drivers timeout, it will need X and Y homing again before Z homing. @@ -662,37 +717,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo #endif - // Support for a dedicated Z probe endstop separate from the Z min endstop. - // If you would like to use both a Z probe and a Z min endstop together, - // uncomment #define Z_MIN_PROBE_ENDSTOP and read the instructions below. - // If you still want to use the Z min endstop for homing, disable Z_SAFE_HOMING above. - // Example: To park the head outside the bed area when homing with G28. - // - // WARNING: - // The Z min endstop will need to set properly as it would without a Z probe - // to prevent head crashes and premature stopping during a print. - // - // To use a separate Z probe endstop, you must have a Z_MIN_PROBE_PIN - // defined in the pins_XXXXX.h file for your control board. - // If you are using a servo based Z probe, you will need to enable NUM_SERVOS, - // Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES in the R/C SERVO support below. - // RAMPS 1.3/1.4 boards may be able to use the 5V, Ground and the D32 pin - // in the Aux 4 section of the RAMPS board. Use 5V for powered sensors, - // otherwise connect to ground and D32 for normally closed configuration - // and 5V and D32 for normally open configurations. - // Normally closed configuration is advised and assumed. - // The D32 pin in Aux 4 on RAMPS maps to the Arduino D32 pin. - // Z_MIN_PROBE_PIN is setting the pin to use on the Arduino. - // Since the D32 pin on the RAMPS maps to D32 on Arduino, this works. - // D32 is currently selected in the RAMPS 1.3/1.4 pin file. - // All other boards will need changes to the respective pins_XXXXX.h file. - // - // WARNING: - // Setting the wrong pin may have unexpected and potentially disastrous outcomes. - // Use with caution and do your homework. - // - //#define Z_MIN_PROBE_ENDSTOP - #endif // AUTO_BED_LEVELING_FEATURE diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration.h b/Marlin/example_configurations/delta/kossel_mini/Configuration.h index e43de5a18..9da778430 100644 --- a/Marlin/example_configurations/delta/kossel_mini/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_mini/Configuration.h @@ -372,10 +372,52 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#define DISABLE_MAX_ENDSTOPS //#define DISABLE_MIN_ENDSTOPS // Deltas only use min endstops for probing. +//=========================================================================== +//============================= Z Probe Options ============================= +//=========================================================================== + +// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z-probe and a Z-min-endstop on the same machine. +// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. +// +// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** +// +// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. +// Example: To park the head outside the bed area when homing with G28. +// +// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. +// +// For a servo-based Z probe, you must set up servo support below, including +// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES. +// +// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. +// - Use 5V for powered (usu. inductive) sensors. +// - Otherwise connect: +// - normally-closed switches to GND and D32. +// - normally-open switches to 5V and D32. +// +// Normally-closed switches are advised and are the default. +// +// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) +// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the +// default pin for all RAMPS-based boards. Some other boards map differently. +// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. +// +// WARNING: +// Setting the wrong pin may have unexpected and potentially disastrous consequences. +// Use with caution and do your homework. +// +//#define Z_MIN_PROBE_ENDSTOP + +// If you want to use the Z_MIN_PIN to connect your Z_MIN_PROBE comment out the next define. +// In other words. The z-min-probe is connected to the Z_MIN_PIN and is used for homing and for probing. +#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN +// If you want to use a probe you do have to define one of the two defines above! + // If you want to enable the Z probe pin, but disable its use, uncomment the line below. // This only affects a Z probe endstop if you have separate Z min endstop as well and have -// activated Z_MIN_PROBE_ENDSTOP below. If you are using the Z Min endstop on your Z probe, +// activated Z_MIN_PROBE_ENDSTOP above. If you are using the Z Min endstop on your Z probe, // this has no effect. +// In other words. If a Z_MIN_PROBE_PIN is defined in your pin file - don't use it. //#define DISABLE_Z_MIN_PROBE_ENDSTOP // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 @@ -560,6 +602,18 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#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. + // Probes are sensors/switches that need to be activated before they can be used + // and deactivated after the use. + // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE + + // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER + // when the hardware endstops are active. + //#define FIX_MOUNTED_PROBE + + // A Servo Probe can be defined in the servo section below. + + // A Allen Key Probe is currently predefined only in the delta example configurations. + //#define Z_PROBE_SLED // Turn on if you have a Z probe mounted on a sled like those designed by Charles Bell. //#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. @@ -652,7 +706,8 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //If you have enabled the Bed Auto Leveling and are using the same Z Probe for Z Homing, //it is highly recommended you let this Z_SAFE_HOMING enabled!!! - #define Z_SAFE_HOMING // This feature is meant to avoid Z homing with Z probe outside the bed area. + #define Z_SAFE_HOMING // Use the z-min-probe for homing to z-min - not the z-min-endstop. + // This feature is meant to avoid Z homing with Z probe outside the bed area. // When defined, it will: // - Allow Z homing only after X and Y homing AND stepper drivers still enabled. // - If stepper drivers timeout, it will need X and Y homing again before Z homing. @@ -666,37 +721,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l #endif - // Support for a dedicated Z probe endstop separate from the Z min endstop. - // If you would like to use both a Z probe and a Z min endstop together, - // uncomment #define Z_MIN_PROBE_ENDSTOP and read the instructions below. - // If you still want to use the Z min endstop for homing, disable Z_SAFE_HOMING above. - // Example: To park the head outside the bed area when homing with G28. - // - // WARNING: - // The Z min endstop will need to set properly as it would without a Z probe - // to prevent head crashes and premature stopping during a print. - // - // To use a separate Z probe endstop, you must have a Z_MIN_PROBE_PIN - // defined in the pins_XXXXX.h file for your control board. - // If you are using a servo based Z probe, you will need to enable NUM_SERVOS, - // Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES in the R/C SERVO support below. - // RAMPS 1.3/1.4 boards may be able to use the 5V, Ground and the D32 pin - // in the Aux 4 section of the RAMPS board. Use 5V for powered sensors, - // otherwise connect to ground and D32 for normally closed configuration - // and 5V and D32 for normally open configurations. - // Normally closed configuration is advised and assumed. - // The D32 pin in Aux 4 on RAMPS maps to the Arduino D32 pin. - // Z_MIN_PROBE_PIN is setting the pin to use on the Arduino. - // Since the D32 pin on the RAMPS maps to D32 on Arduino, this works. - // D32 is currently selected in the RAMPS 1.3/1.4 pin file. - // All other boards will need changes to the respective pins_XXXXX.h file. - // - // WARNING: - // Setting the wrong pin may have unexpected and potentially disastrous outcomes. - // Use with caution and do your homework. - // - //#define Z_MIN_PROBE_ENDSTOP - #endif // AUTO_BED_LEVELING_FEATURE diff --git a/Marlin/example_configurations/delta/kossel_pro/Configuration.h b/Marlin/example_configurations/delta/kossel_pro/Configuration.h index b0755f581..fa1c64c62 100644 --- a/Marlin/example_configurations/delta/kossel_pro/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_pro/Configuration.h @@ -359,10 +359,52 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#define DISABLE_MAX_ENDSTOPS //#define DISABLE_MIN_ENDSTOPS // Deltas only use min endstops for probing. +//=========================================================================== +//============================= Z Probe Options ============================= +//=========================================================================== + +// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z-probe and a Z-min-endstop on the same machine. +// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. +// +// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** +// +// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. +// Example: To park the head outside the bed area when homing with G28. +// +// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. +// +// For a servo-based Z probe, you must set up servo support below, including +// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES. +// +// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. +// - Use 5V for powered (usu. inductive) sensors. +// - Otherwise connect: +// - normally-closed switches to GND and D32. +// - normally-open switches to 5V and D32. +// +// Normally-closed switches are advised and are the default. +// +// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) +// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the +// default pin for all RAMPS-based boards. Some other boards map differently. +// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. +// +// WARNING: +// Setting the wrong pin may have unexpected and potentially disastrous consequences. +// Use with caution and do your homework. +// +//#define Z_MIN_PROBE_ENDSTOP + +// If you want to use the Z_MIN_PIN to connect your Z_MIN_PROBE comment out the next define. +// In other words. The z-min-probe is connected to the Z_MIN_PIN and is used for homing and for probing. +#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN +// If you want to use a probe you do have to define one of the two defines above! + // If you want to enable the Z probe pin, but disable its use, uncomment the line below. // This only affects a Z probe endstop if you have separate Z min endstop as well and have -// activated Z_MIN_PROBE_ENDSTOP below. If you are using the Z Min endstop on your Z probe, +// activated Z_MIN_PROBE_ENDSTOP above. If you are using the Z Min endstop on your Z probe, // this has no effect. +// In other words. If a Z_MIN_PROBE_PIN is defined in your pin file - don't use it. //#define DISABLE_Z_MIN_PROBE_ENDSTOP // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 @@ -549,6 +591,18 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#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. + // Probes are sensors/switches that need to be activated before they can be used + // and deactivated after the use. + // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE + + // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER + // when the hardware endstops are active. + //#define FIX_MOUNTED_PROBE + + // A Servo Probe can be defined in the servo section below. + + // A Allen Key Probe is currently predefined only in the delta example configurations. + //#define Z_PROBE_SLED // Turn on if you have a Z probe mounted on a sled like those designed by Charles Bell. //#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. @@ -637,7 +691,8 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //If you have enabled the Bed Auto Leveling and are using the same Z Probe for Z Homing, //it is highly recommended you let this Z_SAFE_HOMING enabled!!! - #define Z_SAFE_HOMING // This feature is meant to avoid Z homing with Z probe outside the bed area. + #define Z_SAFE_HOMING // Use the z-min-probe for homing to z-min - not the z-min-endstop. + // This feature is meant to avoid Z homing with Z probe outside the bed area. // When defined, it will: // - Allow Z homing only after X and Y homing AND stepper drivers still enabled. // - If stepper drivers timeout, it will need X and Y homing again before Z homing. @@ -651,37 +706,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l #endif - // Support for a dedicated Z probe endstop separate from the Z min endstop. - // If you would like to use both a Z probe and a Z min endstop together, - // uncomment #define Z_MIN_PROBE_ENDSTOP and read the instructions below. - // If you still want to use the Z min endstop for homing, disable Z_SAFE_HOMING above. - // Example: To park the head outside the bed area when homing with G28. - // - // WARNING: - // The Z min endstop will need to set properly as it would without a Z probe - // to prevent head crashes and premature stopping during a print. - // - // To use a separate Z probe endstop, you must have a Z_MIN_PROBE_PIN - // defined in the pins_XXXXX.h file for your control board. - // If you are using a servo based Z probe, you will need to enable NUM_SERVOS, - // Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES in the R/C SERVO support below. - // RAMPS 1.3/1.4 boards may be able to use the 5V, Ground and the D32 pin - // in the Aux 4 section of the RAMPS board. Use 5V for powered sensors, - // otherwise connect to ground and D32 for normally closed configuration - // and 5V and D32 for normally open configurations. - // Normally closed configuration is advised and assumed. - // The D32 pin in Aux 4 on RAMPS maps to the Arduino D32 pin. - // Z_MIN_PROBE_PIN is setting the pin to use on the Arduino. - // Since the D32 pin on the RAMPS maps to D32 on Arduino, this works. - // D32 is currently selected in the RAMPS 1.3/1.4 pin file. - // All other boards will need changes to the respective pins_XXXXX.h file. - // - // WARNING: - // Setting the wrong pin may have unexpected and potentially disastrous outcomes. - // Use with caution and do your homework. - // - //#define Z_MIN_PROBE_ENDSTOP - #endif // AUTO_BED_LEVELING_FEATURE diff --git a/Marlin/example_configurations/delta/kossel_xl/Configuration.h b/Marlin/example_configurations/delta/kossel_xl/Configuration.h index ccda7a39e..1c6671b4d 100644 --- a/Marlin/example_configurations/delta/kossel_xl/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_xl/Configuration.h @@ -365,10 +365,52 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#define DISABLE_MAX_ENDSTOPS //#define DISABLE_MIN_ENDSTOPS +//=========================================================================== +//============================= Z Probe Options ============================= +//=========================================================================== + +// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z-probe and a Z-min-endstop on the same machine. +// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. +// +// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** +// +// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. +// Example: To park the head outside the bed area when homing with G28. +// +// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. +// +// For a servo-based Z probe, you must set up servo support below, including +// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES. +// +// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. +// - Use 5V for powered (usu. inductive) sensors. +// - Otherwise connect: +// - normally-closed switches to GND and D32. +// - normally-open switches to 5V and D32. +// +// Normally-closed switches are advised and are the default. +// +// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) +// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the +// default pin for all RAMPS-based boards. Some other boards map differently. +// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. +// +// WARNING: +// Setting the wrong pin may have unexpected and potentially disastrous consequences. +// Use with caution and do your homework. +// +//#define Z_MIN_PROBE_ENDSTOP + +// If you want to use the Z_MIN_PIN to connect your Z_MIN_PROBE comment out the next define. +// In other words. The z-min-probe is connected to the Z_MIN_PIN and is used for homing and for probing. +#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN +// If you want to use a probe you do have to define one of the two defines above! + // If you want to enable the Z probe pin, but disable its use, uncomment the line below. // This only affects a Z probe endstop if you have separate Z min endstop as well and have -// activated Z_MIN_PROBE_ENDSTOP below. If you are using the Z Min endstop on your Z probe, +// activated Z_MIN_PROBE_ENDSTOP above. If you are using the Z Min endstop on your Z probe, // this has no effect. +// In other words. If a Z_MIN_PROBE_PIN is defined in your pin file - don't use it. //#define DISABLE_Z_MIN_PROBE_ENDSTOP // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 @@ -553,6 +595,18 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#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. + // Probes are sensors/switches that need to be activated before they can be used + // and deactivated after the use. + // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE + + // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER + // when the hardware endstops are active. + //#define FIX_MOUNTED_PROBE + + // A Servo Probe can be defined in the servo section below. + + // A Allen Key Probe is currently predefined only in the delta example configurations. + //#define Z_PROBE_SLED // Turn on if you have a Z probe mounted on a sled like those designed by Charles Bell. //#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. @@ -560,7 +614,8 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //If you have enabled the Bed Auto Leveling and are using the same Z Probe for Z Homing, //it is highly recommended you let this Z_SAFE_HOMING enabled!!! - #define Z_SAFE_HOMING // This feature is meant to avoid Z homing with Z probe outside the bed area. + #define Z_SAFE_HOMING // Use the z-min-probe for homing to z-min - not the z-min-endstop. + // This feature is meant to avoid Z homing with Z probe outside the bed area. // When defined, it will: // - Allow Z homing only after X and Y homing AND stepper drivers still enabled. // - If stepper drivers timeout, it will need X and Y homing again before Z homing. @@ -574,37 +629,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l #endif - // Support for a dedicated Z probe endstop separate from the Z min endstop. - // If you would like to use both a Z probe and a Z min endstop together, - // uncomment #define Z_MIN_PROBE_ENDSTOP and read the instructions below. - // If you still want to use the Z min endstop for homing, disable Z_SAFE_HOMING above. - // Example: To park the head outside the bed area when homing with G28. - // - // WARNING: - // The Z min endstop will need to set properly as it would without a Z probe - // to prevent head crashes and premature stopping during a print. - // - // To use a separate Z probe endstop, you must have a Z_MIN_PROBE_PIN - // defined in the pins_XXXXX.h file for your control board. - // If you are using a servo based Z probe, you will need to enable NUM_SERVOS, - // Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES in the R/C SERVO support below. - // RAMPS 1.3/1.4 boards may be able to use the 5V, Ground and the D32 pin - // in the Aux 4 section of the RAMPS board. Use 5V for powered sensors, - // otherwise connect to ground and D32 for normally closed configuration - // and 5V and D32 for normally open configurations. - // Normally closed configuration is advised and assumed. - // The D32 pin in Aux 4 on RAMPS maps to the Arduino D32 pin. - // Z_MIN_PROBE_PIN is setting the pin to use on the Arduino. - // Since the D32 pin on the RAMPS maps to D32 on Arduino, this works. - // D32 is currently selected in the RAMPS 1.3/1.4 pin file. - // All other boards will need changes to the respective pins_XXXXX.h file. - // - // WARNING: - // Setting the wrong pin may have unexpected and potentially disastrous outcomes. - // Use with caution and do your homework. - // - //#define Z_MIN_PROBE_ENDSTOP - #endif // AUTO_BED_LEVELING_FEATURE diff --git a/Marlin/example_configurations/makibox/Configuration.h b/Marlin/example_configurations/makibox/Configuration.h index 43536fe6a..0d169eafd 100644 --- a/Marlin/example_configurations/makibox/Configuration.h +++ b/Marlin/example_configurations/makibox/Configuration.h @@ -340,10 +340,52 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#define DISABLE_MAX_ENDSTOPS //#define DISABLE_MIN_ENDSTOPS +//=========================================================================== +//============================= Z Probe Options ============================= +//=========================================================================== + +// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z-probe and a Z-min-endstop on the same machine. +// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. +// +// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** +// +// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. +// Example: To park the head outside the bed area when homing with G28. +// +// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. +// +// For a servo-based Z probe, you must set up servo support below, including +// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES. +// +// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. +// - Use 5V for powered (usu. inductive) sensors. +// - Otherwise connect: +// - normally-closed switches to GND and D32. +// - normally-open switches to 5V and D32. +// +// Normally-closed switches are advised and are the default. +// +// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) +// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the +// default pin for all RAMPS-based boards. Some other boards map differently. +// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. +// +// WARNING: +// Setting the wrong pin may have unexpected and potentially disastrous consequences. +// Use with caution and do your homework. +// +//#define Z_MIN_PROBE_ENDSTOP + +// If you want to use the Z_MIN_PIN to connect your Z_MIN_PROBE comment out the next define. +// In other words. The z-min-probe is connected to the Z_MIN_PIN and is used for homing and for probing. +#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN +// If you want to use a probe you do have to define one of the two defines above! + // If you want to enable the Z probe pin, but disable its use, uncomment the line below. // This only affects a Z probe endstop if you have separate Z min endstop as well and have -// activated Z_MIN_PROBE_ENDSTOP below. If you are using the Z Min endstop on your Z probe, +// activated Z_MIN_PROBE_ENDSTOP above. If you are using the Z Min endstop on your Z probe, // this has no effect. +// In other words. If a Z_MIN_PROBE_PIN is defined in your pin file - don't use it. //#define DISABLE_Z_MIN_PROBE_ENDSTOP // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 @@ -524,6 +566,18 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#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. + // Probes are sensors/switches that need to be activated before they can be used + // and deactivated after the use. + // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE + + // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER + // when the hardware endstops are active. + //#define FIX_MOUNTED_PROBE + + // A Servo Probe can be defined in the servo section below. + + // A Allen Key Probe is currently predefined only in the delta example configurations. + //#define Z_PROBE_SLED // Turn on if you have a Z probe mounted on a sled like those designed by Charles Bell. //#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. @@ -531,7 +585,8 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //If you have enabled the Bed Auto Leveling and are using the same Z Probe for Z Homing, //it is highly recommended you let this Z_SAFE_HOMING enabled!!! - #define Z_SAFE_HOMING // This feature is meant to avoid Z homing with Z probe outside the bed area. + #define Z_SAFE_HOMING // Use the z-min-probe for homing to z-min - not the z-min-endstop. + // This feature is meant to avoid Z homing with Z probe outside the bed area. // When defined, it will: // - Allow Z homing only after X and Y homing AND stepper drivers still enabled. // - If stepper drivers timeout, it will need X and Y homing again before Z homing. @@ -545,37 +600,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l #endif - // Support for a dedicated Z probe endstop separate from the Z min endstop. - // If you would like to use both a Z probe and a Z min endstop together, - // uncomment #define Z_MIN_PROBE_ENDSTOP and read the instructions below. - // If you still want to use the Z min endstop for homing, disable Z_SAFE_HOMING above. - // Example: To park the head outside the bed area when homing with G28. - // - // WARNING: - // The Z min endstop will need to set properly as it would without a Z probe - // to prevent head crashes and premature stopping during a print. - // - // To use a separate Z probe endstop, you must have a Z_MIN_PROBE_PIN - // defined in the pins_XXXXX.h file for your control board. - // If you are using a servo based Z probe, you will need to enable NUM_SERVOS, - // Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES in the R/C SERVO support below. - // RAMPS 1.3/1.4 boards may be able to use the 5V, Ground and the D32 pin - // in the Aux 4 section of the RAMPS board. Use 5V for powered sensors, - // otherwise connect to ground and D32 for normally closed configuration - // and 5V and D32 for normally open configurations. - // Normally closed configuration is advised and assumed. - // The D32 pin in Aux 4 on RAMPS maps to the Arduino D32 pin. - // Z_MIN_PROBE_PIN is setting the pin to use on the Arduino. - // Since the D32 pin on the RAMPS maps to D32 on Arduino, this works. - // D32 is currently selected in the RAMPS 1.3/1.4 pin file. - // All other boards will need changes to the respective pins_XXXXX.h file. - // - // WARNING: - // Setting the wrong pin may have unexpected and potentially disastrous outcomes. - // Use with caution and do your homework. - // - //#define Z_MIN_PROBE_ENDSTOP - #endif // AUTO_BED_LEVELING_FEATURE diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration.h b/Marlin/example_configurations/tvrrug/Round2/Configuration.h index a8026d771..f16056feb 100644 --- a/Marlin/example_configurations/tvrrug/Round2/Configuration.h +++ b/Marlin/example_configurations/tvrrug/Round2/Configuration.h @@ -327,10 +327,52 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo //#define DISABLE_MAX_ENDSTOPS //#define DISABLE_MIN_ENDSTOPS +//=========================================================================== +//============================= Z Probe Options ============================= +//=========================================================================== + +// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z-probe and a Z-min-endstop on the same machine. +// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. +// +// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** +// +// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. +// Example: To park the head outside the bed area when homing with G28. +// +// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. +// +// For a servo-based Z probe, you must set up servo support below, including +// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES. +// +// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. +// - Use 5V for powered (usu. inductive) sensors. +// - Otherwise connect: +// - normally-closed switches to GND and D32. +// - normally-open switches to 5V and D32. +// +// Normally-closed switches are advised and are the default. +// +// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) +// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the +// default pin for all RAMPS-based boards. Some other boards map differently. +// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. +// +// WARNING: +// Setting the wrong pin may have unexpected and potentially disastrous consequences. +// Use with caution and do your homework. +// +//#define Z_MIN_PROBE_ENDSTOP + +// If you want to use the Z_MIN_PIN to connect your Z_MIN_PROBE comment out the next define. +// In other words. The z-min-probe is connected to the Z_MIN_PIN and is used for homing and for probing. +#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN +// If you want to use a probe you do have to define one of the two defines above! + // If you want to enable the Z probe pin, but disable its use, uncomment the line below. // This only affects a Z probe endstop if you have separate Z min endstop as well and have -// activated Z_MIN_PROBE_ENDSTOP below. If you are using the Z Min endstop on your Z probe, +// activated Z_MIN_PROBE_ENDSTOP above. If you are using the Z Min endstop on your Z probe, // this has no effect. +// In other words. If a Z_MIN_PROBE_PIN is defined in your pin file - don't use it. //#define DISABLE_Z_MIN_PROBE_ENDSTOP // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 @@ -511,6 +553,18 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo //#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. + // Probes are sensors/switches that need to be activated before they can be used + // and deactivated after the use. + // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE + + // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER + // when the hardware endstops are active. + //#define FIX_MOUNTED_PROBE + + // A Servo Probe can be defined in the servo section below. + + // A Allen Key Probe is currently predefined only in the delta example configurations. + //#define Z_PROBE_SLED // Turn on if you have a Z probe mounted on a sled like those designed by Charles Bell. //#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. @@ -518,7 +572,8 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo //If you have enabled the Bed Auto Leveling and are using the same Z Probe for Z Homing, //it is highly recommended you let this Z_SAFE_HOMING enabled!!! - #define Z_SAFE_HOMING // This feature is meant to avoid Z homing with Z probe outside the bed area. + #define Z_SAFE_HOMING // Use the z-min-probe for homing to z-min - not the z-min-endstop. + // This feature is meant to avoid Z homing with Z probe outside the bed area. // When defined, it will: // - Allow Z homing only after X and Y homing AND stepper drivers still enabled. // - If stepper drivers timeout, it will need X and Y homing again before Z homing. @@ -532,37 +587,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo #endif - // Support for a dedicated Z probe endstop separate from the Z min endstop. - // If you would like to use both a Z probe and a Z min endstop together, - // uncomment #define Z_MIN_PROBE_ENDSTOP and read the instructions below. - // If you still want to use the Z min endstop for homing, disable Z_SAFE_HOMING above. - // Example: To park the head outside the bed area when homing with G28. - // - // WARNING: - // The Z min endstop will need to set properly as it would without a Z probe - // to prevent head crashes and premature stopping during a print. - // - // To use a separate Z probe endstop, you must have a Z_MIN_PROBE_PIN - // defined in the pins_XXXXX.h file for your control board. - // If you are using a servo based Z probe, you will need to enable NUM_SERVOS, - // Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES in the R/C SERVO support below. - // RAMPS 1.3/1.4 boards may be able to use the 5V, Ground and the D32 pin - // in the Aux 4 section of the RAMPS board. Use 5V for powered sensors, - // otherwise connect to ground and D32 for normally closed configuration - // and 5V and D32 for normally open configurations. - // Normally closed configuration is advised and assumed. - // The D32 pin in Aux 4 on RAMPS maps to the Arduino D32 pin. - // Z_MIN_PROBE_PIN is setting the pin to use on the Arduino. - // Since the D32 pin on the RAMPS maps to D32 on Arduino, this works. - // D32 is currently selected in the RAMPS 1.3/1.4 pin file. - // All other boards will need changes to the respective pins_XXXXX.h file. - // - // WARNING: - // Setting the wrong pin may have unexpected and potentially disastrous outcomes. - // Use with caution and do your homework. - // - //#define Z_MIN_PROBE_ENDSTOP - #endif // AUTO_BED_LEVELING_FEATURE diff --git a/Marlin/stepper.cpp b/Marlin/stepper.cpp index 27f18ebc4..7f24a16ca 100644 --- a/Marlin/stepper.cpp +++ b/Marlin/stepper.cpp @@ -39,6 +39,9 @@ //=========================================================================== block_t* current_block; // A pointer to the block currently being traced +#if ENABLED(HAS_Z_MIN_PROBE) + volatile bool z_probe_is_active = false; +#endif //=========================================================================== //============================= private variables =========================== @@ -425,17 +428,18 @@ inline void update_endstops() { } #else // !Z_DUAL_ENDSTOPS - UPDATE_ENDSTOP(Z, MIN); - + #if ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) && ENABLED(HAS_Z_MIN_PROBE) + if (z_probe_is_active) UPDATE_ENDSTOP(Z, MIN); + #else + UPDATE_ENDSTOP(Z, MIN); + #endif #endif // !Z_DUAL_ENDSTOPS - #endif // Z_MIN_PIN - - #if ENABLED(Z_MIN_PROBE_ENDSTOP) - UPDATE_ENDSTOP(Z, MIN_PROBE); + #endif - if (TEST_ENDSTOP(Z_MIN_PROBE)) { - endstops_trigsteps[Z_AXIS] = count_position[Z_AXIS]; - SBI(endstop_hit_bits, Z_MIN_PROBE); + #if ENABLED(Z_MIN_PROBE_ENDSTOP) && DISABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) && ENABLED(HAS_Z_MIN_PROBE) + if (z_probe_is_active) { + UPDATE_ENDSTOP(Z, MIN_PROBE); + if (TEST_ENDSTOP(Z_MIN_PROBE)) endstop_hit_bits |= _BV(Z_MIN_PROBE); } #endif } @@ -649,7 +653,11 @@ ISR(TIMER1_COMPA_vect) { if (current_block != NULL) { // Update endstops state, if enabled - if (check_endstops) update_endstops(); + #if ENABLED(HAS_Z_MIN_PROBE) + if (check_endstops || z_probe_is_active) update_endstops(); + #else + if (check_endstops) update_endstops(); + #endif // Take multiple steps per interrupt (For high speed moves) for (int8_t i = 0; i < step_loops; i++) {