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
     #define MESH_TEST_HOTEND_TEMP  205    // (°C) Default nozzle temperature for the G26 Mesh Validation Tool.
1361
     #define MESH_TEST_HOTEND_TEMP  205    // (°C) Default nozzle temperature for the G26 Mesh Validation Tool.
1362
     #define MESH_TEST_BED_TEMP      60    // (°C) Default bed temperature for the G26 Mesh Validation Tool.
1362
     #define MESH_TEST_BED_TEMP      60    // (°C) Default bed temperature for the G26 Mesh Validation Tool.
1363
     #define G26_XY_FEEDRATE         20    // (mm/s) Feedrate for XY Moves for the G26 Mesh Validation Tool.
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
     #define G26_RETRACT_MULTIPLIER   1.0  // G26 Q (retraction) used by default between mesh test elements.
1365
     #define G26_RETRACT_MULTIPLIER   1.0  // G26 Q (retraction) used by default between mesh test elements.
1365
   #endif
1366
   #endif
1366
 
1367
 

+ 13
- 3
Marlin/src/gcode/bedlevel/G26.cpp View File

128
   #define G26_XY_FEEDRATE (PLANNER_XY_FEEDRATE() / 3.0)
128
   #define G26_XY_FEEDRATE (PLANNER_XY_FEEDRATE() / 3.0)
129
 #endif
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
 #if CROSSHAIRS_SIZE >= INTERSECTION_CIRCLE_RADIUS
135
 #if CROSSHAIRS_SIZE >= INTERSECTION_CIRCLE_RADIUS
132
   #error "CROSSHAIRS_SIZE must be less than INTERSECTION_CIRCLE_RADIUS."
136
   #error "CROSSHAIRS_SIZE must be less than INTERSECTION_CIRCLE_RADIUS."
133
 #endif
137
 #endif
213
 
217
 
214
   const xy_pos_t dest = { rx, ry };
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
   destination = current_position;
223
   destination = current_position;
219
 
224
 
224
     destination = current_position;
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
   destination = dest;
235
   destination = dest;
229
   destination.e += e_delta;
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
   prepare_internal_move_to_destination(feed_value);
241
   prepare_internal_move_to_destination(feed_value);
232
   destination = current_position;
242
   destination = current_position;
233
 }
243
 }

Loading…
Cancel
Save