Browse Source

Merge pull request #7221 from thinkyhead/bf_fix_reachable

Fix for issues #6997 and #7152
Scott Lahteine 8 years ago
parent
commit
760bf49a00

+ 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