Fix for issues #6997 and #7152

Probing with the effector in the printing area, but an eccentric probe (e.g. allen key) outside it but still touching the bed gives meaninfull information for calibration. Since calibration is most accurate when probing as close to the towers as possible the testing was way to restrictive hence this fix.
master
LVD-AC 8 years ago committed by Scott Lahteine
parent 57fff2e95e
commit 567941e341

@ -2299,18 +2299,23 @@ static void clean_up_after_endstop_or_probe_move() {
* - Raise to the BETWEEN height * - Raise to the BETWEEN height
* - Return the probed Z position * - Return the probed Z position
*/ */
float probe_pt(const float &x, const float &y, const bool stow, const uint8_t verbose_level) { float probe_pt(const float &lx, const float &ly, const bool stow, const uint8_t verbose_level, const bool printable=true) {
#if ENABLED(DEBUG_LEVELING_FEATURE) #if ENABLED(DEBUG_LEVELING_FEATURE)
if (DEBUGGING(LEVELING)) { if (DEBUGGING(LEVELING)) {
SERIAL_ECHOPAIR(">>> probe_pt(", x); SERIAL_ECHOPAIR(">>> probe_pt(", lx);
SERIAL_ECHOPAIR(", ", y); SERIAL_ECHOPAIR(", ", ly);
SERIAL_ECHOPAIR(", ", stow ? "" : "no "); SERIAL_ECHOPAIR(", ", stow ? "" : "no ");
SERIAL_ECHOLNPGM("stow)"); SERIAL_ECHOLNPGM("stow)");
DEBUG_POS("", current_position); DEBUG_POS("", current_position);
} }
#endif #endif
if (!position_is_reachable_by_probe_xy(x, y)) return NAN; const float nx = lx - (X_PROBE_OFFSET_FROM_EXTRUDER), ny = ly - (Y_PROBE_OFFSET_FROM_EXTRUDER);
if (printable)
if (!position_is_reachable_by_probe_xy(lx, ly)) return NAN;
else
if (!position_is_reachable_xy(nx, ny)) return NAN;
const float old_feedrate_mm_s = feedrate_mm_s; const float old_feedrate_mm_s = feedrate_mm_s;
@ -2325,7 +2330,7 @@ static void clean_up_after_endstop_or_probe_move() {
feedrate_mm_s = XY_PROBE_FEEDRATE_MM_S; feedrate_mm_s = XY_PROBE_FEEDRATE_MM_S;
// Move the probe to the given XY // Move the probe to the given XY
do_blocking_move_to_xy(x - (X_PROBE_OFFSET_FROM_EXTRUDER), y - (Y_PROBE_OFFSET_FROM_EXTRUDER)); do_blocking_move_to_xy(nx, ny);
if (DEPLOY_PROBE()) return NAN; if (DEPLOY_PROBE()) return NAN;
@ -2338,9 +2343,9 @@ static void clean_up_after_endstop_or_probe_move() {
if (verbose_level > 2) { if (verbose_level > 2) {
SERIAL_PROTOCOLPGM("Bed X: "); SERIAL_PROTOCOLPGM("Bed X: ");
SERIAL_PROTOCOL_F(x, 3); SERIAL_PROTOCOL_F(lx, 3);
SERIAL_PROTOCOLPGM(" Y: "); SERIAL_PROTOCOLPGM(" Y: ");
SERIAL_PROTOCOL_F(y, 3); SERIAL_PROTOCOL_F(ly, 3);
SERIAL_PROTOCOLPGM(" Z: "); SERIAL_PROTOCOLPGM(" Z: ");
SERIAL_PROTOCOL_F(measured_z, 3); SERIAL_PROTOCOL_F(measured_z, 3);
SERIAL_EOL(); SERIAL_EOL();
@ -5136,7 +5141,7 @@ void home_all_axes() { gcode_G28(true); }
* P3 Probe all positions: center, towers and opposite towers. Set all. * P3 Probe all positions: center, towers and opposite towers. Set all.
* P4-P7 Probe all positions at different locations and average them. * P4-P7 Probe all positions at different locations and average them.
* *
* T Don't calibrate tower angle corrections * T0 Don't calibrate tower angle corrections
* *
* Cn.nn Calibration precision; when omitted calibrates to maximum precision * Cn.nn Calibration precision; when omitted calibrates to maximum precision
* *
@ -5185,7 +5190,7 @@ void home_all_axes() { gcode_G28(true); }
return; return;
} }
const bool towers_set = !parser.boolval('T'), const bool towers_set = parser.boolval('T', true),
stow_after_each = parser.boolval('E'), stow_after_each = parser.boolval('E'),
_1p_calibration = probe_points == 1, _1p_calibration = probe_points == 1,
_4p_calibration = probe_points == 2, _4p_calibration = probe_points == 2,
@ -5198,20 +5203,6 @@ void home_all_axes() { gcode_G28(true); }
_7p_quadruple_circle = probe_points == 7, _7p_quadruple_circle = probe_points == 7,
_7p_multi_circle = _7p_double_circle || _7p_triple_circle || _7p_quadruple_circle, _7p_multi_circle = _7p_double_circle || _7p_triple_circle || _7p_quadruple_circle,
_7p_intermed_points = _7p_calibration && !_7p_half_circle; _7p_intermed_points = _7p_calibration && !_7p_half_circle;
if (!_1p_calibration) { // test if the outer radius is reachable
const float circles = (_7p_quadruple_circle ? 1.5 :
_7p_triple_circle ? 1.0 :
_7p_double_circle ? 0.5 : 0),
radius = (1 + circles * 0.1) * delta_calibration_radius;
for (uint8_t axis = 1; axis < 13; ++axis) {
if (!position_is_reachable_xy(cos(RADIANS(180 + 30 * axis)) * radius, sin(RADIANS(180 + 30 * axis)) * radius)) {
SERIAL_PROTOCOLLNPGM("?(M665 B)ed radius is implausible.");
return;
}
}
}
const static char save_message[] PROGMEM = "Save with M500 and/or copy to Configuration.h"; const static char save_message[] PROGMEM = "Save with M500 and/or copy to Configuration.h";
const float dx = (X_PROBE_OFFSET_FROM_EXTRUDER), const float dx = (X_PROBE_OFFSET_FROM_EXTRUDER),
dy = (Y_PROBE_OFFSET_FROM_EXTRUDER); dy = (Y_PROBE_OFFSET_FROM_EXTRUDER);
@ -5230,6 +5221,19 @@ void home_all_axes() { gcode_G28(true); }
alpha_old = delta_tower_angle_trim[A_AXIS], alpha_old = delta_tower_angle_trim[A_AXIS],
beta_old = delta_tower_angle_trim[B_AXIS]; beta_old = delta_tower_angle_trim[B_AXIS];
if (!_1p_calibration) { // test if the outer radius is reachable
const float circles = (_7p_quadruple_circle ? 1.5 :
_7p_triple_circle ? 1.0 :
_7p_double_circle ? 0.5 : 0),
r = (1 + circles * 0.1) * delta_calibration_radius;
for (uint8_t axis = 1; axis < 13; ++axis) {
const float a = RADIANS(180 + 30 * axis);
if (!position_is_reachable_xy(cos(a) * r, sin(a) * r)) {
SERIAL_PROTOCOLLNPGM("?(M665 B)ed radius is implausible.");
return;
}
}
}
SERIAL_PROTOCOLLNPGM("G33 Auto Calibrate"); SERIAL_PROTOCOLLNPGM("G33 Auto Calibrate");
stepper.synchronize(); stepper.synchronize();
@ -5269,13 +5273,11 @@ void home_all_axes() { gcode_G28(true); }
SERIAL_EOL(); SERIAL_EOL();
} }
home_offset[Z_AXIS] -= probe_pt(dx, dy, stow_after_each, 1); // 1st probe to set height home_offset[Z_AXIS] -= probe_pt(dx, dy, stow_after_each, 1, false); // 1st probe to set height
do_probe_raise(Z_CLEARANCE_BETWEEN_PROBES);
do { do {
float z_at_pt[13] = { 0.0 }, S1 = 0.0, S2 = 0.0; float z_at_pt[13] = { 0.0 };
int16_t N = 0;
test_precision = zero_std_dev_old != 999.0 ? (zero_std_dev + zero_std_dev_old) / 2 : zero_std_dev; test_precision = zero_std_dev_old != 999.0 ? (zero_std_dev + zero_std_dev_old) / 2 : zero_std_dev;
@ -5284,12 +5286,12 @@ void home_all_axes() { gcode_G28(true); }
// Probe the points // Probe the points
if (!_7p_half_circle && !_7p_triple_circle) { // probe the center if (!_7p_half_circle && !_7p_triple_circle) { // probe the center
z_at_pt[0] += probe_pt(dx, dy, stow_after_each, 1); z_at_pt[0] += probe_pt(dx, dy, stow_after_each, 1, false);
} }
if (_7p_calibration) { // probe extra center points if (_7p_calibration) { // probe extra center points
for (int8_t axis = _7p_multi_circle ? 11 : 9; axis > 0; axis -= _7p_multi_circle ? 2 : 4) { for (int8_t axis = _7p_multi_circle ? 11 : 9; axis > 0; axis -= _7p_multi_circle ? 2 : 4) {
const float a = RADIANS(180 + 30 * axis), r = delta_calibration_radius * 0.1; const float a = RADIANS(180 + 30 * axis), r = delta_calibration_radius * 0.1;
z_at_pt[0] += probe_pt(cos(a) * r + dx, sin(a) * r + dy, stow_after_each, 1); z_at_pt[0] += probe_pt(cos(a) * r + dx, sin(a) * r + dy, stow_after_each, 1, false);
} }
z_at_pt[0] /= float(_7p_double_circle ? 7 : probe_points); z_at_pt[0] /= float(_7p_double_circle ? 7 : probe_points);
} }
@ -5305,19 +5307,19 @@ void home_all_axes() { gcode_G28(true); }
for (float circles = -offset_circles ; circles <= offset_circles; circles++) { for (float circles = -offset_circles ; circles <= offset_circles; circles++) {
const float a = RADIANS(180 + 30 * axis), const float a = RADIANS(180 + 30 * axis),
r = delta_calibration_radius * (1 + circles * (zig_zag ? 0.1 : -0.1)); r = delta_calibration_radius * (1 + circles * (zig_zag ? 0.1 : -0.1));
z_at_pt[axis] += probe_pt(cos(a) * r + dx, sin(a) * r + dy, stow_after_each, 1); z_at_pt[axis] += probe_pt(cos(a) * r + dx, sin(a) * r + dy, stow_after_each, 1, false);
} }
zig_zag = !zig_zag; zig_zag = !zig_zag;
z_at_pt[axis] /= (2 * offset_circles + 1); z_at_pt[axis] /= (2 * offset_circles + 1);
} }
} }
if (_7p_intermed_points) // average intermediates to tower and opposites if (_7p_intermed_points) // average intermediates to tower and opposites
for (uint8_t axis = 1; axis <= 11; axis += 2) for (uint8_t axis = 1; axis < 13; axis += 2)
z_at_pt[axis] = (z_at_pt[axis] + (z_at_pt[axis + 1] + z_at_pt[(axis + 10) % 12 + 1]) / 2.0) / 2.0; z_at_pt[axis] = (z_at_pt[axis] + (z_at_pt[axis + 1] + z_at_pt[(axis + 10) % 12 + 1]) / 2.0) / 2.0;
S1 += z_at_pt[0]; float S1 = z_at_pt[0],
S2 += sq(z_at_pt[0]); S2 = sq(z_at_pt[0]);
N++; int16_t N = 1;
if (!_1p_calibration) // std dev from zero plane if (!_1p_calibration) // std dev from zero plane
for (uint8_t axis = (_4p_opposite_points ? 3 : 1); axis < 13; axis += (_4p_calibration ? 4 : 2)) { for (uint8_t axis = (_4p_opposite_points ? 3 : 1); axis < 13; axis += (_4p_calibration ? 4 : 2)) {
S1 += z_at_pt[axis]; S1 += z_at_pt[axis];

@ -461,47 +461,51 @@
// and processor overload (too many expensive sqrt calls). // and processor overload (too many expensive sqrt calls).
#define DELTA_SEGMENTS_PER_SECOND 160 #define DELTA_SEGMENTS_PER_SECOND 160
// NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them // After homing move down to a height where XY movement is unconstrained
//#define DELTA_HOME_TO_SAFE_ZONE
// Center-to-center distance of the holes in the diagonal push rods.
#define DELTA_DIAGONAL_ROD 218.0 // mm
// Horizontal distance bridged by diagonal push rods when effector is centered.
#define DELTA_RADIUS 100.00 //mm Get this value from auto calibrate
// height from z=0 to home position
#define DELTA_HEIGHT 295.00 // get this value from auto calibrate - use G33 P1 at 1st time calibration
// Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
#define DELTA_PRINTABLE_RADIUS 85.0
// Delta calibration menu // Delta calibration menu
// uncomment to add three points calibration menu option. // uncomment to add three points calibration menu option.
// See http://minow.blogspot.com/index.html#4918805519571907051 // See http://minow.blogspot.com/index.html#4918805519571907051
#define DELTA_CALIBRATION_MENU #define DELTA_CALIBRATION_MENU
// set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 if DELTA_AUTO_CALIBRATION enabled // uncomment to add G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
#define DELTA_CALIBRATION_RADIUS ((DELTA_PRINTABLE_RADIUS) * 0.869) // mm
// G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
#define DELTA_AUTO_CALIBRATION #define DELTA_AUTO_CALIBRATION
// NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them
#if ENABLED(DELTA_AUTO_CALIBRATION) #if ENABLED(DELTA_AUTO_CALIBRATION)
#define DELTA_CALIBRATION_DEFAULT_POINTS 4 // set the default number of probe points : n*n (-7 -> +7) // set the default number of probe points : n*n (1 -> 7)
#define DELTA_CALIBRATION_DEFAULT_POINTS 4
#endif #endif
// After homing move down to a height where XY movement is unconstrained #if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU)
#define DELTA_HOME_TO_SAFE_ZONE // Set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 for non-eccentric probes
#define DELTA_CALIBRATION_RADIUS 73.5 // mm
#endif
#define DELTA_ENDSTOP_ADJ { 0, 0, 0 } // get these from auto calibrate // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
#define DELTA_PRINTABLE_RADIUS 85.0 // mm
// Center-to-center distance of the holes in the diagonal push rods.
#define DELTA_DIAGONAL_ROD 218.0 // mm
// height from z=0 to home position
#define DELTA_HEIGHT 295.00 // get this value from auto calibrate
#define DELTA_ENDSTOP_ADJ { 0.0, 0.0, 0.0 } // get these from auto calibrate
// Horizontal distance bridged by diagonal push rods when effector is centered.
#define DELTA_RADIUS 101.0 //mm Get this value from auto calibrate
// Trim adjustments for individual towers // Trim adjustments for individual towers
// tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0 // tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0
// measured in degrees anticlockwise looking from above the printer // measured in degrees anticlockwise looking from above the printer
#define DELTA_TOWER_ANGLE_TRIM { 0, 0, 0 } // get these from auto calibrate #define DELTA_TOWER_ANGLE_TRIM { 0.0, 0.0, 0.0 } // get these values from auto calibrate
// delta radius and diaginal rod adjustments measured in mm // delta radius and diaginal rod adjustments measured in mm
//#define DELTA_RADIUS_TRIM_TOWER {0, 0, 0} //#define DELTA_RADIUS_TRIM_TOWER { 0.0, 0.0, 0.0 }
//#define DELTA_DIAGONAL_ROD_TRIM_TOWER {0, 0, 0} //#define DELTA_DIAGONAL_ROD_TRIM_TOWER { 0.0, 0.0, 0.0 }
#endif #endif

@ -461,54 +461,51 @@
// and processor overload (too many expensive sqrt calls). // and processor overload (too many expensive sqrt calls).
#define DELTA_SEGMENTS_PER_SECOND 160 #define DELTA_SEGMENTS_PER_SECOND 160
// Center-to-center distance of the holes in the diagonal push rods. // After homing move down to a height where XY movement is unconstrained
#define DELTA_DIAGONAL_ROD 218.0 // mm //#define DELTA_HOME_TO_SAFE_ZONE
// Horizontal offset from middle of printer to smooth rod center.
#define DELTA_SMOOTH_ROD_OFFSET 150.0 // mm
// Horizontal offset of the universal joints on the end effector.
#define DELTA_EFFECTOR_OFFSET 24.0 // mm
// Horizontal offset of the universal joints on the carriages.
#define DELTA_CARRIAGE_OFFSET 22.0 // mm
// Horizontal distance bridged by diagonal push rods when effector is centered.
#define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET - DELTA_EFFECTOR_OFFSET - DELTA_CARRIAGE_OFFSET) //mm Get this value from auto calibrate
// height from z=0.00 to home position
#define DELTA_HEIGHT 280 // get this value from auto calibrate - use G33 P1 at 1st time calibration
// Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
#define DELTA_PRINTABLE_RADIUS 85.0
// Delta calibration menu // Delta calibration menu
// uncomment to add three points calibration menu option. // uncomment to add three points calibration menu option.
// See http://minow.blogspot.com/index.html#4918805519571907051 // See http://minow.blogspot.com/index.html#4918805519571907051
//#define DELTA_CALIBRATION_MENU //#define DELTA_CALIBRATION_MENU
// set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 if DELTA_AUTO_CALIBRATION enabled // uncomment to add G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
#define DELTA_CALIBRATION_RADIUS ((DELTA_PRINTABLE_RADIUS) * 0.869) // mm
// G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
//#define DELTA_AUTO_CALIBRATION //#define DELTA_AUTO_CALIBRATION
// NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them
#if ENABLED(DELTA_AUTO_CALIBRATION) #if ENABLED(DELTA_AUTO_CALIBRATION)
#define DELTA_CALIBRATION_DEFAULT_POINTS 3 // set the default number of probe points : n*n (-7 -> +7) // set the default number of probe points : n*n (1 -> 7)
#define DELTA_CALIBRATION_DEFAULT_POINTS 4
#endif #endif
// After homing move down to a height where XY movement is unconstrained #if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU)
//#define DELTA_HOME_TO_SAFE_ZONE // Set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 for non-eccentric probes
#define DELTA_CALIBRATION_RADIUS 73.5 // mm
#endif
// Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
#define DELTA_PRINTABLE_RADIUS 85.0 // mm
#define DELTA_ENDSTOP_ADJ { 0, 0, 0 } // get these from auto calibrate // Center-to-center distance of the holes in the diagonal push rods.
#define DELTA_DIAGONAL_ROD 218.0 // mm
// height from z=0 to home position
#define DELTA_HEIGHT 280.00 // get this value from auto calibrate
#define DELTA_ENDSTOP_ADJ { 0.0, 0.0, 0.0 } // get these from auto calibrate
// Horizontal distance bridged by diagonal push rods when effector is centered.
#define DELTA_RADIUS 101.0 //mm Get this value from auto calibrate
// Trim adjustments for individual towers // Trim adjustments for individual towers
// tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0 // tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0
// measured in degrees anticlockwise looking from above the printer // measured in degrees anticlockwise looking from above the printer
#define DELTA_TOWER_ANGLE_TRIM { 0, 0, 0 } // get these from auto calibrate #define DELTA_TOWER_ANGLE_TRIM { 0.0, 0.0, 0.0 } // get these values from auto calibrate
// delta radius and diaginal rod adjustments measured in mm // delta radius and diaginal rod adjustments measured in mm
//#define DELTA_RADIUS_TRIM_TOWER {0, 0, 0} //#define DELTA_RADIUS_TRIM_TOWER { 0.0, 0.0, 0.0 }
//#define DELTA_DIAGONAL_ROD_TRIM_TOWER {0, 0, 0} //#define DELTA_DIAGONAL_ROD_TRIM_TOWER { 0.0, 0.0, 0.0 }
#endif #endif

@ -451,53 +451,51 @@
// and processor overload (too many expensive sqrt calls). // and processor overload (too many expensive sqrt calls).
#define DELTA_SEGMENTS_PER_SECOND 200 #define DELTA_SEGMENTS_PER_SECOND 200
// Center-to-center distance of the holes in the diagonal push rods. // After homing move down to a height where XY movement is unconstrained
#define DELTA_DIAGONAL_ROD 250.0 // mm //#define DELTA_HOME_TO_SAFE_ZONE
// Horizontal offset from middle of printer to smooth rod center. // Delta calibration menu
#define DELTA_SMOOTH_ROD_OFFSET 175.0 // mm // uncomment to add three points calibration menu option.
// See http://minow.blogspot.com/index.html#4918805519571907051
//#define DELTA_CALIBRATION_MENU
// Horizontal offset of the universal joints on the end effector. // uncomment to add G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
#define DELTA_EFFECTOR_OFFSET 33.0 // mm //#define DELTA_AUTO_CALIBRATION
// Horizontal offset of the universal joints on the carriages. // NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them
#define DELTA_CARRIAGE_OFFSET 18.0 // mm
// Horizontal distance bridged by diagonal push rods when effector is centered. #if ENABLED(DELTA_AUTO_CALIBRATION)
#define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET - DELTA_EFFECTOR_OFFSET - DELTA_CARRIAGE_OFFSET) //mm Get this value from auto calibrate // set the default number of probe points : n*n (1 -> 7)
#define DELTA_CALIBRATION_DEFAULT_POINTS 4
#endif
// height from z=0.00 to home position #if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU)
#define DELTA_HEIGHT 250 // get this value from auto calibrate - use G33 P1 at 1st time calibration // Set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 for non-eccentric probes
#define DELTA_CALIBRATION_RADIUS 121.5 // mm
#endif
// Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers). // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
#define DELTA_PRINTABLE_RADIUS 140.0 #define DELTA_PRINTABLE_RADIUS 140.0 // mm
// Delta calibration menu // Center-to-center distance of the holes in the diagonal push rods.
// See http://minow.blogspot.com/index.html#4918805519571907051 #define DELTA_DIAGONAL_ROD 250.0 // mm
//#define DELTA_CALIBRATION_MENU
// set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 if DELTA_AUTO_CALIBRATION enabled
#define DELTA_CALIBRATION_RADIUS ((DELTA_PRINTABLE_RADIUS) * 0.869) // mm
// G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results) // height from z=0 to home position
//#define DELTA_AUTO_CALIBRATION #define DELTA_HEIGHT 250.00 // get this value from auto calibrate
#if ENABLED(DELTA_AUTO_CALIBRATION)
#define DELTA_CALIBRATION_DEFAULT_POINTS 3 // set the default number of probe points : n*n (-7 -> +7)
#endif
// After homing move down to a height where XY movement is unconstrained #define DELTA_ENDSTOP_ADJ { 0.0, 0.0, 0.0 } // get these from auto calibrate
//#define DELTA_HOME_TO_SAFE_ZONE
#define DELTA_ENDSTOP_ADJ { 0, 0, 0 } // get these from auto calibrate // Horizontal distance bridged by diagonal push rods when effector is centered.
#define DELTA_RADIUS 124.0 //mm Get this value from auto calibrate
// Trim adjustments for individual towers // Trim adjustments for individual towers
// tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0 // tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0
// measured in degrees anticlockwise looking from above the printer // measured in degrees anticlockwise looking from above the printer
#define DELTA_TOWER_ANGLE_TRIM { 0, 0, 0 } // get these from auto calibrate #define DELTA_TOWER_ANGLE_TRIM { 0.0, 0.0, 0.0 } // get these values from auto calibrate
// delta radius and diaginal rod adjustments measured in mm // delta radius and diaginal rod adjustments measured in mm
//#define DELTA_RADIUS_TRIM_TOWER {0, 0, 0} //#define DELTA_RADIUS_TRIM_TOWER { 0.0, 0.0, 0.0 }
//#define DELTA_DIAGONAL_ROD_TRIM_TOWER {0, 0, 0} //#define DELTA_DIAGONAL_ROD_TRIM_TOWER { 0.0, 0.0, 0.0 }
#endif #endif

@ -451,53 +451,51 @@
// and processor overload (too many expensive sqrt calls). // and processor overload (too many expensive sqrt calls).
#define DELTA_SEGMENTS_PER_SECOND 200 #define DELTA_SEGMENTS_PER_SECOND 200
// Center-to-center distance of the holes in the diagonal push rods. // After homing move down to a height where XY movement is unconstrained
#define DELTA_DIAGONAL_ROD 215.0 // mm //#define DELTA_HOME_TO_SAFE_ZONE
// Horizontal offset from middle of printer to smooth rod center. // Delta calibration menu
#define DELTA_SMOOTH_ROD_OFFSET 145.0 // mm // uncomment to add three points calibration menu option.
// See http://minow.blogspot.com/index.html#4918805519571907051
//#define DELTA_CALIBRATION_MENU
// Horizontal offset of the universal joints on the end effector. // uncomment to add G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
#define DELTA_EFFECTOR_OFFSET 19.9 // mm //#define DELTA_AUTO_CALIBRATION
// Horizontal offset of the universal joints on the carriages. // NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them
#define DELTA_CARRIAGE_OFFSET 19.5 // mm
// Horizontal distance bridged by diagonal push rods when effector is centered. #if ENABLED(DELTA_AUTO_CALIBRATION)
#define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET - DELTA_EFFECTOR_OFFSET - DELTA_CARRIAGE_OFFSET) //mm Get this value from auto calibrate // set the default number of probe points : n*n (1 -> 7)
#define DELTA_CALIBRATION_DEFAULT_POINTS 4
#endif
// height from z=0.00 to home position #if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU)
#define DELTA_HEIGHT 250 // get this value from auto calibrate - use G33 P1 at 1st time calibration // Set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 for non-eccentric probes
#define DELTA_CALIBRATION_RADIUS 78.0 // mm
#endif
// Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers). // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
#define DELTA_PRINTABLE_RADIUS 90.0 #define DELTA_PRINTABLE_RADIUS 90.0 // mm
// Delta calibration menu // Center-to-center distance of the holes in the diagonal push rods.
// See http://minow.blogspot.com/index.html#4918805519571907051 #define DELTA_DIAGONAL_ROD 215.0 // mm
//#define DELTA_CALIBRATION_MENU
// set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 if DELTA_AUTO_CALIBRATION enabled
#define DELTA_CALIBRATION_RADIUS ((DELTA_PRINTABLE_RADIUS) * 0.869) // mm
// G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results) // height from z=0 to home position
//#define DELTA_AUTO_CALIBRATION #define DELTA_HEIGHT 250.00 // get this value from auto calibrate
#if ENABLED(DELTA_AUTO_CALIBRATION)
#define DELTA_CALIBRATION_DEFAULT_POINTS 3 // set the default number of probe points : n*n (-7 -> +7)
#endif
// After homing move down to a height where XY movement is unconstrained #define DELTA_ENDSTOP_ADJ { 0.0, 0.0, 0.0 } // get these from auto calibrate
//#define DELTA_HOME_TO_SAFE_ZONE
#define DELTA_ENDSTOP_ADJ { 0, 0, 0 } // get these from auto calibrate // Horizontal distance bridged by diagonal push rods when effector is centered.
#define DELTA_RADIUS 105.2 //mm Get this value from auto calibrate
// Trim adjustments for individual towers // Trim adjustments for individual towers
// tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0 // tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0
// measured in degrees anticlockwise looking from above the printer // measured in degrees anticlockwise looking from above the printer
#define DELTA_TOWER_ANGLE_TRIM { 0, 0, 0 } // get these from auto calibrate #define DELTA_TOWER_ANGLE_TRIM { 0.0, 0.0, 0.0 } // get these values from auto calibrate
// delta radius and diaginal rod adjustments measured in mm // delta radius and diaginal rod adjustments measured in mm
//#define DELTA_RADIUS_TRIM_TOWER {0, 0, 0} //#define DELTA_RADIUS_TRIM_TOWER { 0.0, 0.0, 0.0 }
//#define DELTA_DIAGONAL_ROD_TRIM_TOWER {0, 0, 0} //#define DELTA_DIAGONAL_ROD_TRIM_TOWER { 0.0, 0.0, 0.0 }
#endif #endif

@ -437,53 +437,51 @@
// and processor overload (too many expensive sqrt calls). // and processor overload (too many expensive sqrt calls).
#define DELTA_SEGMENTS_PER_SECOND 160 #define DELTA_SEGMENTS_PER_SECOND 160
// Center-to-center distance of the holes in the diagonal push rods. // After homing move down to a height where XY movement is unconstrained
#define DELTA_DIAGONAL_ROD 301.0 // mm //#define DELTA_HOME_TO_SAFE_ZONE
// Horizontal offset from middle of printer to smooth rod center. // Delta calibration menu
#define DELTA_SMOOTH_ROD_OFFSET 212.357 // mm // uncomment to add three points calibration menu option.
// See http://minow.blogspot.com/index.html#4918805519571907051
//#define DELTA_CALIBRATION_MENU
// Horizontal offset of the universal joints on the end effector. // uncomment to add G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
#define DELTA_EFFECTOR_OFFSET 30.0 // mm //#define DELTA_AUTO_CALIBRATION
// Horizontal offset of the universal joints on the carriages. // NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them
#define DELTA_CARRIAGE_OFFSET 30.0 // mm
// Horizontal distance bridged by diagonal push rods when effector is centered. #if ENABLED(DELTA_AUTO_CALIBRATION)
#define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET - DELTA_EFFECTOR_OFFSET - DELTA_CARRIAGE_OFFSET) //mm Get this value from auto calibrate // set the default number of probe points : n*n (1 -> 7)
#define DELTA_CALIBRATION_DEFAULT_POINTS 4
#endif
// height from z=0.00 to home position #if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU)
#define DELTA_HEIGHT 277 // get this value from auto calibrate - use G33 P1 at 1st time calibration // Set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 for non-eccentric probes
#define DELTA_CALIBRATION_RADIUS 110.0 // mm
#endif
// Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers). // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
#define DELTA_PRINTABLE_RADIUS 127.0 #define DELTA_PRINTABLE_RADIUS 127.0 // mm
// Delta calibration menu // Center-to-center distance of the holes in the diagonal push rods.
// See http://minow.blogspot.com/index.html#4918805519571907051 #define DELTA_DIAGONAL_ROD 301.0 // mm
//#define DELTA_CALIBRATION_MENU
// set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 if DELTA_AUTO_CALIBRATION enabled
#define DELTA_CALIBRATION_RADIUS ((DELTA_PRINTABLE_RADIUS) * 0.869) // mm
// G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results) // height from z=0 to home position
//#define DELTA_AUTO_CALIBRATION #define DELTA_HEIGHT 277.00 // get this value from auto calibrate
#if ENABLED(DELTA_AUTO_CALIBRATION)
#define DELTA_CALIBRATION_DEFAULT_POINTS 3 // set the default number of probe points : n*n (-7 -> +7)
#endif
// After homing move down to a height where XY movement is unconstrained #define DELTA_ENDSTOP_ADJ { 0.0, 0.0, 0.0 } // get these from auto calibrate
//#define DELTA_HOME_TO_SAFE_ZONE
#define DELTA_ENDSTOP_ADJ { 0, 0, 0 } // get these from auto calibrate // Horizontal distance bridged by diagonal push rods when effector is centered.
#define DELTA_RADIUS 152.357 //mm Get this value from auto calibrate
// Trim adjustments for individual towers // Trim adjustments for individual towers
// tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0 // tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0
// measured in degrees anticlockwise looking from above the printer // measured in degrees anticlockwise looking from above the printer
#define DELTA_TOWER_ANGLE_TRIM { 0, 0, 0 } // get these from auto calibrate #define DELTA_TOWER_ANGLE_TRIM { 0.0, 0.0, 0.0 } // get these values from auto calibrate
// delta radius and diaginal rod adjustments measured in mm // delta radius and diaginal rod adjustments measured in mm
//#define DELTA_RADIUS_TRIM_TOWER {0, 0, 0} //#define DELTA_RADIUS_TRIM_TOWER { 0.0, 0.0, 0.0 }
//#define DELTA_DIAGONAL_ROD_TRIM_TOWER {0, 0, 0} //#define DELTA_DIAGONAL_ROD_TRIM_TOWER { 0.0, 0.0, 0.0 }
#endif #endif

@ -455,53 +455,51 @@
// and processor overload (too many expensive sqrt calls). // and processor overload (too many expensive sqrt calls).
#define DELTA_SEGMENTS_PER_SECOND 160 #define DELTA_SEGMENTS_PER_SECOND 160
// Center-to-center distance of the holes in the diagonal push rods. // After homing move down to a height where XY movement is unconstrained
#define DELTA_DIAGONAL_ROD 317.3 + 2.5 // mm //#define DELTA_HOME_TO_SAFE_ZONE
// Horizontal offset from middle of printer to smooth rod center. // Delta calibration menu
#define DELTA_SMOOTH_ROD_OFFSET 220.1 // mm // uncomment to add three points calibration menu option.
// See http://minow.blogspot.com/index.html#4918805519571907051
//#define DELTA_CALIBRATION_MENU
// Horizontal offset of the universal joints on the end effector. // uncomment to add G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
#define DELTA_EFFECTOR_OFFSET 24.0 // mm //#define DELTA_AUTO_CALIBRATION
// Horizontal offset of the universal joints on the carriages. // NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them
#define DELTA_CARRIAGE_OFFSET 22.0 // mm
// Horizontal distance bridged by diagonal push rods when effector is centered. #if ENABLED(DELTA_AUTO_CALIBRATION)
#define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET - DELTA_EFFECTOR_OFFSET - DELTA_CARRIAGE_OFFSET) //mm Get this value from auto calibrate // set the default number of probe points : n*n (1 -> 7)
#define DELTA_CALIBRATION_DEFAULT_POINTS 4
#endif
// height from z=0.00 to home position #if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU)
#define DELTA_HEIGHT 380 // get this value from auto calibrate - use G33 P1 at 1st time calibration // Set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 for non-eccentric probes
#define DELTA_CALIBRATION_RADIUS 121.5 // mm
#endif
// Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers). // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
#define DELTA_PRINTABLE_RADIUS 140.0 #define DELTA_PRINTABLE_RADIUS 140.0 // mm
// Delta calibration menu // Center-to-center distance of the holes in the diagonal push rods.
// See http://minow.blogspot.com/index.html#4918805519571907051 #define DELTA_DIAGONAL_ROD 319.5 // mm
//#define DELTA_CALIBRATION_MENU
// set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 if DELTA_AUTO_CALIBRATION enabled // height from z=0 to home position
#define DELTA_CALIBRATION_RADIUS ((DELTA_PRINTABLE_RADIUS) * 0.869) // mm #define DELTA_HEIGHT 380.00 // get this value from auto calibrate
// G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results) #define DELTA_ENDSTOP_ADJ { 0.0, 0.0, 0.0 } // get these from auto calibrate
//#define DELTA_AUTO_CALIBRATION
#if ENABLED(DELTA_AUTO_CALIBRATION)
#define DELTA_CALIBRATION_DEFAULT_POINTS 3 // set the default number of probe points : n*n (-7 -> +7)
#endif
// After homing move down to a height where XY movement is unconstrained // Horizontal distance bridged by diagonal push rods when effector is centered.
//#define DELTA_HOME_TO_SAFE_ZONE #define DELTA_RADIUS 174.1 //mm Get this value from auto calibrate
#define DELTA_ENDSTOP_ADJ { 0, 0, 0 } // get these from auto calibrate
// Trim adjustments for individual towers // Trim adjustments for individual towers
// tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0 // tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0
// measured in degrees anticlockwise looking from above the printer // measured in degrees anticlockwise looking from above the printer
#define DELTA_TOWER_ANGLE_TRIM { 0, 0, 0 } // get these from auto calibrate #define DELTA_TOWER_ANGLE_TRIM { 0.0, 0.0, 0.0 } // get these values from auto calibrate
// delta radius and diaginal rod adjustments measured in mm // delta radius and diaginal rod adjustments measured in mm
//#define DELTA_RADIUS_TRIM_TOWER {0, 0, 0} //#define DELTA_RADIUS_TRIM_TOWER { 0.0, 0.0, 0.0 }
//#define DELTA_DIAGONAL_ROD_TRIM_TOWER {0, 0, 0} //#define DELTA_DIAGONAL_ROD_TRIM_TOWER { 0.0, 0.0, 0.0 }
#endif #endif

@ -51,7 +51,7 @@
extern float meshedit_done; extern float meshedit_done;
extern long babysteps_done; extern long babysteps_done;
extern float probe_pt(const float &x, const float &y, const bool, const uint8_t); extern float probe_pt(const float &lx, const float &ly, const bool, const uint8_t, const bool=true);
extern bool set_probe_deployed(bool); extern bool set_probe_deployed(bool);
extern void set_bed_leveling_enabled(bool); extern void set_bed_leveling_enabled(bool);
typedef void (*screenFunc_t)(); typedef void (*screenFunc_t)();

Loading…
Cancel
Save