Настройка linear advance и input shaping в Marlin

12 марта 2025

Некоторое время назад мы познакомились с Creality Ender 3 v3 SE. Мы узнали, что прошивка 3D-принтера основана на Marlin, и что существует поддерживаемый сообществом форк с включенными алгоритмами linear advance и input shaping. Пришло время разобраться с настройкой последних. Документация по этой теме имеется, но традиционно не отличается ни точностью, ни полнотой.

Начнем с linear advance. Открываем OrcaSlicer и находим Calibration → Pressure Advance. На то, что linear advance здесь принято называть pressure advance, не обращайте внимания. Просто один и тот же алгоритм называется linear advance в прошивке Marlin и pressure advance в прошивке Klipper.

В появившемся диалоге указываем следующие параметры:

Настройка linear advance при помощи OrcaSlicer

Далее в свойствах филамента во вкладке Cooling ставим галочку Don’t slow down outer walls. Указываем скорости 100 мм/сек. Нарезаем модель и проверяем, что стенки и вправду будут печататься на 100 мм/сек (как делали это для Klipper).

Для чистоты эксперимента на время печати необходимо отключить input shaping. В свойствах принтера в Machine G-code → Machine start G-code дописываем:

M593 F0 ; disable input shaping

Отправляем модель на печать. На башне находим высоту, где углы не выпирают и не скругляются:

Калибровочная башня для linear advance

Высота получилась 20 мм, что дает коэффициент LA равный 0.005 * 20 = 0.1. В слайсере сбрасываем все настройки, которые изменяли на время калибровки. Полученный коэффициент linear advance указываем для филамента в Filament → Flow ratio and Pressure Advance → Pressure advance. Сохраняем настройки.

Переходим к настройке input shaping. На момент написания этих строк Marlin поддерживает всего один шейпер, ZV. Для сравнения, Klipper предлагает на выбор ZV, MZV, EI, 2HUMP_EI и 3HUMP_EI. Из-за данного ограничения Marlin не всегда способен полностью устранить эхо. Учитывайте это при настройке.

Fun fact! Marlin поддерживает альтернативную реализацию input shaping в рамках расширения Fixed-Time Motion. Однако в нашей сборке FTM не занесли.

Скачиваем и открываем ring_tower.stl. Сторона модели, подписанная как «X», расположена вдоль оси Y, и наоборот. Это не ошибка. Надписи означают, шейпер для какой из осей настраивается по соответствующей стороне.

В случае с «дрыгостолом», коим является Ender 3 v3 SE, поворачивать модель не нужно. Для 3D-принтеров с кинематикой CoreXY, согласно документации, башню нужно повернуть на 45°, чтобы каждая сторона соответствовала своему шаговому двигателю.

Проверяем, что печатать будем слоями высотой 0.2 мм. В свойствах филамента во вкладке Cooling ставим Don’t slow down outer walls. Скорости — 100 мм/сек. В разделе Others → Special mode включаем Spiral vase. Далее в свойствах принтера открываем вкладку Machine G-code, находим Layer change G-code и дописываем:

M593 F{(layer_num < 2 ? 0 : 15 + 45.0 * (layer_num - 2) / 297)}

Отправляем модель на печать.

Для сторон «X» и «Y» определяем высоту, где видно меньше всего эхо:

Калибровка input shaping для прошивки Marin

Модель нужно поворачивать под разными углами к свету. Глазами она читается лучше, чем можно показать на фото.

На стороне «X» меньше всего эхо видно на высоте 30 мм. Это соответствует частоте 15 + 45 * (30/60), или примерно 38 Гц. Для «Y» высота получилось 55 мм, что соответствует частоте 15 + 45 * (55/60), или примерно 56 Гц.

Необходимо определить еще один параметр, так называемый damping factor. Он находится тем же способом, только в Layer change G-code дописываем:

M593 X D{(layer_num < 2 ? 0 : 1.0 * (layer_num - 2) / 297)} F38.0
M593 Y D{(layer_num < 2 ? 0 : 1.0 * (layer_num - 2) / 297)} F56.0

Заметьте, что были указаны ранее найденные резонансные частоты для X и Y.

Эхо слабее всего проявляется в 12 мм от основания модели, как для стороны «X», так и для «Y». Что дает damping factor равный 12 / 60, или 0.2.

В Ender 3 v3 SE полученные значения можно сохранить через Control → Motion → Input Shaping. Далее нажимаем Control → Store Configuration. Если в 3D-принтере не предусмотрен интерфейс для изменения настроек шейперов, можно создать файл .gcode вроде такого:

G28               ; Auto-home
M593 X D0.2 F38.0 ; X shaping
M593 Y D0.2 F56.0 ; Y shaping
M500              ; Save settings

… и отправить его на печать. Как альтернативный вариант, команды M593 можно сохранить в слайсере, отредактировав стартовый G-code для 3D-принтера.

Метки: .


Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.