Увеличение скорости печати: оптимизация настроек

    Всем привет! Одна из самых больших проблем FDM 3д печати — это её скорость. Научить даже дешевый принтер печатать качественно не особо сложно: надо всего-лишь сделать всё параллельным и перпендикулярным чему нужно, а так же убрать все люфты и заедания, дальше дело только за настройками печати останется. Но вот заставить принтер печатать с хорошим качеством быстро уже не так легко. Вы можете выкручивать значение скорости перемещений в слайсере, увеличивать ускорения или ставить заоблачные значения рывков или подобных характеристик. Но довольно быстро печать просто упрётся в то, что перестанет хватать жёсткости рамы, направляющих или ремней, крутящего момента моторов или даже производительности нагревателя в хотэнде. И в этом случае для дальнейшего увеличения скорости придётся менять значимые части принтеров на более точные, жёсткие и производительные. А это уже не так дешево и подходит далеко не каждому печатнику. 

    К счастью, 3д печать, как и любой подобный процесс, хорошо подвергается оптимизации. Существует огромное количество параметров нарезки моделей и приёмов в 3д моделировании деталей для уменьшения времени печати. И в этой статье мы рассмотрим только настройки нарезки, которые не ухудшают качество моделей. Причём рассматривать я буду 4 слайсера: Cura, Prusaslicer, Simplify3d и KISSlicer.

Скрипты начала печати

    Начнём с того, с чего начинается и любая печать, то есть с скриптов, выполняемых перед печатью моделей. У большинства людей при запуске печати сначала нагревается стол, и только потом начинает греться хотэнд. Раньше это делали чтобы не перегружать блоки питания. Но сейчас почти на всех принтерах либо блоки питания взяты с большим запасом, либо грелка стола вообще питается в обход, то есть от 220 вольт переменного тока. Так что если у вас не какой-нибудь Tevo Tarantula Pro с малююююсеньким питальником, то в начальном скрипте вы можете прописать одновременный прогрев элементов. Лучше всего вставить этот код в самом начале, удалив все другие строчки с командами M104, M140, M109, M190

Скрипт для Cura:

M104 S{material_print_temperature_layer_0}
M140 S{material_bed_temperature_layer_0}
M109 S{material_print_temperature_layer_0}
M190 S{material_bed_temperature_layer_0}

Скрипт для Prusaslicer:

M104 S[first_layer_temperature]
M140 S[first_layer_bed_temperature]
M109 S[first_layer_temperature]
M190 S[first_layer_bed_temperature]

Скрипт для Simplify3d:

Во вкладке Temperature убрать галочки «wait for temperature controller to stabilize before begging build» для всех нагревателей. После этого в самое начало Starting script добавить код:

M190 S[bed0_temperature]
M109 S[extruder0_temperature]

Скрипт для KISSlicer:

M104 S<TEMP>
M140 S<BED>
M109 S<TEMP>
M190 S<BED>

Ширина линий

    После скриптов рассмотрим уже настройки печати. Первая из них — ширина линий. Большинство новичков почему-то воспринимают, что она обязательно должна быть равна диаметру сопла. И логика в этом есть: чем эти два параметра ближе друг к другу, тем стабильнее в целом идёт печать. Но на деле можно соплом, например, 0.4мм, довольно стабильно печатать шириной линии до 0.6-0.7мм. А если сопло хорошее и настройки подобрать, то и миллиметр не предел. И это раскрывает огромное количество возможностей для оптимизации.

    Самое банальное: если увеличить ширину линий, то для достижения той же толщины стенок модели потребуется меньше периметров, а это очень помогает при печати каких-нибудь тонкостенных коробок. При этом на заполнение, как сплошное, так и сетчатое, будет тратиться сильно меньше перемещений, а значит и времени. Конечно, при этом и детализация моделей чуть уменьшится, но качество модели и детализация всё-таки параметры разные. Для коробок всяких, кронштейнов и тому подобной технички чуть больший радиус скругления углов почти никогда не станет критичной потерей.

    При этом не обязательно чтобы ширина всех линий в модели была одинакова. Если не хотим терять детализацию, то можно увеличить ширину линий только заполнения, например. Конечно, экономия времени станет поменьше, но уже не будет влияния на качество, что хорошо. Раздельные настройки ширины разных типов линий есть в Cura, Prusaslicer и частично в KISSlicer.

    Еще один трюк, который часто можно применить к деталям с длинными тонкими элементами — подбор ширины линий для избавления от заполнения. Смотрите сами: если у нас есть подобного рода коробка с шириной стенки, например, 2,4 миллиметра, то при 2 периметрах по 0.4 миллиметра у нас посередине останется незанятый участок шириной 0,8 миллиметра. Слайсер в таком случае нарисует зигзаг для заполнения получившейся щели. И проблема в том, что этот самый зигзаг печатается из кучи мелких элементов с кучей поворотов, что очень не оптимально с точки зрения скорости. В этом случае если банально увеличить ширину линии до 0.6 миллиметра, то заполнение не потребуется вообще, и время на печать сократится очень сильно.

    Конечно, то же самое можно сделать увеличив количество периметров. Банально ставим 3, и получается нужная нам толщина стенки в 2.4 миллиметра. И относительно печати заполнения посередине это будет очень большая экономия времени. Но вот в сравнении с увеличением ширины линии не факт: зависит от того, сможет ли хотэнд плавить достаточное количество пластика в единицу времени, чтобы обеспечить большую ширину линии без замедления движения головы. Если да, то ширина будет быстрее, если нет, то надо считать для каждого случая отдельно.

Толщина слоя

    Еще одна вещь, которую многие предпочитают не трогать — толщина слоя. Часто люди ставят сопло 0.4мм, такую же ширину линии, и толщину слоя 0,2мм. то есть половину от ширины. В целом, это довольно оптимальное соотношение для прочности моделей и стабильности печати. Но на сопле 0.4 можно печатать слой и 0.3 миллиметра, что сократит общее количество слоёв в полтора раза, между прочим. А если увеличить ширину линии, то можно толщину поставить еще больше. Правда, тут уже прирост скорости будет не такой большой, так как чтобы через маленькое отверстие в сопле успевало пролезать достаточно пластика, скорее всего, придётся понижать скорость печати. Так что, опять же, считать надо для каждого конкретного случая.

    Но увеличение толщины слоя сделает пологие элементы очень ступенчатыми, что может не подойти многим. И тут есть решение. Некоторые слайсеры поддерживают динамическую толщину слоя. Иными словами, на вертикальных участках она будет увеличиваться, повышая скорость печати, а на пологих уменьшаться, давая более гладкую поверхность. В Cura такое есть, но многие жалуются, что работает криво. В Prusaslicer оно управляется вручную. В целом удобно, но требует приложения сил чтобы переходы были плавными и равномерными, что часто просто лениво делать. Больше всего мне нравится как эта функция реализована в KISSlicer: выставляете в параметре layer_thickness минимальную и максимальную толщину слоя в процентном соотношении от ширины линии, и он довольно корректно и плавно печатает модель. Красота.

    Так же к изменению толщины слоя отнесу печать заполнения или поддержек раз в 2 или даже 3 слоя. Прикол в том, что часто для обеспечения высокого качества поверхности приходится ставить очень малую толщину слоя, например, одну десятую миллиметра на сопле 0.4. Но оно же может спокойно печатать толщиной слоя 0.3, а заполнение и поддержки никто не увидит. Так что почему бы не заставить принтер печатать их как раз такой толщиной, экономя движения, а значит и время? В куре это управляется параметрами infill_layer_thickness и support_infill_layer_thickness, в prusaslicer и simplify3d — combine_infill_every, в kisslicer — stacked_layers.

Заполнение

    Далее разберёмся с заполнением. Конечно в большинстве случаев следует подбирать шаблон и плотность заполнения исходя из того, какая прочность необходима моделей. Но в художественной печати или в ненагруженных деталях заполнение используется скорее как поддержка для крышек. И тогда можно смело выбирать не самый крепкий, а самый быстрый шаблон.

    Какой же шаблон является самым быстрым? Тут прямо однозначного ответа нет, так как это зависит от множества параметров механики принтера. Но, обычно, довольно быстро печатается гироид и зигзаг. Прикол в том, что для обеспечения такого же расстояния между линиями как у обычной сетки, например, у этих шаблонов надо уменьшить плотность вдвое. В Cura эти шаблоны так и называются, Zig-Zag и Gyroid, в Prusaslicer — rectlinear и gyroid, в simplify3d есть только rectlinear, в KISSlicer — straight и gyroid.

    Так же отмечу, что в куре есть параметр connect_infill_lines или соединять_линии_заполнения. Из названия, по-моему, уже хорошо понятно уже что он делает, и это может сэкономить время почти на всех шаблонах заполнения. Суть в том, что вместо долгих ретрактов между концами линий заполнения, будет коротенькое перемещение с экструдированием, которое занимает меньше времени.

    Еще одна интересная функция есть только в Cura и Prusaslicer только. В Cura она называется infill_support или поддержка_заполнения, в Prusaslicer — infill_only_when_needed. При включении этих параметров слайсер начинает воспринимать заполнение прям совсем как поддержки и строит их только там, где периметры имеют большой угол нависания. В целом, может сэкономить времени и материала, но часто делает модель совсем непрочной.

    Последнее относящееся к заполнению — переменная его плотность. На момент съёмки ролика есть только в Cura и активируется настройкой параметра gradual_infill_steps. Значение этого параметра — это количество раз, которое плотность заполнение будет уменьшаться вдвое ближе к низу модели. Таким образом большая часть модели может печататься с очень низкой плотностью заполнения, а к крышке она будет подниматься до нужных процентов. В KISSlicer, кстати, отдельно такой функции нет, но он автоматически строит заполнение с средней плотностью перед крышками. Тоже помогает ставить на большей части модели заполнение с небольшой плотностью и не испытывать проблем с крышками.

Поддержки

    Часть модели, часто съедающая значительную часть времени — это поддержки. Почти все оптимизации относительно них касаются того, чтобы от них избавляться там, где можно. Конечно. в основном это относится к моделированию, а это мы будем рассматривать как-нибудь в следующих раз. Но и по настройкам есть что сказать.

    В первую очередь разберёмся с нависаниями. Попробуйте напечатать обычный тест нависаний и посмотреть до какого угла вас качество устраивает. Прикол в том, что многие принтеры имеют мощную систему охлаждения и способны печатать до градусов 60 или даже больше, а штатно в слайсерах стоит 45-50, обычно. Эта, казалось бы, небольшая разница на деле фильтрует очень большое количество поддержек и позволяет не строить их там, где они на самом деле не нужны.

    Вторая вещь, которая не требует поддержек — мостики. Если их правильно настроить, о чём я тоже планирую ролик снять, то можно печатать натянутые между двумя элементами горизонтальные дорожки длиной до 50 миллиметров или даже больше. В таком случае, зачем делать поддержки для них? Это только лишняя трата времени. Единственный слайсер, в котором можно автоматически определять мосты и не строить для них поддержки -Prusaslicer. В Cura и Simplify3d придётся вручную убирать поддержки, в KISSlicer с мостами и кастомными поддержками пока туго.

Скорость печати

    Далее большой раздел, который напрямую относится к нашей сегодняшней теме — скорость печати. Частенько в слайсерах по стандарту скорость печати внешних и внутренних периметров, сплошного заполнения и поддержек снижена, причём часто еще вдвое от скорости печати. Многие люди почему-то не трогают эти отношения, просто пропорционально увеличивая значения. 

И тут суть моего совета будет в том, что нет никакого правила, по которому отношения должны быть именно такими, какими они предстают в слайсерах по умолчанию. На деле никто не мешает вам печатать хоть все элементы с одинаковой большой скоростью, хоть даже ускоряться на поддержках, например. Просто вы должны подобрать для себя значения, при которых качество моделей не будет страдать, и всё.

Тот же совет я могу дать относительно скорости печати первого слоя. Есть такой приём, когда для лучшей адгезии модели к столу замедляют печать первого слоя или даже двух. Но если вы печатаете на хороший, цепкий клей пластиком, который легко к нему липнет — то зачем замедляться? Например, на UNI я для PLA, PETG, SBS и композитов ставлю скорость печати первого слоя миллиметров 60-80 в секунду, и всё прекрасно ложится и прилипает. Так что тут тоже поэкспериментируйте, нужно ли замедление это в целом.

Более продвинутая техника, которая может очень значительно снизить время печати, это управление ускорениями и рывками. Обычно ускорения печати в прошивке записывают оптимальные для печати внешних периметров, которые видно. Но многие принтеры могут печатать с сильно большими ускорениями давая незначительные косяки. И почему бы не увеличивать ускорения и рывки для внутренних периметров, заполнения или поддержек, например? В Cura управление ускорениями включается опцией enable_acceleration_control или включить_управление_ускорениями, и в выпадающем меню даёт возможность менять значения отдельно для каждого параметра. То же самое с рывками, только параметр называется enable_jerk_control или включить_управление_рывками. В Prusaslicer есть только управление ускорениями и доступно в профиле печати в вкладке infill. Важно, что работает это всё только на прошивке Marlin и совместимых по поддерживаемым командам. 

Комбинг

Ну и напоследок расскажу о комбинге. Что это такое? Дело в том, что на откаты в 3д печати тратится до трети всего времени печати, в зависимости от сложности модели и конструкции экструдера. Но мы можем не делать откат, изменяя траекторию перемещения таким образом, чтобы не выходить за периметры модели или делать это минимально. Это обычно и называют комбингом, и зачастую оно даже увеличивает время печати при ухудшении качества моделей за счёт более длинных и сложных перемещений. Но есть один нужный нам инструмент, который обычно к комбингу относят — фильтрацию ретрактов.

В Cura в выборе режима комбинга есть вариант within_infill или внутри_заполнения — делать комбинг только внутри заполнения. Этот режим нам нужен чтобы без сопло не могло выйти за периметр без ретракта, а значит не делало блямб на модели. В дополнение к режиму идёт параметр  max_comb_distance_with_no_retract. Если тут поставить 3-5 миллиметров, то на мелких перемещениях будет включен комбинг, а на крупных, где пластик уже успевает вытечь из сопла, будут делаться ретракты.

В Prusaslicer комбинг как бы есть, но фильтра по максимальной длине перемещения без ретракта нет, что делает его почти бесполезным — косячит на моделях часто. Но зато в профиле принтера есть параметр minimum_travel_after_retraction или минимальное перемещение после ретракта. Если между откатом и возвратом расстояние между указанного, то отката не будет. 

В Simplify3d в вкладке advanced есть параметры, с помощью которых можно добиться примерно того же самого. Minimum_travel_for_retraction по работе аналогичен параметру из прюшаслайсеру, про который только что говорили. 

В KISSlicer в вкладке Matl, аналогичный параметр называется min_jump. Перемещения меньше указанной тут длины точно не вызовут отката и вайпа. Ниже есть параметр trigger. Перемещения больше указанного в нём значения будут точно делать откаты. Между ними будет только вайп. Если хотите не заморачиваться, то ставьте их одинаковыми и считайте функцию работающей так же, как в других слайсерах.

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