Ported over Johann Rocholl's improvements for delta printers:
- Nonlinear auto bed leveling code (includes G29, G30, Z_RAISE_AFTER_PROBING). Cleaned it up to be a delta-specific AUTO_BED_LEVELING_GRID code path. - Allen key z-probe deployment and retraction code. Cleaned it up and added safety checks.
This commit is contained in:
		| @@ -110,6 +110,9 @@ Here are some standard links for getting your machine calibrated: | ||||
| // Effective horizontal distance bridged by diagonal push rods. | ||||
| #define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET-DELTA_EFFECTOR_OFFSET-DELTA_CARRIAGE_OFFSET) | ||||
|  | ||||
| // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers). | ||||
| #define DELTA_PRINTABLE_RADIUS 90 | ||||
|  | ||||
|  | ||||
| //=========================================================================== | ||||
| //============================= Thermal Settings ============================ | ||||
| @@ -361,8 +364,7 @@ const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of | ||||
| const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. | ||||
| const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. | ||||
| //#define DISABLE_MAX_ENDSTOPS | ||||
| // Deltas never have min endstops | ||||
| #define DISABLE_MIN_ENDSTOPS | ||||
| #define DISABLE_MIN_ENDSTOPS // Deltas only use min endstops for probing | ||||
|  | ||||
| // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 | ||||
| #define X_ENABLE_ON 0 | ||||
| @@ -413,8 +415,80 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of | ||||
| //============================= Bed Auto Leveling =========================== | ||||
| //=========================================================================== | ||||
|  | ||||
| //Bed Auto Leveling is still not compatible with Delta Kinematics | ||||
| //#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line) | ||||
| // Z-Probe Repeatability test is not supported in Deltas yet. | ||||
|  | ||||
| #ifdef ENABLE_AUTO_BED_LEVELING | ||||
|  | ||||
|   // Deltas only support grid mode | ||||
|   #define AUTO_BED_LEVELING_GRID | ||||
|  | ||||
|   #define DELTA_PROBABLE_RADIUS (DELTA_PRINTABLE_RADIUS - 10) | ||||
|   #define LEFT_PROBE_BED_POSITION -DELTA_PROBABLE_RADIUS | ||||
|   #define RIGHT_PROBE_BED_POSITION DELTA_PROBABLE_RADIUS | ||||
|   #define BACK_PROBE_BED_POSITION DELTA_PROBABLE_RADIUS | ||||
|   #define FRONT_PROBE_BED_POSITION -DELTA_PROBABLE_RADIUS    | ||||
|  | ||||
|   // Non-linear bed leveling will be used. | ||||
|   // Compensate by interpolating between the nearest four Z probe values for each point. | ||||
|   // Useful for deltas where the print surface may appear like a bowl or dome shape. | ||||
|   // Works best with ACCURATE_BED_LEVELING_POINTS 5 or higher. | ||||
|   #define AUTO_BED_LEVELING_GRID_POINTS 9 | ||||
|  | ||||
|   // Offsets to the probe relative to the extruder tip (Hotend - Probe) | ||||
|   // X and Y offsets must be integers | ||||
|   #define X_PROBE_OFFSET_FROM_EXTRUDER 0     // -left  +right | ||||
|   #define Y_PROBE_OFFSET_FROM_EXTRUDER -10   // -front +behind | ||||
|   #define Z_PROBE_OFFSET_FROM_EXTRUDER -3.5  // -below (always!) | ||||
|  | ||||
|   #define Z_RAISE_BEFORE_HOMING 4       // (in mm) Raise Z before homing (G28) for Probe Clearance. | ||||
|                                         // Be sure you have this distance over your Z_MAX_POS in case | ||||
|  | ||||
|   #define XY_TRAVEL_SPEED 4000         // X and Y axis travel speed between probes, in mm/min | ||||
|  | ||||
|   #define Z_RAISE_BEFORE_PROBING 15   //How much the extruder will be raised before traveling to the first probing point. | ||||
|   #define Z_RAISE_BETWEEN_PROBINGS 5  //How much the extruder will be raised when traveling from between next probing points | ||||
|   #define Z_RAISE_AFTER_PROBING 50    //How much the extruder will be raised after the last probing point. | ||||
|    | ||||
|   // Allen key retractable z-probe as seen on many Kossel delta printers - http://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe | ||||
|   // Deploys by touching z-axis belt. Retracts by pushing the probe down. Uses Z_MIN_PIN. | ||||
|   //#define Z_PROBE_ALLEN_KEY | ||||
|   #ifdef Z_PROBE_ALLEN_KEY | ||||
|     #define Z_PROBE_ALLEN_KEY_DEPLOY_X 30 | ||||
|     #define Z_PROBE_ALLEN_KEY_DEPLOY_Y DELTA_PRINTABLE_RADIUS | ||||
|     #define Z_PROBE_ALLEN_KEY_DEPLOY_Z 100 | ||||
|      | ||||
|     #define Z_PROBE_ALLEN_KEY_RETRACT_X     -64 | ||||
|     #define Z_PROBE_ALLEN_KEY_RETRACT_Y     56 | ||||
|     #define Z_PROBE_ALLEN_KEY_RETRACT_Z     23 | ||||
|     #define Z_PROBE_ALLEN_KEY_RETRACT_DEPTH 20 | ||||
|   #endif | ||||
|    | ||||
|   //If defined, the Probe servo will be turned on only during movement and then turned off to avoid jerk | ||||
|   //The value is the delay to turn the servo off after powered on - depends on the servo speed; 300ms is good value, but you can try lower it. | ||||
|   // You MUST HAVE the SERVO_ENDSTOPS defined to use here a value higher than zero otherwise your code will not compile. | ||||
|  | ||||
| //  #define PROBE_SERVO_DEACTIVATION_DELAY 300 | ||||
|  | ||||
|  | ||||
| //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 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 | ||||
|                           // - Position the probe in a defined XY point before Z Homing when homing all axis (G28) | ||||
|                           // - Block Z homing only when the probe is outside bed area. | ||||
|  | ||||
|   #ifdef Z_SAFE_HOMING | ||||
|  | ||||
|     #define Z_SAFE_HOMING_X_POINT (X_MAX_LENGTH/2)    // X point for Z homing when homing all axis (G28) | ||||
|     #define Z_SAFE_HOMING_Y_POINT (Y_MAX_LENGTH/2)    // Y point for Z homing when homing all axis (G28) | ||||
|  | ||||
|   #endif | ||||
|  | ||||
| #endif // ENABLE_AUTO_BED_LEVELING | ||||
|  | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -455,9 +455,27 @@ const unsigned int dropsegments=5; //everything with less than this number of st | ||||
| //=========================================================================== | ||||
|  | ||||
| #if defined (ENABLE_AUTO_BED_LEVELING) && defined (DELTA) | ||||
|   #error "Bed Auto Leveling is still not compatible with Delta Kinematics." | ||||
|  | ||||
|   #if not defined(AUTO_BED_LEVELING_GRID) | ||||
|     #error "Only Grid Bed Auto Leveling is supported on Deltas." | ||||
|   #endif | ||||
|    | ||||
|   #if defined(Z_PROBE_SLED) | ||||
|     #error "You cannot use Z_PROBE_SLED together with DELTA." | ||||
|   #endif | ||||
|  | ||||
|   #if defined(Z_PROBE_REPEATABILITY_TEST) | ||||
|     #error "Z-probe repeatability test is not supported on Deltas yet." | ||||
|   #endif | ||||
|  | ||||
| #endif   | ||||
|  | ||||
| #if defined(Z_PROBE_ALLEN_KEY) | ||||
|   #if !defined(AUTO_BED_LEVELING_GRID) || !defined(DELTA) | ||||
|     #error "Invalid use of Z_PROBE_ALLEN_KEY." | ||||
|   #endif | ||||
| #endif | ||||
|  | ||||
| #if EXTRUDERS > 1 && defined TEMP_SENSOR_1_AS_REDUNDANT | ||||
|   #error "You cannot use TEMP_SENSOR_1_AS_REDUNDANT if EXTRUDERS > 1" | ||||
| #endif | ||||
|   | ||||
		Reference in New Issue
	
	Block a user