ENH: add protection for chamber temperature
As title. Also add time for waiting chamber temp in printing time Signed-off-by: xun.zhang <xun.zhang@bambulab.com> Change-Id: I8054080d2e8821e421a6d03222b8b25365b5977f
This commit is contained in:
parent
7a439c523f
commit
5e23f73866
|
@ -1793,6 +1793,7 @@ void GCodeProcessor::process_gcode_line(const GCodeReader::GCodeLine& line, bool
|
||||||
case '9':
|
case '9':
|
||||||
switch (cmd[3]) {
|
switch (cmd[3]) {
|
||||||
case '0': { process_M190(line); break; } // Wait bed temperature
|
case '0': { process_M190(line); break; } // Wait bed temperature
|
||||||
|
case '1': { process_M191(line); break; } // Wait chamber temperature
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
@ -3718,6 +3719,15 @@ void GCodeProcessor::process_M190(const GCodeReader::GCodeLine& line)
|
||||||
m_highest_bed_temp = m_highest_bed_temp < (int)new_temp ? (int)new_temp : m_highest_bed_temp;
|
m_highest_bed_temp = m_highest_bed_temp < (int)new_temp ? (int)new_temp : m_highest_bed_temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GCodeProcessor::process_M191(const GCodeReader::GCodeLine& line)
|
||||||
|
{
|
||||||
|
float chamber_temp = 0;
|
||||||
|
const float wait_chamber_temp_time = 720.0;
|
||||||
|
// BBS: when chamber_temp>40,caculate time required for heating
|
||||||
|
if (line.has_value('S', chamber_temp) && chamber_temp > 40)
|
||||||
|
simulate_st_synchronize(wait_chamber_temp_time);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void GCodeProcessor::process_M201(const GCodeReader::GCodeLine& line)
|
void GCodeProcessor::process_M201(const GCodeReader::GCodeLine& line)
|
||||||
{
|
{
|
||||||
|
|
|
@ -827,6 +827,9 @@ namespace Slic3r {
|
||||||
//BBS: wait bed temperature
|
//BBS: wait bed temperature
|
||||||
void process_M190(const GCodeReader::GCodeLine& line);
|
void process_M190(const GCodeReader::GCodeLine& line);
|
||||||
|
|
||||||
|
//BBS: wait chamber temperature
|
||||||
|
void process_M191(const GCodeReader::GCodeLine& line);
|
||||||
|
|
||||||
// Set max printing acceleration
|
// Set max printing acceleration
|
||||||
void process_M201(const GCodeReader::GCodeLine& line);
|
void process_M201(const GCodeReader::GCodeLine& line);
|
||||||
|
|
||||||
|
|
|
@ -3183,7 +3183,9 @@ void PrintConfigDef::init_fff_params()
|
||||||
def = this->add("chamber_temperatures", coInts);
|
def = this->add("chamber_temperatures", coInts);
|
||||||
def->label = L("Chamber temperature");
|
def->label = L("Chamber temperature");
|
||||||
def->tooltip = L("By opening chamber_temperature compensation, the heating components will operate to elevate the chamber temperature."
|
def->tooltip = L("By opening chamber_temperature compensation, the heating components will operate to elevate the chamber temperature."
|
||||||
"This can help suppress or reduce warping for high-temperature materials and potentially lead to higher interlayer bonding strength");
|
"This can help suppress or reduce warping for high-temperature materials and potentially lead to higher interlayer bonding strength."
|
||||||
|
"While for PLA, PETG, TPU, PVA and other low temperature materials, the actual chamber temperature should not be high to avoid cloggings,"
|
||||||
|
"so extra chamber temperature compensation is not needed, and 0 is highly recommended");
|
||||||
def->sidetext = L("°C");
|
def->sidetext = L("°C");
|
||||||
def->full_label = L("Chamber temperature during print.0 means do not open compensation.Don't open it for low-temperature filaments like PLA, PETG, TPU");
|
def->full_label = L("Chamber temperature during print.0 means do not open compensation.Don't open it for low-temperature filaments like PLA, PETG, TPU");
|
||||||
def->min = 0;
|
def->min = 0;
|
||||||
|
|
|
@ -162,6 +162,32 @@ void ConfigManipulation::check_filament_max_volumetric_speed(DynamicPrintConfig
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ConfigManipulation::check_chamber_temperature(DynamicPrintConfig* config)
|
||||||
|
{
|
||||||
|
const static std::map<std::string, int>recommend_temp_map = {
|
||||||
|
{"PLA",45},
|
||||||
|
{"PLA-CF",45},
|
||||||
|
{"PVA",45},
|
||||||
|
{"TPU",50},
|
||||||
|
{"PETG",55},
|
||||||
|
{"PETG-CF",55}
|
||||||
|
};
|
||||||
|
bool support_chamber_temp_control=GUI::wxGetApp().preset_bundle->printers.get_selected_preset().config.opt_bool("support_chamber_temp_control");
|
||||||
|
if (support_chamber_temp_control&&config->has("chamber_temperatures")) {
|
||||||
|
std::string filament_type = config->option<ConfigOptionStrings>("filament_type")->get_at(0);
|
||||||
|
auto iter = recommend_temp_map.find(filament_type);
|
||||||
|
if (iter!=recommend_temp_map.end()) {
|
||||||
|
if (iter->second < config->option<ConfigOptionInts>("chamber_temperatures")->get_at(0)) {
|
||||||
|
wxString msg_text = wxString::Format(_L("Current chamber temperature is higher than the material's safe temperature,it may result in material softening and clogging.The maximum safe temperature for the material is %d"), iter->second);
|
||||||
|
MessageDialog dialog(m_msg_dlg_parent, msg_text, "", wxICON_WARNING | wxOK);
|
||||||
|
is_msg_dlg_already_exist = true;
|
||||||
|
dialog.ShowModal();
|
||||||
|
is_msg_dlg_already_exist = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, const bool is_global_config)
|
void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, const bool is_global_config)
|
||||||
{
|
{
|
||||||
// #ys_FIXME_to_delete
|
// #ys_FIXME_to_delete
|
||||||
|
|
|
@ -78,6 +78,7 @@ public:
|
||||||
void check_nozzle_temperature_initial_layer_range(DynamicPrintConfig* config);
|
void check_nozzle_temperature_initial_layer_range(DynamicPrintConfig* config);
|
||||||
void check_bed_temperature_difference(int bed_type, DynamicPrintConfig* config);
|
void check_bed_temperature_difference(int bed_type, DynamicPrintConfig* config);
|
||||||
void check_filament_max_volumetric_speed(DynamicPrintConfig *config);
|
void check_filament_max_volumetric_speed(DynamicPrintConfig *config);
|
||||||
|
void check_chamber_temperature(DynamicPrintConfig* config);
|
||||||
void set_is_BBL_Printer(bool is_bbl_printer) { is_BBL_Printer = is_bbl_printer; };
|
void set_is_BBL_Printer(bool is_bbl_printer) { is_BBL_Printer = is_bbl_printer; };
|
||||||
// SLA print
|
// SLA print
|
||||||
void update_print_sla_config(DynamicPrintConfig* config, const bool is_global_config = false);
|
void update_print_sla_config(DynamicPrintConfig* config, const bool is_global_config = false);
|
||||||
|
|
|
@ -2698,6 +2698,9 @@ void TabFilament::build()
|
||||||
else if (opt_key == "nozzle_temperature_initial_layer") {
|
else if (opt_key == "nozzle_temperature_initial_layer") {
|
||||||
m_config_manipulation.check_nozzle_temperature_initial_layer_range(&filament_config);
|
m_config_manipulation.check_nozzle_temperature_initial_layer_range(&filament_config);
|
||||||
}
|
}
|
||||||
|
else if (opt_key == "chamber_temperatures") {
|
||||||
|
m_config_manipulation.check_chamber_temperature(&filament_config);
|
||||||
|
}
|
||||||
|
|
||||||
on_value_change(opt_key, value);
|
on_value_change(opt_key, value);
|
||||||
};
|
};
|
||||||
|
@ -2868,7 +2871,7 @@ void TabFilament::toggle_options()
|
||||||
toggle_option(el, has_enable_overhang_bridge_fan);
|
toggle_option(el, has_enable_overhang_bridge_fan);
|
||||||
|
|
||||||
bool support_air_filtration = this->m_preset_bundle->printers.get_selected_preset().config.opt_bool("support_air_filtration");
|
bool support_air_filtration = this->m_preset_bundle->printers.get_selected_preset().config.opt_bool("support_air_filtration");
|
||||||
toggle_line("activate_air_filtration",support_air_filtration);
|
toggle_line("activate_air_filtration",is_BBL_printer && support_air_filtration);
|
||||||
|
|
||||||
for (auto elem : { "during_print_exhaust_fan_speed","complete_print_exhaust_fan_speed" })
|
for (auto elem : { "during_print_exhaust_fan_speed","complete_print_exhaust_fan_speed" })
|
||||||
toggle_line(elem, m_config->opt_bool("activate_air_filtration",0));
|
toggle_line(elem, m_config->opt_bool("activate_air_filtration",0));
|
||||||
|
@ -2886,7 +2889,7 @@ void TabFilament::toggle_options()
|
||||||
}
|
}
|
||||||
|
|
||||||
bool support_chamber_temp_control = this->m_preset_bundle->printers.get_selected_preset().config.opt_bool("support_chamber_temp_control");
|
bool support_chamber_temp_control = this->m_preset_bundle->printers.get_selected_preset().config.opt_bool("support_chamber_temp_control");
|
||||||
toggle_line("chamber_temperatures", support_chamber_temp_control);
|
toggle_line("chamber_temperatures", is_BBL_printer&&support_chamber_temp_control);
|
||||||
|
|
||||||
for (auto el :
|
for (auto el :
|
||||||
{"cool_plate_temp", "cool_plate_temp_initial_layer", "eng_plate_temp", "eng_plate_temp_initial_layer", "textured_plate_temp", "textured_plate_temp_initial_layer"})
|
{"cool_plate_temp", "cool_plate_temp_initial_layer", "eng_plate_temp", "eng_plate_temp_initial_layer", "textured_plate_temp", "textured_plate_temp_initial_layer"})
|
||||||
|
|
Loading…
Reference in New Issue