|
|
|
@ -5168,11 +5168,28 @@ void home_all_axes() { gcode_G28(true); }
|
|
|
|
|
SERIAL_PROTOCOL_F(f, 2);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
inline void print_G33_settings(const bool end_stops, const bool tower_angles){ // TODO echo these to LCD ???
|
|
|
|
|
SERIAL_PROTOCOLPAIR(".Height:", DELTA_HEIGHT + home_offset[Z_AXIS]);
|
|
|
|
|
if (end_stops) {
|
|
|
|
|
print_signed_float(PSTR(" Ex"), endstop_adj[A_AXIS]);
|
|
|
|
|
print_signed_float(PSTR("Ey"), endstop_adj[B_AXIS]);
|
|
|
|
|
print_signed_float(PSTR("Ez"), endstop_adj[C_AXIS]);
|
|
|
|
|
SERIAL_PROTOCOLPAIR(" Radius:", delta_radius);
|
|
|
|
|
}
|
|
|
|
|
SERIAL_EOL();
|
|
|
|
|
if (tower_angles) {
|
|
|
|
|
SERIAL_PROTOCOLPGM(".Tower angle : ");
|
|
|
|
|
print_signed_float(PSTR("Tx"), delta_tower_angle_trim[A_AXIS]);
|
|
|
|
|
print_signed_float(PSTR("Ty"), delta_tower_angle_trim[B_AXIS]);
|
|
|
|
|
SERIAL_PROTOCOLLNPGM(" Tz:+0.00");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
inline void gcode_G33() {
|
|
|
|
|
|
|
|
|
|
const int8_t probe_points = parser.intval('P', DELTA_CALIBRATION_DEFAULT_POINTS);
|
|
|
|
|
if (!WITHIN(probe_points, 1, 7)) {
|
|
|
|
|
SERIAL_PROTOCOLLNPGM("?(P)oints is implausible (1 to 7).");
|
|
|
|
|
SERIAL_PROTOCOLLNPGM("?(P)oints is implausible (1-7).");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -5256,26 +5273,13 @@ void home_all_axes() { gcode_G28(true); }
|
|
|
|
|
|
|
|
|
|
// print settings
|
|
|
|
|
|
|
|
|
|
SERIAL_PROTOCOLPGM("Checking... AC");
|
|
|
|
|
const char *checkingac = PSTR("Checking... AC"); // TODO: Make translatable string
|
|
|
|
|
serialprintPGM(checkingac);
|
|
|
|
|
if (verbose_level == 0) SERIAL_PROTOCOLPGM(" (DRY-RUN)");
|
|
|
|
|
SERIAL_EOL();
|
|
|
|
|
LCD_MESSAGEPGM("Checking... AC"); // TODO: Make translatable string
|
|
|
|
|
lcd_setstatusPGM(checkingac);
|
|
|
|
|
|
|
|
|
|
SERIAL_PROTOCOLPAIR(".Height:", DELTA_HEIGHT + home_offset[Z_AXIS]);
|
|
|
|
|
if (!_1p_calibration) {
|
|
|
|
|
print_signed_float(PSTR(" Ex"), endstop_adj[A_AXIS]);
|
|
|
|
|
print_signed_float(PSTR("Ey"), endstop_adj[B_AXIS]);
|
|
|
|
|
print_signed_float(PSTR("Ez"), endstop_adj[C_AXIS]);
|
|
|
|
|
SERIAL_PROTOCOLPAIR(" Radius:", delta_radius);
|
|
|
|
|
}
|
|
|
|
|
SERIAL_EOL();
|
|
|
|
|
if (_7p_calibration && towers_set) {
|
|
|
|
|
SERIAL_PROTOCOLPGM(".Tower angle : ");
|
|
|
|
|
print_signed_float(PSTR("Tx"), delta_tower_angle_trim[A_AXIS]);
|
|
|
|
|
print_signed_float(PSTR("Ty"), delta_tower_angle_trim[B_AXIS]);
|
|
|
|
|
SERIAL_PROTOCOLPGM(" Tz:+0.00");
|
|
|
|
|
SERIAL_EOL();
|
|
|
|
|
}
|
|
|
|
|
print_G33_settings(!_1p_calibration, _7p_calibration && towers_set);
|
|
|
|
|
|
|
|
|
|
#if DISABLED(PROBE_MANUALLY)
|
|
|
|
|
home_offset[Z_AXIS] -= probe_pt(dx, dy, stow_after_each, 1, false); // 1st probe to set height
|
|
|
|
@ -5345,7 +5349,6 @@ void home_all_axes() { gcode_G28(true); }
|
|
|
|
|
N++;
|
|
|
|
|
}
|
|
|
|
|
zero_std_dev_old = zero_std_dev;
|
|
|
|
|
NOMORE(zero_std_dev_min, zero_std_dev);
|
|
|
|
|
zero_std_dev = round(sqrt(S2 / N) * 1000.0) / 1000.0 + 0.00001;
|
|
|
|
|
|
|
|
|
|
// Solve matrices
|
|
|
|
@ -5436,8 +5439,9 @@ void home_all_axes() { gcode_G28(true); }
|
|
|
|
|
|
|
|
|
|
recalc_delta_settings(delta_radius, delta_diagonal_rod);
|
|
|
|
|
}
|
|
|
|
|
NOMORE(zero_std_dev_min, zero_std_dev);
|
|
|
|
|
|
|
|
|
|
// print report
|
|
|
|
|
// print report
|
|
|
|
|
|
|
|
|
|
if (verbose_level != 1) {
|
|
|
|
|
SERIAL_PROTOCOLPGM(". ");
|
|
|
|
@ -5470,47 +5474,51 @@ void home_all_axes() { gcode_G28(true); }
|
|
|
|
|
#endif
|
|
|
|
|
{
|
|
|
|
|
SERIAL_PROTOCOLPGM("std dev:");
|
|
|
|
|
SERIAL_PROTOCOL_F(zero_std_dev, 3);
|
|
|
|
|
SERIAL_PROTOCOL_F(zero_std_dev_min, 3);
|
|
|
|
|
}
|
|
|
|
|
SERIAL_EOL();
|
|
|
|
|
LCD_MESSAGEPGM("Calibration OK"); // TODO: Make translatable string
|
|
|
|
|
char mess[21];
|
|
|
|
|
sprintf_P(mess, PSTR("Calibration sd:"));
|
|
|
|
|
if (zero_std_dev_min < 1)
|
|
|
|
|
sprintf_P(&mess[15], PSTR("0.%03i"), (int)round(zero_std_dev_min * 1000.0));
|
|
|
|
|
else
|
|
|
|
|
sprintf_P(&mess[15], PSTR("%03i.x"), (int)round(zero_std_dev_min));
|
|
|
|
|
lcd_setstatus(mess);
|
|
|
|
|
print_G33_settings(!_1p_calibration, _7p_calibration && towers_set);
|
|
|
|
|
serialprintPGM(save_message);
|
|
|
|
|
SERIAL_EOL();
|
|
|
|
|
}
|
|
|
|
|
else { // !end iterations
|
|
|
|
|
char mess[15] = "No convergence";
|
|
|
|
|
char mess[15];
|
|
|
|
|
if (iterations < 31)
|
|
|
|
|
sprintf_P(mess, PSTR("Iteration : %02i"), (int)iterations);
|
|
|
|
|
else
|
|
|
|
|
sprintf_P(mess, PSTR("No convergence"));
|
|
|
|
|
SERIAL_PROTOCOL(mess);
|
|
|
|
|
SERIAL_PROTOCOL_SP(36);
|
|
|
|
|
SERIAL_PROTOCOLPGM("std dev:");
|
|
|
|
|
SERIAL_PROTOCOL_F(zero_std_dev, 3);
|
|
|
|
|
SERIAL_EOL();
|
|
|
|
|
lcd_setstatus(mess);
|
|
|
|
|
print_G33_settings(!_1p_calibration, _7p_calibration && towers_set);
|
|
|
|
|
}
|
|
|
|
|
SERIAL_PROTOCOLPAIR(".Height:", DELTA_HEIGHT + home_offset[Z_AXIS]);
|
|
|
|
|
if (!_1p_calibration) {
|
|
|
|
|
print_signed_float(PSTR(" Ex"), endstop_adj[A_AXIS]);
|
|
|
|
|
print_signed_float(PSTR("Ey"), endstop_adj[B_AXIS]);
|
|
|
|
|
print_signed_float(PSTR("Ez"), endstop_adj[C_AXIS]);
|
|
|
|
|
SERIAL_PROTOCOLPAIR(" Radius:", delta_radius);
|
|
|
|
|
}
|
|
|
|
|
SERIAL_EOL();
|
|
|
|
|
if (_7p_calibration && towers_set) {
|
|
|
|
|
SERIAL_PROTOCOLPGM(".Tower angle : ");
|
|
|
|
|
print_signed_float(PSTR("Tx"), delta_tower_angle_trim[A_AXIS]);
|
|
|
|
|
print_signed_float(PSTR("Ty"), delta_tower_angle_trim[B_AXIS]);
|
|
|
|
|
SERIAL_PROTOCOLPGM(" Tz:+0.00");
|
|
|
|
|
SERIAL_EOL();
|
|
|
|
|
}
|
|
|
|
|
if ((zero_std_dev >= test_precision || zero_std_dev <= calibration_precision) && iterations > force_iterations)
|
|
|
|
|
serialprintPGM(save_message);
|
|
|
|
|
SERIAL_EOL();
|
|
|
|
|
}
|
|
|
|
|
else { // dry run
|
|
|
|
|
SERIAL_PROTOCOLPGM("End DRY-RUN");
|
|
|
|
|
const char *enddryrun = PSTR("End DRY-RUN");
|
|
|
|
|
serialprintPGM(enddryrun);
|
|
|
|
|
SERIAL_PROTOCOL_SP(39);
|
|
|
|
|
SERIAL_PROTOCOLPGM("std dev:");
|
|
|
|
|
SERIAL_PROTOCOL_F(zero_std_dev, 3);
|
|
|
|
|
SERIAL_EOL();
|
|
|
|
|
|
|
|
|
|
char mess[21];
|
|
|
|
|
sprintf_P(mess, enddryrun);
|
|
|
|
|
sprintf_P(&mess[11], PSTR(" sd:"));
|
|
|
|
|
if (zero_std_dev < 1)
|
|
|
|
|
sprintf_P(&mess[15], PSTR("0.%03i"), (int)round(zero_std_dev * 1000.0));
|
|
|
|
|
else
|
|
|
|
|
sprintf_P(&mess[15], PSTR("%03i.x"), (int)round(zero_std_dev));
|
|
|
|
|
lcd_setstatus(mess);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
endstops.enable(true);
|
|
|
|
|