Browse Source

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 years ago
parent
commit
14567f3459
No account linked to committer's email address
2 changed files with 14 additions and 3 deletions
  1. 1
    0
      Marlin/Configuration.h
  2. 13
    3
      Marlin/src/gcode/bedlevel/G26.cpp

+ 1
- 0
Marlin/Configuration.h View File

@@ -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 View File

@@ -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…
Cancel
Save