PFW-543 Add filament ramming when unloading filament with MMU.
This commit is contained in:
parent
1543a1b45a
commit
0d99dc0a3f
1 changed files with 57 additions and 4 deletions
|
@ -642,6 +642,61 @@ void extr_adj(int extruder) //loading filament for SNMM
|
|||
#endif
|
||||
}
|
||||
|
||||
//! @brief Unload sequence to optimize shape of the tip of the unloaded filament
|
||||
//!
|
||||
//! Ideas to minimize flash consumption of this code:
|
||||
//!
|
||||
//! Create const array of extrude and feed_rate on stack, call increment current_position, plan_buffer_line() and st_synchronize()
|
||||
//! in loop iterating over array.
|
||||
//!
|
||||
//! Same as previous, but create array in PROGMEM and call PGM_read instructions in a loop.
|
||||
//!
|
||||
static void filament_ramming()
|
||||
{
|
||||
current_position[E_AXIS] += 1;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 1000 / 60, active_extruder);
|
||||
st_synchronize();
|
||||
|
||||
current_position[E_AXIS] += 1;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 1500 / 60, active_extruder);
|
||||
st_synchronize();
|
||||
|
||||
current_position[E_AXIS] += 2;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 2000 / 60, active_extruder);
|
||||
st_synchronize();
|
||||
|
||||
current_position[E_AXIS] += 1.5;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
|
||||
st_synchronize();
|
||||
|
||||
current_position[E_AXIS] += 2.5;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 4000 / 60, active_extruder);
|
||||
st_synchronize();
|
||||
|
||||
current_position[E_AXIS] -= 15;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 5000 / 60, active_extruder);
|
||||
st_synchronize();
|
||||
|
||||
current_position[E_AXIS] -= 14;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 1200 / 60, active_extruder);
|
||||
st_synchronize();
|
||||
|
||||
current_position[E_AXIS] -= 6;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 600 / 60, active_extruder);
|
||||
st_synchronize();
|
||||
|
||||
current_position[E_AXIS] += 10;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 700 / 60, active_extruder);
|
||||
st_synchronize();
|
||||
|
||||
current_position[E_AXIS] -= 10;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400 / 60, active_extruder);
|
||||
st_synchronize();
|
||||
|
||||
current_position[E_AXIS] -= 50;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 2000 / 60, active_extruder);
|
||||
st_synchronize();
|
||||
}
|
||||
|
||||
void extr_unload()
|
||||
{ //unload just current filament for multimaterial printers
|
||||
|
@ -663,9 +718,7 @@ void extr_unload()
|
|||
lcd_print(" ");
|
||||
lcd_print(mmu_extruder + 1);
|
||||
|
||||
current_position[E_AXIS] -= 80;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 2500 / 60, active_extruder);
|
||||
st_synchronize();
|
||||
filament_ramming();
|
||||
|
||||
mmu_command(MMU_CMD_U0);
|
||||
// get response
|
||||
|
@ -986,4 +1039,4 @@ void mmu_eject_filament(uint8_t filament, bool recover)
|
|||
{
|
||||
puts_P(PSTR("Filament nr out of range!"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue