Про калибровку pressure advance в Klipper

11 декабря 2024

Одно из преимуществ Klipper состоит в том, что в данной прошивке реализован алгоритм pressure advance. Чтобы pressure advance работал правильно, нужна калибровка. Казалось бы, открываем документацию и выполняем описанные в ней шаги. Но на деле все оказалось не совсем так просто.

Pressure advance (далее PA) — это алгоритм, компенсирующий пере- и недо- экструзию филамента при изменении скорости движения головы 3D-принтера. Более подробно и с картинками суть проблемы описана здесь. В прошивке Marlin аналогичный алгоритм называется linear advance (LA).

Существует несколько методов калибровки PA. Один способ описан на сайте Klipper. В инструкции нет шагов для каких-то конкретных слайсеров, что оказалось проблемой на практике. В OrcaSlicer реализовано целых три способа. Два из них неудобны тем, что требуют ровного стола, например, из стекла. На PEI столе результаты непоказательны. Третий способ качественно тот же, что описан на сайте Klipper. На момент написания этих строк он имеет неполную документацию (или просто неверную). Также предлагаемая тестовая модель имеет тонкие «мышиные уши», которые трудно отдираются с PEI стола.

Я опробовал все перечисленные методы. Наиболее удобным, универсальным и показательным оказался метод из официальной документации. Однако имеется кое-какая специфика для OrcaSlicer. О ней я расскажу далее.

Если вы печатаете разными материалами, калибровка для них производится отдельно. Полученный коэффициент PA сохраняются в OrcaSlicer в свойствах филамента. Я калибровал для пластика PETG моего любимого производителя.

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

Для чистоты эксперимента открываем printer.cfg и целиком комментируем секцию [input_shaper], если она есть. Нажимаем Save & Restart. Из тех же соображений в OrcaSlicer в свойствах филамента отключаем Filament → Flow Ratio and Pressure Advance → Enable Pressure Advance. Нам понадобится максимально простой G-code без лишних команд. Там же находим и включаем Cooling → Part cooling fan → Don’t slow down outer walls. Без последнего изменения печать будет сильно замедлена, что помешает тесту.

Открываем square_tower.stl. В документации предлагается поставить высоту слоя 0.75 от диаметра сопла. То есть, если я печатаю соплом 0.4 мм, то нужно 0.3 мм. Но на практике я никогда не печатаю слоями толще 0.2 мм. Поэтому я решил оставить свое обычное значение. Было бы странно оптимизировать настройки для неиспользуемого режима.

Далее предлагается поставить заполнение 0%. Но при этом будут печататься как наружние стенки модели, так и внутренние. При том, что в тесте нужны только наружние. В OrcaSlicer мы можем печатать только наружние стенки, что заметно ускоряет тест. Для этого в интерфейсе слева находим Others → Special Mode → Spiral vase. Слайсер предложит автоматически обновить настройки заполнения и печати стенок. Соглашаемся.

Наконец, документация говорит, что печатать нужно быстро. Ставим Speed → Other Layers Speed → Outer wall в значение 100 мм/c. Учтите, что вкладка Speed доступна только в Advanced режиме.

Нарезаем модель и убеждаемся, что стенки печатаются на 100 мм/с:

Модель для калибровки pressure advance в OrcaSlicer

Нажимаем Print → Upload. То есть, G-code загружаем, но печать не начинаем.

Во Fluidd переходим во вкладку Console. Даем команду:

SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500

… и затем (в одну строку):

TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 ⏎
  FACTOR=0.01

Первая замедляет перемещение сопла над углами модели. Это подчеркивает влияние PA на печать и делает тест нагляднее. Вторая команда говорит менять коэффициент PA на 0.01 на каждый миллиметр высоты модели. В оригинальном тексте для 3D-принтеров c direct экструдером предлагается шаг 0.005. Однако я обнаружил, что для Flying Bear Ghost 6 шаг 0.01 дает более показательные результаты. Переходим на вкладку Jobs, находим ранее загруженную модель и запускаем печать.

Результат должен выглядеть как-то так:

Пример башни для калибровки pressure advance

Обратите внимание на углы модели. Внизу видна явная переэкструзия — углы выпирают. Затем, по мере увеличения высоты, углы становятся нормальными, затем немного скругленными и в самом верху получаем сильную недоэкструзию.

Необходимо определить минимальную высоту, на которой все четыре угла вышли нормальными. Для этого удобно воспользоваться штангенциркулем, но обычная линейка тоже подойдет. В моем случае получилось 25 мм, что дает коэффициент PA 0.25. Его нужно указать в свойствах филамента, в Filament → Flow Ratio and Pressure Advance → Pressure advance.

Эффект от PA хорошо виден на калибровочном кубике:

Кубик напечатанный с pressure advance и без него

Левый напечатан без PA, а правый — c PA. Остальные настройки одинаковые, филамент с одной бобины. Заинтересованным читателям предлагается найти десять отличий в качестве упражнения.

Выглядит, как если бы все работало. По окончании тестов не забудьте вернуть секцию [input_shaper] в printer.cfg.

Дополнение: Про калибровку input shaping в Klipper

Метки: .


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