Browse Source

Fix for issues #6997 and #7152

Probing with the effector in the printing area, but an eccentric probe (e.g. allen key) outside it but still touching the bed gives meaninfull information for calibration. Since calibration is most accurate when probing as close to the towers as possible the testing was way to restrictive hence this fix.
LVD-AC 7 years ago
parent
commit
567941e341

+ 37
- 35
Marlin/Marlin_main.cpp View File

@@ -2299,18 +2299,23 @@ static void clean_up_after_endstop_or_probe_move() {
2299 2299
    *   - Raise to the BETWEEN height
2300 2300
    * - Return the probed Z position
2301 2301
    */
2302
-  float probe_pt(const float &x, const float &y, const bool stow, const uint8_t verbose_level) {
2302
+  float probe_pt(const float &lx, const float &ly, const bool stow, const uint8_t verbose_level, const bool printable=true) {
2303 2303
     #if ENABLED(DEBUG_LEVELING_FEATURE)
2304 2304
       if (DEBUGGING(LEVELING)) {
2305
-        SERIAL_ECHOPAIR(">>> probe_pt(", x);
2306
-        SERIAL_ECHOPAIR(", ", y);
2305
+        SERIAL_ECHOPAIR(">>> probe_pt(", lx);
2306
+        SERIAL_ECHOPAIR(", ", ly);
2307 2307
         SERIAL_ECHOPAIR(", ", stow ? "" : "no ");
2308 2308
         SERIAL_ECHOLNPGM("stow)");
2309 2309
         DEBUG_POS("", current_position);
2310 2310
       }
2311 2311
     #endif
2312 2312
 
2313
-    if (!position_is_reachable_by_probe_xy(x, y)) return NAN;
2313
+    const float nx = lx - (X_PROBE_OFFSET_FROM_EXTRUDER), ny = ly - (Y_PROBE_OFFSET_FROM_EXTRUDER);
2314
+
2315
+    if (printable)
2316
+      if (!position_is_reachable_by_probe_xy(lx, ly)) return NAN;
2317
+    else
2318
+      if (!position_is_reachable_xy(nx, ny)) return NAN;
2314 2319
 
2315 2320
     const float old_feedrate_mm_s = feedrate_mm_s;
2316 2321
 
@@ -2325,7 +2330,7 @@ static void clean_up_after_endstop_or_probe_move() {
2325 2330
     feedrate_mm_s = XY_PROBE_FEEDRATE_MM_S;
2326 2331
 
2327 2332
     // Move the probe to the given XY
2328
-    do_blocking_move_to_xy(x - (X_PROBE_OFFSET_FROM_EXTRUDER), y - (Y_PROBE_OFFSET_FROM_EXTRUDER));
2333
+    do_blocking_move_to_xy(nx, ny);
2329 2334
 
2330 2335
     if (DEPLOY_PROBE()) return NAN;
2331 2336
 
@@ -2338,9 +2343,9 @@ static void clean_up_after_endstop_or_probe_move() {
2338 2343
 
2339 2344
     if (verbose_level > 2) {
2340 2345
       SERIAL_PROTOCOLPGM("Bed X: ");
2341
-      SERIAL_PROTOCOL_F(x, 3);
2346
+      SERIAL_PROTOCOL_F(lx, 3);
2342 2347
       SERIAL_PROTOCOLPGM(" Y: ");
2343
-      SERIAL_PROTOCOL_F(y, 3);
2348
+      SERIAL_PROTOCOL_F(ly, 3);
2344 2349
       SERIAL_PROTOCOLPGM(" Z: ");
2345 2350
       SERIAL_PROTOCOL_F(measured_z, 3);
2346 2351
       SERIAL_EOL();
@@ -5136,7 +5141,7 @@ void home_all_axes() { gcode_G28(true); }
5136 5141
      *      P3     Probe all positions: center, towers and opposite towers. Set all.
5137 5142
      *      P4-P7  Probe all positions at different locations and average them.
5138 5143
      *
5139
-     *   T   Don't calibrate tower angle corrections
5144
+     *   T0  Don't calibrate tower angle corrections
5140 5145
      *
5141 5146
      *   Cn.nn Calibration precision; when omitted calibrates to maximum precision
5142 5147
      *
@@ -5185,7 +5190,7 @@ void home_all_axes() { gcode_G28(true); }
5185 5190
         return;
5186 5191
       }
5187 5192
 
5188
-      const bool towers_set           = !parser.boolval('T'),
5193
+      const bool towers_set           = parser.boolval('T', true),
5189 5194
                  stow_after_each      = parser.boolval('E'),
5190 5195
                  _1p_calibration      = probe_points == 1,
5191 5196
                  _4p_calibration      = probe_points == 2,
@@ -5198,20 +5203,6 @@ void home_all_axes() { gcode_G28(true); }
5198 5203
                  _7p_quadruple_circle = probe_points == 7,
5199 5204
                  _7p_multi_circle     = _7p_double_circle || _7p_triple_circle || _7p_quadruple_circle,
5200 5205
                  _7p_intermed_points  = _7p_calibration && !_7p_half_circle;
5201
-
5202
-      if (!_1p_calibration) {  // test if the outer radius is reachable
5203
-        const float circles = (_7p_quadruple_circle ? 1.5 :
5204
-                               _7p_triple_circle    ? 1.0 :
5205
-                               _7p_double_circle    ? 0.5 : 0),
5206
-                    radius = (1 + circles * 0.1) * delta_calibration_radius;
5207
-        for (uint8_t axis = 1; axis < 13; ++axis) {
5208
-          if (!position_is_reachable_xy(cos(RADIANS(180 + 30 * axis)) * radius, sin(RADIANS(180 + 30 * axis)) * radius)) {
5209
-            SERIAL_PROTOCOLLNPGM("?(M665 B)ed radius is implausible.");
5210
-            return;
5211
-          }
5212
-        }
5213
-      }
5214
-
5215 5206
       const static char save_message[] PROGMEM = "Save with M500 and/or copy to Configuration.h";
5216 5207
       const float dx = (X_PROBE_OFFSET_FROM_EXTRUDER),
5217 5208
                   dy = (Y_PROBE_OFFSET_FROM_EXTRUDER);
@@ -5230,6 +5221,19 @@ void home_all_axes() { gcode_G28(true); }
5230 5221
             alpha_old = delta_tower_angle_trim[A_AXIS],
5231 5222
             beta_old = delta_tower_angle_trim[B_AXIS];
5232 5223
 
5224
+       if (!_1p_calibration) {  // test if the outer radius is reachable
5225
+        const float circles = (_7p_quadruple_circle ? 1.5 :
5226
+                               _7p_triple_circle    ? 1.0 :
5227
+                               _7p_double_circle    ? 0.5 : 0),
5228
+                    r = (1 + circles * 0.1) * delta_calibration_radius;
5229
+        for (uint8_t axis = 1; axis < 13; ++axis) {
5230
+          const float a = RADIANS(180 + 30 * axis);
5231
+          if (!position_is_reachable_xy(cos(a) * r, sin(a) * r)) {
5232
+            SERIAL_PROTOCOLLNPGM("?(M665 B)ed radius is implausible.");
5233
+            return;
5234
+          }
5235
+        }
5236
+      }
5233 5237
       SERIAL_PROTOCOLLNPGM("G33 Auto Calibrate");
5234 5238
 
5235 5239
       stepper.synchronize();
@@ -5269,13 +5273,11 @@ void home_all_axes() { gcode_G28(true); }
5269 5273
         SERIAL_EOL();
5270 5274
       }
5271 5275
 
5272
-      home_offset[Z_AXIS] -= probe_pt(dx, dy, stow_after_each, 1); // 1st probe to set height
5273
-      do_probe_raise(Z_CLEARANCE_BETWEEN_PROBES);
5274
-
5276
+      home_offset[Z_AXIS] -= probe_pt(dx, dy, stow_after_each, 1, false); // 1st probe to set height
5277
+      
5275 5278
       do {
5276 5279
 
5277
-        float z_at_pt[13] = { 0.0 }, S1 = 0.0, S2 = 0.0;
5278
-        int16_t N = 0;
5280
+        float z_at_pt[13] = { 0.0 };
5279 5281
 
5280 5282
         test_precision = zero_std_dev_old != 999.0 ? (zero_std_dev + zero_std_dev_old) / 2 : zero_std_dev;
5281 5283
 
@@ -5284,12 +5286,12 @@ void home_all_axes() { gcode_G28(true); }
5284 5286
         // Probe the points
5285 5287
 
5286 5288
         if (!_7p_half_circle && !_7p_triple_circle) { // probe the center
5287
-          z_at_pt[0] += probe_pt(dx, dy, stow_after_each, 1);
5289
+          z_at_pt[0] += probe_pt(dx, dy, stow_after_each, 1, false);
5288 5290
         }
5289 5291
         if (_7p_calibration) { // probe extra center points
5290 5292
           for (int8_t axis = _7p_multi_circle ? 11 : 9; axis > 0; axis -= _7p_multi_circle ? 2 : 4) {
5291 5293
             const float a = RADIANS(180 + 30 * axis), r = delta_calibration_radius * 0.1;
5292
-            z_at_pt[0] += probe_pt(cos(a) * r + dx, sin(a) * r + dy, stow_after_each, 1);
5294
+            z_at_pt[0] += probe_pt(cos(a) * r + dx, sin(a) * r + dy, stow_after_each, 1, false);
5293 5295
           }
5294 5296
           z_at_pt[0] /= float(_7p_double_circle ? 7 : probe_points);
5295 5297
         }
@@ -5305,19 +5307,19 @@ void home_all_axes() { gcode_G28(true); }
5305 5307
             for (float circles = -offset_circles ; circles <= offset_circles; circles++) {
5306 5308
               const float a = RADIANS(180 + 30 * axis),
5307 5309
                           r = delta_calibration_radius * (1 + circles * (zig_zag ? 0.1 : -0.1));
5308
-              z_at_pt[axis] += probe_pt(cos(a) * r + dx, sin(a) * r + dy, stow_after_each, 1);
5310
+              z_at_pt[axis] += probe_pt(cos(a) * r + dx, sin(a) * r + dy, stow_after_each, 1, false);
5309 5311
             }
5310 5312
             zig_zag = !zig_zag;
5311 5313
             z_at_pt[axis] /= (2 * offset_circles + 1);
5312 5314
           }
5313 5315
         }
5314 5316
         if (_7p_intermed_points) // average intermediates to tower and opposites
5315
-          for (uint8_t axis = 1; axis <= 11; axis += 2)
5317
+          for (uint8_t axis = 1; axis < 13; axis += 2)
5316 5318
             z_at_pt[axis] = (z_at_pt[axis] + (z_at_pt[axis + 1] + z_at_pt[(axis + 10) % 12 + 1]) / 2.0) / 2.0;
5317 5319
 
5318
-        S1 += z_at_pt[0];
5319
-        S2 += sq(z_at_pt[0]);
5320
-        N++;
5320
+        float S1 = z_at_pt[0],
5321
+              S2 = sq(z_at_pt[0]);
5322
+        int16_t N = 1;
5321 5323
         if (!_1p_calibration) // std dev from zero plane
5322 5324
           for (uint8_t axis = (_4p_opposite_points ? 3 : 1); axis < 13; axis += (_4p_calibration ? 4 : 2)) {
5323 5325
             S1 += z_at_pt[axis];

+ 28
- 24
Marlin/example_configurations/delta/FLSUN/auto_calibrate/Configuration.h View File

@@ -461,47 +461,51 @@
461 461
   // and processor overload (too many expensive sqrt calls).
462 462
   #define DELTA_SEGMENTS_PER_SECOND 160
463 463
 
464
-  // NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them
465
-
466
-  // Center-to-center distance of the holes in the diagonal push rods.
467
-  #define DELTA_DIAGONAL_ROD 218.0 // mm
468
-
469
-  // Horizontal distance bridged by diagonal push rods when effector is centered.
470
-  #define DELTA_RADIUS 100.00 //mm  Get this value from auto calibrate
471
-
472
-  // height from z=0 to home position
473
-  #define DELTA_HEIGHT 295.00 // get this value from auto calibrate - use G33 P1 at 1st time calibration
474
-
475
-  // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
476
-  #define DELTA_PRINTABLE_RADIUS 85.0
464
+  // After homing move down to a height where XY movement is unconstrained
465
+  //#define DELTA_HOME_TO_SAFE_ZONE
477 466
 
478 467
   // Delta calibration menu
479 468
   // uncomment to add three points calibration menu option.
480 469
   // See http://minow.blogspot.com/index.html#4918805519571907051
481 470
   #define DELTA_CALIBRATION_MENU
482 471
 
483
-  // set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 if DELTA_AUTO_CALIBRATION enabled
484
-  #define DELTA_CALIBRATION_RADIUS ((DELTA_PRINTABLE_RADIUS) * 0.869) // mm
485
-
486
-  // G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
472
+  // uncomment to add G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
487 473
   #define DELTA_AUTO_CALIBRATION
474
+
475
+  // NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them
476
+
488 477
   #if ENABLED(DELTA_AUTO_CALIBRATION)
489
-    #define DELTA_CALIBRATION_DEFAULT_POINTS 4 // set the default number of probe points : n*n (-7 -> +7)
478
+    // set the default number of probe points : n*n (1 -> 7)
479
+    #define DELTA_CALIBRATION_DEFAULT_POINTS 4
490 480
   #endif
491 481
 
492
-  // After homing move down to a height where XY movement is unconstrained
493
-  #define DELTA_HOME_TO_SAFE_ZONE
482
+  #if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU)
483
+    // Set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 for non-eccentric probes
484
+    #define DELTA_CALIBRATION_RADIUS 73.5 // mm
485
+  #endif
486
+
487
+  // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
488
+  #define DELTA_PRINTABLE_RADIUS 85.0 // mm
494 489
 
495
-  #define DELTA_ENDSTOP_ADJ { 0, 0, 0 } // get these from auto calibrate
490
+  // Center-to-center distance of the holes in the diagonal push rods.
491
+  #define DELTA_DIAGONAL_ROD 218.0 // mm
492
+
493
+  // height from z=0 to home position
494
+  #define DELTA_HEIGHT 295.00 // get this value from auto calibrate
495
+
496
+  #define DELTA_ENDSTOP_ADJ { 0.0, 0.0, 0.0 } // get these from auto calibrate
496 497
 
498
+  // Horizontal distance bridged by diagonal push rods when effector is centered.
499
+  #define DELTA_RADIUS 101.0 //mm  Get this value from auto calibrate
500
+  
497 501
   // Trim adjustments for individual towers
498 502
   // tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0
499 503
   // measured in degrees anticlockwise looking from above the printer
500
-  #define DELTA_TOWER_ANGLE_TRIM { 0, 0, 0 } // get these from auto calibrate
504
+  #define DELTA_TOWER_ANGLE_TRIM { 0.0, 0.0, 0.0 } // get these values from auto calibrate
501 505
 
502 506
   // delta radius and diaginal rod adjustments measured in mm
503
-  //#define DELTA_RADIUS_TRIM_TOWER {0, 0, 0}
504
-  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER {0, 0, 0}
507
+  //#define DELTA_RADIUS_TRIM_TOWER { 0.0, 0.0, 0.0 }
508
+  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER { 0.0, 0.0, 0.0 }
505 509
 
506 510
 #endif
507 511
 

+ 28
- 31
Marlin/example_configurations/delta/FLSUN/kossel_mini/Configuration.h View File

@@ -461,54 +461,51 @@
461 461
   // and processor overload (too many expensive sqrt calls).
462 462
   #define DELTA_SEGMENTS_PER_SECOND 160
463 463
 
464
-  // Center-to-center distance of the holes in the diagonal push rods.
465
-  #define DELTA_DIAGONAL_ROD 218.0 // mm
466
-
467
-  // Horizontal offset from middle of printer to smooth rod center.
468
-  #define DELTA_SMOOTH_ROD_OFFSET 150.0 // mm
469
-
470
-  // Horizontal offset of the universal joints on the end effector.
471
-  #define DELTA_EFFECTOR_OFFSET 24.0 // mm
472
-
473
-  // Horizontal offset of the universal joints on the carriages.
474
-  #define DELTA_CARRIAGE_OFFSET 22.0 // mm
475
-
476
-  // Horizontal distance bridged by diagonal push rods when effector is centered.
477
-  #define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET - DELTA_EFFECTOR_OFFSET - DELTA_CARRIAGE_OFFSET) //mm  Get this value from auto calibrate
478
-
479
-  // height from z=0.00 to home position
480
-  #define DELTA_HEIGHT 280 // get this value from auto calibrate - use G33 P1 at 1st time calibration
481
-
482
-  // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
483
-  #define DELTA_PRINTABLE_RADIUS 85.0
464
+  // After homing move down to a height where XY movement is unconstrained
465
+  //#define DELTA_HOME_TO_SAFE_ZONE
484 466
 
485 467
   // Delta calibration menu
486 468
   // uncomment to add three points calibration menu option.
487 469
   // See http://minow.blogspot.com/index.html#4918805519571907051
488 470
   //#define DELTA_CALIBRATION_MENU
489 471
 
490
-  // set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 if DELTA_AUTO_CALIBRATION enabled
491
-  #define DELTA_CALIBRATION_RADIUS ((DELTA_PRINTABLE_RADIUS) * 0.869) // mm
492
-
493
-  // G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
472
+  // uncomment to add G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
494 473
   //#define DELTA_AUTO_CALIBRATION
474
+
475
+  // NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them
476
+
495 477
   #if ENABLED(DELTA_AUTO_CALIBRATION)
496
-    #define DELTA_CALIBRATION_DEFAULT_POINTS 3 // set the default number of probe points : n*n (-7 -> +7)
478
+    // set the default number of probe points : n*n (1 -> 7)
479
+    #define DELTA_CALIBRATION_DEFAULT_POINTS 4
497 480
   #endif
498 481
 
499
-  // After homing move down to a height where XY movement is unconstrained
500
-  //#define DELTA_HOME_TO_SAFE_ZONE
482
+  #if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU)
483
+    // Set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 for non-eccentric probes
484
+    #define DELTA_CALIBRATION_RADIUS 73.5 // mm
485
+  #endif
486
+
487
+  // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
488
+  #define DELTA_PRINTABLE_RADIUS 85.0 // mm
489
+
490
+  // Center-to-center distance of the holes in the diagonal push rods.
491
+  #define DELTA_DIAGONAL_ROD 218.0 // mm
492
+
493
+  // height from z=0 to home position
494
+  #define DELTA_HEIGHT 280.00 // get this value from auto calibrate
501 495
 
502
-  #define DELTA_ENDSTOP_ADJ { 0, 0, 0 } // get these from auto calibrate
496
+  #define DELTA_ENDSTOP_ADJ { 0.0, 0.0, 0.0 } // get these from auto calibrate
503 497
 
498
+  // Horizontal distance bridged by diagonal push rods when effector is centered.
499
+  #define DELTA_RADIUS 101.0 //mm  Get this value from auto calibrate
500
+  
504 501
   // Trim adjustments for individual towers
505 502
   // tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0
506 503
   // measured in degrees anticlockwise looking from above the printer
507
-  #define DELTA_TOWER_ANGLE_TRIM { 0, 0, 0 } // get these from auto calibrate
504
+  #define DELTA_TOWER_ANGLE_TRIM { 0.0, 0.0, 0.0 } // get these values from auto calibrate
508 505
 
509 506
   // delta radius and diaginal rod adjustments measured in mm
510
-  //#define DELTA_RADIUS_TRIM_TOWER {0, 0, 0}
511
-  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER {0, 0, 0}
507
+  //#define DELTA_RADIUS_TRIM_TOWER { 0.0, 0.0, 0.0 }
508
+  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER { 0.0, 0.0, 0.0 }
512 509
 
513 510
 #endif
514 511
 

+ 29
- 31
Marlin/example_configurations/delta/generic/Configuration.h View File

@@ -451,53 +451,51 @@
451 451
   // and processor overload (too many expensive sqrt calls).
452 452
   #define DELTA_SEGMENTS_PER_SECOND 200
453 453
 
454
-  // Center-to-center distance of the holes in the diagonal push rods.
455
-  #define DELTA_DIAGONAL_ROD 250.0 // mm
456
-
457
-  // Horizontal offset from middle of printer to smooth rod center.
458
-  #define DELTA_SMOOTH_ROD_OFFSET 175.0 // mm
459
-
460
-  // Horizontal offset of the universal joints on the end effector.
461
-  #define DELTA_EFFECTOR_OFFSET 33.0 // mm
462
-
463
-  // Horizontal offset of the universal joints on the carriages.
464
-  #define DELTA_CARRIAGE_OFFSET 18.0 // mm
465
-
466
-  // Horizontal distance bridged by diagonal push rods when effector is centered.
467
-  #define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET - DELTA_EFFECTOR_OFFSET - DELTA_CARRIAGE_OFFSET) //mm  Get this value from auto calibrate
468
-
469
-  // height from z=0.00 to home position
470
-  #define DELTA_HEIGHT 250 // get this value from auto calibrate - use G33 P1 at 1st time calibration
471
-
472
-  // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
473
-  #define DELTA_PRINTABLE_RADIUS 140.0
454
+  // After homing move down to a height where XY movement is unconstrained
455
+  //#define DELTA_HOME_TO_SAFE_ZONE
474 456
 
475 457
   // Delta calibration menu
458
+  // uncomment to add three points calibration menu option.
476 459
   // See http://minow.blogspot.com/index.html#4918805519571907051
477 460
   //#define DELTA_CALIBRATION_MENU
478 461
 
479
-  // set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 if DELTA_AUTO_CALIBRATION enabled
480
-  #define DELTA_CALIBRATION_RADIUS ((DELTA_PRINTABLE_RADIUS) * 0.869) // mm
481
-
482
-  // G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
462
+  // uncomment to add G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
483 463
   //#define DELTA_AUTO_CALIBRATION
464
+
465
+  // NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them
466
+
484 467
   #if ENABLED(DELTA_AUTO_CALIBRATION)
485
-    #define DELTA_CALIBRATION_DEFAULT_POINTS 3 // set the default number of probe points : n*n (-7 -> +7)
468
+    // set the default number of probe points : n*n (1 -> 7)
469
+    #define DELTA_CALIBRATION_DEFAULT_POINTS 4
486 470
   #endif
487 471
 
488
-  // After homing move down to a height where XY movement is unconstrained
489
-  //#define DELTA_HOME_TO_SAFE_ZONE
472
+  #if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU)
473
+    // Set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 for non-eccentric probes
474
+    #define DELTA_CALIBRATION_RADIUS 121.5 // mm
475
+  #endif
476
+
477
+  // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
478
+  #define DELTA_PRINTABLE_RADIUS 140.0 // mm
479
+
480
+  // Center-to-center distance of the holes in the diagonal push rods.
481
+  #define DELTA_DIAGONAL_ROD 250.0 // mm
482
+
483
+  // height from z=0 to home position
484
+  #define DELTA_HEIGHT 250.00 // get this value from auto calibrate
490 485
 
491
-  #define DELTA_ENDSTOP_ADJ { 0, 0, 0 } // get these from auto calibrate
486
+  #define DELTA_ENDSTOP_ADJ { 0.0, 0.0, 0.0 } // get these from auto calibrate
492 487
 
488
+  // Horizontal distance bridged by diagonal push rods when effector is centered.
489
+  #define DELTA_RADIUS 124.0 //mm  Get this value from auto calibrate
490
+  
493 491
   // Trim adjustments for individual towers
494 492
   // tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0
495 493
   // measured in degrees anticlockwise looking from above the printer
496
-  #define DELTA_TOWER_ANGLE_TRIM { 0, 0, 0 } // get these from auto calibrate
494
+  #define DELTA_TOWER_ANGLE_TRIM { 0.0, 0.0, 0.0 } // get these values from auto calibrate
497 495
 
498 496
   // delta radius and diaginal rod adjustments measured in mm
499
-  //#define DELTA_RADIUS_TRIM_TOWER {0, 0, 0}
500
-  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER {0, 0, 0}
497
+  //#define DELTA_RADIUS_TRIM_TOWER { 0.0, 0.0, 0.0 }
498
+  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER { 0.0, 0.0, 0.0 }
501 499
 
502 500
 #endif
503 501
 

+ 29
- 31
Marlin/example_configurations/delta/kossel_mini/Configuration.h View File

@@ -451,53 +451,51 @@
451 451
   // and processor overload (too many expensive sqrt calls).
452 452
   #define DELTA_SEGMENTS_PER_SECOND 200
453 453
 
454
-  // Center-to-center distance of the holes in the diagonal push rods.
455
-  #define DELTA_DIAGONAL_ROD 215.0 // mm
456
-
457
-  // Horizontal offset from middle of printer to smooth rod center.
458
-  #define DELTA_SMOOTH_ROD_OFFSET 145.0 // mm
459
-
460
-  // Horizontal offset of the universal joints on the end effector.
461
-  #define DELTA_EFFECTOR_OFFSET 19.9 // mm
462
-
463
-  // Horizontal offset of the universal joints on the carriages.
464
-  #define DELTA_CARRIAGE_OFFSET 19.5 // mm
465
-
466
-  // Horizontal distance bridged by diagonal push rods when effector is centered.
467
-  #define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET - DELTA_EFFECTOR_OFFSET - DELTA_CARRIAGE_OFFSET) //mm  Get this value from auto calibrate
468
-
469
-  // height from z=0.00 to home position
470
-  #define DELTA_HEIGHT 250 // get this value from auto calibrate - use G33 P1 at 1st time calibration
471
-
472
-  // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
473
-  #define DELTA_PRINTABLE_RADIUS 90.0
454
+  // After homing move down to a height where XY movement is unconstrained
455
+  //#define DELTA_HOME_TO_SAFE_ZONE
474 456
 
475 457
   // Delta calibration menu
458
+  // uncomment to add three points calibration menu option.
476 459
   // See http://minow.blogspot.com/index.html#4918805519571907051
477 460
   //#define DELTA_CALIBRATION_MENU
478 461
 
479
-  // set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 if DELTA_AUTO_CALIBRATION enabled
480
-  #define DELTA_CALIBRATION_RADIUS ((DELTA_PRINTABLE_RADIUS) * 0.869) // mm
481
-
482
-  // G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
462
+  // uncomment to add G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
483 463
   //#define DELTA_AUTO_CALIBRATION
464
+
465
+  // NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them
466
+
484 467
   #if ENABLED(DELTA_AUTO_CALIBRATION)
485
-    #define DELTA_CALIBRATION_DEFAULT_POINTS 3 // set the default number of probe points : n*n (-7 -> +7)
468
+    // set the default number of probe points : n*n (1 -> 7)
469
+    #define DELTA_CALIBRATION_DEFAULT_POINTS 4
486 470
   #endif
487 471
 
488
-  // After homing move down to a height where XY movement is unconstrained
489
-  //#define DELTA_HOME_TO_SAFE_ZONE
472
+  #if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU)
473
+    // Set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 for non-eccentric probes
474
+    #define DELTA_CALIBRATION_RADIUS 78.0 // mm
475
+  #endif
476
+
477
+  // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
478
+  #define DELTA_PRINTABLE_RADIUS 90.0 // mm
479
+
480
+  // Center-to-center distance of the holes in the diagonal push rods.
481
+  #define DELTA_DIAGONAL_ROD 215.0 // mm
482
+
483
+  // height from z=0 to home position
484
+  #define DELTA_HEIGHT 250.00 // get this value from auto calibrate
490 485
 
491
-  #define DELTA_ENDSTOP_ADJ { 0, 0, 0 } // get these from auto calibrate
486
+  #define DELTA_ENDSTOP_ADJ { 0.0, 0.0, 0.0 } // get these from auto calibrate
492 487
 
488
+  // Horizontal distance bridged by diagonal push rods when effector is centered.
489
+  #define DELTA_RADIUS 105.2 //mm  Get this value from auto calibrate
490
+  
493 491
   // Trim adjustments for individual towers
494 492
   // tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0
495 493
   // measured in degrees anticlockwise looking from above the printer
496
-  #define DELTA_TOWER_ANGLE_TRIM { 0, 0, 0 } // get these from auto calibrate
494
+  #define DELTA_TOWER_ANGLE_TRIM { 0.0, 0.0, 0.0 } // get these values from auto calibrate
497 495
 
498 496
   // delta radius and diaginal rod adjustments measured in mm
499
-  //#define DELTA_RADIUS_TRIM_TOWER {0, 0, 0}
500
-  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER {0, 0, 0}
497
+  //#define DELTA_RADIUS_TRIM_TOWER { 0.0, 0.0, 0.0 }
498
+  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER { 0.0, 0.0, 0.0 }
501 499
 
502 500
 #endif
503 501
 

+ 29
- 31
Marlin/example_configurations/delta/kossel_pro/Configuration.h View File

@@ -437,53 +437,51 @@
437 437
   // and processor overload (too many expensive sqrt calls).
438 438
   #define DELTA_SEGMENTS_PER_SECOND 160
439 439
 
440
-  // Center-to-center distance of the holes in the diagonal push rods.
441
-  #define DELTA_DIAGONAL_ROD 301.0 // mm
442
-
443
-  // Horizontal offset from middle of printer to smooth rod center.
444
-  #define DELTA_SMOOTH_ROD_OFFSET 212.357 // mm
445
-
446
-  // Horizontal offset of the universal joints on the end effector.
447
-  #define DELTA_EFFECTOR_OFFSET 30.0 // mm
448
-
449
-  // Horizontal offset of the universal joints on the carriages.
450
-  #define DELTA_CARRIAGE_OFFSET 30.0 // mm
451
-
452
-  // Horizontal distance bridged by diagonal push rods when effector is centered.
453
-  #define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET - DELTA_EFFECTOR_OFFSET - DELTA_CARRIAGE_OFFSET) //mm  Get this value from auto calibrate
454
-
455
-  // height from z=0.00 to home position
456
-  #define DELTA_HEIGHT 277 // get this value from auto calibrate - use G33 P1 at 1st time calibration
457
-
458
-  // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
459
-  #define DELTA_PRINTABLE_RADIUS 127.0
440
+  // After homing move down to a height where XY movement is unconstrained
441
+  //#define DELTA_HOME_TO_SAFE_ZONE
460 442
 
461 443
   // Delta calibration menu
444
+  // uncomment to add three points calibration menu option.
462 445
   // See http://minow.blogspot.com/index.html#4918805519571907051
463 446
   //#define DELTA_CALIBRATION_MENU
464 447
 
465
-  // set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 if DELTA_AUTO_CALIBRATION enabled
466
-  #define DELTA_CALIBRATION_RADIUS ((DELTA_PRINTABLE_RADIUS) * 0.869) // mm
467
-
468
-  // G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
448
+  // uncomment to add G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
469 449
   //#define DELTA_AUTO_CALIBRATION
450
+
451
+  // NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them
452
+
470 453
   #if ENABLED(DELTA_AUTO_CALIBRATION)
471
-    #define DELTA_CALIBRATION_DEFAULT_POINTS 3 // set the default number of probe points : n*n (-7 -> +7)
454
+    // set the default number of probe points : n*n (1 -> 7)
455
+    #define DELTA_CALIBRATION_DEFAULT_POINTS 4
472 456
   #endif
473 457
 
474
-  // After homing move down to a height where XY movement is unconstrained
475
-  //#define DELTA_HOME_TO_SAFE_ZONE
458
+  #if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU)
459
+    // Set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 for non-eccentric probes
460
+    #define DELTA_CALIBRATION_RADIUS 110.0 // mm
461
+  #endif
462
+
463
+  // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
464
+  #define DELTA_PRINTABLE_RADIUS 127.0 // mm
465
+
466
+  // Center-to-center distance of the holes in the diagonal push rods.
467
+  #define DELTA_DIAGONAL_ROD 301.0 // mm
468
+
469
+  // height from z=0 to home position
470
+  #define DELTA_HEIGHT 277.00 // get this value from auto calibrate
476 471
 
477
-  #define DELTA_ENDSTOP_ADJ { 0, 0, 0 } // get these from auto calibrate
472
+  #define DELTA_ENDSTOP_ADJ { 0.0, 0.0, 0.0 } // get these from auto calibrate
478 473
 
474
+  // Horizontal distance bridged by diagonal push rods when effector is centered.
475
+  #define DELTA_RADIUS 152.357 //mm  Get this value from auto calibrate
476
+  
479 477
   // Trim adjustments for individual towers
480 478
   // tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0
481 479
   // measured in degrees anticlockwise looking from above the printer
482
-  #define DELTA_TOWER_ANGLE_TRIM { 0, 0, 0 } // get these from auto calibrate
480
+  #define DELTA_TOWER_ANGLE_TRIM { 0.0, 0.0, 0.0 } // get these values from auto calibrate
483 481
 
484 482
   // delta radius and diaginal rod adjustments measured in mm
485
-  //#define DELTA_RADIUS_TRIM_TOWER {0, 0, 0}
486
-  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER {0, 0, 0}
483
+  //#define DELTA_RADIUS_TRIM_TOWER { 0.0, 0.0, 0.0 }
484
+  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER { 0.0, 0.0, 0.0 }
487 485
 
488 486
 #endif
489 487
 

+ 29
- 31
Marlin/example_configurations/delta/kossel_xl/Configuration.h View File

@@ -455,53 +455,51 @@
455 455
   // and processor overload (too many expensive sqrt calls).
456 456
   #define DELTA_SEGMENTS_PER_SECOND 160
457 457
 
458
-  // Center-to-center distance of the holes in the diagonal push rods.
459
-  #define DELTA_DIAGONAL_ROD 317.3 + 2.5 // mm
460
-
461
-  // Horizontal offset from middle of printer to smooth rod center.
462
-  #define DELTA_SMOOTH_ROD_OFFSET 220.1 // mm
463
-
464
-  // Horizontal offset of the universal joints on the end effector.
465
-  #define DELTA_EFFECTOR_OFFSET 24.0 // mm
466
-
467
-  // Horizontal offset of the universal joints on the carriages.
468
-  #define DELTA_CARRIAGE_OFFSET 22.0 // mm
469
-
470
-  // Horizontal distance bridged by diagonal push rods when effector is centered.
471
-  #define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET - DELTA_EFFECTOR_OFFSET - DELTA_CARRIAGE_OFFSET) //mm  Get this value from auto calibrate
472
-
473
-  // height from z=0.00 to home position
474
-  #define DELTA_HEIGHT 380 // get this value from auto calibrate - use G33 P1 at 1st time calibration
475
-
476
-  // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
477
-  #define DELTA_PRINTABLE_RADIUS 140.0
458
+  // After homing move down to a height where XY movement is unconstrained
459
+  //#define DELTA_HOME_TO_SAFE_ZONE
478 460
 
479 461
   // Delta calibration menu
462
+  // uncomment to add three points calibration menu option.
480 463
   // See http://minow.blogspot.com/index.html#4918805519571907051
481 464
   //#define DELTA_CALIBRATION_MENU
482 465
 
483
-  // set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 if DELTA_AUTO_CALIBRATION enabled
484
-  #define DELTA_CALIBRATION_RADIUS ((DELTA_PRINTABLE_RADIUS) * 0.869) // mm
485
-
486
-  // G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
466
+  // uncomment to add G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
487 467
   //#define DELTA_AUTO_CALIBRATION
468
+
469
+  // NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them
470
+
488 471
   #if ENABLED(DELTA_AUTO_CALIBRATION)
489
-    #define DELTA_CALIBRATION_DEFAULT_POINTS 3 // set the default number of probe points : n*n (-7 -> +7)
472
+    // set the default number of probe points : n*n (1 -> 7)
473
+    #define DELTA_CALIBRATION_DEFAULT_POINTS 4
490 474
   #endif
491 475
 
492
-  // After homing move down to a height where XY movement is unconstrained
493
-  //#define DELTA_HOME_TO_SAFE_ZONE
476
+  #if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU)
477
+    // Set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 for non-eccentric probes
478
+    #define DELTA_CALIBRATION_RADIUS 121.5 // mm
479
+  #endif
494 480
 
495
-  #define DELTA_ENDSTOP_ADJ { 0, 0, 0 } // get these from auto calibrate
481
+  // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
482
+  #define DELTA_PRINTABLE_RADIUS 140.0 // mm
496 483
 
484
+  // Center-to-center distance of the holes in the diagonal push rods.
485
+  #define DELTA_DIAGONAL_ROD 319.5 // mm
486
+
487
+  // height from z=0 to home position
488
+  #define DELTA_HEIGHT 380.00 // get this value from auto calibrate
489
+
490
+  #define DELTA_ENDSTOP_ADJ { 0.0, 0.0, 0.0 } // get these from auto calibrate
491
+
492
+  // Horizontal distance bridged by diagonal push rods when effector is centered.
493
+  #define DELTA_RADIUS 174.1 //mm  Get this value from auto calibrate
494
+  
497 495
   // Trim adjustments for individual towers
498 496
   // tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0
499 497
   // measured in degrees anticlockwise looking from above the printer
500
-  #define DELTA_TOWER_ANGLE_TRIM { 0, 0, 0 } // get these from auto calibrate
498
+  #define DELTA_TOWER_ANGLE_TRIM { 0.0, 0.0, 0.0 } // get these values from auto calibrate
501 499
 
502 500
   // delta radius and diaginal rod adjustments measured in mm
503
-  //#define DELTA_RADIUS_TRIM_TOWER {0, 0, 0}
504
-  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER {0, 0, 0}
501
+  //#define DELTA_RADIUS_TRIM_TOWER { 0.0, 0.0, 0.0 }
502
+  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER { 0.0, 0.0, 0.0 }
505 503
 
506 504
 #endif
507 505
 

+ 1
- 1
Marlin/ubl_G29.cpp View File

@@ -51,7 +51,7 @@
51 51
 
52 52
   extern float meshedit_done;
53 53
   extern long babysteps_done;
54
-  extern float probe_pt(const float &x, const float &y, const bool, const uint8_t);
54
+  extern float probe_pt(const float &lx, const float &ly, const bool, const uint8_t, const bool=true);
55 55
   extern bool set_probe_deployed(bool);
56 56
   extern void set_bed_leveling_enabled(bool);
57 57
   typedef void (*screenFunc_t)();

Loading…
Cancel
Save