New experimental parameter to adjust initial loading speed of the filament from the nozzle

This commit is contained in:
Lukas Matena 2018-08-14 16:23:23 +02:00
parent 09ce6c62ea
commit 74e807f89b
7 changed files with 20 additions and 5 deletions

View file

@ -793,7 +793,7 @@ void WipeTowerPrusaMM::toolchange_Unload(
float turning_point = (!m_left_to_right ? xl : xr ); float turning_point = (!m_left_to_right ? xl : xr );
float total_retraction_distance = m_cooling_tube_retraction + m_cooling_tube_length/2.f - 15.f; // the 15mm is reserved for the first part after ramming float total_retraction_distance = m_cooling_tube_retraction + m_cooling_tube_length/2.f - 15.f; // the 15mm is reserved for the first part after ramming
writer.suppress_preview() writer.suppress_preview()
.retract(15.f, 5000.f) // feedrate 5000mm/min = 83mm/s .retract(15.f, m_filpar[m_current_tool].unloading_speed_start * 60.f) // feedrate 5000mm/min = 83mm/s
.retract(0.70f * total_retraction_distance, 1.0f * m_filpar[m_current_tool].unloading_speed * 60.f) .retract(0.70f * total_retraction_distance, 1.0f * m_filpar[m_current_tool].unloading_speed * 60.f)
.retract(0.20f * total_retraction_distance, 0.5f * m_filpar[m_current_tool].unloading_speed * 60.f) .retract(0.20f * total_retraction_distance, 0.5f * m_filpar[m_current_tool].unloading_speed * 60.f)
.retract(0.10f * total_retraction_distance, 0.3f * m_filpar[m_current_tool].unloading_speed * 60.f) .retract(0.10f * total_retraction_distance, 0.3f * m_filpar[m_current_tool].unloading_speed * 60.f)

View file

@ -66,8 +66,8 @@ public:
// Set the extruder properties. // Set the extruder properties.
void set_extruder(size_t idx, material_type material, int temp, int first_layer_temp, float loading_speed, void set_extruder(size_t idx, material_type material, int temp, int first_layer_temp, float loading_speed,
float unloading_speed, float delay, int cooling_moves, float cooling_initial_speed, float unloading_speed, float unloading_speed_start, float delay, int cooling_moves,
float cooling_final_speed, std::string ramming_parameters, float nozzle_diameter) float cooling_initial_speed, float cooling_final_speed, std::string ramming_parameters, float nozzle_diameter)
{ {
//while (m_filpar.size() < idx+1) // makes sure the required element is in the vector //while (m_filpar.size() < idx+1) // makes sure the required element is in the vector
m_filpar.push_back(FilamentParameters()); m_filpar.push_back(FilamentParameters());
@ -77,6 +77,7 @@ public:
m_filpar[idx].first_layer_temperature = first_layer_temp; m_filpar[idx].first_layer_temperature = first_layer_temp;
m_filpar[idx].loading_speed = loading_speed; m_filpar[idx].loading_speed = loading_speed;
m_filpar[idx].unloading_speed = unloading_speed; m_filpar[idx].unloading_speed = unloading_speed;
m_filpar[idx].unloading_speed_start = unloading_speed_start;
m_filpar[idx].delay = delay; m_filpar[idx].delay = delay;
m_filpar[idx].cooling_moves = cooling_moves; m_filpar[idx].cooling_moves = cooling_moves;
m_filpar[idx].cooling_initial_speed = cooling_initial_speed; m_filpar[idx].cooling_initial_speed = cooling_initial_speed;
@ -217,6 +218,7 @@ private:
int first_layer_temperature = 0; int first_layer_temperature = 0;
float loading_speed = 0.f; float loading_speed = 0.f;
float unloading_speed = 0.f; float unloading_speed = 0.f;
float unloading_speed_start = 0.f;
float delay = 0.f ; float delay = 0.f ;
int cooling_moves = 0; int cooling_moves = 0;
float cooling_initial_speed = 0.f; float cooling_initial_speed = 0.f;

View file

@ -201,6 +201,7 @@ bool Print::invalidate_state_by_config_options(const std::vector<t_config_option
|| opt_key == "first_layer_temperature" || opt_key == "first_layer_temperature"
|| opt_key == "filament_loading_speed" || opt_key == "filament_loading_speed"
|| opt_key == "filament_unloading_speed" || opt_key == "filament_unloading_speed"
|| opt_key == "filament_unloading_speed_start"
|| opt_key == "filament_toolchange_delay" || opt_key == "filament_toolchange_delay"
|| opt_key == "filament_cooling_moves" || opt_key == "filament_cooling_moves"
|| opt_key == "filament_minimal_purge_on_wipe_tower" || opt_key == "filament_minimal_purge_on_wipe_tower"
@ -1124,6 +1125,7 @@ void Print::_make_wipe_tower()
this->config.first_layer_temperature.get_at(i), this->config.first_layer_temperature.get_at(i),
this->config.filament_loading_speed.get_at(i), this->config.filament_loading_speed.get_at(i),
this->config.filament_unloading_speed.get_at(i), this->config.filament_unloading_speed.get_at(i),
this->config.filament_unloading_speed_start.get_at(i),
this->config.filament_toolchange_delay.get_at(i), this->config.filament_toolchange_delay.get_at(i),
this->config.filament_cooling_moves.get_at(i), this->config.filament_cooling_moves.get_at(i),
this->config.filament_cooling_initial_speed.get_at(i), this->config.filament_cooling_initial_speed.get_at(i),

View file

@ -482,6 +482,14 @@ PrintConfigDef::PrintConfigDef()
def->min = 0; def->min = 0;
def->default_value = new ConfigOptionFloats { 90. }; def->default_value = new ConfigOptionFloats { 90. };
def = this->add("filament_unloading_speed_start", coFloats);
def->label = L("EXPERIMENTAL: Unloading speed at the start");
def->tooltip = L("Speed used for unloading the tip of the filament immediately after ramming. ");
def->sidetext = L("mm/s");
def->cli = "filament-unloading-speed-start=f@";
def->min = 0;
def->default_value = new ConfigOptionFloats { 83. };
def = this->add("filament_toolchange_delay", coFloats); def = this->add("filament_toolchange_delay", coFloats);
def->label = L("Delay after unloading"); def->label = L("Delay after unloading");
def->tooltip = L("Time to wait after the filament is unloaded. " def->tooltip = L("Time to wait after the filament is unloaded. "

View file

@ -530,6 +530,7 @@ public:
ConfigOptionFloats filament_loading_speed; ConfigOptionFloats filament_loading_speed;
ConfigOptionFloats filament_load_time; ConfigOptionFloats filament_load_time;
ConfigOptionFloats filament_unloading_speed; ConfigOptionFloats filament_unloading_speed;
ConfigOptionFloats filament_unloading_speed_start;
ConfigOptionFloats filament_toolchange_delay; ConfigOptionFloats filament_toolchange_delay;
ConfigOptionFloats filament_unload_time; ConfigOptionFloats filament_unload_time;
ConfigOptionInts filament_cooling_moves; ConfigOptionInts filament_cooling_moves;
@ -596,6 +597,7 @@ protected:
OPT_PTR(filament_loading_speed); OPT_PTR(filament_loading_speed);
OPT_PTR(filament_load_time); OPT_PTR(filament_load_time);
OPT_PTR(filament_unloading_speed); OPT_PTR(filament_unloading_speed);
OPT_PTR(filament_unloading_speed_start);
OPT_PTR(filament_unload_time); OPT_PTR(filament_unload_time);
OPT_PTR(filament_toolchange_delay); OPT_PTR(filament_toolchange_delay);
OPT_PTR(filament_cooling_moves); OPT_PTR(filament_cooling_moves);

View file

@ -314,8 +314,8 @@ const std::vector<std::string>& Preset::filament_options()
static std::vector<std::string> s_opts { static std::vector<std::string> s_opts {
"filament_colour", "filament_diameter", "filament_type", "filament_soluble", "filament_notes", "filament_max_volumetric_speed", "filament_colour", "filament_diameter", "filament_type", "filament_soluble", "filament_notes", "filament_max_volumetric_speed",
"extrusion_multiplier", "filament_density", "filament_cost", "extrusion_multiplier", "filament_density", "filament_cost",
"filament_loading_speed", "filament_load_time", "filament_unloading_speed", "filament_unload_time", "filament_toolchange_delay", "filament_loading_speed", "filament_load_time", "filament_unloading_speed", "filament_unloading_speed_start", "filament_unload_time",
"filament_cooling_moves", "filament_cooling_initial_speed", "filament_cooling_final_speed", "filament_ramming_parameters", "filament_toolchange_delay", "filament_cooling_moves", "filament_cooling_initial_speed", "filament_cooling_final_speed", "filament_ramming_parameters",
"filament_minimal_purge_on_wipe_tower", "temperature", "first_layer_temperature", "bed_temperature", "first_layer_bed_temperature", "filament_minimal_purge_on_wipe_tower", "temperature", "first_layer_temperature", "bed_temperature", "first_layer_bed_temperature",
"fan_always_on", "cooling", "min_fan_speed", "max_fan_speed", "bridge_fan_speed", "disable_fan_first_layers", "fan_below_layer_time", "fan_always_on", "cooling", "min_fan_speed", "max_fan_speed", "bridge_fan_speed", "disable_fan_first_layers", "fan_below_layer_time",
"slowdown_below_layer_time", "min_print_speed", "start_filament_gcode", "end_filament_gcode","compatible_printers", "compatible_printers_condition", "slowdown_below_layer_time", "min_print_speed", "start_filament_gcode", "end_filament_gcode","compatible_printers", "compatible_printers_condition",

View file

@ -1292,6 +1292,7 @@ void TabFilament::build()
optgroup = page->new_optgroup(_(L("Toolchange parameters with single extruder MM printers"))); optgroup = page->new_optgroup(_(L("Toolchange parameters with single extruder MM printers")));
optgroup->append_single_option_line("filament_loading_speed"); optgroup->append_single_option_line("filament_loading_speed");
optgroup->append_single_option_line("filament_unloading_speed"); optgroup->append_single_option_line("filament_unloading_speed");
optgroup->append_single_option_line("filament_unloading_speed_start");
optgroup->append_single_option_line("filament_load_time"); optgroup->append_single_option_line("filament_load_time");
optgroup->append_single_option_line("filament_unload_time"); optgroup->append_single_option_line("filament_unload_time");
optgroup->append_single_option_line("filament_toolchange_delay"); optgroup->append_single_option_line("filament_toolchange_delay");