瀏覽代碼

Adjustable delta_diagonal_rod_trim (#18423)

Fabio Santos 5 年之前
父節點
當前提交
29753baeee
沒有連結到貢獻者的電子郵件帳戶。

+ 7
- 1
Marlin/src/gcode/calibrate/M665.cpp 查看文件

@@ -38,8 +38,11 @@
38 38
    *    R = delta radius
39 39
    *    S = segments per second
40 40
    *    X = Alpha (Tower 1) angle trim
41
-   *    Y = Beta (Tower 2) angle trim
41
+   *    Y = Beta  (Tower 2) angle trim
42 42
    *    Z = Gamma (Tower 3) angle trim
43
+   *    A = Alpha (Tower 1) digonal rod trim
44
+   *    B = Beta  (Tower 2) digonal rod trim
45
+   *    C = Gamma (Tower 3) digonal rod trim
43 46
    */
44 47
   void GcodeSuite::M665() {
45 48
     if (parser.seen('H')) delta_height              = parser.value_linear_units();
@@ -49,6 +52,9 @@
49 52
     if (parser.seen('X')) delta_tower_angle_trim.a  = parser.value_float();
50 53
     if (parser.seen('Y')) delta_tower_angle_trim.b  = parser.value_float();
51 54
     if (parser.seen('Z')) delta_tower_angle_trim.c  = parser.value_float();
55
+    if (parser.seen('A')) delta_diagonal_rod_trim.a = parser.value_float();
56
+    if (parser.seen('B')) delta_diagonal_rod_trim.b = parser.value_float();
57
+    if (parser.seen('C')) delta_diagonal_rod_trim.c = parser.value_float();
52 58
     recalc_delta_settings();
53 59
   }
54 60
 

+ 11
- 4
Marlin/src/module/configuration_store.cpp 查看文件

@@ -257,11 +257,12 @@ typedef struct SettingsDataStruct {
257 257
   //
258 258
   #if ENABLED(DELTA)
259 259
     float delta_height;                                 // M666 H
260
-    abc_float_t delta_endstop_adj;                      // M666 XYZ
260
+    abc_float_t delta_endstop_adj;                      // M666 X Y Z
261 261
     float delta_radius,                                 // M665 R
262 262
           delta_diagonal_rod,                           // M665 L
263 263
           delta_segments_per_second;                    // M665 S
264
-    abc_float_t delta_tower_angle_trim;                 // M665 XYZ
264
+    abc_float_t delta_tower_angle_trim,                 // M665 X Y Z
265
+                delta_diagonal_rod_trim;                // M665 A B C
265 266
   #elif HAS_EXTRA_ENDSTOPS
266 267
     float x2_endstop_adj,                               // M666 X
267 268
           y2_endstop_adj,                               // M666 Y
@@ -775,6 +776,7 @@ void MarlinSettings::postprocess() {
775 776
         EEPROM_WRITE(delta_diagonal_rod);        // 1 float
776 777
         EEPROM_WRITE(delta_segments_per_second); // 1 float
777 778
         EEPROM_WRITE(delta_tower_angle_trim);    // 3 floats
779
+        EEPROM_WRITE(delta_diagonal_rod_trim);   // 3 floats
778 780
 
779 781
       #elif HAS_EXTRA_ENDSTOPS
780 782
 
@@ -1638,6 +1640,7 @@ void MarlinSettings::postprocess() {
1638 1640
           EEPROM_READ(delta_diagonal_rod);        // 1 float
1639 1641
           EEPROM_READ(delta_segments_per_second); // 1 float
1640 1642
           EEPROM_READ(delta_tower_angle_trim);    // 3 floats
1643
+          EEPROM_READ(delta_diagonal_rod_trim);   // 3 floats
1641 1644
 
1642 1645
         #elif HAS_EXTRA_ENDSTOPS
1643 1646
 
@@ -2510,13 +2513,14 @@ void MarlinSettings::reset() {
2510 2513
   //
2511 2514
 
2512 2515
   #if ENABLED(DELTA)
2513
-    const abc_float_t adj = DELTA_ENDSTOP_ADJ, dta = DELTA_TOWER_ANGLE_TRIM;
2516
+    const abc_float_t adj = DELTA_ENDSTOP_ADJ, dta = DELTA_TOWER_ANGLE_TRIM, ddr = DELTA_DIAGONAL_ROD_TRIM_TOWER;
2514 2517
     delta_height = DELTA_HEIGHT;
2515 2518
     delta_endstop_adj = adj;
2516 2519
     delta_radius = DELTA_RADIUS;
2517 2520
     delta_diagonal_rod = DELTA_DIAGONAL_ROD;
2518 2521
     delta_segments_per_second = DELTA_SEGMENTS_PER_SECOND;
2519 2522
     delta_tower_angle_trim = dta;
2523
+    delta_diagonal_rod_trim = ddr;
2520 2524
   #endif
2521 2525
 
2522 2526
   #if ENABLED(X_DUAL_ENDSTOPS)
@@ -3065,7 +3069,7 @@ void MarlinSettings::reset() {
3065 3069
         , SP_Z_STR, LINEAR_UNIT(delta_endstop_adj.c)
3066 3070
       );
3067 3071
 
3068
-      CONFIG_ECHO_HEADING("Delta settings: L<diagonal_rod> R<radius> H<height> S<segments_per_s> XYZ<tower angle corrections>");
3072
+      CONFIG_ECHO_HEADING("Delta settings: L<diagonal rod> R<radius> H<height> S<segments per sec> XYZ<tower angle trim> ABC<rod trim>");
3069 3073
       CONFIG_ECHO_START();
3070 3074
       SERIAL_ECHOLNPAIR_P(
3071 3075
           PSTR("  M665 L"), LINEAR_UNIT(delta_diagonal_rod)
@@ -3075,6 +3079,9 @@ void MarlinSettings::reset() {
3075 3079
         , SP_X_STR, LINEAR_UNIT(delta_tower_angle_trim.a)
3076 3080
         , SP_Y_STR, LINEAR_UNIT(delta_tower_angle_trim.b)
3077 3081
         , SP_Z_STR, LINEAR_UNIT(delta_tower_angle_trim.c)
3082
+        , PSTR(" A"), LINEAR_UNIT(delta_diagonal_rod_trim.a)
3083
+        , PSTR(" B"), LINEAR_UNIT(delta_diagonal_rod_trim.b)
3084
+        , PSTR(" C"), LINEAR_UNIT(delta_diagonal_rod_trim.c)
3078 3085
       );
3079 3086
 
3080 3087
     #elif HAS_EXTRA_ENDSTOPS

+ 5
- 5
Marlin/src/module/delta.cpp 查看文件

@@ -59,6 +59,7 @@ abc_float_t delta_tower_angle_trim;
59 59
 xy_float_t delta_tower[ABC];
60 60
 abc_float_t delta_diagonal_rod_2_tower;
61 61
 float delta_clip_start_height = Z_MAX_POS;
62
+abc_float_t delta_diagonal_rod_trim;
62 63
 
63 64
 float delta_safe_distance_from_top();
64 65
 
@@ -67,17 +68,16 @@ float delta_safe_distance_from_top();
67 68
  * settings have been changed (e.g., by M665).
68 69
  */
69 70
 void recalc_delta_settings() {
70
-  constexpr abc_float_t trt = DELTA_RADIUS_TRIM_TOWER,
71
-                        drt = DELTA_DIAGONAL_ROD_TRIM_TOWER;
71
+  constexpr abc_float_t trt = DELTA_RADIUS_TRIM_TOWER;
72 72
   delta_tower[A_AXIS].set(cos(RADIANS(210 + delta_tower_angle_trim.a)) * (delta_radius + trt.a), // front left tower
73 73
                           sin(RADIANS(210 + delta_tower_angle_trim.a)) * (delta_radius + trt.a));
74 74
   delta_tower[B_AXIS].set(cos(RADIANS(330 + delta_tower_angle_trim.b)) * (delta_radius + trt.b), // front right tower
75 75
                           sin(RADIANS(330 + delta_tower_angle_trim.b)) * (delta_radius + trt.b));
76 76
   delta_tower[C_AXIS].set(cos(RADIANS( 90 + delta_tower_angle_trim.c)) * (delta_radius + trt.c), // back middle tower
77 77
                           sin(RADIANS( 90 + delta_tower_angle_trim.c)) * (delta_radius + trt.c));
78
-  delta_diagonal_rod_2_tower.set(sq(delta_diagonal_rod + drt.a),
79
-                                 sq(delta_diagonal_rod + drt.b),
80
-                                 sq(delta_diagonal_rod + drt.c));
78
+  delta_diagonal_rod_2_tower.set(sq(delta_diagonal_rod + delta_diagonal_rod_trim.a),
79
+                                 sq(delta_diagonal_rod + delta_diagonal_rod_trim.b),
80
+                                 sq(delta_diagonal_rod + delta_diagonal_rod_trim.c));
81 81
   update_software_endstops(Z_AXIS);
82 82
   set_all_unhomed();
83 83
 }

+ 1
- 0
Marlin/src/module/delta.h 查看文件

@@ -37,6 +37,7 @@ extern abc_float_t delta_tower_angle_trim;
37 37
 extern xy_float_t delta_tower[ABC];
38 38
 extern abc_float_t delta_diagonal_rod_2_tower;
39 39
 extern float delta_clip_start_height;
40
+extern abc_float_t delta_diagonal_rod_trim;
40 41
 
41 42
 /**
42 43
  * Recalculate factors used for delta kinematics whenever

Loading…
取消
儲存