Kevin Lee 4 роки тому
батько
коміт
328669315c

+ 13 - 3
Firmware/Marlin_main.cpp

@@ -3180,11 +3180,12 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float
     //Not let's go back to print
     fanSpeed = fanSpeedBckp;
 
-    //Feed a little of filament to stabilize pressure
+    //Retract filament to prevent drooling
     if (!automatic)
     {
-        current_position[E_AXIS] += FILAMENTCHANGE_RECFEED;
-        plan_buffer_line_curposXYZE(FILAMENTCHANGE_EXFEED);
+        current_position[E_AXIS] -= FILAMENTCHANGE_LOADRETRACT;
+        plan_buffer_line_curposXYZE(FILAMENTCHANGE_EFEED_FIRST);
+        st_synchronize();
     }
 
     //Move XY back
@@ -3196,6 +3197,15 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float
             FILAMENTCHANGE_ZFEED, active_extruder);
     st_synchronize();
 
+    //Restore filament 
+    if (!automatic)
+    {
+        current_position[E_AXIS] += FILAMENTCHANGE_LOADRETRACT;
+        plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], lastpos[Z_AXIS], current_position[E_AXIS],
+            FILAMENTCHANGE_EFEED_FIRST, active_extruder);
+        st_synchronize();
+    }
+
     //Set E position to original
     plan_set_e_position(lastpos[E_AXIS]);
 

+ 1 - 1
Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h

@@ -367,7 +367,7 @@
 #define FILAMENTCHANGE_FINALRETRACT -80
 
 #define FILAMENTCHANGE_FIRSTFEED 70 //E distance in mm for fast filament loading sequence used used in filament change (M600)
-#define FILAMENTCHANGE_FINALFEED 200 //E distance in mm for slow filament loading sequence used used in filament change (M600) and filament load (M701) 
+#define FILAMENTCHANGE_FINALFEED 140 //E distance in mm for slow filament loading sequence used used in filament change (M600) and filament load (M701)
 #define FILAMENTCHANGE_RECFEED 5
 
 #define FILAMENTCHANGE_LOADRETRACT 20 // Distance to retract after loading is complete (need to account for this in start gcode)