E-steps и rotation_distance: как правильно откалибровать подачу филамента - Блог Папы Карло

Опубликовано: 5 месяцев назад
Просмотров: 484

Привет. Я в мастерской такие истории вижу постоянно: вроде принтер живой, сопло греется, пластик идёт, а по факту то недолив, то бугры, то стенка пляшет. В большинстве случаев начинать надо не со слайсера, а с механики подачи: в Marlin это E-steps, в Klipper — rotation_distance.

Сразу дам суть. Если экструдер физически проталкивает не ту длину прутка, которую ты ему приказал, все остальные настройки потом только маскируют косяк. Ниже покажу, когда реально трогать этот параметр, как откалибровать подачу филамента в Marlin и Klipper, чем это отличается от Flow, и где народ чаще всего сам себе роет яму.

По дороге будет мини-чек-лист, формулы, пример расчёта и ссылки на смежные разборы, если у тебя картина шире, чем просто кривая подача.

Содержание

Измерение подачи филамента штангенциркулем у экструдера 3D-принтера

Что именно мы калибруем и когда туда вообще лезть

Тут всё просто. Экструдер получает команду протолкнуть, скажем, 100 мм филамента. Если по факту он проталкивает 96 мм — у тебя механическая недоподача. Если 104 мм — уже перелив. В Marlin это правится значением E-steps, то есть количеством шагов мотора на один миллиметр подачи. В Klipper логика та же, только параметр называется rotation_distance: это расстояние, которое пруток проходит за один полный оборот двигателя.

Когда я обычно лезу в эту настройку:

  • после замены экструдера, редуктора, мотора или шестерни;
  • после перехода с одной прошивки на другую, например с Marlin на Klipper;
  • когда принтер системно недодаёт или переливает пластик на разных моделях;
  • когда после сборки или апгрейда экструзия стала дёрганой и непредсказуемой.

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

Ещё важный момент: E-steps и rotation_distance калибруют механику подачи, а не “красоту” верхнего слоя. Красоту добивают уже Flow, Extrusion Multiplier, Pressure Advance и нормальный профиль печати.

Что подготовить перед калибровкой

Я делаю это по-стариковски надёжно: ставлю принтер на стол, беру штангенциркуль, маркер и кусачки. Всё. Никакой сложной алхимии тут не нужно, но аккуратность решает.

  • Штангенциркуль — цифровой удобнее, но обычный тоже сгодится.
  • Маркер — чтобы поставить метку на прутке.
  • Прямой участок филамента — без резких перегибов перед входом в экструдер.
  • Прогретый хотэнд — особенно если проверяешь реальную подачу через сопло.
  • Низкая скорость экструзии — спешка тут только портит замер.

Перед тестом я всегда делаю три вещи. Во-первых, убеждаюсь, что сопло не подзабито и филамент идёт ровно. Во-вторых, ослабляю всё, что может мешать свободной размотке катушки. В-третьих, проверяю прижим шестерни экструдера: если он жрёт пруток или наоборот едва его касается, точной калибровки не выйдет.

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

Прошивка Что меняем Формула
Marlin E-steps новые steps = старые steps × запрошенная длина / фактическая длина
Klipper rotation_distance новый rotation_distance = старый rotation_distance × фактическая длина / запрошенная длина

Как откалибровать E-steps в Marlin

В Marlin я обычно проверяю подачу на отрезке 100 мм. Так проще считать, и ошибка сразу видна. Схема рабочая уже много лет.

  1. Прогрей хотэнд до температуры своего материала. Для PLA обычно хватает рабочего диапазона этой катушки.

  2. Подведи филамент к экструдеру и поставь метку в 120 мм от точки входа в экструдер.

  3. Считай текущее значение E-steps командой M503 или M92.

  4. Дай команду выдавить 100 мм филамента на низкой скорости.

  5. Измерь остаток до метки и посчитай, сколько реально прошло через экструдер.

  6. Подставь значение в формулу, задай новый параметр и сохрани его в память.

M503
M83
G1 E100 F60
M92 E95.80
M500

Пример на пальцах. Допустим, у тебя сейчас стоит 93 steps/mm. Ты приказал 100 мм, а реально вышло 97 мм. Тогда новая настройка считается так:

93 × 100 / 97 = 95.88 steps/mm

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

Ещё одна ловушка новичков: не надо пытаться лечить E-steps геометрию деталей. Если у тебя кубик по X и Y плавает, копать надо в кинематику, ремни, шаг по осям, усадку пластика и настройки слоя, а не в экструдер.

Как настроить rotation_distance в Klipper

В Klipper логика похожая, но формула зеркальная. Тут мы правим не steps/mm, а rotation_distance в секции [extruder] файла printer.cfg. Официальный метод мне нравится больше всего: короткий медленный прогон, аккуратный замер и ещё один контрольный повтор.

  1. Открой printer.cfg и посмотри текущее значение rotation_distance.

  2. Прогрей хотэнд и заправь филамент.

  3. Поставь метку примерно в 70 мм от входа в корпус экструдера и точно измерь это расстояние.

  4. Переключись в относительный режим и выдай 50 мм экструзии на низкой скорости.

  5. Снова измерь расстояние до метки и посчитай фактическую подачу.

  6. Посчитай новое значение rotation_distance и впиши его в конфиг.

  7. Сохрани файл и перезапусти прошивку.

G91
G1 E50 F60

Формула такая:

новый rotation_distance = старый rotation_distance × фактическая подача / 50

Пример. Было 7.710. Ты запросил 50 мм, а по факту экструдер протащил 47 мм. Тогда получаем:

7.710 × 47 / 50 = 7.247

Я обычно округляю до трёх знаков и повторяю замер. Если после правки ошибка остаётся больше пары миллиметров, значит дело не в цифре. Смотри на прижим, трение в тракте, катушку, состояние сопла и верность gear_ratio на редукторном экструдере.

Кстати, при переходе с Marlin на Klipper можно быстро получить стартовое значение через перевод из steps/mm. Но это именно стартовая точка. Финально всё равно делай живой замер по филаменту, а не верь старым цифрам на слово.

Почему E-steps и Flow — это не одно и то же

Вот здесь у народа вечная путаница. Механическая калибровка отвечает на вопрос: “экструдер реально проталкивает столько, сколько я приказал?” А Flow или Extrusion Multiplier отвечает на другой вопрос: “сколько пластика нужно именно этому материалу и именно этому профилю, чтобы стенка получилась нужной толщины и поверхность не распухала?”

То есть порядок работы у меня такой:

  1. сначала проверяю механику подачи через E-steps или rotation_distance;

  2. потом настраиваю температуру;

  3. дальше добиваю Flow/Extrusion Multiplier под конкретный материал;

  4. в конце уже лезу в скорость, Pressure Advance и косметику поверхности.

Если сделать наоборот, можно попасть в очень смешную, но неприятную ситуацию: ты подгоняешь Flow под кривую механику, а после замены экструдера вся система снова едет боком. Для тех, кто печатает через OrcaSlicer, у меня есть отдельный материал про калибровку Flow Ratio. А если пляшет качество на скоростях, посмотри ещё статью про баланс скорости и качества.

Частые косяки и ложные выводы

За годы в мастерской я насмотрелся на одни и те же ошибки. Они реально повторяются у каждого второго.

  • Слишком быстрая экструзия во время теста. Когда народ жмёт “выдавить 100 мм” прямо из панели на бешеной скорости, давление в хотэнде растёт, филамент мнётся, а замер уже врёт.
  • Калибровка на полузабитом сопле. В этом случае ты настраиваешь не экструдер, а сопротивление пробки внутри тракта.
  • Плохой прижим шестерни. Шаговик крутится, а пруток местами проскальзывает. Цифры пляшут, и кажется, будто “прошивка глючит”.
  • Попытка лечить всем подряд одну настройку. Если проблема только в первом слое, чаще полезнее проверить Z-offset, чем ковырять подачу.
  • Один замер и сразу победные фанфары. Я всегда делаю минимум два прогона. Иногда третий — контрольный.
  • Игнорирование состояния филамента. Сырой PETG, мягкий TPU или просто кривая намотка катушки могут ломать всю картину.

Если после калибровки у тебя всё равно остаётся недоэкструзия на длинных стенках, посмотри ещё разбор про разницу между забитым соплом и проскальзыванием экструдера. Очень часто причина оказывается именно там.

Короткий чек-лист перед финальной печатью

  • Хотэнд прогрет до рабочей температуры текущего пластика.
  • Катушка разматывается свободно, филамент не цепляется.
  • Сопло и тракт подачи чистые.
  • Прижим экструдера выставлен адекватно.
  • Команда на экструзию идёт медленно, без резких рывков.
  • E-steps или rotation_distance пересчитаны и перепроверены вторым прогоном.
  • После механической калибровки отдельно настроен Flow под конкретную катушку.

Финальный вывод такой. Если хочешь стабильную подачу пластика на 3D-принтере, сначала выставь правильную механику: E-steps для Marlin или rotation_distance для Klipper. Потом уже занимайся Flow, температурой и профилем. Именно в таком порядке принтер начинает печатать предсказуемо, а не “сегодня норм, завтра опять сюрприз”.

Я у себя в мастерской держу это как базовое правило: любая новая железка в тракте подачи — это повод перепроверить калибровку экструдера. Один спокойный замер экономит потом кучу пластика, нервов и времени на бесполезные тестовые кубики.

Метки: , , , , , , ,