|
@@ -5021,7 +5021,9 @@ inline void gcode_G28() {
|
5021
|
5021
|
|
5022
|
5022
|
float e_old[XYZ],
|
5023
|
5023
|
dr_old = delta_radius,
|
5024
|
|
- zh_old = home_offset[Z_AXIS];
|
|
5024
|
+ zh_old = home_offset[Z_AXIS],
|
|
5025
|
+ alpha_old = delta_tower_angle_trim[A_AXIS],
|
|
5026
|
+ beta_old = delta_tower_angle_trim[B_AXIS];
|
5025
|
5027
|
COPY(e_old,endstop_adj);
|
5026
|
5028
|
|
5027
|
5029
|
// print settings
|
|
@@ -5032,7 +5034,7 @@ inline void gcode_G28() {
|
5032
|
5034
|
SERIAL_EOL;
|
5033
|
5035
|
LCD_MESSAGEPGM("Checking... AC");
|
5034
|
5036
|
|
5035
|
|
- SERIAL_PROTOCOLPAIR("Height:", DELTA_HEIGHT + home_offset[Z_AXIS]);
|
|
5037
|
+ SERIAL_PROTOCOLPAIR(".Height:", DELTA_HEIGHT + home_offset[Z_AXIS]);
|
5036
|
5038
|
if (abs(probe_points) > 1) {
|
5037
|
5039
|
SERIAL_PROTOCOLPGM(" Ex:");
|
5038
|
5040
|
if (endstop_adj[A_AXIS] >= 0) SERIAL_CHAR('+');
|
|
@@ -5046,6 +5048,16 @@ inline void gcode_G28() {
|
5046
|
5048
|
SERIAL_PROTOCOLPAIR(" Radius:", delta_radius);
|
5047
|
5049
|
}
|
5048
|
5050
|
SERIAL_EOL;
|
|
5051
|
+ if (probe_points > 2) {
|
|
5052
|
+ SERIAL_PROTOCOLPGM(".Tower angle : Tx:");
|
|
5053
|
+ if (delta_tower_angle_trim[A_AXIS] >= 0) SERIAL_CHAR('+');
|
|
5054
|
+ SERIAL_PROTOCOL_F(delta_tower_angle_trim[A_AXIS], 2);
|
|
5055
|
+ SERIAL_PROTOCOLPGM(" Ty:");
|
|
5056
|
+ if (delta_tower_angle_trim[B_AXIS] >= 0) SERIAL_CHAR('+');
|
|
5057
|
+ SERIAL_PROTOCOL_F(delta_tower_angle_trim[B_AXIS], 2);
|
|
5058
|
+ SERIAL_PROTOCOLPGM(" Tz:+0.00");
|
|
5059
|
+ SERIAL_EOL;
|
|
5060
|
+ }
|
5049
|
5061
|
|
5050
|
5062
|
#if ENABLED(Z_PROBE_SLED)
|
5051
|
5063
|
DEPLOY_PROBE();
|
|
@@ -5121,11 +5133,15 @@ inline void gcode_G28() {
|
5121
|
5133
|
COPY(e_old, endstop_adj);
|
5122
|
5134
|
dr_old = delta_radius;
|
5123
|
5135
|
zh_old = home_offset[Z_AXIS];
|
|
5136
|
+ alpha_old = delta_tower_angle_trim[A_AXIS];
|
|
5137
|
+ beta_old = delta_tower_angle_trim[B_AXIS];
|
5124
|
5138
|
|
5125
|
|
- float e_delta[XYZ] = { 0.0 }, r_delta = 0.0;
|
|
5139
|
+ float e_delta[XYZ] = { 0.0 }, r_delta = 0.0,
|
|
5140
|
+ t_alpha = 0.0, t_beta = 0.0;
|
5126
|
5141
|
const float r_diff = delta_radius - delta_calibration_radius,
|
5127
|
5142
|
h_factor = 1.00 + r_diff * 0.001,
|
5128
|
|
- r_factor = -(1.75 + 0.005 * r_diff + 0.001 * sq(r_diff)); //2.25 for r_diff = 20mm
|
|
5143
|
+ r_factor = -(1.75 + 0.005 * r_diff + 0.001 * sq(r_diff)), //2.25 for r_diff = 20mm
|
|
5144
|
+ a_factor = 100.0 / delta_calibration_radius;
|
5129
|
5145
|
|
5130
|
5146
|
#define ZP(N,I) ((N) * z_at_pt[I])
|
5131
|
5147
|
#define Z1000(I) ZP(1.00, I)
|
|
@@ -5136,6 +5152,8 @@ inline void gcode_G28() {
|
5136
|
5152
|
#define Z2250(I) ZP(r_factor, I)
|
5137
|
5153
|
#define Z0750(I) ZP(r_factor / 3.00, I)
|
5138
|
5154
|
#define Z0375(I) ZP(r_factor / 6.00, I)
|
|
5155
|
+ #define Z0444(I) ZP(a_factor * 4.0 / 9.0, I)
|
|
5156
|
+ #define Z0888(I) ZP(a_factor * 8.0 / 9.0, I)
|
5139
|
5157
|
|
5140
|
5158
|
switch (probe_points) {
|
5141
|
5159
|
case 1:
|
|
@@ -5151,10 +5169,10 @@ inline void gcode_G28() {
|
5151
|
5169
|
break;
|
5152
|
5170
|
|
5153
|
5171
|
case -2:
|
5154
|
|
- e_delta[X_AXIS] = Z1050(0) - Z0700(7) + Z0350(11) + Z0350(3);
|
5155
|
|
- e_delta[Y_AXIS] = Z1050(0) + Z0350(7) - Z0700(11) + Z0350(3);
|
5156
|
|
- e_delta[Z_AXIS] = Z1050(0) + Z0350(7) + Z0350(11) - Z0700(3);
|
5157
|
|
- r_delta = Z2250(0) - Z0750(7) - Z0750(11) - Z0750(3);
|
|
5172
|
+ e_delta[X_AXIS] = Z1050(0) - Z0700(7) + Z0350(11) + Z0350(3);
|
|
5173
|
+ e_delta[Y_AXIS] = Z1050(0) + Z0350(7) - Z0700(11) + Z0350(3);
|
|
5174
|
+ e_delta[Z_AXIS] = Z1050(0) + Z0350(7) + Z0350(11) - Z0700(3);
|
|
5175
|
+ r_delta = Z2250(0) - Z0750(7) - Z0750(11) - Z0750(3);
|
5158
|
5176
|
break;
|
5159
|
5177
|
|
5160
|
5178
|
default:
|
|
@@ -5162,6 +5180,8 @@ inline void gcode_G28() {
|
5162
|
5180
|
e_delta[Y_AXIS] = Z1050(0) - Z0175(1) + Z0350(5) - Z0175(9) + Z0175(7) - Z0350(11) + Z0175(3);
|
5163
|
5181
|
e_delta[Z_AXIS] = Z1050(0) - Z0175(1) - Z0175(5) + Z0350(9) + Z0175(7) + Z0175(11) - Z0350(3);
|
5164
|
5182
|
r_delta = Z2250(0) - Z0375(1) - Z0375(5) - Z0375(9) - Z0375(7) - Z0375(11) - Z0375(3);
|
|
5183
|
+ t_alpha = + Z0444(1) - Z0888(5) + Z0444(9) + Z0444(7) - Z0888(11) + Z0444(3);
|
|
5184
|
+ t_beta = - Z0888(1) + Z0444(5) + Z0444(9) - Z0888(7) + Z0444(11) + Z0444(3);
|
5165
|
5185
|
break;
|
5166
|
5186
|
}
|
5167
|
5187
|
|
|
@@ -5173,6 +5193,9 @@ inline void gcode_G28() {
|
5173
|
5193
|
home_offset[Z_AXIS] -= z_temp;
|
5174
|
5194
|
LOOP_XYZ(i) endstop_adj[i] -= z_temp;
|
5175
|
5195
|
|
|
5196
|
+ delta_tower_angle_trim[A_AXIS] += t_alpha;
|
|
5197
|
+ delta_tower_angle_trim[B_AXIS] -= t_beta;
|
|
5198
|
+
|
5176
|
5199
|
recalc_delta_settings(delta_radius, delta_diagonal_rod);
|
5177
|
5200
|
}
|
5178
|
5201
|
else { // !iterate
|
|
@@ -5180,6 +5203,8 @@ inline void gcode_G28() {
|
5180
|
5203
|
COPY(endstop_adj, e_old);
|
5181
|
5204
|
delta_radius = dr_old;
|
5182
|
5205
|
home_offset[Z_AXIS] = zh_old;
|
|
5206
|
+ delta_tower_angle_trim[A_AXIS] = alpha_old;
|
|
5207
|
+ delta_tower_angle_trim[B_AXIS] = beta_old;
|
5183
|
5208
|
|
5184
|
5209
|
recalc_delta_settings(delta_radius, delta_diagonal_rod);
|
5185
|
5210
|
}
|
|
@@ -5219,7 +5244,7 @@ inline void gcode_G28() {
|
5219
|
5244
|
if (test_precision != 0.0) { // !forced end
|
5220
|
5245
|
if (zero_std_dev >= test_precision) { // end iterations
|
5221
|
5246
|
SERIAL_PROTOCOLPGM("Calibration OK");
|
5222
|
|
- SERIAL_PROTOCOLLNPGM(" rolling back 1");
|
|
5247
|
+ SERIAL_PROTOCOLLNPGM(" rolling back.");
|
5223
|
5248
|
LCD_MESSAGEPGM("Calibration OK");
|
5224
|
5249
|
SERIAL_EOL;
|
5225
|
5250
|
}
|
|
@@ -5228,12 +5253,12 @@ inline void gcode_G28() {
|
5228
|
5253
|
if (iterations < 31)
|
5229
|
5254
|
sprintf_P(mess, PSTR("Iteration : %02i"), (int)iterations);
|
5230
|
5255
|
SERIAL_PROTOCOL(mess);
|
5231
|
|
- SERIAL_PROTOCOLPGM(" std dev:");
|
|
5256
|
+ SERIAL_PROTOCOLPGM(" std dev:");
|
5232
|
5257
|
SERIAL_PROTOCOL_F(zero_std_dev, 3);
|
5233
|
5258
|
SERIAL_EOL;
|
5234
|
5259
|
lcd_setstatus(mess);
|
5235
|
5260
|
}
|
5236
|
|
- SERIAL_PROTOCOLPAIR("Height:", DELTA_HEIGHT + home_offset[Z_AXIS]);
|
|
5261
|
+ SERIAL_PROTOCOLPAIR(".Height:", DELTA_HEIGHT + home_offset[Z_AXIS]);
|
5237
|
5262
|
if (abs(probe_points) > 1) {
|
5238
|
5263
|
SERIAL_PROTOCOLPGM(" Ex:");
|
5239
|
5264
|
if (endstop_adj[A_AXIS] >= 0) SERIAL_CHAR('+');
|
|
@@ -5247,6 +5272,16 @@ inline void gcode_G28() {
|
5247
|
5272
|
SERIAL_PROTOCOLPAIR(" Radius:", delta_radius);
|
5248
|
5273
|
}
|
5249
|
5274
|
SERIAL_EOL;
|
|
5275
|
+ if (probe_points > 2) {
|
|
5276
|
+ SERIAL_PROTOCOLPGM(".Tower angle : Tx:");
|
|
5277
|
+ if (delta_tower_angle_trim[A_AXIS] >= 0) SERIAL_CHAR('+');
|
|
5278
|
+ SERIAL_PROTOCOL_F(delta_tower_angle_trim[A_AXIS], 2);
|
|
5279
|
+ SERIAL_PROTOCOLPGM(" Ty:");
|
|
5280
|
+ if (delta_tower_angle_trim[B_AXIS] >= 0) SERIAL_CHAR('+');
|
|
5281
|
+ SERIAL_PROTOCOL_F(delta_tower_angle_trim[B_AXIS], 2);
|
|
5282
|
+ SERIAL_PROTOCOLPGM(" Tz:+0.00");
|
|
5283
|
+ SERIAL_EOL;
|
|
5284
|
+ }
|
5250
|
5285
|
if (zero_std_dev >= test_precision)
|
5251
|
5286
|
SERIAL_PROTOCOLLNPGM("save with M500 and/or copy to configuration.h");
|
5252
|
5287
|
}
|