瀏覽代碼

Adding custom move feedrate for G26 (#20729)

* Adding custom move feedrate for G26

This commit adds an additional configuration parameter that can be used to specify the movement speed during the G26 validation pattern command during moves without extrusion.

Closes MarlinFirmware/Marlin#20615

* Fixing missing default 'G26_XY_FEEDRATE_MOVE' value

This commit adds a default 'G26_XY_FEEDRATE_MOVE' value (max movement speed / 1.5) in the G26.cpp - same behaviour as the default 'G26_XY_FEEDRATE' value

* Adding comment describing functionality in G26.cpp

* Renaming 'G26_XY_FEEDRATE_MOVE' to 'G26_XY_FEEDRATE_TRAVEL'

Configuration parameter renamed for better readability and consistency

MarlinFirmware/Marlin#20615

* Setting 'G26_XY_FEEDRATE_TRAVEL' to a safer value, aligned comments

Changed default value for 'G26_XY_FEEDRATE_TRAVEL' from 150 mm/s to 100 mm/s for safety purposes, comment alignment

MarlinFirmware/Marlin#20615
ScrewThisBanana 3 年之前
父節點
當前提交
14567f3459
沒有連結到貢獻者的電子郵件帳戶。
共有 2 個檔案被更改,包括 14 行新增3 行删除
  1. 1
    0
      Marlin/Configuration.h
  2. 13
    3
      Marlin/src/gcode/bedlevel/G26.cpp

+ 1
- 0
Marlin/Configuration.h 查看文件

@@ -1361,6 +1361,7 @@
1361 1361
     #define MESH_TEST_HOTEND_TEMP  205    // (°C) Default nozzle temperature for the G26 Mesh Validation Tool.
1362 1362
     #define MESH_TEST_BED_TEMP      60    // (°C) Default bed temperature for the G26 Mesh Validation Tool.
1363 1363
     #define G26_XY_FEEDRATE         20    // (mm/s) Feedrate for XY Moves for the G26 Mesh Validation Tool.
1364
+    #define G26_XY_FEEDRATE_TRAVEL  100   // (mm/s) Feedrate for XY Moves without extrusion for the G26 Mesh Validation Tool
1364 1365
     #define G26_RETRACT_MULTIPLIER   1.0  // G26 Q (retraction) used by default between mesh test elements.
1365 1366
   #endif
1366 1367
 

+ 13
- 3
Marlin/src/gcode/bedlevel/G26.cpp 查看文件

@@ -128,6 +128,10 @@
128 128
   #define G26_XY_FEEDRATE (PLANNER_XY_FEEDRATE() / 3.0)
129 129
 #endif
130 130
 
131
+#ifndef G26_XY_FEEDRATE_TRAVEL
132
+  #define G26_XY_FEEDRATE_TRAVEL (PLANNER_XY_FEEDRATE() / 1.5)
133
+#endif
134
+
131 135
 #if CROSSHAIRS_SIZE >= INTERSECTION_CIRCLE_RADIUS
132 136
   #error "CROSSHAIRS_SIZE must be less than INTERSECTION_CIRCLE_RADIUS."
133 137
 #endif
@@ -213,7 +217,8 @@ void move_to(const float &rx, const float &ry, const float &z, const float &e_de
213 217
 
214 218
   const xy_pos_t dest = { rx, ry };
215 219
 
216
-  const bool has_xy_component = dest != current_position; // Check if X or Y is involved in the movement.
220
+  const bool has_xy_component = dest != current_position; // Check if X or Y is involved in the movement.  
221
+  const bool has_e_component = e_delta != 0.0;
217 222
 
218 223
   destination = current_position;
219 224
 
@@ -224,10 +229,15 @@ void move_to(const float &rx, const float &ry, const float &z, const float &e_de
224 229
     destination = current_position;
225 230
   }
226 231
 
227
-  // If X or Y is involved do a 'normal' move. Otherwise retract/recover/hop.
232
+  // If X or Y in combination with E is involved do a 'normal' move. 
233
+  // If X or Y with no E is involved do a 'fast' move
234
+  // Otherwise retract/recover/hop.
228 235
   destination = dest;
229 236
   destination.e += e_delta;
230
-  const feedRate_t feed_value = has_xy_component ? feedRate_t(G26_XY_FEEDRATE) : planner.settings.max_feedrate_mm_s[E_AXIS] * 0.666f;
237
+  const feedRate_t feed_value = 
238
+    has_xy_component 
239
+    ? (has_e_component ? feedRate_t(G26_XY_FEEDRATE) : feedRate_t(G26_XY_FEEDRATE_TRAVEL)) 
240
+    : planner.settings.max_feedrate_mm_s[E_AXIS] * 0.666f;
231 241
   prepare_internal_move_to_destination(feed_value);
232 242
   destination = current_position;
233 243
 }

Loading…
取消
儲存