|
@@ -5080,6 +5080,8 @@ void home_all_axes() { gcode_G28(true); }
|
5080
|
5080
|
* V0 Dry-run mode. Report settings and probe results. No calibration.
|
5081
|
5081
|
* V1 Report settings
|
5082
|
5082
|
* V2 Report settings and probe results
|
|
5083
|
+ *
|
|
5084
|
+ * E Engage the probe for each point
|
5083
|
5085
|
*/
|
5084
|
5086
|
inline void gcode_G33() {
|
5085
|
5087
|
|
|
@@ -5102,6 +5104,7 @@ void home_all_axes() { gcode_G28(true); }
|
5102
|
5104
|
}
|
5103
|
5105
|
|
5104
|
5106
|
const bool towers_set = !parser.seen('T'),
|
|
5107
|
+ stow_after_each = parser.seen('E'),
|
5105
|
5108
|
_1p_calibration = probe_points == 1,
|
5106
|
5109
|
_4p_calibration = probe_points == 2,
|
5107
|
5110
|
_4p_towers_points = _4p_calibration && towers_set,
|
|
@@ -5120,13 +5123,30 @@ void home_all_axes() { gcode_G28(true); }
|
5120
|
5123
|
_7p_double_circle ? 0.5 : 0),
|
5121
|
5124
|
radius = (1 + circles * 0.1) * delta_calibration_radius;
|
5122
|
5125
|
for (uint8_t axis = 1; axis < 13; ++axis) {
|
5123
|
|
- if (!position_is_reachable_by_probe_xy(cos(RADIANS(180 + 30 * axis)) * radius, sin(RADIANS(180 + 30 * axis)) * radius)) {
|
|
5126
|
+ if (!position_is_reachable_xy(cos(RADIANS(180 + 30 * axis)) * radius, sin(RADIANS(180 + 30 * axis)) * radius)) {
|
5124
|
5127
|
SERIAL_PROTOCOLLNPGM("?(M665 B)ed radius is implausible.");
|
5125
|
5128
|
return;
|
5126
|
5129
|
}
|
5127
|
5130
|
}
|
5128
|
5131
|
}
|
5129
|
5132
|
|
|
5133
|
+ const static char save_message[] PROGMEM = "Save with M500 and/or copy to Configuration.h";
|
|
5134
|
+ const float dx = (X_PROBE_OFFSET_FROM_EXTRUDER),
|
|
5135
|
+ dy = (Y_PROBE_OFFSET_FROM_EXTRUDER);
|
|
5136
|
+ int8_t iterations = 0;
|
|
5137
|
+ float test_precision,
|
|
5138
|
+ zero_std_dev = (verbose_level ? 999.0 : 0.0), // 0.0 in dry-run mode : forced end
|
|
5139
|
+ zero_std_dev_old = zero_std_dev,
|
|
5140
|
+ e_old[XYZ] = {
|
|
5141
|
+ endstop_adj[A_AXIS],
|
|
5142
|
+ endstop_adj[B_AXIS],
|
|
5143
|
+ endstop_adj[C_AXIS]
|
|
5144
|
+ },
|
|
5145
|
+ dr_old = delta_radius,
|
|
5146
|
+ zh_old = home_offset[Z_AXIS],
|
|
5147
|
+ alpha_old = delta_tower_angle_trim[A_AXIS],
|
|
5148
|
+ beta_old = delta_tower_angle_trim[B_AXIS];
|
|
5149
|
+
|
5130
|
5150
|
SERIAL_PROTOCOLLNPGM("G33 Auto Calibrate");
|
5131
|
5151
|
|
5132
|
5152
|
stepper.synchronize();
|
|
@@ -5138,25 +5158,11 @@ void home_all_axes() { gcode_G28(true); }
|
5138
|
5158
|
tool_change(0, 0, true);
|
5139
|
5159
|
#endif
|
5140
|
5160
|
setup_for_endstop_or_probe_move();
|
5141
|
|
-
|
|
5161
|
+ DEPLOY_PROBE();
|
5142
|
5162
|
endstops.enable(true);
|
5143
|
5163
|
home_delta();
|
5144
|
5164
|
endstops.not_homing();
|
5145
|
5165
|
|
5146
|
|
- const static char save_message[] PROGMEM = "Save with M500 and/or copy to Configuration.h";
|
5147
|
|
- float test_precision,
|
5148
|
|
- zero_std_dev = (verbose_level ? 999.0 : 0.0), // 0.0 in dry-run mode : forced end
|
5149
|
|
- zero_std_dev_old = zero_std_dev,
|
5150
|
|
- e_old[XYZ] = {
|
5151
|
|
- endstop_adj[A_AXIS],
|
5152
|
|
- endstop_adj[B_AXIS],
|
5153
|
|
- endstop_adj[C_AXIS]
|
5154
|
|
- },
|
5155
|
|
- dr_old = delta_radius,
|
5156
|
|
- zh_old = home_offset[Z_AXIS],
|
5157
|
|
- alpha_old = delta_tower_angle_trim[A_AXIS],
|
5158
|
|
- beta_old = delta_tower_angle_trim[B_AXIS];
|
5159
|
|
-
|
5160
|
5166
|
// print settings
|
5161
|
5167
|
|
5162
|
5168
|
SERIAL_PROTOCOLPGM("Checking... AC");
|
|
@@ -5189,13 +5195,7 @@ void home_all_axes() { gcode_G28(true); }
|
5189
|
5195
|
SERIAL_EOL();
|
5190
|
5196
|
}
|
5191
|
5197
|
|
5192
|
|
- #if ENABLED(Z_PROBE_SLED)
|
5193
|
|
- DEPLOY_PROBE();
|
5194
|
|
- #endif
|
5195
|
|
-
|
5196
|
|
- int8_t iterations = 0;
|
5197
|
|
-
|
5198
|
|
- home_offset[Z_AXIS] -= probe_pt(0.0, 0.0 , true, 1); // 1st probe to set height
|
|
5198
|
+ home_offset[Z_AXIS] -= probe_pt(dx, dy, stow_after_each, 1); // 1st probe to set height
|
5199
|
5199
|
do_probe_raise(Z_CLEARANCE_BETWEEN_PROBES);
|
5200
|
5200
|
|
5201
|
5201
|
do {
|
|
@@ -5210,12 +5210,12 @@ void home_all_axes() { gcode_G28(true); }
|
5210
|
5210
|
// Probe the points
|
5211
|
5211
|
|
5212
|
5212
|
if (!_7p_half_circle && !_7p_triple_circle) { // probe the center
|
5213
|
|
- z_at_pt[0] += probe_pt(0.0, 0.0 , true, 1);
|
|
5213
|
+ z_at_pt[0] += probe_pt(dx, dy, stow_after_each, 1);
|
5214
|
5214
|
}
|
5215
|
5215
|
if (_7p_calibration) { // probe extra center points
|
5216
|
5216
|
for (int8_t axis = _7p_multi_circle ? 11 : 9; axis > 0; axis -= _7p_multi_circle ? 2 : 4) {
|
5217
|
5217
|
const float a = RADIANS(180 + 30 * axis), r = delta_calibration_radius * 0.1;
|
5218
|
|
- z_at_pt[0] += probe_pt(cos(a) * r, sin(a) * r, true, 1); // TODO: Needs error handling
|
|
5218
|
+ z_at_pt[0] += probe_pt(cos(a) * r + dx, sin(a) * r + dy, stow_after_each, 1);
|
5219
|
5219
|
}
|
5220
|
5220
|
z_at_pt[0] /= float(_7p_double_circle ? 7 : probe_points);
|
5221
|
5221
|
}
|
|
@@ -5230,7 +5230,7 @@ void home_all_axes() { gcode_G28(true); }
|
5230
|
5230
|
for (float circles = -offset_circles ; circles <= offset_circles; circles++) {
|
5231
|
5231
|
const float a = RADIANS(180 + 30 * axis),
|
5232
|
5232
|
r = delta_calibration_radius * (1 + circles * (zig_zag ? 0.1 : -0.1));
|
5233
|
|
- z_at_pt[axis] += probe_pt(cos(a) * r, sin(a) * r, true, 1); // TODO: Needs error handling
|
|
5233
|
+ z_at_pt[axis] += probe_pt(cos(a) * r + dx, sin(a) * r + dy, stow_after_each, 1);
|
5234
|
5234
|
}
|
5235
|
5235
|
zig_zag = !zig_zag;
|
5236
|
5236
|
z_at_pt[axis] /= (2 * offset_circles + 1);
|
|
@@ -5452,13 +5452,11 @@ void home_all_axes() { gcode_G28(true); }
|
5452
|
5452
|
#if ENABLED(DELTA_HOME_TO_SAFE_ZONE)
|
5453
|
5453
|
do_blocking_move_to_z(delta_clip_start_height);
|
5454
|
5454
|
#endif
|
|
5455
|
+ STOW_PROBE();
|
5455
|
5456
|
clean_up_after_endstop_or_probe_move();
|
5456
|
5457
|
#if HOTENDS > 1
|
5457
|
5458
|
tool_change(old_tool_index, 0, true);
|
5458
|
5459
|
#endif
|
5459
|
|
- #if ENABLED(Z_PROBE_SLED)
|
5460
|
|
- RETRACT_PROBE();
|
5461
|
|
- #endif
|
5462
|
5460
|
}
|
5463
|
5461
|
|
5464
|
5462
|
#endif // DELTA_AUTO_CALIBRATION
|