Browse Source

Experimental bilinear subdivision option

akaJes 7 years ago
parent
commit
d7b948610a
23 changed files with 399 additions and 17 deletions
  1. 12
    0
      Marlin/Configuration.h
  2. 135
    17
      Marlin/Marlin_main.cpp
  3. 12
    0
      Marlin/example_configurations/Cartesio/Configuration.h
  4. 12
    0
      Marlin/example_configurations/Felix/Configuration.h
  5. 12
    0
      Marlin/example_configurations/Felix/DUAL/Configuration.h
  6. 12
    0
      Marlin/example_configurations/Hephestos/Configuration.h
  7. 12
    0
      Marlin/example_configurations/Hephestos_2/Configuration.h
  8. 12
    0
      Marlin/example_configurations/K8200/Configuration.h
  9. 12
    0
      Marlin/example_configurations/K8400/Configuration.h
  10. 12
    0
      Marlin/example_configurations/K8400/Dual-head/Configuration.h
  11. 12
    0
      Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h
  12. 12
    0
      Marlin/example_configurations/RigidBot/Configuration.h
  13. 12
    0
      Marlin/example_configurations/SCARA/Configuration.h
  14. 12
    0
      Marlin/example_configurations/TAZ4/Configuration.h
  15. 12
    0
      Marlin/example_configurations/WITBOX/Configuration.h
  16. 12
    0
      Marlin/example_configurations/adafruit/ST7565/Configuration.h
  17. 12
    0
      Marlin/example_configurations/delta/biv2.5/Configuration.h
  18. 12
    0
      Marlin/example_configurations/delta/generic/Configuration.h
  19. 12
    0
      Marlin/example_configurations/delta/kossel_mini/Configuration.h
  20. 12
    0
      Marlin/example_configurations/delta/kossel_pro/Configuration.h
  21. 12
    0
      Marlin/example_configurations/delta/kossel_xl/Configuration.h
  22. 12
    0
      Marlin/example_configurations/makibox/Configuration.h
  23. 12
    0
      Marlin/example_configurations/tvrrug/Round2/Configuration.h

+ 12
- 0
Marlin/Configuration.h View File

820
   //#define PROBE_Y_FIRST
820
   //#define PROBE_Y_FIRST
821
 
821
 
822
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
822
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
823
+
823
     // Gradually reduce leveling correction until a set height is reached,
824
     // Gradually reduce leveling correction until a set height is reached,
824
     // at which point movement will be level to the machine's XY plane.
825
     // at which point movement will be level to the machine's XY plane.
825
     // The height can be set with M420 Z<height>
826
     // The height can be set with M420 Z<height>
826
     #define ENABLE_LEVELING_FADE_HEIGHT
827
     #define ENABLE_LEVELING_FADE_HEIGHT
828
+
829
+    // 
830
+    // Experimental Subdivision of the grid by Catmull-Rom method.
831
+    // Synthesizes intermediate points to produce a more detailed mesh.
832
+    // 
833
+    //#define ABL_BILINEAR_SUBDIVISION
834
+    #if ENABLED(ABL_BILINEAR_SUBDIVISION)
835
+      // Number of subdivisions between probe points
836
+      #define BILINEAR_SUBDIVISIONS 3
837
+    #endif
838
+
827
   #endif
839
   #endif
828
 
840
 
829
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)
841
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)

+ 135
- 17
Marlin/Marlin_main.cpp View File

2437
     SERIAL_EOL;
2437
     SERIAL_EOL;
2438
   }
2438
   }
2439
 
2439
 
2440
+  #if ENABLED(ABL_BILINEAR_SUBDIVISION)
2441
+    #define ABL_GRID_POINTS_VIRT_X (ABL_GRID_POINTS_X - 1) * (BILINEAR_SUBDIVISIONS) + 1
2442
+    #define ABL_GRID_POINTS_VIRT_Y (ABL_GRID_POINTS_Y - 1) * (BILINEAR_SUBDIVISIONS) + 1
2443
+    float bed_level_grid_virt[ABL_GRID_POINTS_VIRT_X][ABL_GRID_POINTS_VIRT_Y];
2444
+    float bed_level_grid_virt_temp[ABL_GRID_POINTS_X + 2][ABL_GRID_POINTS_Y + 2]; //temporary for calculation (maybe dynamical?)
2445
+    int bilinear_grid_spacing_virt[2] = { 0 };
2446
+
2447
+    static void bed_level_virt_print() {
2448
+      SERIAL_ECHOLNPGM("Subdivided with CATMULL ROM Leveling Grid:");
2449
+      for (uint8_t x = 0; x < ABL_GRID_POINTS_VIRT_X; x++) {
2450
+        SERIAL_PROTOCOLPGM("       ");
2451
+        if (x < 10) SERIAL_PROTOCOLCHAR(' ');
2452
+        SERIAL_PROTOCOL((int)x);
2453
+      }
2454
+      SERIAL_EOL;
2455
+      for (uint8_t y = 0; y < ABL_GRID_POINTS_VIRT_Y; y++) {
2456
+        if (y < 10) SERIAL_PROTOCOLCHAR(' ');
2457
+        SERIAL_PROTOCOL((int)y);
2458
+        for (uint8_t x = 0; x < ABL_GRID_POINTS_VIRT_X; x++) {
2459
+          SERIAL_PROTOCOLCHAR(' ');
2460
+          float offset = bed_level_grid_virt[x][y];
2461
+          if (offset < 999.0) {
2462
+            if (offset > 0) SERIAL_CHAR('+');
2463
+            SERIAL_PROTOCOL_F(offset, 5);
2464
+          }
2465
+          else
2466
+            SERIAL_PROTOCOLPGM(" ====");
2467
+        }
2468
+        SERIAL_EOL;
2469
+      }
2470
+      SERIAL_EOL;
2471
+    }
2472
+    #define LINEAR_EXTRAPOLATION(E, I) (E * 2 - I)
2473
+    static void bed_level_virt_prepare() {
2474
+      for (uint8_t y = 1; y <= ABL_GRID_POINTS_Y; y++) {
2475
+
2476
+        for (uint8_t x = 1; x <= ABL_GRID_POINTS_X; x++)
2477
+          bed_level_grid_virt_temp[x][y] = bed_level_grid[x - 1][y - 1];
2478
+
2479
+        bed_level_grid_virt_temp[0][y] = LINEAR_EXTRAPOLATION(
2480
+          bed_level_grid_virt_temp[1][y],
2481
+          bed_level_grid_virt_temp[2][y]
2482
+        );
2483
+
2484
+        bed_level_grid_virt_temp[(ABL_GRID_POINTS_X + 2) - 1][y] =
2485
+          LINEAR_EXTRAPOLATION(
2486
+            bed_level_grid_virt_temp[(ABL_GRID_POINTS_X + 2) - 2][y],
2487
+            bed_level_grid_virt_temp[(ABL_GRID_POINTS_X + 2) - 3][y]
2488
+          );
2489
+      }
2490
+      for (uint8_t x = 0; x < ABL_GRID_POINTS_X + 2; x++) {
2491
+        bed_level_grid_virt_temp[x][0] = LINEAR_EXTRAPOLATION(
2492
+          bed_level_grid_virt_temp[x][1],
2493
+          bed_level_grid_virt_temp[x][2]
2494
+        );
2495
+        bed_level_grid_virt_temp[x][(ABL_GRID_POINTS_Y + 2) - 1] =
2496
+          LINEAR_EXTRAPOLATION(
2497
+            bed_level_grid_virt_temp[x][(ABL_GRID_POINTS_Y + 2) - 2],
2498
+            bed_level_grid_virt_temp[x][(ABL_GRID_POINTS_Y + 2) - 3]
2499
+          );
2500
+      }
2501
+    }
2502
+    static float bed_level_virt_cmr(const float p[4], const uint8_t i, const float t) {
2503
+      return (
2504
+          p[i-1] * -t * sq(1 - t)
2505
+        + p[i]   * (2 - 5 * sq(t) + 3 * t * sq(t))
2506
+        + p[i+1] * t * (1 + 4 * t - 3 * sq(t))
2507
+        - p[i+2] * sq(t) * (1 - t)
2508
+      ) * 0.5;
2509
+    }
2510
+    static float bed_level_virt_2cmr(const uint8_t x, const uint8_t y, const float &tx, const float &ty) {
2511
+      float row[4], column[4];
2512
+      for (uint8_t i = 0; i < 4; i++) {
2513
+        for (uint8_t j = 0; j < 4; j++) // can be memcopy or through memory access
2514
+          column[j] = bed_level_grid_virt_temp[i + x - 1][j + y - 1];
2515
+        row[i] = bed_level_virt_cmr(column, 1, ty);
2516
+      }
2517
+      return bed_level_virt_cmr(row, 1, tx);
2518
+    }
2519
+    static void bed_level_virt_interpolate() {
2520
+      for (uint8_t y = 0; y < ABL_GRID_POINTS_Y; y++)
2521
+        for (uint8_t x = 0; x < ABL_GRID_POINTS_X; x++)
2522
+          for (uint8_t ty = 0; ty < BILINEAR_SUBDIVISIONS; ty++)
2523
+            for (uint8_t tx = 0; tx < BILINEAR_SUBDIVISIONS; tx++) {
2524
+              if ((ty && y == ABL_GRID_POINTS_Y - 1) || (tx && x == ABL_GRID_POINTS_X - 1))
2525
+                continue;
2526
+              bed_level_grid_virt[x * (BILINEAR_SUBDIVISIONS) + tx][y * (BILINEAR_SUBDIVISIONS) + ty] =
2527
+                bed_level_virt_2cmr(
2528
+                  x + 1,
2529
+                  y + 1,
2530
+                  (float)tx / (BILINEAR_SUBDIVISIONS),
2531
+                  (float)ty / (BILINEAR_SUBDIVISIONS)
2532
+                );
2533
+            }
2534
+    }
2535
+  #endif // ABL_BILINEAR_SUBDIVISION
2440
 #endif // AUTO_BED_LEVELING_BILINEAR
2536
 #endif // AUTO_BED_LEVELING_BILINEAR
2441
 
2537
 
2442
 
2538
 
3922
           || front_probe_bed_position != bilinear_start[Y_AXIS]
4018
           || front_probe_bed_position != bilinear_start[Y_AXIS]
3923
         ) {
4019
         ) {
3924
           reset_bed_level();
4020
           reset_bed_level();
4021
+          #if ENABLED(ABL_BILINEAR_SUBDIVISION)
4022
+            bilinear_grid_spacing_virt[X_AXIS] = xGridSpacing / (BILINEAR_SUBDIVISIONS);
4023
+            bilinear_grid_spacing_virt[Y_AXIS] = yGridSpacing / (BILINEAR_SUBDIVISIONS);
4024
+          #endif
3925
           bilinear_grid_spacing[X_AXIS] = xGridSpacing;
4025
           bilinear_grid_spacing[X_AXIS] = xGridSpacing;
3926
           bilinear_grid_spacing[Y_AXIS] = yGridSpacing;
4026
           bilinear_grid_spacing[Y_AXIS] = yGridSpacing;
3927
           bilinear_start[X_AXIS] = RAW_X_POSITION(left_probe_bed_position);
4027
           bilinear_start[X_AXIS] = RAW_X_POSITION(left_probe_bed_position);
4092
       if (!dryrun) extrapolate_unprobed_bed_level();
4192
       if (!dryrun) extrapolate_unprobed_bed_level();
4093
       print_bed_level();
4193
       print_bed_level();
4094
 
4194
 
4195
+      #if ENABLED(ABL_BILINEAR_SUBDIVISION)
4196
+        bed_level_virt_prepare();
4197
+        bed_level_virt_interpolate();
4198
+        bed_level_virt_print();
4199
+      #endif
4200
+
4095
     #elif ENABLED(AUTO_BED_LEVELING_LINEAR)
4201
     #elif ENABLED(AUTO_BED_LEVELING_LINEAR)
4096
 
4202
 
4097
       // For LINEAR leveling calculate matrix, print reports, correct the position
4203
       // For LINEAR leveling calculate matrix, print reports, correct the position
8631
 
8737
 
8632
 #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
8738
 #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
8633
 
8739
 
8740
+  #if ENABLED(ABL_BILINEAR_SUBDIVISION)
8741
+    #define ABL_BG_SPACING(A) bilinear_grid_spacing_virt[A]
8742
+    #define ABL_BG_POINTS_X   ABL_GRID_POINTS_VIRT_X
8743
+    #define ABL_BG_POINTS_Y   ABL_GRID_POINTS_VIRT_Y
8744
+    #define ABL_BG_GRID(X,Y)  bed_level_grid_virt[X][Y]
8745
+  #else
8746
+    #define ABL_BG_SPACING(A) bilinear_grid_spacing[A]
8747
+    #define ABL_BG_POINTS_X   ABL_GRID_POINTS_X
8748
+    #define ABL_BG_POINTS_Y   ABL_GRID_POINTS_Y
8749
+    #define ABL_BG_GRID(X,Y)  bed_level_grid[X][Y]
8750
+  #endif
8751
+
8634
   // Get the Z adjustment for non-linear bed leveling
8752
   // Get the Z adjustment for non-linear bed leveling
8635
   float bilinear_z_offset(float cartesian[XYZ]) {
8753
   float bilinear_z_offset(float cartesian[XYZ]) {
8636
 
8754
 
8639
                 y = RAW_Y_POSITION(cartesian[Y_AXIS]) - bilinear_start[Y_AXIS];
8757
                 y = RAW_Y_POSITION(cartesian[Y_AXIS]) - bilinear_start[Y_AXIS];
8640
 
8758
 
8641
     // Convert to grid box units
8759
     // Convert to grid box units
8642
-    float ratio_x = x / bilinear_grid_spacing[X_AXIS],
8643
-          ratio_y = y / bilinear_grid_spacing[Y_AXIS];
8760
+    float ratio_x = x / ABL_BG_SPACING(X_AXIS),
8761
+          ratio_y = y / ABL_BG_SPACING(Y_AXIS);
8644
 
8762
 
8645
     // Whole units for the grid line indices. Constrained within bounds.
8763
     // Whole units for the grid line indices. Constrained within bounds.
8646
-    const int gridx = constrain(floor(ratio_x), 0, ABL_GRID_POINTS_X - 1),
8647
-              gridy = constrain(floor(ratio_y), 0, ABL_GRID_POINTS_Y - 1),
8648
-              nextx = min(gridx + 1, ABL_GRID_POINTS_X - 1),
8649
-              nexty = min(gridy + 1, ABL_GRID_POINTS_Y - 1);
8764
+    const int gridx = constrain(floor(ratio_x), 0, ABL_BG_POINTS_X - 1),
8765
+              gridy = constrain(floor(ratio_y), 0, ABL_BG_POINTS_Y - 1),
8766
+              nextx = min(gridx + 1, ABL_BG_POINTS_X - 1),
8767
+              nexty = min(gridy + 1, ABL_BG_POINTS_Y - 1);
8650
 
8768
 
8651
     // Subtract whole to get the ratio within the grid box
8769
     // Subtract whole to get the ratio within the grid box
8652
     ratio_x -= gridx; ratio_y -= gridy;
8770
     ratio_x -= gridx; ratio_y -= gridy;
8655
     NOLESS(ratio_x, 0); NOLESS(ratio_y, 0);
8773
     NOLESS(ratio_x, 0); NOLESS(ratio_y, 0);
8656
 
8774
 
8657
     // Z at the box corners
8775
     // Z at the box corners
8658
-    const float z1 = bed_level_grid[gridx][gridy],  // left-front
8659
-                z2 = bed_level_grid[gridx][nexty],  // left-back
8660
-                z3 = bed_level_grid[nextx][gridy],  // right-front
8661
-                z4 = bed_level_grid[nextx][nexty],  // right-back
8776
+    const float z1 = ABL_BG_GRID(gridx, gridy),  // left-front
8777
+                z2 = ABL_BG_GRID(gridx, nexty),  // left-back
8778
+                z3 = ABL_BG_GRID(nextx, gridy),  // right-front
8779
+                z4 = ABL_BG_GRID(nextx, nexty),  // right-back
8662
 
8780
 
8663
                 // Bilinear interpolate
8781
                 // Bilinear interpolate
8664
                 L = z1 + (z2 - z1) * ratio_y,   // Linear interp. LF -> LB
8782
                 L = z1 + (z2 - z1) * ratio_y,   // Linear interp. LF -> LB
9006
 
9124
 
9007
 #elif ENABLED(AUTO_BED_LEVELING_BILINEAR) && !IS_KINEMATIC
9125
 #elif ENABLED(AUTO_BED_LEVELING_BILINEAR) && !IS_KINEMATIC
9008
 
9126
 
9009
-  #define CELL_INDEX(A,V) ((RAW_##A##_POSITION(V) - bilinear_start[A##_AXIS]) / bilinear_grid_spacing[A##_AXIS])
9127
+  #define CELL_INDEX(A,V) ((RAW_##A##_POSITION(V) - bilinear_start[A##_AXIS]) / ABL_BG_SPACING(A##_AXIS))
9010
 
9128
 
9011
   /**
9129
   /**
9012
    * Prepare a bilinear-leveled linear move on Cartesian,
9130
    * Prepare a bilinear-leveled linear move on Cartesian,
9017
         cy1 = CELL_INDEX(Y, current_position[Y_AXIS]),
9135
         cy1 = CELL_INDEX(Y, current_position[Y_AXIS]),
9018
         cx2 = CELL_INDEX(X, destination[X_AXIS]),
9136
         cx2 = CELL_INDEX(X, destination[X_AXIS]),
9019
         cy2 = CELL_INDEX(Y, destination[Y_AXIS]);
9137
         cy2 = CELL_INDEX(Y, destination[Y_AXIS]);
9020
-    cx1 = constrain(cx1, 0, ABL_GRID_POINTS_X - 2);
9021
-    cy1 = constrain(cy1, 0, ABL_GRID_POINTS_Y - 2);
9022
-    cx2 = constrain(cx2, 0, ABL_GRID_POINTS_X - 2);
9023
-    cy2 = constrain(cy2, 0, ABL_GRID_POINTS_Y - 2);
9138
+    cx1 = constrain(cx1, 0, ABL_BG_POINTS_X - 2);
9139
+    cy1 = constrain(cy1, 0, ABL_BG_POINTS_Y - 2);
9140
+    cx2 = constrain(cx2, 0, ABL_BG_POINTS_X - 2);
9141
+    cy2 = constrain(cy2, 0, ABL_BG_POINTS_Y - 2);
9024
 
9142
 
9025
     if (cx1 == cx2 && cy1 == cy2) {
9143
     if (cx1 == cx2 && cy1 == cy2) {
9026
       // Start and end on same mesh square
9144
       // Start and end on same mesh square
9037
     int8_t gcx = max(cx1, cx2), gcy = max(cy1, cy2);
9155
     int8_t gcx = max(cx1, cx2), gcy = max(cy1, cy2);
9038
     if (cx2 != cx1 && TEST(x_splits, gcx)) {
9156
     if (cx2 != cx1 && TEST(x_splits, gcx)) {
9039
       memcpy(end, destination, sizeof(end));
9157
       memcpy(end, destination, sizeof(end));
9040
-      destination[X_AXIS] = LOGICAL_X_POSITION(bilinear_start[X_AXIS] + bilinear_grid_spacing[X_AXIS] * gcx);
9158
+      destination[X_AXIS] = LOGICAL_X_POSITION(bilinear_start[X_AXIS] + ABL_BG_SPACING(X_AXIS) * gcx);
9041
       normalized_dist = (destination[X_AXIS] - current_position[X_AXIS]) / (end[X_AXIS] - current_position[X_AXIS]);
9159
       normalized_dist = (destination[X_AXIS] - current_position[X_AXIS]) / (end[X_AXIS] - current_position[X_AXIS]);
9042
       destination[Y_AXIS] = LINE_SEGMENT_END(Y);
9160
       destination[Y_AXIS] = LINE_SEGMENT_END(Y);
9043
       CBI(x_splits, gcx);
9161
       CBI(x_splits, gcx);
9044
     }
9162
     }
9045
     else if (cy2 != cy1 && TEST(y_splits, gcy)) {
9163
     else if (cy2 != cy1 && TEST(y_splits, gcy)) {
9046
       memcpy(end, destination, sizeof(end));
9164
       memcpy(end, destination, sizeof(end));
9047
-      destination[Y_AXIS] = LOGICAL_Y_POSITION(bilinear_start[Y_AXIS] + bilinear_grid_spacing[Y_AXIS] * gcy);
9165
+      destination[Y_AXIS] = LOGICAL_Y_POSITION(bilinear_start[Y_AXIS] + ABL_BG_SPACING(Y_AXIS) * gcy);
9048
       normalized_dist = (destination[Y_AXIS] - current_position[Y_AXIS]) / (end[Y_AXIS] - current_position[Y_AXIS]);
9166
       normalized_dist = (destination[Y_AXIS] - current_position[Y_AXIS]) / (end[Y_AXIS] - current_position[Y_AXIS]);
9049
       destination[X_AXIS] = LINE_SEGMENT_END(X);
9167
       destination[X_AXIS] = LINE_SEGMENT_END(X);
9050
       CBI(y_splits, gcy);
9168
       CBI(y_splits, gcy);

+ 12
- 0
Marlin/example_configurations/Cartesio/Configuration.h View File

820
   //#define PROBE_Y_FIRST
820
   //#define PROBE_Y_FIRST
821
 
821
 
822
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
822
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
823
+
823
     // Gradually reduce leveling correction until a set height is reached,
824
     // Gradually reduce leveling correction until a set height is reached,
824
     // at which point movement will be level to the machine's XY plane.
825
     // at which point movement will be level to the machine's XY plane.
825
     // The height can be set with M420 Z<height>
826
     // The height can be set with M420 Z<height>
826
     #define ENABLE_LEVELING_FADE_HEIGHT
827
     #define ENABLE_LEVELING_FADE_HEIGHT
828
+
829
+    // 
830
+    // Experimental Subdivision of the grid by Catmull-Rom method.
831
+    // Synthesizes intermediate points to produce a more detailed mesh.
832
+    // 
833
+    //#define ABL_BILINEAR_SUBDIVISION
834
+    #if ENABLED(ABL_BILINEAR_SUBDIVISION)
835
+      // Number of subdivisions between probe points
836
+      #define BILINEAR_SUBDIVISIONS 3
837
+    #endif
838
+
827
   #endif
839
   #endif
828
 
840
 
829
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)
841
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)

+ 12
- 0
Marlin/example_configurations/Felix/Configuration.h View File

803
   //#define PROBE_Y_FIRST
803
   //#define PROBE_Y_FIRST
804
 
804
 
805
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
805
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
806
+
806
     // Gradually reduce leveling correction until a set height is reached,
807
     // Gradually reduce leveling correction until a set height is reached,
807
     // at which point movement will be level to the machine's XY plane.
808
     // at which point movement will be level to the machine's XY plane.
808
     // The height can be set with M420 Z<height>
809
     // The height can be set with M420 Z<height>
809
     #define ENABLE_LEVELING_FADE_HEIGHT
810
     #define ENABLE_LEVELING_FADE_HEIGHT
811
+
812
+    // 
813
+    // Experimental Subdivision of the grid by Catmull-Rom method.
814
+    // Synthesizes intermediate points to produce a more detailed mesh.
815
+    // 
816
+    //#define ABL_BILINEAR_SUBDIVISION
817
+    #if ENABLED(ABL_BILINEAR_SUBDIVISION)
818
+      // Number of subdivisions between probe points
819
+      #define BILINEAR_SUBDIVISIONS 3
820
+    #endif
821
+
810
   #endif
822
   #endif
811
 
823
 
812
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)
824
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)

+ 12
- 0
Marlin/example_configurations/Felix/DUAL/Configuration.h View File

803
   //#define PROBE_Y_FIRST
803
   //#define PROBE_Y_FIRST
804
 
804
 
805
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
805
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
806
+
806
     // Gradually reduce leveling correction until a set height is reached,
807
     // Gradually reduce leveling correction until a set height is reached,
807
     // at which point movement will be level to the machine's XY plane.
808
     // at which point movement will be level to the machine's XY plane.
808
     // The height can be set with M420 Z<height>
809
     // The height can be set with M420 Z<height>
809
     #define ENABLE_LEVELING_FADE_HEIGHT
810
     #define ENABLE_LEVELING_FADE_HEIGHT
811
+
812
+    // 
813
+    // Experimental Subdivision of the grid by Catmull-Rom method.
814
+    // Synthesizes intermediate points to produce a more detailed mesh.
815
+    // 
816
+    //#define ABL_BILINEAR_SUBDIVISION
817
+    #if ENABLED(ABL_BILINEAR_SUBDIVISION)
818
+      // Number of subdivisions between probe points
819
+      #define BILINEAR_SUBDIVISIONS 3
820
+    #endif
821
+
810
   #endif
822
   #endif
811
 
823
 
812
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)
824
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)

+ 12
- 0
Marlin/example_configurations/Hephestos/Configuration.h View File

812
   //#define PROBE_Y_FIRST
812
   //#define PROBE_Y_FIRST
813
 
813
 
814
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
814
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
815
+
815
     // Gradually reduce leveling correction until a set height is reached,
816
     // Gradually reduce leveling correction until a set height is reached,
816
     // at which point movement will be level to the machine's XY plane.
817
     // at which point movement will be level to the machine's XY plane.
817
     // The height can be set with M420 Z<height>
818
     // The height can be set with M420 Z<height>
818
     #define ENABLE_LEVELING_FADE_HEIGHT
819
     #define ENABLE_LEVELING_FADE_HEIGHT
820
+
821
+    // 
822
+    // Experimental Subdivision of the grid by Catmull-Rom method.
823
+    // Synthesizes intermediate points to produce a more detailed mesh.
824
+    // 
825
+    //#define ABL_BILINEAR_SUBDIVISION
826
+    #if ENABLED(ABL_BILINEAR_SUBDIVISION)
827
+      // Number of subdivisions between probe points
828
+      #define BILINEAR_SUBDIVISIONS 3
829
+    #endif
830
+
819
   #endif
831
   #endif
820
 
832
 
821
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)
833
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)

+ 12
- 0
Marlin/example_configurations/Hephestos_2/Configuration.h View File

814
   //#define PROBE_Y_FIRST
814
   //#define PROBE_Y_FIRST
815
 
815
 
816
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
816
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
817
+
817
     // Gradually reduce leveling correction until a set height is reached,
818
     // Gradually reduce leveling correction until a set height is reached,
818
     // at which point movement will be level to the machine's XY plane.
819
     // at which point movement will be level to the machine's XY plane.
819
     // The height can be set with M420 Z<height>
820
     // The height can be set with M420 Z<height>
820
     #define ENABLE_LEVELING_FADE_HEIGHT
821
     #define ENABLE_LEVELING_FADE_HEIGHT
822
+
823
+    // 
824
+    // Experimental Subdivision of the grid by Catmull-Rom method.
825
+    // Synthesizes intermediate points to produce a more detailed mesh.
826
+    // 
827
+    //#define ABL_BILINEAR_SUBDIVISION
828
+    #if ENABLED(ABL_BILINEAR_SUBDIVISION)
829
+      // Number of subdivisions between probe points
830
+      #define BILINEAR_SUBDIVISIONS 3
831
+    #endif
832
+
821
   #endif
833
   #endif
822
 
834
 
823
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)
835
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)

+ 12
- 0
Marlin/example_configurations/K8200/Configuration.h View File

849
   //#define PROBE_Y_FIRST
849
   //#define PROBE_Y_FIRST
850
 
850
 
851
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
851
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
852
+
852
     // Gradually reduce leveling correction until a set height is reached,
853
     // Gradually reduce leveling correction until a set height is reached,
853
     // at which point movement will be level to the machine's XY plane.
854
     // at which point movement will be level to the machine's XY plane.
854
     // The height can be set with M420 Z<height>
855
     // The height can be set with M420 Z<height>
855
     #define ENABLE_LEVELING_FADE_HEIGHT
856
     #define ENABLE_LEVELING_FADE_HEIGHT
857
+
858
+    // 
859
+    // Experimental Subdivision of the grid by Catmull-Rom method.
860
+    // Synthesizes intermediate points to produce a more detailed mesh.
861
+    // 
862
+    //#define ABL_BILINEAR_SUBDIVISION
863
+    #if ENABLED(ABL_BILINEAR_SUBDIVISION)
864
+      // Number of subdivisions between probe points
865
+      #define BILINEAR_SUBDIVISIONS 3
866
+    #endif
867
+
856
   #endif
868
   #endif
857
 
869
 
858
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)
870
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)

+ 12
- 0
Marlin/example_configurations/K8400/Configuration.h View File

820
   //#define PROBE_Y_FIRST
820
   //#define PROBE_Y_FIRST
821
 
821
 
822
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
822
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
823
+
823
     // Gradually reduce leveling correction until a set height is reached,
824
     // Gradually reduce leveling correction until a set height is reached,
824
     // at which point movement will be level to the machine's XY plane.
825
     // at which point movement will be level to the machine's XY plane.
825
     // The height can be set with M420 Z<height>
826
     // The height can be set with M420 Z<height>
826
     #define ENABLE_LEVELING_FADE_HEIGHT
827
     #define ENABLE_LEVELING_FADE_HEIGHT
828
+
829
+    // 
830
+    // Experimental Subdivision of the grid by Catmull-Rom method.
831
+    // Synthesizes intermediate points to produce a more detailed mesh.
832
+    // 
833
+    //#define ABL_BILINEAR_SUBDIVISION
834
+    #if ENABLED(ABL_BILINEAR_SUBDIVISION)
835
+      // Number of subdivisions between probe points
836
+      #define BILINEAR_SUBDIVISIONS 3
837
+    #endif
838
+
827
   #endif
839
   #endif
828
 
840
 
829
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)
841
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)

+ 12
- 0
Marlin/example_configurations/K8400/Dual-head/Configuration.h View File

820
   //#define PROBE_Y_FIRST
820
   //#define PROBE_Y_FIRST
821
 
821
 
822
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
822
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
823
+
823
     // Gradually reduce leveling correction until a set height is reached,
824
     // Gradually reduce leveling correction until a set height is reached,
824
     // at which point movement will be level to the machine's XY plane.
825
     // at which point movement will be level to the machine's XY plane.
825
     // The height can be set with M420 Z<height>
826
     // The height can be set with M420 Z<height>
826
     #define ENABLE_LEVELING_FADE_HEIGHT
827
     #define ENABLE_LEVELING_FADE_HEIGHT
828
+
829
+    // 
830
+    // Experimental Subdivision of the grid by Catmull-Rom method.
831
+    // Synthesizes intermediate points to produce a more detailed mesh.
832
+    // 
833
+    //#define ABL_BILINEAR_SUBDIVISION
834
+    #if ENABLED(ABL_BILINEAR_SUBDIVISION)
835
+      // Number of subdivisions between probe points
836
+      #define BILINEAR_SUBDIVISIONS 3
837
+    #endif
838
+
827
   #endif
839
   #endif
828
 
840
 
829
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)
841
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)

+ 12
- 0
Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h View File

820
   //#define PROBE_Y_FIRST
820
   //#define PROBE_Y_FIRST
821
 
821
 
822
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
822
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
823
+
823
     // Gradually reduce leveling correction until a set height is reached,
824
     // Gradually reduce leveling correction until a set height is reached,
824
     // at which point movement will be level to the machine's XY plane.
825
     // at which point movement will be level to the machine's XY plane.
825
     // The height can be set with M420 Z<height>
826
     // The height can be set with M420 Z<height>
826
     #define ENABLE_LEVELING_FADE_HEIGHT
827
     #define ENABLE_LEVELING_FADE_HEIGHT
828
+
829
+    // 
830
+    // Experimental Subdivision of the grid by Catmull-Rom method.
831
+    // Synthesizes intermediate points to produce a more detailed mesh.
832
+    // 
833
+    //#define ABL_BILINEAR_SUBDIVISION
834
+    #if ENABLED(ABL_BILINEAR_SUBDIVISION)
835
+      // Number of subdivisions between probe points
836
+      #define BILINEAR_SUBDIVISIONS 3
837
+    #endif
838
+
827
   #endif
839
   #endif
828
 
840
 
829
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)
841
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)

+ 12
- 0
Marlin/example_configurations/RigidBot/Configuration.h View File

819
   //#define PROBE_Y_FIRST
819
   //#define PROBE_Y_FIRST
820
 
820
 
821
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
821
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
822
+
822
     // Gradually reduce leveling correction until a set height is reached,
823
     // Gradually reduce leveling correction until a set height is reached,
823
     // at which point movement will be level to the machine's XY plane.
824
     // at which point movement will be level to the machine's XY plane.
824
     // The height can be set with M420 Z<height>
825
     // The height can be set with M420 Z<height>
825
     #define ENABLE_LEVELING_FADE_HEIGHT
826
     #define ENABLE_LEVELING_FADE_HEIGHT
827
+
828
+    // 
829
+    // Experimental Subdivision of the grid by Catmull-Rom method.
830
+    // Synthesizes intermediate points to produce a more detailed mesh.
831
+    // 
832
+    //#define ABL_BILINEAR_SUBDIVISION
833
+    #if ENABLED(ABL_BILINEAR_SUBDIVISION)
834
+      // Number of subdivisions between probe points
835
+      #define BILINEAR_SUBDIVISIONS 3
836
+    #endif
837
+
826
   #endif
838
   #endif
827
 
839
 
828
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)
840
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)

+ 12
- 0
Marlin/example_configurations/SCARA/Configuration.h View File

835
   //#define PROBE_Y_FIRST
835
   //#define PROBE_Y_FIRST
836
 
836
 
837
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
837
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
838
+
838
     // Gradually reduce leveling correction until a set height is reached,
839
     // Gradually reduce leveling correction until a set height is reached,
839
     // at which point movement will be level to the machine's XY plane.
840
     // at which point movement will be level to the machine's XY plane.
840
     // The height can be set with M420 Z<height>
841
     // The height can be set with M420 Z<height>
841
     #define ENABLE_LEVELING_FADE_HEIGHT
842
     #define ENABLE_LEVELING_FADE_HEIGHT
843
+
844
+    // 
845
+    // Experimental Subdivision of the grid by Catmull-Rom method.
846
+    // Synthesizes intermediate points to produce a more detailed mesh.
847
+    // 
848
+    //#define ABL_BILINEAR_SUBDIVISION
849
+    #if ENABLED(ABL_BILINEAR_SUBDIVISION)
850
+      // Number of subdivisions between probe points
851
+      #define BILINEAR_SUBDIVISIONS 3
852
+    #endif
853
+
842
   #endif
854
   #endif
843
 
855
 
844
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)
856
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)

+ 12
- 0
Marlin/example_configurations/TAZ4/Configuration.h View File

841
   //#define PROBE_Y_FIRST
841
   //#define PROBE_Y_FIRST
842
 
842
 
843
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
843
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
844
+
844
     // Gradually reduce leveling correction until a set height is reached,
845
     // Gradually reduce leveling correction until a set height is reached,
845
     // at which point movement will be level to the machine's XY plane.
846
     // at which point movement will be level to the machine's XY plane.
846
     // The height can be set with M420 Z<height>
847
     // The height can be set with M420 Z<height>
847
     #define ENABLE_LEVELING_FADE_HEIGHT
848
     #define ENABLE_LEVELING_FADE_HEIGHT
849
+
850
+    // 
851
+    // Experimental Subdivision of the grid by Catmull-Rom method.
852
+    // Synthesizes intermediate points to produce a more detailed mesh.
853
+    // 
854
+    //#define ABL_BILINEAR_SUBDIVISION
855
+    #if ENABLED(ABL_BILINEAR_SUBDIVISION)
856
+      // Number of subdivisions between probe points
857
+      #define BILINEAR_SUBDIVISIONS 3
858
+    #endif
859
+
848
   #endif
860
   #endif
849
 
861
 
850
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)
862
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)

+ 12
- 0
Marlin/example_configurations/WITBOX/Configuration.h View File

812
   //#define PROBE_Y_FIRST
812
   //#define PROBE_Y_FIRST
813
 
813
 
814
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
814
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
815
+
815
     // Gradually reduce leveling correction until a set height is reached,
816
     // Gradually reduce leveling correction until a set height is reached,
816
     // at which point movement will be level to the machine's XY plane.
817
     // at which point movement will be level to the machine's XY plane.
817
     // The height can be set with M420 Z<height>
818
     // The height can be set with M420 Z<height>
818
     #define ENABLE_LEVELING_FADE_HEIGHT
819
     #define ENABLE_LEVELING_FADE_HEIGHT
820
+
821
+    // 
822
+    // Experimental Subdivision of the grid by Catmull-Rom method.
823
+    // Synthesizes intermediate points to produce a more detailed mesh.
824
+    // 
825
+    //#define ABL_BILINEAR_SUBDIVISION
826
+    #if ENABLED(ABL_BILINEAR_SUBDIVISION)
827
+      // Number of subdivisions between probe points
828
+      #define BILINEAR_SUBDIVISIONS 3
829
+    #endif
830
+
819
   #endif
831
   #endif
820
 
832
 
821
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)
833
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)

+ 12
- 0
Marlin/example_configurations/adafruit/ST7565/Configuration.h View File

820
   //#define PROBE_Y_FIRST
820
   //#define PROBE_Y_FIRST
821
 
821
 
822
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
822
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
823
+
823
     // Gradually reduce leveling correction until a set height is reached,
824
     // Gradually reduce leveling correction until a set height is reached,
824
     // at which point movement will be level to the machine's XY plane.
825
     // at which point movement will be level to the machine's XY plane.
825
     // The height can be set with M420 Z<height>
826
     // The height can be set with M420 Z<height>
826
     #define ENABLE_LEVELING_FADE_HEIGHT
827
     #define ENABLE_LEVELING_FADE_HEIGHT
828
+
829
+    // 
830
+    // Experimental Subdivision of the grid by Catmull-Rom method.
831
+    // Synthesizes intermediate points to produce a more detailed mesh.
832
+    // 
833
+    //#define ABL_BILINEAR_SUBDIVISION
834
+    #if ENABLED(ABL_BILINEAR_SUBDIVISION)
835
+      // Number of subdivisions between probe points
836
+      #define BILINEAR_SUBDIVISIONS 3
837
+    #endif
838
+
827
   #endif
839
   #endif
828
 
840
 
829
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)
841
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)

+ 12
- 0
Marlin/example_configurations/delta/biv2.5/Configuration.h View File

917
   //#define PROBE_Y_FIRST
917
   //#define PROBE_Y_FIRST
918
 
918
 
919
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
919
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
920
+
920
     // Gradually reduce leveling correction until a set height is reached,
921
     // Gradually reduce leveling correction until a set height is reached,
921
     // at which point movement will be level to the machine's XY plane.
922
     // at which point movement will be level to the machine's XY plane.
922
     // The height can be set with M420 Z<height>
923
     // The height can be set with M420 Z<height>
923
     #define ENABLE_LEVELING_FADE_HEIGHT
924
     #define ENABLE_LEVELING_FADE_HEIGHT
925
+
926
+    // 
927
+    // Experimental Subdivision of the grid by Catmull-Rom method.
928
+    // Synthesizes intermediate points to produce a more detailed mesh.
929
+    // 
930
+    //#define ABL_BILINEAR_SUBDIVISION
931
+    #if ENABLED(ABL_BILINEAR_SUBDIVISION)
932
+      // Number of subdivisions between probe points
933
+      #define BILINEAR_SUBDIVISIONS 3
934
+    #endif
935
+
924
   #endif
936
   #endif
925
 
937
 
926
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)
938
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)

+ 12
- 0
Marlin/example_configurations/delta/generic/Configuration.h View File

911
   //#define PROBE_Y_FIRST
911
   //#define PROBE_Y_FIRST
912
 
912
 
913
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
913
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
914
+
914
     // Gradually reduce leveling correction until a set height is reached,
915
     // Gradually reduce leveling correction until a set height is reached,
915
     // at which point movement will be level to the machine's XY plane.
916
     // at which point movement will be level to the machine's XY plane.
916
     // The height can be set with M420 Z<height>
917
     // The height can be set with M420 Z<height>
917
     #define ENABLE_LEVELING_FADE_HEIGHT
918
     #define ENABLE_LEVELING_FADE_HEIGHT
919
+
920
+    // 
921
+    // Experimental Subdivision of the grid by Catmull-Rom method.
922
+    // Synthesizes intermediate points to produce a more detailed mesh.
923
+    // 
924
+    //#define ABL_BILINEAR_SUBDIVISION
925
+    #if ENABLED(ABL_BILINEAR_SUBDIVISION)
926
+      // Number of subdivisions between probe points
927
+      #define BILINEAR_SUBDIVISIONS 3
928
+    #endif
929
+
918
   #endif
930
   #endif
919
 
931
 
920
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)
932
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)

+ 12
- 0
Marlin/example_configurations/delta/kossel_mini/Configuration.h View File

914
   //#define PROBE_Y_FIRST
914
   //#define PROBE_Y_FIRST
915
 
915
 
916
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
916
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
917
+
917
     // Gradually reduce leveling correction until a set height is reached,
918
     // Gradually reduce leveling correction until a set height is reached,
918
     // at which point movement will be level to the machine's XY plane.
919
     // at which point movement will be level to the machine's XY plane.
919
     // The height can be set with M420 Z<height>
920
     // The height can be set with M420 Z<height>
920
     #define ENABLE_LEVELING_FADE_HEIGHT
921
     #define ENABLE_LEVELING_FADE_HEIGHT
922
+
923
+    // 
924
+    // Experimental Subdivision of the grid by Catmull-Rom method.
925
+    // Synthesizes intermediate points to produce a more detailed mesh.
926
+    // 
927
+    //#define ABL_BILINEAR_SUBDIVISION
928
+    #if ENABLED(ABL_BILINEAR_SUBDIVISION)
929
+      // Number of subdivisions between probe points
930
+      #define BILINEAR_SUBDIVISIONS 3
931
+    #endif
932
+
921
   #endif
933
   #endif
922
 
934
 
923
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)
935
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)

+ 12
- 0
Marlin/example_configurations/delta/kossel_pro/Configuration.h View File

913
   //#define PROBE_Y_FIRST
913
   //#define PROBE_Y_FIRST
914
 
914
 
915
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
915
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
916
+
916
     // Gradually reduce leveling correction until a set height is reached,
917
     // Gradually reduce leveling correction until a set height is reached,
917
     // at which point movement will be level to the machine's XY plane.
918
     // at which point movement will be level to the machine's XY plane.
918
     // The height can be set with M420 Z<height>
919
     // The height can be set with M420 Z<height>
919
     #define ENABLE_LEVELING_FADE_HEIGHT
920
     #define ENABLE_LEVELING_FADE_HEIGHT
921
+
922
+    // 
923
+    // Experimental Subdivision of the grid by Catmull-Rom method.
924
+    // Synthesizes intermediate points to produce a more detailed mesh.
925
+    // 
926
+    //#define ABL_BILINEAR_SUBDIVISION
927
+    #if ENABLED(ABL_BILINEAR_SUBDIVISION)
928
+      // Number of subdivisions between probe points
929
+      #define BILINEAR_SUBDIVISIONS 3
930
+    #endif
931
+
920
   #endif
932
   #endif
921
 
933
 
922
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)
934
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)

+ 12
- 0
Marlin/example_configurations/delta/kossel_xl/Configuration.h View File

917
   //#define PROBE_Y_FIRST
917
   //#define PROBE_Y_FIRST
918
 
918
 
919
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
919
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
920
+
920
     // Gradually reduce leveling correction until a set height is reached,
921
     // Gradually reduce leveling correction until a set height is reached,
921
     // at which point movement will be level to the machine's XY plane.
922
     // at which point movement will be level to the machine's XY plane.
922
     // The height can be set with M420 Z<height>
923
     // The height can be set with M420 Z<height>
923
     #define ENABLE_LEVELING_FADE_HEIGHT
924
     #define ENABLE_LEVELING_FADE_HEIGHT
925
+
926
+    // 
927
+    // Experimental Subdivision of the grid by Catmull-Rom method.
928
+    // Synthesizes intermediate points to produce a more detailed mesh.
929
+    // 
930
+    //#define ABL_BILINEAR_SUBDIVISION
931
+    #if ENABLED(ABL_BILINEAR_SUBDIVISION)
932
+      // Number of subdivisions between probe points
933
+      #define BILINEAR_SUBDIVISIONS 3
934
+    #endif
935
+
924
   #endif
936
   #endif
925
 
937
 
926
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)
938
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)

+ 12
- 0
Marlin/example_configurations/makibox/Configuration.h View File

823
   //#define PROBE_Y_FIRST
823
   //#define PROBE_Y_FIRST
824
 
824
 
825
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
825
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
826
+
826
     // Gradually reduce leveling correction until a set height is reached,
827
     // Gradually reduce leveling correction until a set height is reached,
827
     // at which point movement will be level to the machine's XY plane.
828
     // at which point movement will be level to the machine's XY plane.
828
     // The height can be set with M420 Z<height>
829
     // The height can be set with M420 Z<height>
829
     #define ENABLE_LEVELING_FADE_HEIGHT
830
     #define ENABLE_LEVELING_FADE_HEIGHT
831
+
832
+    // 
833
+    // Experimental Subdivision of the grid by Catmull-Rom method.
834
+    // Synthesizes intermediate points to produce a more detailed mesh.
835
+    // 
836
+    //#define ABL_BILINEAR_SUBDIVISION
837
+    #if ENABLED(ABL_BILINEAR_SUBDIVISION)
838
+      // Number of subdivisions between probe points
839
+      #define BILINEAR_SUBDIVISIONS 3
840
+    #endif
841
+
830
   #endif
842
   #endif
831
 
843
 
832
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)
844
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)

+ 12
- 0
Marlin/example_configurations/tvrrug/Round2/Configuration.h View File

816
   //#define PROBE_Y_FIRST
816
   //#define PROBE_Y_FIRST
817
 
817
 
818
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
818
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
819
+
819
     // Gradually reduce leveling correction until a set height is reached,
820
     // Gradually reduce leveling correction until a set height is reached,
820
     // at which point movement will be level to the machine's XY plane.
821
     // at which point movement will be level to the machine's XY plane.
821
     // The height can be set with M420 Z<height>
822
     // The height can be set with M420 Z<height>
822
     #define ENABLE_LEVELING_FADE_HEIGHT
823
     #define ENABLE_LEVELING_FADE_HEIGHT
824
+
825
+    // 
826
+    // Experimental Subdivision of the grid by Catmull-Rom method.
827
+    // Synthesizes intermediate points to produce a more detailed mesh.
828
+    // 
829
+    //#define ABL_BILINEAR_SUBDIVISION
830
+    #if ENABLED(ABL_BILINEAR_SUBDIVISION)
831
+      // Number of subdivisions between probe points
832
+      #define BILINEAR_SUBDIVISIONS 3
833
+    #endif
834
+
823
   #endif
835
   #endif
824
 
836
 
825
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)
837
 #elif ENABLED(AUTO_BED_LEVELING_3POINT)

Loading…
Cancel
Save