Ускорение и 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

Генератор .gcode

Интерактивная форма «acceleration» загружается в браузере. Для поисковика ниже остаётся справочный текст, STL/G-code ссылки и описание теста.

Этот G-code поднимет лимиты ускорения (M201), задаст ускорение (M204) и задаст junction deviation/jerk (M205) для целей теста. Если вы запустите другую печать после этого, эти повышенные значения сохранятся. Если не уверены, как восстановить предыдущие значения, проще всего перезагрузить принтер.

Интерпретация результатов:

Используйте следующее видео как руководство по этому тесту:

Изначально вам может показаться, что метки 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?
Jerk задаёт фиксированное мгновенное изменение скорости в углах (mm/sec), а junction deviation рассчитывает допустимую скорость прохождения угла исходя из ускорения и заданного «отклонения от траектории». Junction deviation физически корректнее: на острых углах скорость падает, на пологих — почти не теряется. В новых версиях Marlin это значение по умолчанию ~0.08 и заменяет классический jerk по X/Y.
С каких значений ускорения начинать калибровку башни?
Для большинства бытовых принтеров с боуден- или прямой подачей разумно стартовать с диапазона 300–1500 mm/sec² с шагом 100–200. На лёгкой CoreXY-кинематике можно начинать выше — 2000–5000. Главное — захватить и зону «вздутых» углов снизу, и зону явного ringing сверху, чтобы было видно компромисс.
Почему при высоком ускорении появляется ringing/гостинг?
Резкие изменения скорости возбуждают резонансные частоты рамы, портала и стола. Каретка продолжает колебаться после поворота, и сопло «рисует» эти колебания на стенке — отсюда повторяющиеся тени деталей за углами. Снижение ускорения уменьшает возбуждающую силу; Input Shaping компенсирует сами колебания, позволяя держать ускорение высоким.
Нужно ли заново калибровать ускорение при смене типа филамента?
Нет, ускорение — это в первую очередь характеристика механики, а не материала. Менять значения имеет смысл при модификации железа: более тяжёлый хотэнд, прямая подача вместо боудена, новый стол, ремни/ролики, рама. А вот максимальную объёмную скорость и температуру под новый филамент пересчитывать стоит отдельно.
Сохраняются ли значения M204/M205 после перезагрузки принтера?
Только если вы записали их в EEPROM командой M500 (Marlin) либо прописали в printer.cfg у Klipper или config.g у RepRapFirmware. Команды M204/M205, отправленные из терминала или из стартового G-code, действуют только до перезагрузки или до того, как слайсер перезапишет их своими значениями.
Если у меня настроен Input Shaping, нужно ли вообще калибровать ускорение?
Да. Input Shaping снимает резонансные артефакты, но не отменяет физических лимитов рамы, шаговых двигателей и тока драйверов. Сначала калибруют резонансы и включают шейпер, а затем поднимают M204/SCV до значения, при котором ещё нет пропусков шагов, перегрева моторов и заметного «вздутия» углов на сложной геометрии.

← Ко всем шагам калибровки

Частые вопросы

Что показывает тест ускорения?

Максимальное ускорение без 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. Все расчёты выполняются у вас в браузере.