Как настроить функцию Input Shaping в Klipper

29 августа 2024
0 комментариев

Одна из продвинутых функций прошивки Klipper — алгоритмы активного гашения вибраций или Input Shaping, помогающие печатать на высоких скоростях с сохранением качества. Делимся базовыми инструкциями по настройке.

Как настроить функцию Input Shaping в Klipper


Содержание:

  1. Что такое Input Shaping
  2. Как работает Input Shaping
  3. Ручная настройка
  4. Автоматическая настройка

1. Что такое Input Shaping

Главная задача Input Shaping — избавляться от «звона», особенно часто возникающего при 3D-печати на высоких скоростях. Скорость — не единственный фактор: появление «звона» в первую очередь обуславливается особенностями механики 3D-принтера, например жесткостью рамы и/или массой головки, а укладка расплава на высоких скоростях обычно усугубляет проблему. Эффективность этой функции настолько высока, что варианты появились в прошивке Marlin, а также проприетарной прошивке на 3D-принтерах компании Bambu Lab, всего за пару лет успевших прославиться высокой производительностью и качеством 3D-печати.

Как настроить функцию Input Shaping в Klipper

Пример 3D-печати с отключенной (слева) и включенной (справа) функцией Input Shaping

Перед настройкой Input Shaping стоит уделить внимание именно механике — подтянуть крепежные винты и ремни (слишком сильно натягивать ремни тоже не стоит), а заодно убедиться, что оборудование стоит на ровной поверхности. Для снижения вибраций можно также добавить демпфирующие ножки или прокладки.

2. Как работает Input Shaping

Принцип работы Input Shaping основан на «компенсации резонанса», то есть активном гашении вибраций соответствующей работой шаговых двигателей.

В зависимости от кинематики и размеров области построения доступны несколько разновидностей алгоритма, но наиболее часто используются две: вариант EI рекомендуется для «дрыгостолов» и многих дельта-принтеров, а MZV обычно оптимален для всех остальных систем, использующих прямоугольную систему координат. К выбору подходящего алгоритма мы еще вернемся.

Настроить Input Shaping можно двумя способами — ручным и автоматическим. Второй предполагает установку акселерометра и обеспечивает повышенную точность измерений, а также автоматическую подборку и рекомендацию оптимальных режимов. При работе с «дрыгостолом» для автоматической настройки потребуются уже два акселерометра — по одному для головки и подвижной платформы.

Рассмотрим оба метода по очереди.

3. Ручная настройка

Первым делом необходимо измерить частоту резонанса для осей X и Y. Для этого понадобится напечатать специальную калибровочную модель — скачать можно по этой ссылке.

Модель состоит из двух стенок, сориентированных перпендикулярно осям X и Y: так и задумано, пространственную ориентацию 3D-модели менять нельзя. С обратной стороны в каждой из стенок имеется ряд полукруглых выемок, помогающих с калибровкой за счет визуального усиления эффекта «звона». Также обратите внимание на змеистый вертикальный рисунок слева — он понадобится позже для настройки ускорений.

Как настроить функцию Input Shaping в Klipper

Перед нарезкой и 3D-печатью следует выставить следующие параметры в слайсере:

  1. Высота слоев: 0,2 или 0,25 мм.
  2. Заполнение и крыша: можно отключить за ненадобностью.
  3. Количество периметров: 1 или 2 (лучше даже напечатать в режиме вазы с основанием 1-2 мм).
  4. Скорость укладки внешних периметров: 80-100 мм/с.
  5. Минимальное время печати слоя: не более трех секунд.
  6. Режим динамического контроля ускорений (Dynamic Acceleration Control): отключить.

Прошивку Klipper тоже необходимо настроить:

  1. Параметр square_corner_velocity: установите на 5.0. Это значение вообще рекомендуется не менять во избежание избыточного сглаживания углов при работе Input Shaper.
  2. Параметр minimum_cruise_ratio: отключите командой SET_VELOCITY_LIMIT MINIMUM_CRUISE_RATIO=0.
  3. Динамический контроль подачи расплава (Pressure Advance): на время отключите командой SET_PRESSURE_ADVANCE ADVANCE=0.
  4. Гашение вибраций (Input Shaping): сам алгоритм Input Shaping тоже следует отключить, если он уже активирован в конфигурационном файле printer.cfg. Добавьте команду SET_INPUT_SHAPER SHAPER_FREQ_X=0 SHAPER_FREQ_Y=0. Если система выдаст ошибку «Неизвестная команда» (Unknown command), не обращайте внимания и продолжайте дальше.
  5. Задайте команду TUNING_TOWER COMMAND=SET_VELOCITY_LIMIT PARAMETER=ACCEL START=1500 STEP_DELTA=500 STEP_HEIGHT=5. Она поможет сделать звон максимально выраженным за счет постоянно растущих ускорений позиционирования: каждые пять миллиметров по высоте модели ускорения будут возрастать на 500 мм/с^2, начиная с 1500 мм/с^2 и заканчивая 7000 мм/с^2 . Она же поможет выявить и оптимальные ускорения.
  6. Напечатайте калибровочную модель с указанными выше настройками.
  7. Если «звон» станет ярко выраженным или появятся слишком сильные вибрации, 3D-печать можно остановить до окончания построения всей калибровочной модели. Все необходимое к этому моменту уже будет на руках, рисковать оборудованием не стоит.
Как настроить функцию Input Shaping в Klipper

С помощью штангенциркуля или линейки измерьте дистанцию между выборочными парами колебаний на обеих стенках модели. Измерения со сторон с маркировкой X и Y будут использованы для настройки компенсации по соответствующим осям. Первые два-три колебания, самые близкие к выемкам, желательно пропускать (см. иллюстрацию выше). После этого посчитайте количество колебаний на выбранных отрезках.

Далее рассчитываем частоту звона для каждой оси по формуле V*N/D, где V — скорость укладки внешних периметров, N — количество колебаний на выбранном отрезке, а D — длина отрезка.

В примере на иллюстрации выше видим шесть колебаний на отрезке длиной 12,14 мм. При скорости укладки внешних периметров на уровне 100 мм/c получаем 100*6/12,14 = 49,4 Гц.

Следующий шаг — ввод полученных значений в конфигурационный файл printer.cfg. Для каждой оси может потребоваться своя строчка, так как значения могут быть и скорее всего будут разными. Если, например, мы получили 49,4 Гц для оси X и 48,6 Гц для оси Y, строки должны выглядеть следующим образом:

shaper_freq_x: 49.4

shaper_freq_y: 48.6

Если звон проявляется только по одной оси, для другой все вышеописанные шаги можно пропустить, в том числе и соответствующую строку в конфигурационном файле.

Какой вариант Input Shaping выбрать

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

Алгоритм MZV включаем добавлением в конфигурационный файл еще одной строки. В нашем примере это будет выглядеть так:

shaper_freq_x: 49.4

shaper_freq_y: 48.6

shаper_type: mzv

Остается только проверить результат повторной 3D-печатью тестовой модели. Как и прежде, отдаем команду TUNING_TOWER COMMAND=SET_VELOCITY_LIMIT PARAMETER=ACCEL START=1500 STEP_DELTA=500 STEP_HEIGHT=5.

Если результаты удовлетворительные, настройку можно считать законченной. Если «звон» убавился, но недостаточно, можно попробовать другой алгоритм — EI. Для этого строку

shаper_type: mzv

меняем на

shаper_type: ei

и вновь запускаем 3D-печать тестовой модели, а затем сравниваем результаты и выбираем оптимальный вариант.

Настройка максимальных ускорений

Для этого нам снова понадобится калибровочная модель, но печатать еще одну возможно не потребуется: хватит последней — той, которую мы напечатали для проверки работы Input Shaping после настройки.

Как настроить функцию Input Shaping в Klipper

На иллюстрации выше обратите внимание на извилистый вертикальный узор. Такой узор присутствует на каждой из двух стенок калибровочной модели. С помощью этих узоров с расположенными за ними полостями можно определить, насколько сильно алгоритм сглаживает углы. Чем выше ускорения, тем сильнее сглаживание, а ускорения, как вы помните, менялись с каждыми пятью миллиметрами высоты.

Как настроить функцию Input Shaping в Klipper

Когда сглаживание становится слишком сильным, между левой и правой половинками узора появляется сквозной зазор, что говорит о превышении допустимого предела ускорений. С дальнейшим ростом ускорений зазор продолжает расти. Каждая полукруглая секция узора соответствует шагу в 500 мм/с^2. В примере на иллюстрации выше модель как бы лежит на боку. Первая, крайняя слева секция печаталась с ускорениями 1500 мм/с^2, а зазор появляется при переходе с четвертой на пятую секцию, то есть с 3000 мм/с^2 на 3500 мм/с^2. Соответственно, максимальное значение без потери детализации — 3000 мм/с^2.

Остается только добавить соответствующую строчку в конфигурационный файл printer.cfg:

max_accel: 3000

Важно: в некоторых случаях зазор может не появляться вообще, а вместо него могут образовываться наплывы. Такое обычно происходит при отключенной функции динамического контроля подачи расплава (Pressure Advance), особенно на 3D-принтерах с боуденовской подачей филамента. В таких случаях необходимо включить Pressure Advance, затем напечатать еще одну калибровочную модель, а затем уже определять максимальное допустимое ускорение.

4. Автоматическая настройка

Klipper поддерживает относительно недорогие акселерометры ADXL345, MPU-9250 и LIS2DW. Как мы уже упоминали, при работе с «дрыгостолом» потребуются сразу два датчика — один устанавливается на головку, а второй на подвижную платформу. После установки акселерометры можно подключить через последовательный периферийный интерфейс (SPI) либо к Raspberry Pi, либо к контроллеру 3D-принтера, если последний достаточно производителен. Инструкции по установке и настройке акселерометров можно найти на официальном сайте Klipper.

Как настроить функцию Input Shaping в Klipper

Головка дельта-принтера с установленным акселерометром

После установки можно приступать к определению частот, при которых 3D-принтер вибрирует, с помощью двух скриптов. Делается это по очереди — сначала для оси X командой TEST_RESONANCES AXIS=X, а затем для оси Y командой TEST_RESONANCES AXIS=Y.

Имейте в виду, что задача этих скриптов — буквально заставить 3D-принтер трястись, так что заранее подготовьтесь к экстренной остановке (например, командой M112), если вибрации станут слишком сильными.

По выполнении скриптов Klipper сохранит результаты в двух файлах — /tmp/resonances_x_*.csv и /tmp/resonances_y_*.csv.

Следующий шаг — анализ данных и выбор наиболее подходящей конфигурации Input Shaping. Klipper поможет и с этим: необходимо просто запустить еще два скрипта:

~/klipper/scripts/calibrate_shaper.py /tmp/resonances_x_*.csv -o /tmp/shaper_calibrate_x.png

и

~/klipper/scripts/calibrate_shaper.py /tmp/resonances_y_*.csv -o /tmp/shaper_calibrate_y.png

На выходе будут сгенерированы графики с прогнозируемыми результатами для каждого из доступных вариантов алгоритма гашения вибраций. В правом верхнем углу даже будет подсказка, какой из них подойдет лучше всего (см. пример на иллюстрации ниже).

Как настроить функцию Input Shaping в Klipper

Помимо удобства автоматическая настройка еще и позволяет бороться с вибрациями сразу на нескольких частотах, хотя такое обычно происходит из-за проблем с механикой, например при недостаточном натяжении ремней в кинематике CoreXY.

Далее можно брать значения частот и ускорений из графика и вносить их в конфигурационный файл. В примере выше, сгенерированным для оси Y, рекомендуется алгоритм MZV, указана частота 34,6 Гц и рекомендуется максимальное ускорение не выше 3500 мм/с^2, а значит строки должны выглядеть следующим образом:

shaper_freq_y: 34.6

shаper_type_y: mzv

max_accel: 3500

Последний шаг — перезапустить Klipper и наслаждаться результатами.

Если вас интересует оборудование с уже установленным функционалом активного гашения вибраций, попробуйте 3D-принтеры от Bambu Lab. Свяжитесь с нами, и специалисты REC предоставят подробную консультацию.



Вам будет интересно