Browse Source

Account for flow adjustments in LA

The e/D ratio should be calculated using the extrusion length.

As such, purify the e_D_ratio from the current extruder multiplier in
order to account correctly for flow adjustments.
Yuri D'Elia 3 years ago
parent
commit
9b8f642b28
2 changed files with 2 additions and 2 deletions
  1. 1 1
      Firmware/Marlin.h
  2. 1 1
      Firmware/planner.cpp

+ 1 - 1
Firmware/Marlin.h

@@ -299,7 +299,7 @@ extern float feedrate;
 extern int feedmultiply;
 extern int extrudemultiply; // Sets extrude multiply factor (in percent) for all extruders
 extern int extruder_multiply[EXTRUDERS]; // sets extrude multiply factor (in percent) for each extruder individually
-extern float volumetric_multiplier[EXTRUDERS]; // reciprocal of cross-sectional area of filament (in square millimeters), stored this way to reduce computational burden in planner
+extern float extruder_multiplier[EXTRUDERS]; // reciprocal of cross-sectional area of filament (in square millimeters), stored this way to reduce computational burden in planner
 extern float current_position[NUM_AXIS] ;
 extern float destination[NUM_AXIS] ;
 extern float min_pos[3];

+ 1 - 1
Firmware/planner.cpp

@@ -1098,7 +1098,7 @@ Having the real displacement of the head, we can calculate the total movement le
     if (block->use_advance_lead) {
         // all extrusion moves with LA require a compression which is proportional to the
         // extrusion_length to distance ratio (e/D)
-        e_D_ratio = (e - position_float[E_AXIS]) /
+        e_D_ratio = ((e - position_float[E_AXIS]) / extruder_multiplier[extruder]) /
                     sqrt(sq(x - position_float[X_AXIS])
                          + sq(y - position_float[Y_AXIS])
                          + sq(z - position_float[Z_AXIS]));