Ограничение печати объёмным расходом

Приём из методички K3D: «лучше всего поставить большие ограничения скоростей движения печатающей головы в слайсере, а реальную скорость печати ограничивать изменением ограничения объёмного расхода». Выглядит как экзотика, но это самый практичный способ держать профили в порядке, и вот почему.

Скорость в мм/с — не свойство материала

Расплав в сопле не знает, с какой скоростью едет голова. Он знает, сколько кубических миллиметров в секунду через него проталкивают. Связь простая:

расход [мм³/с] ≈ ширина линии [мм] × толщина слоя [мм] × скорость [мм/с]

Отсюда неприятное следствие: одна и та же скорость означает разную нагрузку на хотэнд в разных профилях.

ПрофильШирина × слой200 мм/с — это300 мм/с — это
«качество»0.42 × 0.20 = 0.084 мм²16.8 мм³/с25.2 мм³/с
«техничка»0.60 × 0.20 = 0.120 мм²24.0 мм³/с36.0 мм³/с
крупное сопло0.90 × 0.30 = 0.270 мм²54.0 мм³/с81.0 мм³/с

Если ограничивать скоростями, то каждое сочетание «материал × профиль» придётся подбирать заново, и любое изменение ширины линии тихо ломает подбор. Если ограничивать расходом — один лимит на катушку работает с любым профилем печати, потому что слайсер сам пересчитает его в мм/с под текущую геометрию.

Практическое следствие: профиль печати становится универсальным

Именно это позволяет держать один профиль печати на все материалы. Профиль печати задаёт геометрию (ширину линии, слой, стенки, заполнение) — она от пластика не зависит. Всё материальное — температуры, обдув, камера, лимит расхода — живёт в профиле филамента. Заводить парные профили «процесс + филамент» под каждый пластик не нужно и вредно: они разъезжаются.

Замер: цифры скоростей в профиле могут не достигаться вовсе

Я разобрал готовый gcode по каждой экструзионной линии: брал текущую подачу F, считал длину хода по XY и объём по дельте E, и смотрел, во что упирается каждый тип экструзии. Профиль печати заявлял 200–300 мм/с, лимит расхода филамента стоял 16 мм³/с.

Тип экструзииВ профилеФактРасходЧем ограничено
Внешняя стенка200 мм/с15116.0 мм³/срасходом
Внутренняя стенка300 мм/с15116.0 мм³/срасходом
Разреженное заполнение270 мм/с15116.0 мм³/срасходом
Сплошное заполнение250 мм/с17816.0 мм³/срасходом
Верхняя поверхность200 мм/с15116.0 мм³/срасходом
Первый слой и кайма105 мм/с10511.1 мм³/сскоростью
Внутренние мосты50 мм/с506.0 мм³/сскоростью

Ни одна из «страшных» цифр 200–300 мм/с не достигается: всё, что печатается толстой линией, упирается ровно в потолок расхода. Зато первый слой и мосты режутся именно скоростями — там расход низкий сам по себе, и лимит до них не дотягивается.

Вывод, который стоит держать в голове при чтении чужих профилей: большие числа скоростей в профиле — не признак «агрессивных настроек», а намеренно неработающие потолки. Смотреть надо на лимит расхода.

Чего расход НЕ ограничивает

  • Ускорения. Они не связаны с подачей вообще, и на детали со множеством коротких сегментов именно они определяют время печати, а не потолок расхода.
  • Перемещения без экструзии. Скорость холостых ходов — отдельная настройка.
  • Тонкие линии. Заполнение щелей, мелкие периметры, мосты — там сечение маленькое, и связывает скорость.

Именно поэтому снижение лимита расхода стоит гораздо меньше, чем кажется по арифметике. Мой замер на кубе 60×60×60 мм, менялся только лимит:

Лимит расходаСкорость стенокВремя печати
16 мм³/с151 мм/с2 ч 22 м
12 мм³/с113 мм/с2 ч 38 м
10 мм³/с94 мм/с2 ч 52 м
8 мм³/с76 мм/с3 ч 16 м

Вдвое меньший расход — +37 % времени, а не вдвое. Половину пути держат разгоны и смена направления, на которые потолок расхода не влияет.

Какое число ставить

Лимит расхода можно померить тензодатчиком в сопле, а не брать из вендорского профиля: Замер максимального объёмного потока тензодатчиком. Гоча в том, что измеренный максимум — это потолок безопасности, а не оптимум прочности: на нём расплав работает у самой границы, где перестаёт успевать. Для нагруженных деталей число режут — см. раздел Безопасный максимум ≠ поток для прочности.

Как самому посчитать реальный расход по срезу

Слайсер печатает подачу F только когда она меняется, поэтому «максимум F по строкам с E» врёт — надо тянуть текущее значение через все строки. Псевдокод разбора:

F = 0; x, y = None
для каждой строки G0/G1:
    если есть F  ->  F = значение / 60          # мм/мин -> мм/с
    если есть E>0 и ход по XY больше ~0.5 мм:
        d = длина хода по XY
        расход = E * площадь_сечения_прутка / (d / F)
    запомнить x, y

Площадь сечения прутка 1.75 мм — 2.405 мм². Группировать результат по маркерам ;TYPE: — так видно, какой тип экструзии чем ограничен.

Гочи

  • Первая версия моего разбора дала «30 мм/с у всех типов» и это был артефакт: я брал F только со строк, где одновременно есть E, а таких строк мало и они соответствуют медленным участкам. Признак ошибки — подозрительно одинаковое число у всех типов сразу.
  • Лимит расхода — свойство пары «катушка + температура», а не материала вообще: замер при 220 и при 240 даст разные числа, фиксировать надо вместе с температурой.
  • Занижённый лимит режет скорости молча, без предупреждений в интерфейсе. Профиль со скоростью 230 мм/с при лимите 14 реально печатает около 172 — и в интерфейсе всё равно написано 230.

Источники