Merge pull request #4426 from thinkyhead/rc_probeless_safe_homing
Allow Z_SAFE_HOMING without a probe
This commit is contained in:
		
						commit
						dc3d2b50cd
					
				| @ -566,15 +566,6 @@ | ||||
|    * Bed Probe dependencies | ||||
|    */ | ||||
|   #if HAS_BED_PROBE | ||||
|     #ifndef X_PROBE_OFFSET_FROM_EXTRUDER | ||||
|       #define X_PROBE_OFFSET_FROM_EXTRUDER 0 | ||||
|     #endif | ||||
|     #ifndef Y_PROBE_OFFSET_FROM_EXTRUDER | ||||
|       #define Y_PROBE_OFFSET_FROM_EXTRUDER 0 | ||||
|     #endif | ||||
|     #ifndef Z_PROBE_OFFSET_FROM_EXTRUDER | ||||
|       #define Z_PROBE_OFFSET_FROM_EXTRUDER 0 | ||||
|     #endif | ||||
|     #ifndef Z_PROBE_OFFSET_RANGE_MIN | ||||
|       #define Z_PROBE_OFFSET_RANGE_MIN -20 | ||||
|     #endif | ||||
| @ -593,6 +584,13 @@ | ||||
|     #else | ||||
|       #define _Z_RAISE_PROBE_DEPLOY_STOW Z_RAISE_PROBE_DEPLOY_STOW | ||||
|     #endif | ||||
|   #else | ||||
|     #undef X_PROBE_OFFSET_FROM_EXTRUDER | ||||
|     #undef Y_PROBE_OFFSET_FROM_EXTRUDER | ||||
|     #undef Z_PROBE_OFFSET_FROM_EXTRUDER | ||||
|     #define X_PROBE_OFFSET_FROM_EXTRUDER 0 | ||||
|     #define Y_PROBE_OFFSET_FROM_EXTRUDER 0 | ||||
|     #define Z_PROBE_OFFSET_FROM_EXTRUDER 0 | ||||
|   #endif | ||||
| 
 | ||||
|   /**
 | ||||
|  | ||||
| @ -735,7 +735,7 @@ | ||||
| //
 | ||||
| // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
 | ||||
| // - If stepper drivers time out, it will need X and Y homing again before Z homing.
 | ||||
| // - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Prevent Z homing when the Z probe is outside bed area.
 | ||||
| //#define Z_SAFE_HOMING
 | ||||
| 
 | ||||
|  | ||||
| @ -3049,12 +3049,11 @@ inline void gcode_G28() { | ||||
|             SYNC_PLAN_POSITION_KINEMATIC(); | ||||
| 
 | ||||
|             /**
 | ||||
|              * Set the Z probe (or just the nozzle) destination to the safe | ||||
|              *  homing point | ||||
|              * Move the Z probe (or just the nozzle) to the safe homing point | ||||
|              */ | ||||
|             destination[X_AXIS] = round(Z_SAFE_HOMING_X_POINT - (X_PROBE_OFFSET_FROM_EXTRUDER)); | ||||
|             destination[Y_AXIS] = round(Z_SAFE_HOMING_Y_POINT - (Y_PROBE_OFFSET_FROM_EXTRUDER)); | ||||
|             destination[Z_AXIS] = current_position[Z_AXIS]; //z is already at the right height
 | ||||
|             destination[Z_AXIS] = current_position[Z_AXIS]; // Z is already at the right height
 | ||||
| 
 | ||||
|             #if ENABLED(DEBUG_LEVELING_FEATURE) | ||||
|               if (DEBUGGING(LEVELING)) { | ||||
|  | ||||
| @ -340,8 +340,8 @@ | ||||
|     #error "You must set Z_RAISE_BETWEEN_PROBINGS in your configuration." | ||||
|   #elif Z_RAISE_PROBE_DEPLOY_STOW < 0 | ||||
|     #error "Probes need Z_RAISE_PROBE_DEPLOY_STOW >= 0." | ||||
|   #elif Z_RAISE_BETWEEN_PROBINGS < 1 | ||||
|     #error "Probes need Z_RAISE_BETWEEN_PROBINGS >= 1." | ||||
|   #elif Z_RAISE_BETWEEN_PROBINGS < 0 | ||||
|     #error "Probes need Z_RAISE_BETWEEN_PROBINGS >= 0." | ||||
|   #endif | ||||
| 
 | ||||
| #else | ||||
| @ -353,8 +353,6 @@ | ||||
|     #error "AUTO_BED_LEVELING_FEATURE requires a probe! Define a Z Servo, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or FIX_MOUNTED_PROBE." | ||||
|   #elif ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST) | ||||
|     #error "Z_MIN_PROBE_REPEATABILITY_TEST requires a probe! Define a Z Servo, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or FIX_MOUNTED_PROBE." | ||||
|   #elif ENABLED(Z_SAFE_HOMING) | ||||
|     #error "Z_SAFE_HOMING currently requires a probe." | ||||
|   #endif | ||||
| 
 | ||||
| #endif | ||||
| @ -364,9 +362,17 @@ | ||||
|  */ | ||||
| #if ENABLED(Z_SAFE_HOMING) | ||||
|   #if Z_SAFE_HOMING_X_POINT < MIN_PROBE_X || Z_SAFE_HOMING_X_POINT > MAX_PROBE_X | ||||
|     #error "The given Z_SAFE_HOMING_X_POINT can't be reached by the Z probe." | ||||
|     #if HAS_BED_PROBE | ||||
|       #error "Z_SAFE_HOMING_X_POINT can't be reached by the Z probe." | ||||
|     #else | ||||
|       #error "Z_SAFE_HOMING_X_POINT can't be reached by the nozzle." | ||||
|     #endif | ||||
|   #elif Z_SAFE_HOMING_Y_POINT < MIN_PROBE_Y || Z_SAFE_HOMING_Y_POINT > MAX_PROBE_Y | ||||
|     #error "The given Z_SAFE_HOMING_Y_POINT can't be reached by the Z probe." | ||||
|     #if HAS_BED_PROBE | ||||
|       #error "Z_SAFE_HOMING_Y_POINT can't be reached by the Z probe." | ||||
|     #else | ||||
|       #error "Z_SAFE_HOMING_Y_POINT can't be reached by the nozzle." | ||||
|     #endif | ||||
|   #endif | ||||
| #endif // Z_SAFE_HOMING
 | ||||
| 
 | ||||
|  | ||||
| @ -736,7 +736,7 @@ | ||||
| //
 | ||||
| // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
 | ||||
| // - If stepper drivers time out, it will need X and Y homing again before Z homing.
 | ||||
| // - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Prevent Z homing when the Z probe is outside bed area.
 | ||||
| //#define Z_SAFE_HOMING
 | ||||
| 
 | ||||
|  | ||||
| @ -718,7 +718,7 @@ | ||||
| //
 | ||||
| // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
 | ||||
| // - If stepper drivers time out, it will need X and Y homing again before Z homing.
 | ||||
| // - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Prevent Z homing when the Z probe is outside bed area.
 | ||||
| //#define Z_SAFE_HOMING
 | ||||
| 
 | ||||
|  | ||||
| @ -716,7 +716,7 @@ | ||||
| //
 | ||||
| // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
 | ||||
| // - If stepper drivers time out, it will need X and Y homing again before Z homing.
 | ||||
| // - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Prevent Z homing when the Z probe is outside bed area.
 | ||||
| //#define Z_SAFE_HOMING
 | ||||
| 
 | ||||
|  | ||||
| @ -728,7 +728,7 @@ | ||||
| //
 | ||||
| // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
 | ||||
| // - If stepper drivers time out, it will need X and Y homing again before Z homing.
 | ||||
| // - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Prevent Z homing when the Z probe is outside bed area.
 | ||||
| //#define Z_SAFE_HOMING
 | ||||
| 
 | ||||
|  | ||||
| @ -729,7 +729,7 @@ | ||||
| //
 | ||||
| // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
 | ||||
| // - If stepper drivers time out, it will need X and Y homing again before Z homing.
 | ||||
| // - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Prevent Z homing when the Z probe is outside bed area.
 | ||||
| #define Z_SAFE_HOMING | ||||
| 
 | ||||
|  | ||||
| @ -753,7 +753,7 @@ | ||||
| //
 | ||||
| // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
 | ||||
| // - If stepper drivers time out, it will need X and Y homing again before Z homing.
 | ||||
| // - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Prevent Z homing when the Z probe is outside bed area.
 | ||||
| //#define Z_SAFE_HOMING
 | ||||
| 
 | ||||
|  | ||||
| @ -736,7 +736,7 @@ | ||||
| //
 | ||||
| // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
 | ||||
| // - If stepper drivers time out, it will need X and Y homing again before Z homing.
 | ||||
| // - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Prevent Z homing when the Z probe is outside bed area.
 | ||||
| //#define Z_SAFE_HOMING
 | ||||
| 
 | ||||
|  | ||||
| @ -736,7 +736,7 @@ | ||||
| //
 | ||||
| // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
 | ||||
| // - If stepper drivers time out, it will need X and Y homing again before Z homing.
 | ||||
| // - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Prevent Z homing when the Z probe is outside bed area.
 | ||||
| //#define Z_SAFE_HOMING
 | ||||
| 
 | ||||
|  | ||||
| @ -736,7 +736,7 @@ | ||||
| //
 | ||||
| // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
 | ||||
| // - If stepper drivers time out, it will need X and Y homing again before Z homing.
 | ||||
| // - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Prevent Z homing when the Z probe is outside bed area.
 | ||||
| //#define Z_SAFE_HOMING
 | ||||
| 
 | ||||
|  | ||||
| @ -733,7 +733,7 @@ | ||||
| //
 | ||||
| // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
 | ||||
| // - If stepper drivers time out, it will need X and Y homing again before Z homing.
 | ||||
| // - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Prevent Z homing when the Z probe is outside bed area.
 | ||||
| //#define Z_SAFE_HOMING
 | ||||
| 
 | ||||
|  | ||||
| @ -744,7 +744,7 @@ | ||||
| //
 | ||||
| // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
 | ||||
| // - If stepper drivers time out, it will need X and Y homing again before Z homing.
 | ||||
| // - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Prevent Z homing when the Z probe is outside bed area.
 | ||||
| //#define Z_SAFE_HOMING
 | ||||
| 
 | ||||
|  | ||||
| @ -757,7 +757,7 @@ | ||||
| //
 | ||||
| // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
 | ||||
| // - If stepper drivers time out, it will need X and Y homing again before Z homing.
 | ||||
| // - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Prevent Z homing when the Z probe is outside bed area.
 | ||||
| //#define Z_SAFE_HOMING
 | ||||
| 
 | ||||
|  | ||||
| @ -727,7 +727,7 @@ | ||||
| //
 | ||||
| // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
 | ||||
| // - If stepper drivers time out, it will need X and Y homing again before Z homing.
 | ||||
| // - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Prevent Z homing when the Z probe is outside bed area.
 | ||||
| //#define Z_SAFE_HOMING
 | ||||
| 
 | ||||
|  | ||||
| @ -736,7 +736,7 @@ | ||||
| //
 | ||||
| // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
 | ||||
| // - If stepper drivers time out, it will need X and Y homing again before Z homing.
 | ||||
| // - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Prevent Z homing when the Z probe is outside bed area.
 | ||||
| //#define Z_SAFE_HOMING
 | ||||
| 
 | ||||
|  | ||||
| @ -828,7 +828,7 @@ | ||||
| //
 | ||||
| // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
 | ||||
| // - If stepper drivers time out, it will need X and Y homing again before Z homing.
 | ||||
| // - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Prevent Z homing when the Z probe is outside bed area.
 | ||||
| //#define Z_SAFE_HOMING
 | ||||
| 
 | ||||
|  | ||||
| @ -822,7 +822,7 @@ | ||||
| //
 | ||||
| // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
 | ||||
| // - If stepper drivers time out, it will need X and Y homing again before Z homing.
 | ||||
| // - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Prevent Z homing when the Z probe is outside bed area.
 | ||||
| //#define Z_SAFE_HOMING
 | ||||
| 
 | ||||
|  | ||||
| @ -825,7 +825,7 @@ | ||||
| //
 | ||||
| // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
 | ||||
| // - If stepper drivers time out, it will need X and Y homing again before Z homing.
 | ||||
| // - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Prevent Z homing when the Z probe is outside bed area.
 | ||||
| //#define Z_SAFE_HOMING
 | ||||
| 
 | ||||
|  | ||||
| @ -819,7 +819,7 @@ | ||||
| //
 | ||||
| // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
 | ||||
| // - If stepper drivers time out, it will need X and Y homing again before Z homing.
 | ||||
| // - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Prevent Z homing when the Z probe is outside bed area.
 | ||||
| #define Z_SAFE_HOMING | ||||
| 
 | ||||
|  | ||||
| @ -820,7 +820,7 @@ | ||||
| //
 | ||||
| // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
 | ||||
| // - If stepper drivers time out, it will need X and Y homing again before Z homing.
 | ||||
| // - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Prevent Z homing when the Z probe is outside bed area.
 | ||||
| //#define Z_SAFE_HOMING
 | ||||
| 
 | ||||
|  | ||||
| @ -739,7 +739,7 @@ | ||||
| //
 | ||||
| // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
 | ||||
| // - If stepper drivers time out, it will need X and Y homing again before Z homing.
 | ||||
| // - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Prevent Z homing when the Z probe is outside bed area.
 | ||||
| //#define Z_SAFE_HOMING
 | ||||
| 
 | ||||
|  | ||||
| @ -725,7 +725,7 @@ | ||||
| //
 | ||||
| // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
 | ||||
| // - If stepper drivers time out, it will need X and Y homing again before Z homing.
 | ||||
| // - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
 | ||||
| // - Prevent Z homing when the Z probe is outside bed area.
 | ||||
| //#define Z_SAFE_HOMING
 | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user