Одновременный нагрев экструдера и стола при запуске печати

Я заметил, что если я печатаю из Cura без предварительного нагрева принтера, то он сначала поднимет температуру стола, а затем и температуру экструдера. G-код, который он генерирует:

M140 S55 ; установите температуру стола на 55 С
M105 ; сообщить температуру
M190 S55 ; подождите, пока температура стола достигнет 55 C
M104 S210 ; установите температуру хотенда на 210 C
M105 ; сообщить температуру
M109 S210 ; подождите, пока температура хотенда не достигнет 210 C

Функция "Предварительного нагрева" Cura предположительно отправляет команды "установить температуру" без соответствующей команды "ждать".

Не было бы более эффективным сделать что-то вроде этого:

M104 S210 ; установите температуру хотенда на 210 C
M140 S55 ; установите температуру стола на 55 С
M105 ; сообщить температуру
M109 S210 ; подождите, пока температура хотенда не достигнет 210 C
M105 ; сообщить температуру
M190 S55 ; подождите, пока температура стола достигнет 55 C

Затем стол и экструдер нагреваются одновременно, и мы ждем более высокой температуры сначала одного, предполагая, что другой тем временем достигнет своей целевой температуры.

Если это правильно, то есть ли способ установить это в Cura, или мне нужно будет отправить патч?

, 👍11

Обсуждение

Патч не нужен, просто добавьте его в свой стартовый G-код, работает нормально. Я использую его в течение некоторого времени, используя держатели мест в Куре. Я отправлю ответ, когда буду за своим настольным компьютером. Обратите внимание, что Slic3r позволяет арифметику на держателях мест, что еще более мощно. Я позволяю своему столу нагреваться до 75%, а затем начинаю нагревать hotend, в то время как стол продолжает нагреваться до 100 %; это приводит к тому, что стол и hotend достигают своей конечной температуры одновременно., @0scar

Стол обычно работает намного медленнее, его датчик температуры менее точен и не имеет никаких побочных эффектов, если он остается при заданной температуре в течение некоторого времени, в то время как хотенд быстро нагревается и начинает протекать пластик, как только он нагревается. Последовательность фазы прогрева позволяет стабилизировать температуру рабочего стола и немедленно начать печать., @Simon Richter

По моему опыту, FWIW (Ender 3 с PLA, TPU и PETG) занимает примерно одинаковое количество времени. С помощью PETG экстремальная температура рабочего стола может занять немного больше времени. Это может указывать на то, что я должен лучше настроить PID для hotend, так как последние 10 градусов нагрева hotend занимают чрезмерно много времени., @R.. GitHub STOP HELPING ICE

Я согласен с Саймоном Рихтером. Время добавляет всего несколько минут к общей сумме, которая обычно составляет часы. Это предотвращает утечку горячей воды, а также нагревание материала слишком долго, что может привести к засорению. Температура стола и корпуса стабилизируется, а также источник питания принтера менее напряжен., @Hacky

Это хорошо работает в моем Cura 4.8, но не в Creality Slicer 1.2.3. По какой-то причине Creality Slicer 1.2.3 полностью игнорирует команды M140 и M104. Я пробовал разные варианты (например, "M140 S60" "M140 S{material_bed_temperature}" "M140 S{material_bed_temperature_layer_0}" и ни один из них не работает с срезом Creality 1.2.3. У кого-нибудь есть аналогичный опыт или исправление для команд M104 и M140 в срезе Creality 1.2.3?, @Thomas Wideman


4 ответа


Лучший ответ:

10

Это может быть достигнуто с помощью адаптаций start G-code, это не требует никаких изменений программного обеспечения. Cura и большинство слайсеров имеют возможность использовать заполнители (в основном переменные или, может быть, лучше: константы). Эти заполнители заменяются правильным значением при нарезке.

Чтобы последовательно нагревать стол и хотенд, вам нужно будет добавить следующее в свой стартовый G-код:

M117 Heating bed 1st...
M190 S{material_bed_temperature_layer_0}
M117 Heating core 1st...
M109 S{material_print_temperature_layer_0}

Для одновременного нагрева необходимо добавить:

M140 S{material_bed_temperature_layer_0} ; установите температуру стола, например, на 55 °C и продолжайте
M104 S{material_print_temperature_layer_0} ; установите температуру хотенда, например, на 210 °C и продолжайте
M190 S{material_bed_temperature_layer_0} ; дождитесь, пока температура рабочего стола достигнет, например, 55 °C
M109 S{material_print_temperature_layer_0} ; дождитесь, пока температура хотенда достигнет, например, 210 °C

Обратите внимание, что Cura очень ограничена в использовании заполнителей, например Slic3r позволяет выполнять арифметику с использованием заполнителей. Следующий пример показывает нагревание стола сначала до температуры первого слоя стола минус 10 градусов Цельсия; затем hotend начинает нагреваться, а heat desk начинает дальнейший нагрев до конечной температуры. Для моей машины это приводит к тому, что стол и хотенд находятся при конечной температуре одновременно, так что время не теряется впустую и печать может начаться.

M117 Heating bed...
M190 S{[first_layer_bed_temperature]-10}
M140 S[first_layer_bed_temperature]
M117 Heating core...
M109 S[first_layer_temperature_0]
M190 S[first_layer_bed_temperature]

,

Да, я забыл, что это тоже вариант и, вероятно, лучший для людей, использующих Cura через графический интерфейс, поскольку он не требует восстановления чего-либо из исходного кода., @R.. GitHub STOP HELPING ICE

Может ли это действительно сработать? Регистрация 4.8, и код для обогрева рабочего стола и hotend *перед* пользовательским "стартовым G-кодом", поэтому он в любом случае сначала нагреется "Лечащим способом", независимо от того, что вы включили в свой исходный код. Или мне не хватает sth?, @Arek


3

У меня есть открытый отчет об ошибке/запрос функции для этого. По-видимому, Cura не делает этого, потому что некоторые из принтеров Ultimaker имеют недостаточные источники питания, которые отключатся, если вы попытаетесь сделать это одновременно. Я носил патч (обратите внимание, что это против CuraEngine, а не GUI Cura), который исправляет это:

diff --git a/src/FffGcodeWriter.cpp b/src/FffGcodeWriter.cpp
index de3c771c..ced22017 100644
--- a/src/FffGcodeWriter.cpp
+++ b/src/FffGcodeWriter.cpp
@@ -500,7 +500,7 @@ void FffGcodeWriter::processInitialLayerTemperature(const SliceDataStorage& stor
                 const Temperature bed_temp = scene.current_mesh_group->settings.get<Temperature>("material_bed_temperature_layer_0");
                 if (bed_temp != 0)
                 {
-                    gcode.writeBedTemperatureCommand(bed_temp, scene.current_mesh_group->settings.get<bool>("material_bed_temp_wait"));
+                    gcode.writeBedTemperatureCommand(bed_temp, false);
                 }
             }
         }
@@ -547,6 +547,18 @@ void FffGcodeWriter::processInitialLayerTemperature(const SliceDataStorage& stor
                 }
             }
         }
+
+        if (scene.current_mesh_group->settings.get<bool>("material_bed_temp_prepend"))
+        {
+            if (scene.current_mesh_group->settings.get<bool>("machine_heated_bed"))
+            {
+                const Temperature bed_temp = scene.current_mesh_group->settings.get<Temperature>("material_bed_temperature_layer_0");
+                if (bed_temp != 0)
+                {
+                    gcode.writeBedTemperatureCommand(bed_temp, scene.current_mesh_group->settings.get<bool>("material_bed_temp_wait"));
+                }
+            }
+        }
     }
 }
,

Спасибо! И спасибо за мусл., @rgov

@rgov Если вы используете Cura через графический интерфейс, этот ответ не нужен, просто исправьте это с помощью правильного start G-кода., @0scar

Это не ошибка. Я согласен с Саймоном Рихтером. Это время добавляет всего несколько минут к общему количеству, которое обычно составляет часы. Это предотвращает вытекание горячей части, а также слишком длительное нагревание материала, которое может привести к засорению. Температура рабочего стола и корпуса стабилизируется, а также источник питания принтера менее напряжен., @Hacky

@Hacky: "Обычно часы" очень специфичны для использования. Большинство моих отпечатков менее 20 минут, некоторые всего за 5 минут. "Несколько минут" - это огромные относительные накладные расходы на это., @R.. GitHub STOP HELPING ICE

"Обычно часы" не относятся к вашим конкретным задачам. Я имею в виду остальной мир, и это может быть причиной, по которой Кура пошел на такой компромисс. Однако должна быть возможность начать нагрев всех элементов как можно скорее. По крайней мере, вы получили свою конкретную сборку, адаптированную к вашим потребностям., @Hacky

@Hacky О ваших рассуждениях: "Это предотвращает утечку горячей точки". Все как раз наоборот. Я не знаю ни одной нити, которая плавилась бы до почти вдвое большей максимальной температуры, при которой используется нагреваемый стол. Обычно для обогрева горячей зоны требуется гораздо больше, чем для стола. Таким образом, невозможно, чтобы горячая точка просочилась до того, как стол достигнет заданной температуры, при условии, что они оба начнут нагреваться одновременно. "а также материал слишком долго". Принтер начнет печать сразу же, как только горячая точка достигнет заданной температуры. В этот момент рабочий стол давно достиг бы своей температуры, как было указано выше., @Pere

"Температура рабочего стола и температура корпусов стабилизируются". Ну, они бы "стабилизировались" точно так же, если бы hotend начал нагреваться в одно и то же время; просто быстрее. Но в любом случае большинство принтеров продаются без корпуса, поэтому притворяться, что это оправдание для оправдания ненужного, абсурдного и неэффективного дополнительного времени нагрева, - это мнение. Если вы купили или сделали отдельный корпус и вас беспокоит "стабилизирующая температура", то вам следует предусмотреть специальную систему отопления для внутренней части самого корпуса., @Pere

"Источник питания менее напряжен". Вы хотите сказать, что если мой источник питания рассчитан на 600 Вт, и я увеличу его до 300, одновременно включив рабочий стол и горячую панель при предварительном нагреве, я перенапрягу его? Но в любом случае это будет на таком уровне для всей печати, так что... вы думаете, это важно? Должен ли я купить источник питания с номинальной мощностью, возможно, вдвое большей, и потратить на него вдвое больше? Разве не было бы хорошо сократить его срок службы, в крайнем случае, вдвое, а затем купить новый запас за половину цены с двойным рейтингом? Нужно ли мне покупать Ferrari для езды со скоростью 80 км/ч?, @Pere

"Я имею в виду остальной мир, что может быть причиной". Что ж, вы должны согласиться со мной, что это довольно умозрительная фраза. Вы вступаете в эзотерическое поле, притворяясь, что знаете, для чего люди используют свои принтеры. А также не забывайте, что существуют машины разного размера и работающие с разной скоростью, а также детали с различными требованиями к детализации/скорости печати. Это ошибка или, по меньшей мере, плохой дизайн программного обеспечения. Это похоже на то, как если бы максимальная температура hotend была ограничена в Cura до 210º, потому что некоторые принтеры Ultimaker были созданы для печати только PLA., @Pere

Расслабься, отец, я просто пытаюсь помочь, основываясь на своем опыте. Это вовсе не абсурд. Просто объясняю, почему Кура может это сделать. 1. Мой hotend нагревается намного быстрее, чем стол, и код Cura предотвращает просачивание. Может быть, не в твоем случае. 2. Более длительное нагревание стабилизирует температуру корпуса. С этим не поспоришь. 3. Источник питания наиболее напряжен при запуске, потому что ПИД-регуляторы температуры будут полностью заряжены, чтобы как можно скорее достичь желаемой температуры. Во время печати источник питания меньше подвергается нагрузке из-за нагрева. Вам нужен Ferrari, чтобы разогнаться до 80 км/ч за 3 секунды., @Hacky

@Хаки, я тоже. Я привел контрпримеры ваших рассуждений, так что вы больше не можете спорить, что может быть использовано для объяснения поведения Куры. 1) В моем случае все наоборот. Итак, опять же, вы не можете обязать, скажем, половину пользователей использовать вариант, который им не выгоден. 2) Я уже утверждал это. Вы могли бы использовать, например, внешний обогреватель. Или нет. Но как только камера достигнет температуры, больше времени вообще ничего полезного не добавит. Может быть, температура корпуса будет хорошей после 3 минут комбинированного предварительного нагрева, чтобы что-то сказать. 3) Не проблема в том, что поставка предназначена для управления этим., @Pere


0

Это немного раздражает, то, что Кюра делает для меня, заставляет ждать. На старте G-кода у меня есть:

; Ender 3 Custom Start G-код
G92 E0 ; Сброс Экструдера
;*** Запуск Предварительного Нагрева Двойного Сопла/Слоя ***
M140 S60 ; начните предварительный нагрев стола
M104 S200 T0 ; начать предварительный нагрев hotend
G28 ; главная страница
M190 S60 ; тепло для установки стола Cura 
M109 S200
;*** Конечный Предварительный Нагрев ***M420 S1; Уровень Стола Загрузочной сетки

Но на сгенерированном G-коде у меня есть:

;Сгенерировано с помощью Cura_SteamEngine 4.9.0
M140 S60
М105
M190 S60
M104 S200
М105
M109 S200
M82 ;абсолютный режим экструзии
; Ender 3 Custom Start G-code
G92 E0 ; Сброс Экструдера
;*** Запуск Предварительного Нагрева Двойного Сопла/Слоя ***
M140 S60 ; начните предварительный нагрев стола
M104 S200 T0 ; начать предварительный нагрев hotend
G28 ; главная страница
M190 S60 ; тепло для установки стола Cura 
M109 S200

В конце концов я меняю его прямо на G-код, что такое боль

,

1
    import os
    
    for filename in os.listdir():
        if filename.endswith(".gcode"):
            with open(filename, "r") as file:
                lines = file.readlines()
            for i in range(len(lines)):
                if "M140 S" in lines[i]:
                    lines[i] = "M140 S50\n"
                elif "M104 S" in lines[i]:
                    lines[i] = "M190 S50\n"
                elif "M190 S" in lines[i]:
                    lines[i] = "M104 S185\n"
                elif "M109 S" in lines[i]:
                    lines[i] = "M109 S185\n"
            lines = [line for line in lines if "M105" not in line] # удалить первые две строки M105
            with open(filename, "w") as file:
                file.writelines(lines)

Я написал приведенный выше скрипт Python для массового редактирования своих G-кодов для плоскости, которую я создаю. Это приводит к одновременному нагреву экструдера и стола. Он меняет места, где появляется код, в порядке, указанном @0scar выше. И удаляет временные строки захвата M105. Благодаря этому мои отпечатки начинаются как минимум на несколько минут быстрее, что удобно, когда у вас много дел.

  1. Установите python3 в Windows или Linux,
  2. Создайте файл с именем something.py
  3. Вставьте код выше и сохраните
  4. Переместите скрипт в ту же папку, что и G-код.
  5. Откройте cmd, PowerShell или терминал Linux и введите python3 something.py или python3 ./something.py

Он одновременно обновит все G-коды для обогрева. Для самостоятельной модификации отредактируйте временные параметры: S50 для стола и S185 для экструдера.

,