G33 eccentric probe fixes (#6850)
* excentric probe config fix * undo last commit * eccentric probe fix * oops * !stow after each probe * deploy/stow fix * E parameter + bit of cleanup * comment * LCD menu fix
This commit is contained in:
parent
e47029199e
commit
896dfa0577
@ -5080,6 +5080,8 @@ void home_all_axes() { gcode_G28(true); }
|
|||||||
* V0 Dry-run mode. Report settings and probe results. No calibration.
|
* V0 Dry-run mode. Report settings and probe results. No calibration.
|
||||||
* V1 Report settings
|
* V1 Report settings
|
||||||
* V2 Report settings and probe results
|
* V2 Report settings and probe results
|
||||||
|
*
|
||||||
|
* E Engage the probe for each point
|
||||||
*/
|
*/
|
||||||
inline void gcode_G33() {
|
inline void gcode_G33() {
|
||||||
|
|
||||||
@ -5102,6 +5104,7 @@ void home_all_axes() { gcode_G28(true); }
|
|||||||
}
|
}
|
||||||
|
|
||||||
const bool towers_set = !parser.seen('T'),
|
const bool towers_set = !parser.seen('T'),
|
||||||
|
stow_after_each = parser.seen('E'),
|
||||||
_1p_calibration = probe_points == 1,
|
_1p_calibration = probe_points == 1,
|
||||||
_4p_calibration = probe_points == 2,
|
_4p_calibration = probe_points == 2,
|
||||||
_4p_towers_points = _4p_calibration && towers_set,
|
_4p_towers_points = _4p_calibration && towers_set,
|
||||||
@ -5120,30 +5123,17 @@ void home_all_axes() { gcode_G28(true); }
|
|||||||
_7p_double_circle ? 0.5 : 0),
|
_7p_double_circle ? 0.5 : 0),
|
||||||
radius = (1 + circles * 0.1) * delta_calibration_radius;
|
radius = (1 + circles * 0.1) * delta_calibration_radius;
|
||||||
for (uint8_t axis = 1; axis < 13; ++axis) {
|
for (uint8_t axis = 1; axis < 13; ++axis) {
|
||||||
if (!position_is_reachable_by_probe_xy(cos(RADIANS(180 + 30 * axis)) * radius, sin(RADIANS(180 + 30 * axis)) * radius)) {
|
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.");
|
SERIAL_PROTOCOLLNPGM("?(M665 B)ed radius is implausible.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SERIAL_PROTOCOLLNPGM("G33 Auto Calibrate");
|
|
||||||
|
|
||||||
stepper.synchronize();
|
|
||||||
#if HAS_LEVELING
|
|
||||||
reset_bed_level(); // After calibration bed-level data is no longer valid
|
|
||||||
#endif
|
|
||||||
#if HOTENDS > 1
|
|
||||||
const uint8_t old_tool_index = active_extruder;
|
|
||||||
tool_change(0, 0, true);
|
|
||||||
#endif
|
|
||||||
setup_for_endstop_or_probe_move();
|
|
||||||
|
|
||||||
endstops.enable(true);
|
|
||||||
home_delta();
|
|
||||||
endstops.not_homing();
|
|
||||||
|
|
||||||
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),
|
||||||
|
dy = (Y_PROBE_OFFSET_FROM_EXTRUDER);
|
||||||
|
int8_t iterations = 0;
|
||||||
float test_precision,
|
float test_precision,
|
||||||
zero_std_dev = (verbose_level ? 999.0 : 0.0), // 0.0 in dry-run mode : forced end
|
zero_std_dev = (verbose_level ? 999.0 : 0.0), // 0.0 in dry-run mode : forced end
|
||||||
zero_std_dev_old = zero_std_dev,
|
zero_std_dev_old = zero_std_dev,
|
||||||
@ -5157,6 +5147,22 @@ 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];
|
||||||
|
|
||||||
|
SERIAL_PROTOCOLLNPGM("G33 Auto Calibrate");
|
||||||
|
|
||||||
|
stepper.synchronize();
|
||||||
|
#if HAS_LEVELING
|
||||||
|
reset_bed_level(); // After calibration bed-level data is no longer valid
|
||||||
|
#endif
|
||||||
|
#if HOTENDS > 1
|
||||||
|
const uint8_t old_tool_index = active_extruder;
|
||||||
|
tool_change(0, 0, true);
|
||||||
|
#endif
|
||||||
|
setup_for_endstop_or_probe_move();
|
||||||
|
DEPLOY_PROBE();
|
||||||
|
endstops.enable(true);
|
||||||
|
home_delta();
|
||||||
|
endstops.not_homing();
|
||||||
|
|
||||||
// print settings
|
// print settings
|
||||||
|
|
||||||
SERIAL_PROTOCOLPGM("Checking... AC");
|
SERIAL_PROTOCOLPGM("Checking... AC");
|
||||||
@ -5189,13 +5195,7 @@ void home_all_axes() { gcode_G28(true); }
|
|||||||
SERIAL_EOL();
|
SERIAL_EOL();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLED(Z_PROBE_SLED)
|
home_offset[Z_AXIS] -= probe_pt(dx, dy, stow_after_each, 1); // 1st probe to set height
|
||||||
DEPLOY_PROBE();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int8_t iterations = 0;
|
|
||||||
|
|
||||||
home_offset[Z_AXIS] -= probe_pt(0.0, 0.0 , true, 1); // 1st probe to set height
|
|
||||||
do_probe_raise(Z_CLEARANCE_BETWEEN_PROBES);
|
do_probe_raise(Z_CLEARANCE_BETWEEN_PROBES);
|
||||||
|
|
||||||
do {
|
do {
|
||||||
@ -5210,12 +5210,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(0.0, 0.0 , true, 1);
|
z_at_pt[0] += probe_pt(dx, dy, stow_after_each, 1);
|
||||||
}
|
}
|
||||||
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, sin(a) * r, true, 1); // TODO: Needs error handling
|
z_at_pt[0] += probe_pt(cos(a) * r + dx, sin(a) * r + dy, stow_after_each, 1);
|
||||||
}
|
}
|
||||||
z_at_pt[0] /= float(_7p_double_circle ? 7 : probe_points);
|
z_at_pt[0] /= float(_7p_double_circle ? 7 : probe_points);
|
||||||
}
|
}
|
||||||
@ -5230,7 +5230,7 @@ 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, sin(a) * r, true, 1); // TODO: Needs error handling
|
z_at_pt[axis] += probe_pt(cos(a) * r + dx, sin(a) * r + dy, stow_after_each, 1);
|
||||||
}
|
}
|
||||||
zig_zag = !zig_zag;
|
zig_zag = !zig_zag;
|
||||||
z_at_pt[axis] /= (2 * offset_circles + 1);
|
z_at_pt[axis] /= (2 * offset_circles + 1);
|
||||||
@ -5452,13 +5452,11 @@ void home_all_axes() { gcode_G28(true); }
|
|||||||
#if ENABLED(DELTA_HOME_TO_SAFE_ZONE)
|
#if ENABLED(DELTA_HOME_TO_SAFE_ZONE)
|
||||||
do_blocking_move_to_z(delta_clip_start_height);
|
do_blocking_move_to_z(delta_clip_start_height);
|
||||||
#endif
|
#endif
|
||||||
|
STOW_PROBE();
|
||||||
clean_up_after_endstop_or_probe_move();
|
clean_up_after_endstop_or_probe_move();
|
||||||
#if HOTENDS > 1
|
#if HOTENDS > 1
|
||||||
tool_change(old_tool_index, 0, true);
|
tool_change(old_tool_index, 0, true);
|
||||||
#endif
|
#endif
|
||||||
#if ENABLED(Z_PROBE_SLED)
|
|
||||||
RETRACT_PROBE();
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // DELTA_AUTO_CALIBRATION
|
#endif // DELTA_AUTO_CALIBRATION
|
||||||
|
@ -2323,7 +2323,7 @@ void kill_screen(const char* lcd_msg) {
|
|||||||
MENU_BACK(MSG_MAIN);
|
MENU_BACK(MSG_MAIN);
|
||||||
#if ENABLED(DELTA_AUTO_CALIBRATION)
|
#if ENABLED(DELTA_AUTO_CALIBRATION)
|
||||||
MENU_ITEM(gcode, MSG_DELTA_AUTO_CALIBRATE, PSTR("G33"));
|
MENU_ITEM(gcode, MSG_DELTA_AUTO_CALIBRATE, PSTR("G33"));
|
||||||
MENU_ITEM(gcode, MSG_DELTA_HEIGHT_CALIBRATE, PSTR("G33 P1 A"));
|
MENU_ITEM(gcode, MSG_DELTA_HEIGHT_CALIBRATE, PSTR("G33 P1"));
|
||||||
#endif
|
#endif
|
||||||
MENU_ITEM(submenu, MSG_AUTO_HOME, _lcd_delta_calibrate_home);
|
MENU_ITEM(submenu, MSG_AUTO_HOME, _lcd_delta_calibrate_home);
|
||||||
if (axis_homed[Z_AXIS]) {
|
if (axis_homed[Z_AXIS]) {
|
||||||
|
Loading…
Reference in New Issue
Block a user