Ускорение и Junction Deviation
Ускорение определяет, как быстро принтер набирает скорость на поворотах. Слишком высокое — ringing/ghosting на углах, шаг пропускается. Башня с переменным M204 показывает порог. Параллельно разбираем Junction Deviation и max-jerk.
Цель:
Найти правильный компромисс между скоростью печати и качеством, в частности применительно к артефактам поверхности, таким как гостинг.
Когда требуется:
Первичная калибровка, при значительных изменениях в системе движения (например, более тяжёлый стол, переход с боуден-подачи на прямую).
Инструменты:
Терминальное ПО, например Pronterface или Octoprint.
Генератор G-code на этой странице.
Инструкции по настройке терминального ПО можно найти здесь.
В слайсере мы задаём скорость подачи или скорость движения, но принтер не достигает этих скоростей мгновенно. Как и автомобилю, ему нужно время для разгона. Если расстояние движения короткое, оно может даже не успеть достичь заданной скорости. Это можно определить с помощью удобного калькулятора ускорения на сайте Prusa.
В дополнение к ускорению есть jerk, заменённый на junction deviation в новых версиях Marlin. У этих настроек есть отличия, но обе они по сути отвечают за то, чтобы принтер не останавливался полностью между движениями, а замедлялся на нужную величину в зависимости от угла следующего «поворота».
Мы будем настраивать оба этих параметра с помощью ещё одной башни. Цель — достичь достаточно быстрого времени печати без чрезмерного ринга/гостинга. Пример сильного гостинга показан ниже. Особенности модели повторяются по поверхности из-за вибраций компонентов принтера:
Ранее я делал подробный видео-гайд по этой теме с множеством диаграмм, объясняющих концепции. Процесс настройки, показанный там, здесь улучшен — с более удобным калькулятором и пользовательским генератором G-code ниже.
Правило большого пальца:
Более высокие ускорение и jerk дадут более быструю печать, так как принтер быстрее достигает максимальной скорости и сохраняет более высокую скорость в поворотах. Это тяжелее для принтера и может привести к сокращению срока службы компонентов и необходимости более частого обслуживания. Также появляются дополнительные дефекты поверхности, такие как ринг/гостинг.
Более низкие ускорение и jerk дадут более медленную печать, так как принтер достигает максимальной скорости постепеннее и проходит повороты с меньшей скоростью. Это легче для принтера, потенциально увеличивает срок службы компонентов и снижает потребность в регулярном обслуживании. Это уменьшает артефакты поверхности, такие как ринг/гостинг, если только значения не слишком консервативные — тогда могут появиться «вздутия» в углах.
Расчёт максимальной скорости подачи — по желанию, но настоятельно рекомендуется
Это упрощённый тест, который будет не таким точным, как использование генератора G-code на вкладке Speed/Max flow. Если вы хотите его увидеть, переключите видимость здесь.
Теперь мы создадим башню ускорения, чтобы удобно тестировать настройки подряд в одной печати. Если вы хотите сами нарезать модель, вот STL: accelerationtower.stl. Её следует нарезать с обычным основанием, но полую, без верхних слоёв и только с 2 периметрами.
список прошивок 3D-принтераВ случае прошивки Marlin перед тестом нужно знать только одно: настроен ли ваш firmware на jerk (старше) или junction deviation (новее). Команда M503 через терминал выведет список переменных принтера:
- Если строка M205 содержит буквы X, Y и Z, ваш принтер работает с jerk. Числа после X, Y и Z — текущие значения jerk для каждой оси.
- Если M205 содержит букву J, ваш принтер работает с junction deviation. Число после J — текущее значение junction deviation.
На изображении ниже показан пример каждого из этих сценариев:
Используйте следующую форму, чтобы настроить G-code по своему вкусу:
Klipper использует и ACCEL, и ACCEL_TO_DECEL. Разница между ними объясняется здесь.
Klipper использует значение Square Corner Velocity (SCV) вместо junction deviation или jerk, но идея та же. Значение 5 mm/sec позволит печатающей голове замедлиться до и поддерживать скорость 5 mm/sec на угле 90 градусов. Эта скорость будет выше для более пологого поворота и ниже для более резкого.
RepRapFirmware использует M205 для задания Max Instantaneous Speed Change вместо jerk или junction deviation, но идея та же.
Генератор калибровочной башни ускорения и jerk/junction deviation
STL для этого теста доступен здесь: accelerationtower.stl
Интерпретация результатов:
Используйте следующее видео как руководство по этому тесту:
Изначально вам может показаться, что метки X и Y направлены не туда, но это не так. Это объясняется и демонстрируется в видео выше.
Вы также можете заметить несколько стрингов. Это особенность того, как тест изначально нарезался, и их можно смело игнорировать.
Осмотрите готовую печать. В идеале между сегментами будет чёткая разница, отражающая введённые значения ускорения. В примере ниже (Ender 3 с прямой подачей, PLA, включённый linear advance) ускорение варьировалось от 300 до 800 с шагом 100 mm/sec/sec. Junction deviation оставался по умолчанию 0.08. Разница между сегментами тонкая, но на верхних сегментах вокруг буквы Y заметен более выраженный гостинг. В самом нижнем сегменте мягкое ускорение означает, что сопло проводит больше времени в углах, и они склонны «вздуваться». Это было бы заметнее, если бы linear advance был отключён.
Идеальный сегмент даёт лучший компромисс между «вздутием» углов от низкого ускорения и рингом от высокого ускорения.
Моё предыдущее значение было 500, но небольшое улучшение качества можно получить, снизив его до 400.
список прошивок 3D-принтера
Когда вы получили значение ускорения, которое вас устраивает, обновите его командой:
M204 P400
где 400 — значение ускорения с лучшим компромиссом по результатам тестовой печати башни.
Также стоит отметить, что значение M201 действует как лимит ускорения для каждой оси. Например, если вы установили ускорение печати M204 в 1000, но лимиты M201 для X и Y только 800, то значение M204 P будет ограничено 800. Используйте M503 для просмотра текущих значений M201 и, при необходимости, M201 — для установки более высоких лимитов ускорения по X и Y.
Сохранить новое значение(я) в EEPROM можно командой:
M500
Затем вы повторите тест со всеми значениями ускорения, зафиксированными на предпочтительном значении для каждого сегмента, но на этот раз варьируя jerk/junction deviation.
Для сохранения на принтере с jerk (с определённым лучшим компромиссом 8 для этого примера) вводим:
M205 X8 Y8
Для сохранения на принтере с junction deviation (с определённым лучшим компромиссом 0.05 для этого примера) вводим:
M205 J0.05
В любом случае после этого сохраняем в EEPROM:
M500
Каждый из этих параметров также можно ввести и сохранить через меню configuration на LCD Marlin.
Когда вы получили значение ускорения, которое вас устраивает, можно отредактировать секцию [printer] в printer.cfg
[printer] max_accel: 400 max_accel_to_decel: 400
где 400 — значение ускорения с лучшим компромиссом по результатам тестовой печати башни.
Очевидно, вы можете задать уникальное значение для MAX_ACCEL_TO_DECEL относительно MAX_ACCEL.
Затем вы повторите тест со всеми значениями ускорения, зафиксированными на предпочтительном значении для каждого сегмента, но на этот раз варьируя square corner velocity.
Чтобы сохранить пример значения 8, отредактируйте секцию [printer] в printer.cfg
[printer] square_corner_velocity: 8.0
Сохраните конфигурацию, чтобы перезапустить Klipper с применёнными изменениями.
Когда вы получили значение ускорения, которое вас устраивает, можно отредактировать config.g:
M204 P400 T[value]
где 400 — значение ускорения с лучшим компромиссом по результатам тестовой печати башни. Значение T — это ускорение холостого перемещения, когда филамент не экструдируется. Оно вполне может быть выше без потери качества.
Также стоит отметить, что значение M201 действует как лимит ускорения для каждой оси. Например, если вы установили ускорение печати M204 в 1000, но лимиты M201 для X и Y только 800, то значение M204 P будет ограничено 800. Посмотрите текущие значения M201 и, при необходимости, используйте M201 для установки более высоких лимитов ускорения по X и Y.
Затем вы повторите тест со всеми значениями ускорения, зафиксированными на предпочтительном значении для каждого сегмента, но на этот раз варьируя max instantaneous speed change.
Затем config.g можно обновить с учётом лучших результатов, например значения 8:
M205 X8 Y8 Z[value] E[value]
Обратите внимание: Z и E, скорее всего, оставите без изменений от исходных значений.
Сохраните config.g, чтобы перезапустить прошивку с применёнными изменениями.
>Особое замечание для Cura, PrusaSlicer и SuperSlicer:
Cura, PrusaSlicer и SuperSlicer умеют управлять этими параметрами из слайсера, вставляя соответствующий G-code. Если вы замечаете, что ваши новые значения ускорения не вступают в силу, возможно, придётся задать их и в слайсере. Это на самом деле полезная возможность: она позволяет использовать более агрессивные настройки для заполнения и элементов, которые не видны в финальной печати, и одновременно быть более консервативными для внешних стенок, где эстетика важнее всего.
Более высокое ускорение без ринга: Input Shaping
Замечательное достижение в 3D-печати — input shaping, который компенсирует резонансную частоту машины, изменяя сигналы для шаговых двигателей, чтобы резко уменьшить ринг. Доступный в Klipper и RepRapFirmware, input shaping позволяет использовать гораздо более высокие скорости подачи без потери качества печати. Чтобы увидеть это в действии, посмотрите видео ниже:
Частые вопросы
В чём разница между jerk и junction deviation?
С каких значений ускорения начинать калибровку башни?
Почему при высоком ускорении появляется ringing/гостинг?
Нужно ли заново калибровать ускорение при смене типа филамента?
Сохраняются ли значения M204/M205 после перезагрузки принтера?
Если у меня настроен Input Shaping, нужно ли вообще калибровать ускорение?
Частые вопросы
Что показывает тест ускорения?
Максимальное ускорение без ringing/ghosting на углах — выше порога появляются «эхо» рядом с гранями.
Какими командами менять ускорение?
M204/M205 в Marlin; в Klipper — параметры в [printer] и Input Shaper.
Что такое Junction Deviation?
Современная замена jerk: задаёт, насколько скругляется траектория на стыках сегментов, влияя на скорость прохождения углов.
Раздел основан на Teaching Tech 3D Printer Calibration, автор Michael Laws (Teaching Tech), под CC-BY-SA-4.0. Все расчёты выполняются у вас в браузере.