浏览代码

Proposed changes

This is what I did yesterday:

- basicly gave the tests more comprehensive names; put all the
declarations at the top; got rid of the magic negative C-value (renamed
to P + A, O, T)

- "cos(RADIANS(180 + 30 * axis)) * (1 + circles * 0.1 * ((zig_zag) ? 1 :
-1)) * delta_calibration_radius" compiles wrong is zig_zag statement is
without brackets

- DELTA_TOWER_ANGLE_TRIM reset to 3 values (the calcs use the 3th value
to normalize will not compile otherwise)

-Wrote 3 dummies to keep EEPROM lenght the same

-Reset the configs to the 'original' with autocal + menu disabled (but
can be enabled of course)
LVD-AC 8 年前
父节点
当前提交
585c00a728

+ 4
- 4
Marlin/Conditionals_post.h 查看文件

@@ -695,16 +695,16 @@
695 695
       #define DELTA_CALIBRATION_RADIUS DELTA_PRINTABLE_RADIUS - 10
696 696
     #endif
697 697
     #ifndef DELTA_ENDSTOP_ADJ
698
-      #define DELTA_ENDSTOP_ADJ { 0.0, 0.0, 0.0 }
698
+      #define DELTA_ENDSTOP_ADJ { 0, 0, 0 }
699 699
     #endif
700 700
     #ifndef DELTA_TOWER_ANGLE_TRIM
701
-      #define DELTA_TOWER_ANGLE_TRIM { 0.0, 0.0 } // C always 0.0
701
+      #define DELTA_TOWER_ANGLE_TRIM {0, 0, 0}
702 702
     #endif
703 703
     #ifndef DELTA_RADIUS_TRIM_TOWER
704
-      #define DELTA_RADIUS_TRIM_TOWER { 0.0, 0.0, 0.0 }
704
+      #define DELTA_RADIUS_TRIM_TOWER {0, 0, 0}
705 705
     #endif
706 706
     #ifndef DELTA_DIAGONAL_ROD_TRIM_TOWER
707
-      #define DELTA_DIAGONAL_ROD_TRIM_TOWER { 0.0, 0.0, 0.0 }
707
+      #define DELTA_DIAGONAL_ROD_TRIM_TOWER {0, 0, 0}
708 708
     #endif
709 709
   #endif
710 710
 

+ 91
- 81
Marlin/Marlin_main.cpp 查看文件

@@ -61,7 +61,7 @@
61 61
  * G30 - Single Z probe, probes bed at X Y location (defaults to current XY location)
62 62
  * G31 - Dock sled (Z_PROBE_SLED only)
63 63
  * G32 - Undock sled (Z_PROBE_SLED only)
64
- * G33 - Delta '4-7-point' auto calibration : "G33 C<points> V<verbose>" (Requires DELTA)
64
+ * G33 - Delta '1-4-7-point' auto calibration : "G33 P<points> <A> <O> <T> V<verbose>" (Requires DELTA)
65 65
  * G38 - Probe target - similar to G28 except it uses the Z_MIN_PROBE for all three axes
66 66
  * G90 - Use Absolute Coordinates
67 67
  * G91 - Use Relative Coordinates
@@ -4991,65 +4991,67 @@ inline void gcode_G28() {
4991 4991
 
4992 4992
   #if ENABLED(DELTA_AUTO_CALIBRATION)
4993 4993
     /**
4994
-     * G33 - Delta Auto Calibration
4995
-     *       Utility to calibrate height, endstop offsets, delta radius, and tower angles.
4996
-     *
4997
-     * Parameters:
4998
-     *
4999
-     *   C0     Calibrate height
5000
-     *   C1     Probe the center to set the Z height
5001
-     *   C-1    same but 1 iteration only
5002
-     *   C2     probe center and towers, set height, endstops, and delta radius
5003
-     *   C-2    same but opposite towers
5004
-     *
5005
-     *   C3     probe all points: center, towers and opposite towers / sets all
5006
-     *
5007
-     *   C4-C7  probe all points multiple times and average
5008
-     *   C0-C3  same but tower angle calibration disabled
5009
-     *
5010
-     *   V0     Dry-run mode
5011
-     *   V1     Output settings
5012
-     *   V2     Output setting and probe results
4994
+     * G33 - Delta '1-4-7-point' auto calibration (Requires DELTA)
4995
+     * 
4996
+     * Usage:
4997
+     *   G33 <Pn> <A> <O> <T> <Vn>
4998
+     *   
4999
+     *     Pn = n=-7 -> +7 : n*n probe points
5000
+     *          calibrates height ('1 point'), endstops, and delta radius ('4 points') 
5001
+     *          and tower angles with n > 2 ('7+ points')
5002
+     *          n=1  probes center / sets height only
5003
+     *          n=2  probes center and towers / sets height, endstops and delta radius
5004
+     *          n=3  probes all points: center, towers and opposite towers / sets all
5005
+     *          n>3  probes all points multiple times and averages
5006
+     *     A  = abort 1 point delta height calibration after 1 probe
5007
+     *     O  = use oposite tower points instead of tower points with 4 point calibration
5008
+     *     T  = do not calibrate tower angles with 7+ point calibration
5009
+     *     Vn = verbose level (n=0-2 default 1)
5010
+     *          n=0 dry-run mode: no calibration
5011
+     *          n=1 settings 
5012
+     *          n=2 setting + probe results 
5013 5013
      */
5014 5014
     inline void gcode_G33() {
5015 5015
 
5016
-      if (axis_unhomed_error(true, true, true)) return;
5017
-
5018
-      const int8_t c_value = code_seen('C') ? code_value_int() : DELTA_CALIBRATION_DEFAULT_POINTS;
5019
-      if (!WITHIN(c_value, -7, 7)) {
5020
-        SERIAL_PROTOCOLLNPGM("?C parameter is implausible (-7 to 7).");
5021
-        return;
5022
-      }
5023
-
5024
-      const int8_t verbose_level = code_seen('V') ? code_value_byte() : 1;
5025
-      if (!WITHIN(verbose_level, 0, 2)) {
5026
-        SERIAL_PROTOCOLLNPGM("?(V)erbose Level is implausible (0-2).");
5027
-        return;
5028
-      }
5029
-
5030 5016
       stepper.synchronize();
5031 5017
 
5032 5018
       #if PLANNER_LEVELING
5033 5019
         set_bed_leveling_enabled(false);
5034 5020
       #endif
5035 5021
 
5036
-      const static char save_message[] PROGMEM = "Save with M500 and/or copy to Configuration.h";
5022
+      int8_t pp = code_seen('P') ? code_value_int() : DELTA_CALIBRATION_DEFAULT_POINTS,
5023
+                   probe_mode = (WITHIN(pp, 1, 7)) ? pp : DELTA_CALIBRATION_DEFAULT_POINTS;
5024
+
5025
+      probe_mode = (code_seen('A') && probe_mode == 1) ? -probe_mode : probe_mode;
5026
+      probe_mode = (code_seen('O') && probe_mode == 2) ? -probe_mode : probe_mode;
5027
+      probe_mode = (code_seen('T') && probe_mode > 2) ? -probe_mode : probe_mode;
5028
+      
5029
+      int8_t verbose_level = code_seen('V') ? code_value_byte() : 1;
5037 5030
 
5038
-      const uint8_t probe_points = abs(c_value);
5031
+      if (!WITHIN(verbose_level, 0, 2)) verbose_level = 1;
5039 5032
 
5040
-      const bool neg = c_value < 0,
5041
-                 equals4 = probe_points == 4,
5042
-                 over4 = probe_points > 4,
5043
-                 over5 = probe_points > 5;
5033
+      gcode_G28();
5044 5034
 
5045
-      float e_old[XYZ],
5035
+      const static char save_message[] PROGMEM = "Save with M500 and/or copy to Configuration.h";
5036
+      float test_precision,
5037
+            zero_std_dev = verbose_level ? 999.0 : 0.0,                                          // 0.0 in dry-run mode : forced end
5038
+            e_old[XYZ] = {
5039
+              endstop_adj[A_AXIS],
5040
+              endstop_adj[B_AXIS],
5041
+              endstop_adj[C_AXIS]
5042
+            },
5046 5043
             dr_old = delta_radius,
5047 5044
             zh_old = home_offset[Z_AXIS],
5048 5045
             alpha_old = delta_tower_angle_trim[A_AXIS],
5049
-            beta_old = delta_tower_angle_trim[B_AXIS];
5050
-
5051
-      COPY(e_old, endstop_adj);
5052
-
5046
+            beta_old = delta_tower_angle_trim[B_AXIS]; 
5047
+      int8_t iterations = 0,
5048
+             probe_points = abs(probe_mode);
5049
+      bool _1_point = (probe_points <= 1),
5050
+           _7_point = (probe_mode > 2),
5051
+           o_mode = (probe_mode == -2),
5052
+           towers = (probe_points > 2 || probe_mode == 2),
5053
+           opposites = (probe_points > 2 || o_mode);
5054
+ 
5053 5055
       // print settings
5054 5056
 
5055 5057
       SERIAL_PROTOCOLLNPGM("G33 Auto Calibrate");
@@ -5059,7 +5061,7 @@ inline void gcode_G28() {
5059 5061
       LCD_MESSAGEPGM("Checking... AC");
5060 5062
 
5061 5063
       SERIAL_PROTOCOLPAIR(".Height:", DELTA_HEIGHT + home_offset[Z_AXIS]);
5062
-      if (probe_points > 1) {
5064
+      if (!_1_point) {
5063 5065
         SERIAL_PROTOCOLPGM("    Ex:");
5064 5066
         if (endstop_adj[A_AXIS] >= 0) SERIAL_CHAR('+');
5065 5067
         SERIAL_PROTOCOL_F(endstop_adj[A_AXIS], 2);
@@ -5072,7 +5074,7 @@ inline void gcode_G28() {
5072 5074
         SERIAL_PROTOCOLPAIR("    Radius:", delta_radius);
5073 5075
       }
5074 5076
       SERIAL_EOL;
5075
-      if (c_value > 2) {
5077
+      if (_7_point) {
5076 5078
         SERIAL_PROTOCOLPGM(".Tower angle :    Tx:");
5077 5079
         if (delta_tower_angle_trim[A_AXIS] >= 0) SERIAL_CHAR('+');
5078 5080
         SERIAL_PROTOCOL_F(delta_tower_angle_trim[A_AXIS], 2);
@@ -5087,62 +5089,70 @@ inline void gcode_G28() {
5087 5089
         DEPLOY_PROBE();
5088 5090
       #endif
5089 5091
 
5090
-      float zero_std_dev = verbose_level ? 999.0 : 0.0, // 0.0 in dry-run mode : forced end
5091
-            test_precision;
5092
-      int8_t iterations = 0;
5093 5092
       do {
5094 5093
 
5095
-        setup_for_endstop_or_probe_move();
5094
+        float z_at_pt[13] = { 0 },
5095
+              S1 = z_at_pt[0],
5096
+              S2 = sq(S1);
5097
+        int16_t N = 1;
5098
+        bool _4_probe = (probe_points == 2),
5099
+             _7_probe = (probe_points > 2),
5100
+             center_probe = (probe_points != 3 &&  probe_points != 6),
5101
+             multi_circle = (probe_points > 4),
5102
+             diff_circle = (probe_points > 5),
5103
+             max_circle = (probe_points > 6),
5104
+             intermediates = (probe_points == 4 || diff_circle);
5096 5105
 
5106
+        setup_for_endstop_or_probe_move();
5097 5107
         test_precision = zero_std_dev;
5098
-        float z_at_pt[13] = { 0 };
5099 5108
         iterations++;
5100 5109
 
5101 5110
         // probe the points
5102 5111
 
5103 5112
         int16_t center_points = 0;
5104 5113
 
5105
-        if (probe_points != 3 && probe_points != 6) {                                       // probe center
5114
+        if (center_probe) {  // probe centre
5106 5115
           z_at_pt[0] += probe_pt(0.0, 0.0 , true, 1);
5107 5116
           center_points = 1;
5108 5117
         }
5109 5118
 
5110
-        int16_t step_axis = over4 ? 2 : 4;
5111
-        if (probe_points >= 3) {                                                            // probe extra 3 or 6 center points
5112
-          for (int8_t axis = over4 ? 11 : 9; axis > 0; axis -= step_axis) {
5119
+        int16_t step_axis = (multi_circle) ? 2 : 4,
5120
+                start = (multi_circle) ? 11 : 9;                                              
5121
+        if (_7_probe) {  // probe extra 3 or 6 centre points
5122
+          for (int8_t axis = start; axis > 0; axis -= step_axis) {              
5113 5123
             z_at_pt[0] += probe_pt(
5114 5124
               cos(RADIANS(180 + 30 * axis)) * (0.1 * delta_calibration_radius),
5115 5125
               sin(RADIANS(180 + 30 * axis)) * (0.1 * delta_calibration_radius), true, 1);
5116 5126
           }
5117
-          center_points += over4 ? 6 : 3;                                       // average center points
5127
+          center_points += (multi_circle) ? 6 : 3;  // average centre points
5118 5128
           z_at_pt[0] /= center_points;
5119 5129
         }
5120 5130
 
5121
-        float S1 = z_at_pt[0], S2 = sq(S1);
5131
+        start = (o_mode) ? 3 : 1;
5132
+        step_axis = (_4_probe) ? 4 : (intermediates) ? 1 : 2;
5122 5133
 
5123
-        int16_t N = 1, start = (c_value == -2) ? 3 : 1;
5124
-        step_axis = (probe_points == 2) ? 4 : (equals4 || over5) ? 1 : 2;
5125
-
5126
-        if (probe_points > 1) {
5127
-          float start_circles = (probe_points > 6) ? -1.5 : over4 ? -1 : 0, // one or multi radius points
5128
-                  end_circles = -start_circles;
5134
+        if (!_1_point) {
5135
+          float start_circles = (max_circle) ? -1.5 : (multi_circle) ? -1 : 0,  // one or multi radius points
5136
+                end_circles = -start_circles;
5129 5137
           bool zig_zag = true;
5130 5138
           for (uint8_t axis = start; axis < 13; axis += step_axis) {                             // probes 3, 6 or 12 points on the calibration radius
5131 5139
             for (float circles = start_circles ; circles <= end_circles; circles++)              // one or multi radius points
5132 5140
               z_at_pt[axis] += probe_pt(
5133
-                cos(RADIANS(180 + 30 * axis)) * ((1 + circles * 0.1 * (zig_zag ? 1 : -1)) * delta_calibration_radius),
5134
-                sin(RADIANS(180 + 30 * axis)) * ((1 + circles * 0.1 * (zig_zag ? 1 : -1)) * delta_calibration_radius), true, 1);
5141
+                cos(RADIANS(180 + 30 * axis)) * (1 + circles * 0.1 * ((zig_zag) ? 1 : -1)) * delta_calibration_radius, 
5142
+                sin(RADIANS(180 + 30 * axis)) * (1 + circles * 0.1 * ((zig_zag) ? 1 : -1)) * delta_calibration_radius, true, 1);
5135 5143
 
5136
-            if (over5) start_circles += zig_zag ? +0.5 : -0.5;            // opposites: one radius point less
5137
-            if (over5) end_circles += zig_zag ? -0.5 : +0.5;
5144
+            if (diff_circle) {
5145
+              start_circles += (zig_zag) ? 0.5 : -0.5;  // opposites: one radius point less
5146
+              end_circles = -start_circles;
5147
+            }
5138 5148
             zig_zag = !zig_zag;
5139
-            if (over4) z_at_pt[axis] /= (zig_zag ? 3.0 : 2.0);              // average between radius points
5149
+            if (multi_circle) z_at_pt[axis] /= (zig_zag) ? 3.0 : 2.0;  // average between radius points
5140 5150
           }
5141 5151
         }
5152
+        if (intermediates) step_axis = 2;
5142 5153
 
5143
-        if (equals4 || over5) step_axis = 2;
5144 5154
         for (uint8_t axis = start; axis < 13; axis += step_axis) {                               // average half intermediates to towers and opposites
5145
-          if (equals4 || over5)
5155
+          if (intermediates)
5146 5156
             z_at_pt[axis] = (z_at_pt[axis] + (z_at_pt[axis + 1] + z_at_pt[(axis + 10) % 12 + 1]) / 2.0) / 2.0;
5147 5157
 
5148 5158
           S1 += z_at_pt[axis];
@@ -5181,7 +5191,7 @@ inline void gcode_G28() {
5181 5191
           #define Z0444(I) ZP(a_factor * 4.0 / 9.0, I)
5182 5192
           #define Z0888(I) ZP(a_factor * 8.0 / 9.0, I)
5183 5193
 
5184
-          switch (c_value) {
5194
+          switch (probe_mode) {
5185 5195
             case -1:
5186 5196
               test_precision = 0.00;
5187 5197
             case 1:
@@ -5207,8 +5217,8 @@ inline void gcode_G28() {
5207 5217
               e_delta[Y_AXIS] = Z1050(0) - Z0175(1) + Z0350(5) - Z0175(9) + Z0175(7) - Z0350(11) + Z0175(3);
5208 5218
               e_delta[Z_AXIS] = Z1050(0) - Z0175(1) - Z0175(5) + Z0350(9) + Z0175(7) + Z0175(11) - Z0350(3);
5209 5219
               r_delta         = Z2250(0) - Z0375(1) - Z0375(5) - Z0375(9) - Z0375(7) - Z0375(11) - Z0375(3);
5210
-
5211
-              if (c_value > 0) {                                                            //probe points negative disables tower angles
5220
+              
5221
+              if (probe_mode > 0) {  //probe points negative disables tower angles
5212 5222
                 t_alpha = + Z0444(1) - Z0888(5) + Z0444(9) + Z0444(7) - Z0888(11) + Z0444(3);
5213 5223
                 t_beta  = - Z0888(1) + Z0444(5) + Z0444(9) - Z0888(7) + Z0444(11) + Z0444(3);
5214 5224
               }
@@ -5241,10 +5251,10 @@ inline void gcode_G28() {
5241 5251
         // print report
5242 5252
 
5243 5253
         if (verbose_level == 2) {
5244
-          SERIAL_PROTOCOLPGM(".     c:");
5254
+          SERIAL_PROTOCOLPGM(".      c:");
5245 5255
           if (z_at_pt[0] > 0) SERIAL_CHAR('+');
5246 5256
           SERIAL_PROTOCOL_F(z_at_pt[0], 2);
5247
-          if (probe_points > 2 || c_value == 2) {
5257
+          if (towers) {
5248 5258
             SERIAL_PROTOCOLPGM("     x:");
5249 5259
             if (z_at_pt[1] >= 0) SERIAL_CHAR('+');
5250 5260
             SERIAL_PROTOCOL_F(z_at_pt[1], 2);
@@ -5255,9 +5265,9 @@ inline void gcode_G28() {
5255 5265
             if (z_at_pt[9] >= 0) SERIAL_CHAR('+');
5256 5266
             SERIAL_PROTOCOL_F(z_at_pt[9], 2);
5257 5267
           }
5258
-          if (c_value != -2) SERIAL_EOL;
5259
-          if (probe_points > 2 || c_value == -2) {
5260
-            if (probe_points > 2) {
5268
+          if (!o_mode) SERIAL_EOL;
5269
+          if (opposites) {
5270
+            if (_7_probe) {
5261 5271
               SERIAL_CHAR('.');
5262 5272
               SERIAL_PROTOCOL_SP(12);
5263 5273
             }
@@ -5293,7 +5303,7 @@ inline void gcode_G28() {
5293 5303
             lcd_setstatus(mess);
5294 5304
           }
5295 5305
           SERIAL_PROTOCOLPAIR(".Height:", DELTA_HEIGHT + home_offset[Z_AXIS]);
5296
-          if (probe_points > 1) {
5306
+          if (!_1_point) {
5297 5307
             SERIAL_PROTOCOLPGM("    Ex:");
5298 5308
             if (endstop_adj[A_AXIS] >= 0) SERIAL_CHAR('+');
5299 5309
             SERIAL_PROTOCOL_F(endstop_adj[A_AXIS], 2);
@@ -5306,7 +5316,7 @@ inline void gcode_G28() {
5306 5316
             SERIAL_PROTOCOLPAIR("    Radius:", delta_radius);
5307 5317
           }
5308 5318
           SERIAL_EOL;
5309
-          if (c_value > 2) {
5319
+          if (_7_point) {
5310 5320
             SERIAL_PROTOCOLPGM(".Tower angle :    Tx:");
5311 5321
             if (delta_tower_angle_trim[A_AXIS] >= 0) SERIAL_CHAR('+');
5312 5322
             SERIAL_PROTOCOL_F(delta_tower_angle_trim[A_AXIS], 2);

+ 8
- 4
Marlin/configuration_store.cpp 查看文件

@@ -42,7 +42,7 @@
42 42
 #define EEPROM_OFFSET 100
43 43
 
44 44
 /**
45
- * V33 EEPROM Layout:
45
+ * V35 EEPROM Layout:
46 46
  *
47 47
  *  100  Version                                    (char x4)
48 48
  *  104  EEPROM Checksum                            (uint16_t)
@@ -410,8 +410,10 @@ void MarlinSettings::postprocess() {
410 410
       EEPROM_WRITE(delta_radius);              // 1 float
411 411
       EEPROM_WRITE(delta_diagonal_rod);        // 1 float
412 412
       EEPROM_WRITE(delta_segments_per_second); // 1 float
413
-      EEPROM_WRITE(delta_calibration_radius);  // 1 floats
413
+      EEPROM_WRITE(delta_calibration_radius);  // 1 float
414 414
       EEPROM_WRITE(delta_tower_angle_trim);    // 2 floats
415
+      dummy = 0.0f;
416
+      for (uint8_t q = 3; q--;) EEPROM_WRITE(dummy);
415 417
     #elif ENABLED(Z_DUAL_ENDSTOPS)
416 418
       EEPROM_WRITE(z_endstop_adj);             // 1 float
417 419
       dummy = 0.0f;
@@ -778,8 +780,10 @@ void MarlinSettings::postprocess() {
778 780
         EEPROM_READ(delta_radius);              // 1 float
779 781
         EEPROM_READ(delta_diagonal_rod);        // 1 float
780 782
         EEPROM_READ(delta_segments_per_second); // 1 float
781
-        EEPROM_READ(delta_calibration_radius);  // 1 floats
783
+        EEPROM_READ(delta_calibration_radius);  // 1 float
782 784
         EEPROM_READ(delta_tower_angle_trim);    // 2 floats
785
+        dummy = 0.0f;
786
+        for (uint8_t q=3; q--;) EEPROM_READ(dummy);
783 787
       #elif ENABLED(Z_DUAL_ENDSTOPS)
784 788
         EEPROM_READ(z_endstop_adj);
785 789
         dummy = 0.0f;
@@ -1066,7 +1070,7 @@ void MarlinSettings::reset() {
1066 1070
 
1067 1071
   #if ENABLED(DELTA)
1068 1072
     const float adj[ABC] = DELTA_ENDSTOP_ADJ,
1069
-                dta[2] = DELTA_TOWER_ANGLE_TRIM;
1073
+                dta[ABC] = DELTA_TOWER_ANGLE_TRIM;
1070 1074
     COPY(endstop_adj, adj);
1071 1075
     delta_radius = DELTA_RADIUS;
1072 1076
     delta_diagonal_rod = DELTA_DIAGONAL_ROD;

+ 13
- 19
Marlin/example_configurations/delta/FLSUN/auto_calibrate/Configuration.h 查看文件

@@ -450,21 +450,12 @@
450 450
 
451 451
   // Center-to-center distance of the holes in the diagonal push rods.
452 452
   #define DELTA_DIAGONAL_ROD 218.0 // mm
453
-/*
454
-  // Horizontal offset from middle of printer to smooth rod center.
455
-  #define DELTA_SMOOTH_ROD_OFFSET 150.0 // mm
456 453
 
457
-  // Horizontal offset of the universal joints on the end effector.
458
-  #define DELTA_EFFECTOR_OFFSET 24.0 // mm
459
-
460
-  // Horizontal offset of the universal joints on the carriages.
461
-  #define DELTA_CARRIAGE_OFFSET 22.0 // mm
462
-*/
463 454
   // Horizontal distance bridged by diagonal push rods when effector is centered.
464 455
   #define DELTA_RADIUS 100.00 //mm // get this value from auto calibrate
465 456
 
466
-  // height from z=0.00 to home position
467
-  #define DELTA_HEIGHT 295.00 // get this value from auto calibrate - use G33 C-1 at 1st time calibration
457
+  // height from z=0 to home position
458
+  #define DELTA_HEIGHT 295.00 // get this value from auto calibrate - use G33 P1 A at 1st time calibration
468 459
 
469 460
   // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
470 461
   #define DELTA_PRINTABLE_RADIUS 85.0
@@ -486,16 +477,16 @@
486 477
   // After homing move down to a height where XY movement is unconstrained
487 478
   #define DELTA_HOME_TO_SAFE_ZONE
488 479
 
489
-  #define DELTA_ENDSTOP_ADJ { -0.00, -0.00, -0.00 } // get these from auto calibrate
480
+  #define DELTA_ENDSTOP_ADJ { 0, 0, 0 } // get these from auto calibrate
490 481
 
491 482
   // Trim adjustments for individual towers
492 483
   // tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0
493 484
   // measured in degrees anticlockwise looking from above the printer
494
-  #define DELTA_TOWER_ANGLE_TRIM { 0.00, 0.00 } // get these from auto calibrate
485
+  #define DELTA_TOWER_ANGLE_TRIM { 0, 0, 0 } // get these from auto calibrate
495 486
 
496 487
   // delta radius and diaginal rod adjustments measured in mm
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}
488
+  //#define DELTA_RADIUS_TRIM_TOWER {0, 0, 0}
489
+  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER {0, 0, 0}
499 490
 
500 491
 #endif
501 492
 
@@ -604,7 +595,7 @@
604 595
 #define DEFAULT_XJERK                 20.0
605 596
 #define DEFAULT_YJERK                 DEFAULT_XJERK
606 597
 #define DEFAULT_ZJERK                 DEFAULT_YJERK // Must be same as XY for delta
607
-#define DEFAULT_EJERK                 5.0
598
+#define DEFAULT_EJERK                  5.0
608 599
 
609 600
 
610 601
 /**
@@ -670,6 +661,9 @@
670 661
  *   is enabled then it also applies to Z_PROBE_SPEED_SLOW.
671 662
  */
672 663
 
664
+// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
665
+//#define SOLENOID_PROBE
666
+
673 667
 // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
674 668
 //#define Z_PROBE_SLED
675 669
 //#define SLED_DOCKING_OFFSET 5  // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like.
@@ -704,7 +698,7 @@
704 698
 #define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
705 699
 
706 700
 // Speed for the "accurate" probe of each point
707
-#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 6)
701
+#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST) / 6
708 702
 
709 703
 // Use double touch for probing
710 704
 //#define PROBE_DOUBLE_TOUCH
@@ -728,7 +722,7 @@
728 722
   #define Z_PROBE_ALLEN_KEY_DEPLOY_2_X 0.0
729 723
   #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y DELTA_PRINTABLE_RADIUS
730 724
   #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z 100.0
731
-  #define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE (XY_PROBE_SPEED/10)
725
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE (XY_PROBE_SPEED)/10
732 726
 
733 727
   #define Z_PROBE_ALLEN_KEY_DEPLOY_3_X Z_PROBE_ALLEN_KEY_DEPLOY_2_X * 0.75
734 728
   #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Y Z_PROBE_ALLEN_KEY_DEPLOY_2_Y * 0.75
@@ -868,7 +862,7 @@
868 862
 #define INVERT_Y_DIR true
869 863
 #define INVERT_Z_DIR true
870 864
 
871
-// Enable this option for Toshiba steppers
865
+// Enable this option for Toshiba steppers drivers
872 866
 //#define CONFIG_STEPPERS_TOSHIBA
873 867
 
874 868
 // @section extruder

+ 10
- 10
Marlin/example_configurations/delta/FLSUN/kossel_mini/Configuration.h 查看文件

@@ -448,7 +448,7 @@
448 448
 
449 449
   // Center-to-center distance of the holes in the diagonal push rods.
450 450
   #define DELTA_DIAGONAL_ROD 218.0 // mm
451
-/*
451
+
452 452
   // Horizontal offset from middle of printer to smooth rod center.
453 453
   #define DELTA_SMOOTH_ROD_OFFSET 150.0 // mm
454 454
 
@@ -457,9 +457,9 @@
457 457
 
458 458
   // Horizontal offset of the universal joints on the carriages.
459 459
   #define DELTA_CARRIAGE_OFFSET 22.0 // mm
460
-*/
460
+
461 461
   // Horizontal distance bridged by diagonal push rods when effector is centered.
462
-  #define DELTA_RADIUS 104 //mm // get this value from auto calibrate
462
+  #define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET - DELTA_EFFECTOR_OFFSET - DELTA_CARRIAGE_OFFSET) //mm // get this value from auto calibrate
463 463
 
464 464
   // height from z=0.00 to home position
465 465
   #define DELTA_HEIGHT 280 // get this value from auto calibrate - use G33 C-1 at 1st time calibration
@@ -470,30 +470,30 @@
470 470
   // Delta calibration menu
471 471
   // uncomment to add three points calibration menu option.
472 472
   // See http://minow.blogspot.com/index.html#4918805519571907051
473
-  #define DELTA_CALIBRATION_MENU
473
+  //#define DELTA_CALIBRATION_MENU
474 474
 
475 475
   // set the radius for the calibration probe points - max 0.8 * DELTA_PRINTABLE_RADIUS if DELTA_AUTO_CALIBRATION enabled
476 476
   #define DELTA_CALIBRATION_RADIUS (DELTA_PRINTABLE_RADIUS - 17) // mm
477 477
   
478 478
   // G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
479
-  #define DELTA_AUTO_CALIBRATION
479
+  //#define DELTA_AUTO_CALIBRATION
480 480
   #if ENABLED(DELTA_AUTO_CALIBRATION)
481 481
     #define DELTA_CALIBRATION_DEFAULT_POINTS 3 // set the default number of probe points : n*n (-7 -> +7)
482 482
   #endif
483 483
 
484 484
   // After homing move down to a height where XY movement is unconstrained
485
-  #define DELTA_HOME_TO_SAFE_ZONE
485
+  //#define DELTA_HOME_TO_SAFE_ZONE
486 486
 
487
-  #define DELTA_ENDSTOP_ADJ { -0.00, -0.00, -0.00 } // get these from auto calibrate
487
+  #define DELTA_ENDSTOP_ADJ { 0, 0, 0 } // get these from auto calibrate
488 488
 
489 489
   // Trim adjustments for individual towers
490 490
   // tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0
491 491
   // measured in degrees anticlockwise looking from above the printer
492
-  #define DELTA_TOWER_ANGLE_TRIM { 0.00, 0.00 } // get these from auto calibrate
492
+  #define DELTA_TOWER_ANGLE_TRIM { 0, 0, 0 } // get these from auto calibrate
493 493
 
494 494
   // delta radius and diaginal rod adjustments measured in mm
495
-  //#define DELTA_RADIUS_TRIM_TOWER {0.0, 0.0, 0.0}
496
-  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER {0.0, 0.0, 0.0}
495
+  //#define DELTA_RADIUS_TRIM_TOWER {0, 0, 0}
496
+  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER {0, 0, 0}
497 497
 
498 498
 #endif
499 499
 

+ 12
- 10
Marlin/example_configurations/delta/generic/Configuration.h 查看文件

@@ -438,7 +438,7 @@
438 438
 
439 439
   // Center-to-center distance of the holes in the diagonal push rods.
440 440
   #define DELTA_DIAGONAL_ROD 250.0 // mm
441
-/*
441
+
442 442
   // Horizontal offset from middle of printer to smooth rod center.
443 443
   #define DELTA_SMOOTH_ROD_OFFSET 175.0 // mm
444 444
 
@@ -447,9 +447,11 @@
447 447
 
448 448
   // Horizontal offset of the universal joints on the carriages.
449 449
   #define DELTA_CARRIAGE_OFFSET 18.0 // mm
450
-*/
450
+
451 451
   // Horizontal distance bridged by diagonal push rods when effector is centered.
452
-  #define DELTA_RADIUS 125 //mm // get this value from auto calibrate  // height from z=0.00 to home position
452
+  #define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET - DELTA_EFFECTOR_OFFSET - DELTA_CARRIAGE_OFFSET) //mm // get this value from auto calibrate  // height from z=0.00 to home position
453
+
454
+  // height from z=0.00 to home position
453 455
   #define DELTA_HEIGHT 250 // get this value from auto calibrate - use G33 C-1 at 1st time calibration
454 456
 
455 457
   // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
@@ -457,30 +459,30 @@
457 459
 
458 460
   // Delta calibration menu
459 461
   // See http://minow.blogspot.com/index.html#4918805519571907051
460
-  #define DELTA_CALIBRATION_MENU
462
+  //#define DELTA_CALIBRATION_MENU
461 463
 
462 464
   // set the radius for the calibration probe points - max 0.8 * DELTA_PRINTABLE_RADIUS if DELTA_AUTO_CALIBRATION enabled
463 465
   #define DELTA_CALIBRATION_RADIUS (DELTA_PRINTABLE_RADIUS - 28) // mm
464 466
   
465 467
   // G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
466
-  #define DELTA_AUTO_CALIBRATION
468
+  //#define DELTA_AUTO_CALIBRATION
467 469
   #if ENABLED(DELTA_AUTO_CALIBRATION)
468 470
     #define DELTA_CALIBRATION_DEFAULT_POINTS 3 // set the default number of probe points : n*n (-7 -> +7)
469 471
   #endif
470 472
 
471 473
   // After homing move down to a height where XY movement is unconstrained
472
-  #define DELTA_HOME_TO_SAFE_ZONE
474
+  //#define DELTA_HOME_TO_SAFE_ZONE
473 475
 
474
-  #define DELTA_ENDSTOP_ADJ { -0.00, -0.00, -0.00 } // get these from auto calibrate
476
+  #define DELTA_ENDSTOP_ADJ { 0, 0, 0 } // get these from auto calibrate
475 477
 
476 478
   // Trim adjustments for individual towers
477 479
   // tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0
478 480
   // measured in degrees anticlockwise looking from above the printer
479
-  #define DELTA_TOWER_ANGLE_TRIM { 0.00, 0.00 } // get these from auto calibrate
481
+  #define DELTA_TOWER_ANGLE_TRIM { 0, 0, 0 } // get these from auto calibrate
480 482
 
481 483
   // delta radius and diaginal rod adjustments measured in mm
482
-  //#define DELTA_RADIUS_TRIM_TOWER {0.0, 0.0, 0.0}
483
-  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER {0.0, 0.0, 0.0}
484
+  //#define DELTA_RADIUS_TRIM_TOWER {0, 0, 0}
485
+  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER {0, 0, 0}
484 486
 
485 487
 #endif
486 488
 

+ 10
- 10
Marlin/example_configurations/delta/kossel_mini/Configuration.h 查看文件

@@ -438,7 +438,7 @@
438 438
 
439 439
   // Center-to-center distance of the holes in the diagonal push rods.
440 440
   #define DELTA_DIAGONAL_ROD 215.0 // mm
441
-/*
441
+
442 442
   // Horizontal offset from middle of printer to smooth rod center.
443 443
   #define DELTA_SMOOTH_ROD_OFFSET 145.0 // mm
444 444
 
@@ -447,9 +447,9 @@
447 447
 
448 448
   // Horizontal offset of the universal joints on the carriages.
449 449
   #define DELTA_CARRIAGE_OFFSET 19.5 // mm
450
-*/
450
+
451 451
   // Horizontal distance bridged by diagonal push rods when effector is centered.
452
-  #define DELTA_RADIUS 105 //mm // get this value from auto calibrate
452
+  #define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET - DELTA_EFFECTOR_OFFSET - DELTA_CARRIAGE_OFFSET) //mm // get this value from auto calibrate
453 453
 
454 454
   // height from z=0.00 to home position
455 455
   #define DELTA_HEIGHT 250 // get this value from auto calibrate - use G33 C-1 at 1st time calibration
@@ -459,30 +459,30 @@
459 459
 
460 460
   // Delta calibration menu
461 461
   // See http://minow.blogspot.com/index.html#4918805519571907051
462
-  #define DELTA_CALIBRATION_MENU
462
+  //#define DELTA_CALIBRATION_MENU
463 463
 
464 464
   // set the radius for the calibration probe points - max 0.8 * DELTA_PRINTABLE_RADIUS if DELTA_AUTO_CALIBRATION enabled
465 465
   #define DELTA_CALIBRATION_RADIUS (DELTA_PRINTABLE_RADIUS - 18) // mm
466 466
   
467 467
   // G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
468
-  #define DELTA_AUTO_CALIBRATION
468
+  //#define DELTA_AUTO_CALIBRATION
469 469
   #if ENABLED(DELTA_AUTO_CALIBRATION)
470 470
     #define DELTA_CALIBRATION_DEFAULT_POINTS 3 // set the default number of probe points : n*n (-7 -> +7)
471 471
   #endif
472 472
 
473 473
   // After homing move down to a height where XY movement is unconstrained
474
-  #define DELTA_HOME_TO_SAFE_ZONE
474
+  //#define DELTA_HOME_TO_SAFE_ZONE
475 475
 
476
-  #define DELTA_ENDSTOP_ADJ { -0.00, -0.00, -0.00 } // get these from auto calibrate
476
+  #define DELTA_ENDSTOP_ADJ { 0, 0, 0 } // get these from auto calibrate
477 477
 
478 478
   // Trim adjustments for individual towers
479 479
   // tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0
480 480
   // measured in degrees anticlockwise looking from above the printer
481
-  #define DELTA_TOWER_ANGLE_TRIM { 0.00, 0.00 } // get these from auto calibrate
481
+  #define DELTA_TOWER_ANGLE_TRIM { 0, 0, 0 } // get these from auto calibrate
482 482
 
483 483
   // delta radius and diaginal rod adjustments measured in mm
484
-  //#define DELTA_RADIUS_TRIM_TOWER {0.0, 0.0, 0.0}
485
-  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER {0.0, 0.0, 0.0}
484
+  //#define DELTA_RADIUS_TRIM_TOWER {0, 0, 0}
485
+  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER {0, 0, 0}
486 486
 
487 487
 #endif
488 488
 

+ 10
- 10
Marlin/example_configurations/delta/kossel_pro/Configuration.h 查看文件

@@ -425,7 +425,7 @@
425 425
 
426 426
   // Center-to-center distance of the holes in the diagonal push rods.
427 427
   #define DELTA_DIAGONAL_ROD 301.0 // mm
428
-/*
428
+
429 429
   // Horizontal offset from middle of printer to smooth rod center.
430 430
   #define DELTA_SMOOTH_ROD_OFFSET 212.357 // mm
431 431
 
@@ -434,9 +434,9 @@
434 434
 
435 435
   // Horizontal offset of the universal joints on the carriages.
436 436
   #define DELTA_CARRIAGE_OFFSET 30.0 // mm
437
-*/
437
+
438 438
   // Horizontal distance bridged by diagonal push rods when effector is centered.
439
-  #define DELTA_RADIUS 150 //mm // get this value from auto calibrate
439
+  #define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET - DELTA_EFFECTOR_OFFSET - DELTA_CARRIAGE_OFFSET) //mm // get this value from auto calibrate
440 440
 
441 441
   // height from z=0.00 to home position
442 442
   #define DELTA_HEIGHT 277 // get this value from auto calibrate - use G33 C-1 at 1st time calibration
@@ -446,30 +446,30 @@
446 446
 
447 447
   // Delta calibration menu
448 448
   // See http://minow.blogspot.com/index.html#4918805519571907051
449
-  #define DELTA_CALIBRATION_MENU
449
+  //#define DELTA_CALIBRATION_MENU
450 450
 
451 451
   // set the radius for the calibration probe points - max 0.8 * DELTA_PRINTABLE_RADIUS if DELTA_AUTO_CALIBRATION enabled
452 452
   #define DELTA_CALIBRATION_RADIUS (DELTA_PRINTABLE_RADIUS - 25.4) // mm
453 453
   
454 454
   // G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
455
-  #define DELTA_AUTO_CALIBRATION
455
+  //#define DELTA_AUTO_CALIBRATION
456 456
   #if ENABLED(DELTA_AUTO_CALIBRATION)
457 457
     #define DELTA_CALIBRATION_DEFAULT_POINTS 3 // set the default number of probe points : n*n (-7 -> +7)
458 458
   #endif
459 459
 
460 460
   // After homing move down to a height where XY movement is unconstrained
461
-  #define DELTA_HOME_TO_SAFE_ZONE
461
+  //#define DELTA_HOME_TO_SAFE_ZONE
462 462
 
463
-  #define DELTA_ENDSTOP_ADJ { -0.00, -0.00, -0.00 } // get these from auto calibrate
463
+  #define DELTA_ENDSTOP_ADJ { 0, 0, 0 } // get these from auto calibrate
464 464
 
465 465
   // Trim adjustments for individual towers
466 466
   // tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0
467 467
   // measured in degrees anticlockwise looking from above the printer
468
-  #define DELTA_TOWER_ANGLE_TRIM { 0.00, 0.00 } // get these from auto calibrate
468
+  #define DELTA_TOWER_ANGLE_TRIM { 0, 0, 0 } // get these from auto calibrate
469 469
 
470 470
   // delta radius and diaginal rod adjustments measured in mm
471
-  //#define DELTA_RADIUS_TRIM_TOWER {0.0, 0.0, 0.0}
472
-  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER {0.0, 0.0, 0.0}
471
+  //#define DELTA_RADIUS_TRIM_TOWER {0, 0, 0}
472
+  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER {0, 0, 0}
473 473
 
474 474
 #endif
475 475
 

+ 10
- 10
Marlin/example_configurations/delta/kossel_xl/Configuration.h 查看文件

@@ -443,7 +443,7 @@
443 443
 
444 444
   // Center-to-center distance of the holes in the diagonal push rods.
445 445
   #define DELTA_DIAGONAL_ROD 317.3 + 2.5 // mm
446
-/*
446
+
447 447
   // Horizontal offset from middle of printer to smooth rod center.
448 448
   #define DELTA_SMOOTH_ROD_OFFSET 220.1 // mm
449 449
 
@@ -452,9 +452,9 @@
452 452
 
453 453
   // Horizontal offset of the universal joints on the carriages.
454 454
   #define DELTA_CARRIAGE_OFFSET 22.0 // mm
455
-*/
455
+
456 456
   // Horizontal distance bridged by diagonal push rods when effector is centered.
457
-  #define DELTA_RADIUS 175 //mm // get this value from auto calibrate
457
+  #define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET - DELTA_EFFECTOR_OFFSET - DELTA_CARRIAGE_OFFSET) //mm // get this value from auto calibrate
458 458
 
459 459
   // height from z=0.00 to home position
460 460
   #define DELTA_HEIGHT 380 // get this value from auto calibrate - use G33 C-1 at 1st time calibration
@@ -464,30 +464,30 @@
464 464
 
465 465
   // Delta calibration menu
466 466
   // See http://minow.blogspot.com/index.html#4918805519571907051
467
-  #define DELTA_CALIBRATION_MENU
467
+  //#define DELTA_CALIBRATION_MENU
468 468
 
469 469
   // set the radius for the calibration probe points - max 0.8 * DELTA_PRINTABLE_RADIUS if DELTA_AUTO_CALIBRATION enabled
470 470
   #define DELTA_CALIBRATION_RADIUS (DELTA_PRINTABLE_RADIUS - 28) // mm
471 471
   
472 472
   // G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
473
-  #define DELTA_AUTO_CALIBRATION
473
+  //#define DELTA_AUTO_CALIBRATION
474 474
   #if ENABLED(DELTA_AUTO_CALIBRATION)
475 475
     #define DELTA_CALIBRATION_DEFAULT_POINTS 3 // set the default number of probe points : n*n (-7 -> +7)
476 476
   #endif
477 477
 
478 478
   // After homing move down to a height where XY movement is unconstrained
479
-  #define DELTA_HOME_TO_SAFE_ZONE
479
+  //#define DELTA_HOME_TO_SAFE_ZONE
480 480
 
481
-  #define DELTA_ENDSTOP_ADJ { -0.00, -0.00, -0.00 } // get these from auto calibrate
481
+  #define DELTA_ENDSTOP_ADJ { 0, 0, 0 } // get these from auto calibrate
482 482
 
483 483
   // Trim adjustments for individual towers
484 484
   // tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0
485 485
   // measured in degrees anticlockwise looking from above the printer
486
-  #define DELTA_TOWER_ANGLE_TRIM { 0.00, 0.00 } // get these from auto calibrate
486
+  #define DELTA_TOWER_ANGLE_TRIM { 0, 0, 0 } // get these from auto calibrate
487 487
 
488 488
   // delta radius and diaginal rod adjustments measured in mm
489
-  //#define DELTA_RADIUS_TRIM_TOWER {0.0, 0.0, 0.0}
490
-  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER {0.0, 0.0, 0.0}
489
+  //#define DELTA_RADIUS_TRIM_TOWER {0, 0, 0}
490
+  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER {0, 0, 0}
491 491
 
492 492
 #endif
493 493
 

+ 1
- 1
Marlin/ultralcd.cpp 查看文件

@@ -1834,7 +1834,7 @@ void kill_screen(const char* lcd_msg) {
1834 1834
       MENU_BACK(MSG_MAIN);
1835 1835
       #if ENABLED(DELTA_AUTO_CALIBRATION)
1836 1836
         MENU_ITEM(gcode, MSG_DELTA_AUTO_CALIBRATE, PSTR("G33"));
1837
-        MENU_ITEM(gcode, MSG_DELTA_HEIGHT_CALIBRATE, PSTR("G33 C-1"));
1837
+        MENU_ITEM(gcode, MSG_DELTA_HEIGHT_CALIBRATE, PSTR("G33 P1 A"));
1838 1838
       #endif
1839 1839
       MENU_ITEM(submenu, MSG_AUTO_HOME, _lcd_delta_calibrate_home);
1840 1840
       if (axis_homed[Z_AXIS]) {

正在加载...
取消
保存