PROBE_MANUALLY etc.
This commit is contained in:
parent
a886e98967
commit
e334efb2a7
|
@ -487,7 +487,7 @@
|
||||||
// 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
|
||||||
|
|
||||||
// uncomment to add G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
|
// uncomment to add G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
|
||||||
#define DELTA_AUTO_CALIBRATION
|
#define DELTA_AUTO_CALIBRATION
|
||||||
|
@ -506,7 +506,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU)
|
#if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU)
|
||||||
// Set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS for non-eccentric probes
|
// Set the radius for the calibration probe points - max 0.9 * DELTA_PRINTABLE_RADIUS for non-eccentric probes
|
||||||
#define DELTA_CALIBRATION_RADIUS 73.5 // mm
|
#define DELTA_CALIBRATION_RADIUS 73.5 // mm
|
||||||
// Set the steprate for papertest probing
|
// Set the steprate for papertest probing
|
||||||
#define PROBE_MANUALLY_STEP 0.025
|
#define PROBE_MANUALLY_STEP 0.025
|
||||||
|
|
|
@ -506,7 +506,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU)
|
#if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU)
|
||||||
// Set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS for non-eccentric probes
|
// Set the radius for the calibration probe points - max 0.9 * DELTA_PRINTABLE_RADIUS for non-eccentric probes
|
||||||
#define DELTA_CALIBRATION_RADIUS 73.5 // mm
|
#define DELTA_CALIBRATION_RADIUS 73.5 // mm
|
||||||
// Set the steprate for papertest probing
|
// Set the steprate for papertest probing
|
||||||
#define PROBE_MANUALLY_STEP 0.025
|
#define PROBE_MANUALLY_STEP 0.025
|
||||||
|
|
|
@ -496,7 +496,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU)
|
#if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU)
|
||||||
// Set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS for non-eccentric probes
|
// Set the radius for the calibration probe points - max 0.9 * DELTA_PRINTABLE_RADIUS for non-eccentric probes
|
||||||
#define DELTA_CALIBRATION_RADIUS 121.5 // mm
|
#define DELTA_CALIBRATION_RADIUS 121.5 // mm
|
||||||
// Set the steprate for papertest probing
|
// Set the steprate for papertest probing
|
||||||
#define PROBE_MANUALLY_STEP 0.025
|
#define PROBE_MANUALLY_STEP 0.025
|
||||||
|
|
|
@ -496,7 +496,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU)
|
#if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU)
|
||||||
// Set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS for non-eccentric probes
|
// Set the radius for the calibration probe points - max 0.9 * DELTA_PRINTABLE_RADIUS for non-eccentric probes
|
||||||
#define DELTA_CALIBRATION_RADIUS 78.0 // mm
|
#define DELTA_CALIBRATION_RADIUS 78.0 // mm
|
||||||
// Set the steprate for papertest probing
|
// Set the steprate for papertest probing
|
||||||
#define PROBE_MANUALLY_STEP 0.025
|
#define PROBE_MANUALLY_STEP 0.025
|
||||||
|
|
|
@ -482,7 +482,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU)
|
#if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU)
|
||||||
// Set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS for non-eccentric probes
|
// Set the radius for the calibration probe points - max 0.9 * DELTA_PRINTABLE_RADIUS for non-eccentric probes
|
||||||
#define DELTA_CALIBRATION_RADIUS 110.0 // mm
|
#define DELTA_CALIBRATION_RADIUS 110.0 // mm
|
||||||
// Set the steprate for papertest probing
|
// Set the steprate for papertest probing
|
||||||
#define PROBE_MANUALLY_STEP 0.025
|
#define PROBE_MANUALLY_STEP 0.025
|
||||||
|
|
|
@ -500,7 +500,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU)
|
#if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU)
|
||||||
// Set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS for non-eccentric probes
|
// Set the radius for the calibration probe points - max 0.9 * DELTA_PRINTABLE_RADIUS for non-eccentric probes
|
||||||
#define DELTA_CALIBRATION_RADIUS 121.5 // mm
|
#define DELTA_CALIBRATION_RADIUS 121.5 // mm
|
||||||
// Set the steprate for papertest probing
|
// Set the steprate for papertest probing
|
||||||
#define PROBE_MANUALLY_STEP 0.025
|
#define PROBE_MANUALLY_STEP 0.025
|
||||||
|
|
|
@ -180,7 +180,7 @@ static float probe_G33_points(float z_at_pt[NPP + 1], const int8_t probe_points,
|
||||||
r = delta_calibration_radius * 0.1;
|
r = delta_calibration_radius * 0.1;
|
||||||
z_at_pt[CEN] +=
|
z_at_pt[CEN] +=
|
||||||
#if HAS_BED_PROBE
|
#if HAS_BED_PROBE
|
||||||
probe_pt(cos(a) * r + dx, sin(a) * r + dy, stow_after_each, 1)
|
probe_pt(cos(a) * r + dx, sin(a) * r + dy, stow_after_each, 1, false)
|
||||||
#else
|
#else
|
||||||
lcd_probe_pt(cos(a) * r, sin(a) * r)
|
lcd_probe_pt(cos(a) * r, sin(a) * r)
|
||||||
#endif
|
#endif
|
||||||
|
@ -209,7 +209,7 @@ static float probe_G33_points(float z_at_pt[NPP + 1], const int8_t probe_points,
|
||||||
interpol = FMOD(axis, 1);
|
interpol = FMOD(axis, 1);
|
||||||
const float z_temp =
|
const float z_temp =
|
||||||
#if HAS_BED_PROBE
|
#if HAS_BED_PROBE
|
||||||
probe_pt(cos(a) * r + dx, sin(a) * r + dy, stow_after_each, 1)
|
probe_pt(cos(a) * r + dx, sin(a) * r + dy, stow_after_each, 1, false)
|
||||||
#else
|
#else
|
||||||
lcd_probe_pt(cos(a) * r, sin(a) * r)
|
lcd_probe_pt(cos(a) * r, sin(a) * r)
|
||||||
#endif
|
#endif
|
||||||
|
@ -225,7 +225,6 @@ static float probe_G33_points(float z_at_pt[NPP + 1], const int8_t probe_points,
|
||||||
z_at_pt[axis] /= _7P_STEP / steps;
|
z_at_pt[axis] /= _7P_STEP / steps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
float S1 = z_at_pt[CEN],
|
float S1 = z_at_pt[CEN],
|
||||||
S2 = sq(z_at_pt[CEN]);
|
S2 = sq(z_at_pt[CEN]);
|
||||||
int16_t N = 1;
|
int16_t N = 1;
|
||||||
|
@ -263,6 +262,7 @@ static float probe_G33_points(float z_at_pt[NPP + 1], const int8_t probe_points,
|
||||||
|
|
||||||
LOOP_XYZ(axis) {
|
LOOP_XYZ(axis) {
|
||||||
delta_endstop_adj[axis] -= 1.0;
|
delta_endstop_adj[axis] -= 1.0;
|
||||||
|
recalc_delta_settings();
|
||||||
|
|
||||||
endstops.enable(true);
|
endstops.enable(true);
|
||||||
if (!home_delta()) return;
|
if (!home_delta()) return;
|
||||||
|
@ -276,6 +276,7 @@ static float probe_G33_points(float z_at_pt[NPP + 1], const int8_t probe_points,
|
||||||
LOOP_CAL_ALL(axis) z_at_pt[axis] -= z_at_pt_base[axis];
|
LOOP_CAL_ALL(axis) z_at_pt[axis] -= z_at_pt_base[axis];
|
||||||
print_G33_results(z_at_pt, true, true);
|
print_G33_results(z_at_pt, true, true);
|
||||||
delta_endstop_adj[axis] += 1.0;
|
delta_endstop_adj[axis] += 1.0;
|
||||||
|
recalc_delta_settings();
|
||||||
switch (axis) {
|
switch (axis) {
|
||||||
case A_AXIS :
|
case A_AXIS :
|
||||||
h_fac += 4.0 / (Z03(CEN) +Z01(__A) +Z32(_CA) +Z32(_AB)); // Offset by X-tower end-stop
|
h_fac += 4.0 / (Z03(CEN) +Z01(__A) +Z32(_CA) +Z32(_AB)); // Offset by X-tower end-stop
|
||||||
|
@ -293,7 +294,7 @@ static float probe_G33_points(float z_at_pt[NPP + 1], const int8_t probe_points,
|
||||||
|
|
||||||
for (int8_t zig_zag = -1; zig_zag < 2; zig_zag += 2) {
|
for (int8_t zig_zag = -1; zig_zag < 2; zig_zag += 2) {
|
||||||
delta_radius += 1.0 * zig_zag;
|
delta_radius += 1.0 * zig_zag;
|
||||||
recalc_delta_settings(delta_radius, delta_diagonal_rod, delta_tower_angle_trim);
|
recalc_delta_settings();
|
||||||
|
|
||||||
endstops.enable(true);
|
endstops.enable(true);
|
||||||
if (!home_delta()) return;
|
if (!home_delta()) return;
|
||||||
|
@ -306,7 +307,7 @@ static float probe_G33_points(float z_at_pt[NPP + 1], const int8_t probe_points,
|
||||||
LOOP_CAL_ALL(axis) z_at_pt[axis] -= z_at_pt_base[axis];
|
LOOP_CAL_ALL(axis) z_at_pt[axis] -= z_at_pt_base[axis];
|
||||||
print_G33_results(z_at_pt, true, true);
|
print_G33_results(z_at_pt, true, true);
|
||||||
delta_radius -= 1.0 * zig_zag;
|
delta_radius -= 1.0 * zig_zag;
|
||||||
recalc_delta_settings(delta_radius, delta_diagonal_rod, delta_tower_angle_trim);
|
recalc_delta_settings();
|
||||||
r_fac -= zig_zag * 6.0 / (Z03(__A) +Z03(__B) +Z03(__C) +Z03(_BC) +Z03(_CA) +Z03(_AB)); // Offset by delta radius
|
r_fac -= zig_zag * 6.0 / (Z03(__A) +Z03(__B) +Z03(__C) +Z03(_BC) +Z03(_CA) +Z03(_AB)); // Offset by delta radius
|
||||||
}
|
}
|
||||||
r_fac /= 2.0;
|
r_fac /= 2.0;
|
||||||
|
@ -319,7 +320,7 @@ static float probe_G33_points(float z_at_pt[NPP + 1], const int8_t probe_points,
|
||||||
z_temp = MAX3(delta_endstop_adj[A_AXIS], delta_endstop_adj[B_AXIS], delta_endstop_adj[C_AXIS]);
|
z_temp = MAX3(delta_endstop_adj[A_AXIS], delta_endstop_adj[B_AXIS], delta_endstop_adj[C_AXIS]);
|
||||||
delta_height -= z_temp;
|
delta_height -= z_temp;
|
||||||
LOOP_XYZ(axis) delta_endstop_adj[axis] -= z_temp;
|
LOOP_XYZ(axis) delta_endstop_adj[axis] -= z_temp;
|
||||||
recalc_delta_settings(delta_radius, delta_diagonal_rod, delta_tower_angle_trim);
|
recalc_delta_settings();
|
||||||
|
|
||||||
endstops.enable(true);
|
endstops.enable(true);
|
||||||
if (!home_delta()) return;
|
if (!home_delta()) return;
|
||||||
|
@ -339,7 +340,7 @@ static float probe_G33_points(float z_at_pt[NPP + 1], const int8_t probe_points,
|
||||||
z_temp = MAX3(delta_endstop_adj[A_AXIS], delta_endstop_adj[B_AXIS], delta_endstop_adj[C_AXIS]);
|
z_temp = MAX3(delta_endstop_adj[A_AXIS], delta_endstop_adj[B_AXIS], delta_endstop_adj[C_AXIS]);
|
||||||
delta_height -= z_temp;
|
delta_height -= z_temp;
|
||||||
LOOP_XYZ(axis) delta_endstop_adj[axis] -= z_temp;
|
LOOP_XYZ(axis) delta_endstop_adj[axis] -= z_temp;
|
||||||
recalc_delta_settings(delta_radius, delta_diagonal_rod, delta_tower_angle_trim);
|
recalc_delta_settings();
|
||||||
switch (axis) {
|
switch (axis) {
|
||||||
case A_AXIS :
|
case A_AXIS :
|
||||||
a_fac += 4.0 / ( Z06(__B) -Z06(__C) +Z06(_CA) -Z06(_AB)); // Offset by alpha tower angle
|
a_fac += 4.0 / ( Z06(__B) -Z06(__C) +Z06(_CA) -Z06(_AB)); // Offset by alpha tower angle
|
||||||
|
@ -626,7 +627,7 @@ void GcodeSuite::G33() {
|
||||||
delta_height -= z_temp;
|
delta_height -= z_temp;
|
||||||
LOOP_XYZ(axis) delta_endstop_adj[axis] -= z_temp;
|
LOOP_XYZ(axis) delta_endstop_adj[axis] -= z_temp;
|
||||||
}
|
}
|
||||||
recalc_delta_settings(delta_radius, delta_diagonal_rod, delta_tower_angle_trim);
|
recalc_delta_settings();
|
||||||
NOMORE(zero_std_dev_min, zero_std_dev);
|
NOMORE(zero_std_dev_min, zero_std_dev);
|
||||||
|
|
||||||
// print report
|
// print report
|
||||||
|
|
|
@ -55,7 +55,7 @@
|
||||||
if (parser.seen('X')) delta_tower_angle_trim[A_AXIS] = parser.value_float();
|
if (parser.seen('X')) delta_tower_angle_trim[A_AXIS] = parser.value_float();
|
||||||
if (parser.seen('Y')) delta_tower_angle_trim[B_AXIS] = parser.value_float();
|
if (parser.seen('Y')) delta_tower_angle_trim[B_AXIS] = parser.value_float();
|
||||||
if (parser.seen('Z')) delta_tower_angle_trim[C_AXIS] = parser.value_float();
|
if (parser.seen('Z')) delta_tower_angle_trim[C_AXIS] = parser.value_float();
|
||||||
recalc_delta_settings(delta_radius, delta_diagonal_rod, delta_tower_angle_trim);
|
recalc_delta_settings();
|
||||||
}
|
}
|
||||||
|
|
||||||
#elif IS_SCARA
|
#elif IS_SCARA
|
||||||
|
|
|
@ -752,8 +752,8 @@
|
||||||
#ifndef MSG_DELTA_HEIGHT_CALIBRATE
|
#ifndef MSG_DELTA_HEIGHT_CALIBRATE
|
||||||
#define MSG_DELTA_HEIGHT_CALIBRATE _UxGT("Set Delta Height")
|
#define MSG_DELTA_HEIGHT_CALIBRATE _UxGT("Set Delta Height")
|
||||||
#endif
|
#endif
|
||||||
#ifndef MSG_DELTA_DIAG_ROG
|
#ifndef MSG_DELTA_DIAG_ROD
|
||||||
#define MSG_DELTA_DIAG_ROG _UxGT("Diag Rod")
|
#define MSG_DELTA_DIAG_ROD _UxGT("Diag Rod")
|
||||||
#endif
|
#endif
|
||||||
#ifndef MSG_DELTA_HEIGHT
|
#ifndef MSG_DELTA_HEIGHT
|
||||||
#define MSG_DELTA_HEIGHT _UxGT("Height")
|
#define MSG_DELTA_HEIGHT _UxGT("Height")
|
||||||
|
|
|
@ -205,7 +205,7 @@ uint16_t max_display_update_time = 0;
|
||||||
void lcd_control_retract_menu();
|
void lcd_control_retract_menu();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ENABLED(DELTA_CALIBRATION_MENU)
|
#if ENABLED(DELTA_CALIBRATION_MENU) || ENABLED(DELTA_AUTO_CALIBRATION)
|
||||||
void lcd_delta_calibrate_menu();
|
void lcd_delta_calibrate_menu();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -2559,7 +2559,7 @@ void kill_screen(const char* lcd_msg) {
|
||||||
// Move Axis
|
// Move Axis
|
||||||
//
|
//
|
||||||
#if ENABLED(DELTA)
|
#if ENABLED(DELTA)
|
||||||
if (axis_homed[Z_AXIS])
|
if (axis_homed[X_AXIS] && axis_homed[Y_AXIS] && axis_homed[Z_AXIS])
|
||||||
#endif
|
#endif
|
||||||
MENU_ITEM(submenu, MSG_MOVE_AXIS, lcd_move_menu);
|
MENU_ITEM(submenu, MSG_MOVE_AXIS, lcd_move_menu);
|
||||||
|
|
||||||
|
@ -2674,7 +2674,7 @@ void kill_screen(const char* lcd_msg) {
|
||||||
//
|
//
|
||||||
// Delta Calibration
|
// Delta Calibration
|
||||||
//
|
//
|
||||||
#if ENABLED(DELTA_CALIBRATION_MENU)
|
#if ENABLED(DELTA_CALIBRATION_MENU) || ENABLED(DELTA_AUTO_CALIBRATION)
|
||||||
MENU_ITEM(submenu, MSG_DELTA_CALIBRATE, lcd_delta_calibrate_menu);
|
MENU_ITEM(submenu, MSG_DELTA_CALIBRATE, lcd_delta_calibrate_menu);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -2743,22 +2743,22 @@ void kill_screen(const char* lcd_msg) {
|
||||||
void _goto_tower_z() { _man_probe_pt(cos(RADIANS( 90)) * delta_calibration_radius, sin(RADIANS( 90)) * delta_calibration_radius); }
|
void _goto_tower_z() { _man_probe_pt(cos(RADIANS( 90)) * delta_calibration_radius, sin(RADIANS( 90)) * delta_calibration_radius); }
|
||||||
void _goto_center() { _man_probe_pt(0,0); }
|
void _goto_center() { _man_probe_pt(0,0); }
|
||||||
|
|
||||||
void _lcd_set_delta_height() {
|
#endif // DELTA_CALIBRATION_MENU
|
||||||
update_software_endstops(Z_AXIS);
|
|
||||||
}
|
#if ENABLED(DELTA_CALIBRATION_MENU) || ENABLED(DELTA_AUTO_CALIBRATION)
|
||||||
|
|
||||||
void lcd_delta_settings() {
|
void lcd_delta_settings() {
|
||||||
START_MENU();
|
START_MENU();
|
||||||
MENU_BACK(MSG_DELTA_CALIBRATE);
|
MENU_BACK(MSG_DELTA_CALIBRATE);
|
||||||
MENU_ITEM_EDIT(float52, MSG_DELTA_DIAG_ROG, &delta_diagonal_rod, DELTA_DIAGONAL_ROD - 5.0, DELTA_DIAGONAL_ROD + 5.0);
|
MENU_ITEM_EDIT_CALLBACK(float52, MSG_DELTA_DIAG_ROD, &delta_diagonal_rod, delta_diagonal_rod - 5.0, delta_diagonal_rod + 5.0, recalc_delta_settings);
|
||||||
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float52, MSG_DELTA_HEIGHT, &delta_height, delta_height - 10.0, delta_height + 10.0, _lcd_set_delta_height);
|
MENU_ITEM_EDIT_CALLBACK(float52, MSG_DELTA_HEIGHT, &delta_height, delta_height - 10.0, delta_height + 10.0, recalc_delta_settings);
|
||||||
MENU_ITEM_EDIT(float43, "Ex", &delta_endstop_adj[A_AXIS], -5.0, 5.0);
|
MENU_ITEM_EDIT_CALLBACK(float43, "Ex", &delta_endstop_adj[A_AXIS], -5.0, 5.0, recalc_delta_settings);
|
||||||
MENU_ITEM_EDIT(float43, "Ey", &delta_endstop_adj[B_AXIS], -5.0, 5.0);
|
MENU_ITEM_EDIT_CALLBACK(float43, "Ey", &delta_endstop_adj[B_AXIS], -5.0, 5.0, recalc_delta_settings);
|
||||||
MENU_ITEM_EDIT(float43, "Ez", &delta_endstop_adj[C_AXIS], -5.0, 5.0);
|
MENU_ITEM_EDIT_CALLBACK(float43, "Ez", &delta_endstop_adj[C_AXIS], -5.0, 5.0, recalc_delta_settings);
|
||||||
MENU_ITEM_EDIT(float52, MSG_DELTA_RADIUS, &delta_radius, DELTA_RADIUS - 5.0, DELTA_RADIUS + 5.0);
|
MENU_ITEM_EDIT_CALLBACK(float52, MSG_DELTA_RADIUS, &delta_radius, delta_radius - 5.0, delta_radius + 5.0, recalc_delta_settings);
|
||||||
MENU_ITEM_EDIT(float43, "Tx", &delta_tower_angle_trim[A_AXIS], -5.0, 5.0);
|
MENU_ITEM_EDIT_CALLBACK(float43, "Tx", &delta_tower_angle_trim[A_AXIS], -5.0, 5.0, recalc_delta_settings);
|
||||||
MENU_ITEM_EDIT(float43, "Ty", &delta_tower_angle_trim[B_AXIS], -5.0, 5.0);
|
MENU_ITEM_EDIT_CALLBACK(float43, "Ty", &delta_tower_angle_trim[B_AXIS], -5.0, 5.0, recalc_delta_settings);
|
||||||
MENU_ITEM_EDIT(float43, "Tz", &delta_tower_angle_trim[C_AXIS], -5.0, 5.0);
|
MENU_ITEM_EDIT_CALLBACK(float43, "Tz", &delta_tower_angle_trim[C_AXIS], -5.0, 5.0, recalc_delta_settings);
|
||||||
END_MENU();
|
END_MENU();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2766,7 +2766,6 @@ void kill_screen(const char* lcd_msg) {
|
||||||
START_MENU();
|
START_MENU();
|
||||||
MENU_BACK(MSG_MAIN);
|
MENU_BACK(MSG_MAIN);
|
||||||
#if ENABLED(DELTA_AUTO_CALIBRATION)
|
#if ENABLED(DELTA_AUTO_CALIBRATION)
|
||||||
MENU_ITEM(submenu, MSG_DELTA_SETTINGS, lcd_delta_settings);
|
|
||||||
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"));
|
MENU_ITEM(gcode, MSG_DELTA_HEIGHT_CALIBRATE, PSTR("G33 P1"));
|
||||||
#if ENABLED(EEPROM_SETTINGS)
|
#if ENABLED(EEPROM_SETTINGS)
|
||||||
|
@ -2774,17 +2773,20 @@ void kill_screen(const char* lcd_msg) {
|
||||||
MENU_ITEM(function, MSG_LOAD_EEPROM, lcd_load_settings);
|
MENU_ITEM(function, MSG_LOAD_EEPROM, lcd_load_settings);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
MENU_ITEM(submenu, MSG_AUTO_HOME, _lcd_delta_calibrate_home);
|
MENU_ITEM(submenu, MSG_DELTA_SETTINGS, lcd_delta_settings);
|
||||||
if (axis_homed[Z_AXIS]) {
|
#if ENABLED(DELTA_CALIBRATION_MENU)
|
||||||
MENU_ITEM(submenu, MSG_DELTA_CALIBRATE_X, _goto_tower_x);
|
MENU_ITEM(submenu, MSG_AUTO_HOME, _lcd_delta_calibrate_home);
|
||||||
MENU_ITEM(submenu, MSG_DELTA_CALIBRATE_Y, _goto_tower_y);
|
if (axis_homed[X_AXIS] && axis_homed[Y_AXIS] && axis_homed[Z_AXIS]) {
|
||||||
MENU_ITEM(submenu, MSG_DELTA_CALIBRATE_Z, _goto_tower_z);
|
MENU_ITEM(submenu, MSG_DELTA_CALIBRATE_X, _goto_tower_x);
|
||||||
MENU_ITEM(submenu, MSG_DELTA_CALIBRATE_CENTER, _goto_center);
|
MENU_ITEM(submenu, MSG_DELTA_CALIBRATE_Y, _goto_tower_y);
|
||||||
}
|
MENU_ITEM(submenu, MSG_DELTA_CALIBRATE_Z, _goto_tower_z);
|
||||||
|
MENU_ITEM(submenu, MSG_DELTA_CALIBRATE_CENTER, _goto_center);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
END_MENU();
|
END_MENU();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // DELTA_CALIBRATION_MENU
|
#endif // DELTA_CALIBRATION_MENU || DELTA_AUTO_CALIBRATION
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If the most recent manual move hasn't been fed to the planner yet,
|
* If the most recent manual move hasn't been fed to the planner yet,
|
||||||
|
|
|
@ -225,7 +225,7 @@ void MarlinSettings::postprocess() {
|
||||||
// Make sure delta kinematics are updated before refreshing the
|
// Make sure delta kinematics are updated before refreshing the
|
||||||
// planner position so the stepper counts will be set correctly.
|
// planner position so the stepper counts will be set correctly.
|
||||||
#if ENABLED(DELTA)
|
#if ENABLED(DELTA)
|
||||||
recalc_delta_settings(delta_radius, delta_diagonal_rod, delta_tower_angle_trim);
|
recalc_delta_settings();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Refresh steps_to_mm with the reciprocal of axis_steps_per_mm
|
// Refresh steps_to_mm with the reciprocal of axis_steps_per_mm
|
||||||
|
|
|
@ -56,18 +56,20 @@ float delta_safe_distance_from_top();
|
||||||
* Recalculate factors used for delta kinematics whenever
|
* Recalculate factors used for delta kinematics whenever
|
||||||
* settings have been changed (e.g., by M665).
|
* settings have been changed (e.g., by M665).
|
||||||
*/
|
*/
|
||||||
void recalc_delta_settings(const float radius, const float diagonal_rod, const float tower_angle_trim[ABC]) {
|
void recalc_delta_settings() {
|
||||||
const float trt[ABC] = DELTA_RADIUS_TRIM_TOWER,
|
const float trt[ABC] = DELTA_RADIUS_TRIM_TOWER,
|
||||||
drt[ABC] = DELTA_DIAGONAL_ROD_TRIM_TOWER;
|
drt[ABC] = DELTA_DIAGONAL_ROD_TRIM_TOWER;
|
||||||
delta_tower[A_AXIS][X_AXIS] = cos(RADIANS(210 + tower_angle_trim[A_AXIS])) * (radius + trt[A_AXIS]); // front left tower
|
delta_tower[A_AXIS][X_AXIS] = cos(RADIANS(210 + delta_tower_angle_trim[A_AXIS])) * (delta_radius + trt[A_AXIS]); // front left tower
|
||||||
delta_tower[A_AXIS][Y_AXIS] = sin(RADIANS(210 + tower_angle_trim[A_AXIS])) * (radius + trt[A_AXIS]);
|
delta_tower[A_AXIS][Y_AXIS] = sin(RADIANS(210 + delta_tower_angle_trim[A_AXIS])) * (delta_radius + trt[A_AXIS]);
|
||||||
delta_tower[B_AXIS][X_AXIS] = cos(RADIANS(330 + tower_angle_trim[B_AXIS])) * (radius + trt[B_AXIS]); // front right tower
|
delta_tower[B_AXIS][X_AXIS] = cos(RADIANS(330 + delta_tower_angle_trim[B_AXIS])) * (delta_radius + trt[B_AXIS]); // front right tower
|
||||||
delta_tower[B_AXIS][Y_AXIS] = sin(RADIANS(330 + tower_angle_trim[B_AXIS])) * (radius + trt[B_AXIS]);
|
delta_tower[B_AXIS][Y_AXIS] = sin(RADIANS(330 + delta_tower_angle_trim[B_AXIS])) * (delta_radius + trt[B_AXIS]);
|
||||||
delta_tower[C_AXIS][X_AXIS] = cos(RADIANS( 90 + tower_angle_trim[C_AXIS])) * (radius + trt[C_AXIS]); // back middle tower
|
delta_tower[C_AXIS][X_AXIS] = cos(RADIANS( 90 + delta_tower_angle_trim[C_AXIS])) * (delta_radius + trt[C_AXIS]); // back middle tower
|
||||||
delta_tower[C_AXIS][Y_AXIS] = sin(RADIANS( 90 + tower_angle_trim[C_AXIS])) * (radius + trt[C_AXIS]);
|
delta_tower[C_AXIS][Y_AXIS] = sin(RADIANS( 90 + delta_tower_angle_trim[C_AXIS])) * (delta_radius + trt[C_AXIS]);
|
||||||
delta_diagonal_rod_2_tower[A_AXIS] = sq(diagonal_rod + drt[A_AXIS]);
|
delta_diagonal_rod_2_tower[A_AXIS] = sq(delta_diagonal_rod + drt[A_AXIS]);
|
||||||
delta_diagonal_rod_2_tower[B_AXIS] = sq(diagonal_rod + drt[B_AXIS]);
|
delta_diagonal_rod_2_tower[B_AXIS] = sq(delta_diagonal_rod + drt[B_AXIS]);
|
||||||
delta_diagonal_rod_2_tower[C_AXIS] = sq(diagonal_rod + drt[C_AXIS]);
|
delta_diagonal_rod_2_tower[C_AXIS] = sq(delta_diagonal_rod + drt[C_AXIS]);
|
||||||
|
update_software_endstops(Z_AXIS);
|
||||||
|
axis_homed[X_AXIS] = axis_homed[Y_AXIS] = axis_homed[Z_AXIS] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -43,7 +43,7 @@ extern float delta_tower[ABC][2],
|
||||||
* Recalculate factors used for delta kinematics whenever
|
* Recalculate factors used for delta kinematics whenever
|
||||||
* settings have been changed (e.g., by M665).
|
* settings have been changed (e.g., by M665).
|
||||||
*/
|
*/
|
||||||
void recalc_delta_settings(const float radius, const float diagonal_rod, const float tower_angle_trim[ABC]);
|
void recalc_delta_settings();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delta Inverse Kinematics
|
* Delta Inverse Kinematics
|
||||||
|
|
|
@ -509,10 +509,9 @@ static bool do_probe_move(const float z, const float fr_mm_m) {
|
||||||
* @details Used by probe_pt to do a single Z probe.
|
* @details Used by probe_pt to do a single Z probe.
|
||||||
* Leaves current_position[Z_AXIS] at the height where the probe triggered.
|
* Leaves current_position[Z_AXIS] at the height where the probe triggered.
|
||||||
*
|
*
|
||||||
* @param short_move Flag for a shorter probe move towards the bed
|
|
||||||
* @return The raw Z position where the probe was triggered
|
* @return The raw Z position where the probe was triggered
|
||||||
*/
|
*/
|
||||||
static float run_z_probe(const bool short_move=true) {
|
static float run_z_probe() {
|
||||||
|
|
||||||
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
||||||
if (DEBUGGING(LEVELING)) DEBUG_POS(">>> run_z_probe", current_position);
|
if (DEBUGGING(LEVELING)) DEBUG_POS(">>> run_z_probe", current_position);
|
||||||
|
@ -549,8 +548,8 @@ static float run_z_probe(const bool short_move=true) {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// move down slowly to find bed
|
// Move down slowly to find bed, not too far
|
||||||
if (do_probe_move(-10 + (short_move ? 0 : -(Z_MAX_LENGTH)), Z_PROBE_SPEED_SLOW)) return NAN;
|
if (do_probe_move(-10, Z_PROBE_SPEED_SLOW)) return NAN;
|
||||||
|
|
||||||
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
||||||
if (DEBUGGING(LEVELING)) DEBUG_POS("<<< run_z_probe", current_position);
|
if (DEBUGGING(LEVELING)) DEBUG_POS("<<< run_z_probe", current_position);
|
||||||
|
@ -589,12 +588,11 @@ float probe_pt(const float &rx, const float &ry, const bool stow, const uint8_t
|
||||||
|
|
||||||
const float nx = rx - (X_PROBE_OFFSET_FROM_EXTRUDER), ny = ry - (Y_PROBE_OFFSET_FROM_EXTRUDER);
|
const float nx = rx - (X_PROBE_OFFSET_FROM_EXTRUDER), ny = ry - (Y_PROBE_OFFSET_FROM_EXTRUDER);
|
||||||
|
|
||||||
if (printable
|
if (!printable
|
||||||
? !position_is_reachable(nx, ny)
|
? !position_is_reachable(nx, ny)
|
||||||
: !position_is_reachable_by_probe(rx, ry)
|
: !position_is_reachable_by_probe(rx, ry)
|
||||||
) return NAN;
|
) return NAN;
|
||||||
|
|
||||||
|
|
||||||
const float old_feedrate_mm_s = feedrate_mm_s;
|
const float old_feedrate_mm_s = feedrate_mm_s;
|
||||||
|
|
||||||
#if ENABLED(DELTA)
|
#if ENABLED(DELTA)
|
||||||
|
@ -602,12 +600,6 @@ float probe_pt(const float &rx, const float &ry, const bool stow, const uint8_t
|
||||||
do_blocking_move_to_z(delta_clip_start_height);
|
do_blocking_move_to_z(delta_clip_start_height);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HAS_SOFTWARE_ENDSTOPS
|
|
||||||
// Store the status of the soft endstops and disable if we're probing a non-printable location
|
|
||||||
static bool enable_soft_endstops = soft_endstops_enabled;
|
|
||||||
if (!printable) soft_endstops_enabled = false;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
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
|
||||||
|
@ -615,7 +607,7 @@ float probe_pt(const float &rx, const float &ry, const bool stow, const uint8_t
|
||||||
|
|
||||||
float measured_z = NAN;
|
float measured_z = NAN;
|
||||||
if (!DEPLOY_PROBE()) {
|
if (!DEPLOY_PROBE()) {
|
||||||
measured_z = run_z_probe(printable);
|
measured_z = run_z_probe();
|
||||||
|
|
||||||
if (!stow)
|
if (!stow)
|
||||||
do_blocking_move_to_z(current_position[Z_AXIS] + Z_CLEARANCE_BETWEEN_PROBES, MMM_TO_MMS(Z_PROBE_SPEED_FAST));
|
do_blocking_move_to_z(current_position[Z_AXIS] + Z_CLEARANCE_BETWEEN_PROBES, MMM_TO_MMS(Z_PROBE_SPEED_FAST));
|
||||||
|
@ -623,11 +615,6 @@ float probe_pt(const float &rx, const float &ry, const bool stow, const uint8_t
|
||||||
if (STOW_PROBE()) measured_z = NAN;
|
if (STOW_PROBE()) measured_z = NAN;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if HAS_SOFTWARE_ENDSTOPS
|
|
||||||
// Restore the soft endstop status
|
|
||||||
soft_endstops_enabled = enable_soft_endstops;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (verbose_level > 2) {
|
if (verbose_level > 2) {
|
||||||
SERIAL_PROTOCOLPGM("Bed X: ");
|
SERIAL_PROTOCOLPGM("Bed X: ");
|
||||||
SERIAL_PROTOCOL_F(LOGICAL_X_POSITION(rx), 3);
|
SERIAL_PROTOCOL_F(LOGICAL_X_POSITION(rx), 3);
|
||||||
|
|
Loading…
Reference in a new issue