Про калибровку input shaping в Klipper
22 декабря 2024
Некоторое время назад мы познакомились с pressure advance. Помимо него в Klipper есть еще один алгоритм для повышения качества 3D печати — input shaping. Давайте же разберемся, что это за алгоритм и как он настраивается.
Input shaping (далее IS) нужен для борьбы с артефактом под названием эхо. Артефакт возникает по той причине, что при перемещениях по осям X и Y конструкция 3D-принтера резонирует на определенных частотах. Речь идет о десятках-сотнях герц. Нежелательные частоты можно подавить. Для этого управляющие сигналы шаговых двигателей пропускают через цифровые фильтры. Данный процесс называют шейпингом, а фильтры — шейперами. Шейпинг делает движения принтера плавнее. Как побочный эффект, если печатать быстро, то у моделей скругляются углы. По этой причине чем мягче шейпер, то есть, чем более узкая у него полоса подавления, тем лучше.
Эхо (echoing, ringing, ghosting) иногда путают с рябью (Vertical Fine Artifacts, VFA). Это другой артефакт 3D-печати, хотя и выглядит похоже. На сегодняшний день причины возникновения ряби не до конца понятны. Способ устранения ряби известен один — печатать стенки на скоростях, при которых она не возникает. Удачные скорости для конкретного 3D-принтера можно подобрать в OrcaSlicer при помощи теста Calibration → More… → VFA. На этом моменте про рябь мы забываем и занимаемся исключительно эхо.
Популярный способ калибровки IS заключается в том, чтобы измерить резонансы по осям X и Y при помощи акселерометра, и программно определить подходящие шейперы. У способа два недостатка. Во-первых, если в 3D-принтере с завода нет акселерометра, его нужно купить, как-то закрепить и припаять провода. Это если речь о кинематике CoreXY. Для «дрыгостолов» необходимо два акселерометра. Можно обойтись и одним, но его придется переставлять между головой и столом. Во-вторых, рекомендатор шейперов может ошибаться. В частности, для моего Flying Bear Ghost 6 этот способ не работает. Вероятная причина состоит в том, что не учитываются вибрации стола. В общем случае бывают и другие факторы, ломающие работу рекомендатора.
Поэтому я использовал метод, предложенный Дмитрием Соркиным, с некоторыми небольшими отличиями. Качественно идея та же, что и при калибровке pressure advance — печатается башня, в которой перебираются параметры алгоритма. Данный метод работает с любым 3D-принтером и не требует акселерометра.
Понадобится черный или темно-серый филамент, поскольку на нем лучше видно эхо. Pressure advance должен быть уже настроен и включен при печати тестовой башни. Это делает результат более читаемым. Такие модификации 3D-принтера, как установку BLTouch, следует производить перед настройкой IS, чтобы потом не калибровать IS заново.
В слайсере открываем k3d_ringing_tower.stl. Настройки те же, что при калибровке pressure advance — слои 0.2 мм, режим вазы, скорость 100 мм/сек для внешних стенок, замедление при обдуве внешних стенок отключено. Нарезаем модель и проверяем, что стенки будут печататься на 100 мм/сек. Нажимаем Print → Upload. То есть, G-code загружаем, но печатать пока не начинаем.
Во Fluidd открываем printer.cfg и убеждаемся, что в нем есть секция:
Если ее нет, то добавляем, после чего нажимаем Save & Restart.
Klipper поддерживает несколько шейперов. Вот они в порядке от самого мягкого (узкополосного) к самому жесткому (широкополосному): ZV, MZV, EI, 2HUMP_EI, 3HUMP_EI. Все шейперы имеют один параметр — это частота, которая давится сильнее всего. АЧХ шейперов можно посмотреть здесь.
Для начала выберем EI. Если шейпер устранит эхо, то можно будет попробовать MZV, а затем и ZV. Если нет, то следует попробовать 2HUMP_EI и 3HUMP_EI. Вообще, шейперы MZV и EI работают примерно одинаково и уже достаточно мягкие. Если все работает с одним из них, то дальше можно и не настраивать.
Во Fluidd открываем консоль и выполняем:
Ищем оптимальную частоту для оси X:
TUNING_TOWER COMMAND=SET_INPUT_SHAPER PARAMETER=SHAPER_FREQ_X ⏎
STEP_HEIGHT=3 START=30 STEP_DELTA=5
Здесь мы говорим менять частоту шейпера для оси X каждые 3 мм высоты башни: сначала 30 Гц, затем 35 Гц, и так далее. Для 2HUMP_EI и 3HUMP_EI используем START=50 STEP_DELTA=10
.
Отправляем башню на печать через вкладку Jobs. Перед тем, как снимать ее со стола, рекомендую пометить лицевую сторону. На черном пластике превосходно пишет маркер Sharpie Metallic Silver. Им же можно подписать модель снизу.
Результат должен выглядеть приблизительно так:
Разглядываем две стороны для оси X. Любые артефакты кроме эхо игнорируем. Находим сегмент без эхо. Если их несколько, берем средний. По номеру сегмента определяем частоту. Если эхо есть на всех сегментах, то пробуем более жесткий шейпер. Иначе можно попробовать более мягкий.
Повторяем для оси Y:
TUNING_TOWER COMMAND=SET_INPUT_SHAPER PARAMETER=SHAPER_FREQ_Y ⏎
STEP_HEIGHT=3 START=30 STEP_DELTA=5
Найдя оптимальные шейперы, обновляем printer.cfg. Например:
shaper_type_x = ei
shaper_freq_x = 55
shaper_type_y = 2hump_ei
shaper_freq_y = 60
Настройка завершена, но ее правильность еще предстоит проверить.
Для этого напечатаем реальную модель с шейпингом и без шейпинга. Скорость внешних стенок поставим в 100 мм/с. Калибровочный кубик вполне показателен, а также позволяет оценить степень скругления углов.
Сравниваем результаты:
Левый кубик напечатан без шейпинга. Видно, что справа от буквы Y отпечаталась то ли ее тень, то ли отражение, а за ней еще одна. Это и есть эхо. Правый кубик напечатан тем же пластиком из того же G-code, только с включенным шейпингом. Для сторон кубиков с буквой X результат аналогичный, но чуть менее наглядный. Вибраций по оси X изначально было меньше, что видно и по выбору шейперов.
Итак, эхо побеждено, шейпинг работает. Чтобы окончательно в этом убедиться, стоит напечатать еще пару моделей. Если на них все-таки вылезет эхо, шейперы можно настроить точнее.
Метки: 3D печать.
Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.