Linear Advance / Pressure Advance

Linear Advance (Marlin) и Pressure Advance (Klipper) убирают наплывы на углах: учитывают давление в hotend и заранее тормозят экструзию перед остановкой. Калибруется отдельным тестом — паттерн с разными K/PA, выбираем самые гладкие переходы.

Цель:

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

Когда необходимо:

Первичная калибровка, при замене экструдера/хотэнда (особенно при переходе с боуден на директ-драйв), при пробе новых филаментов.

Инструменты:

Marlin Linear Advance Pattern Generator

В 3D-принтере из-за давления, необходимого для проталкивания расплавленного филамента через маленькое отверстие сопла, существует небольшая задержка между моментом, когда экструдер толкает филамент, и моментом, когда он реально выходит из сопла. Традиционно движение экструдера согласовано с XY-перемещениями принтера, поэтому начало линии оказывается недоэкструдированным, а конец — переэкструдированным. Linear advance рассинхронизирует движения экструдера и XY-движения, изменяя тайминг экструдера так, чтобы тонкие и толстые участки значительно уменьшались.

Концепция и способ настройки linear advance подробно объясняется здесь:

Особые замечания:

Linear advance часто называют pressure advance. Это одно и то же.

Linear advance обычно не включён по умолчанию в прошивке Marlin. Поэтому прошивку нужно перекомпилировать с включённым linear advance. Это рассматривается в видео выше.

Linear advance несовместим с некоторыми драйверами шаговых двигателей. Самый известный пример — TMC2208 при подключении в устаревшем режиме (как на тихих платах Creality). При подключении в режиме «smart» через UART проблем нет.

Linear advance в настоящее время несовместим с S-curve acceleration (ещё одной функцией Marlin), хотя в качестве обходного пути можно раскомментировать #define EXPERIMENTAL_SCURVE при добавлении linear advance.

Linear advance требует агрессивного ускорения экструдера и сильнее нагружает двигатель. Для драйвера E может потребоваться более высокий ток, из-за чего он будет сильнее греться.

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

Тестирование linear advance основано на визуальном осмотре одного слоя, поэтому важно, чтобы выравнивание стола и первый слой были надёжными и повторяемыми.

Linear Advance Pattern Generator

У Marlin есть превосходная документация по linear advance и уже готовый генератор тестового G-code, поэтому нет смысла создавать здесь конкурента. Пример его использования показан в видео выше, а сам инструмент находится здесь: Marlin Linear Advance Pattern Generator

Параметр, который мы настраиваем для linear advance, называется K-фактор. K-фактор связан с величиной прогиба или сжатия филамента и длиной пути между экструдером и хотэндом.

Более высокое значение K подходит для боудена и/или гибких филаментов. Это потому, что филамент может изгибаться вбок в трубке между экструдером и хотэндом, увеличивая задержку экструзии. Хорошая отправная точка для боуден-экструдера — значение K 1.0.

Более низкое значение K подходит для директ-драйв экструдера и более жёстких филаментов. При таких характеристиках передача филамента между экструдером и хотэндом более прямая, с меньшей задержкой. Хорошая отправная точка для директ-драйв экструдера — 0.2.

Видео выше показывает, как пользоваться генератором паттернов: по сути нужно ввести параметры принтера и слайсера, после чего нажать для скачивания файла G-code.

Используя предложенные выше стартовые значения K, выберите верхний и нижний предел по обе стороны от них для предварительного теста.

Интерпретация результатов:

Печать G-code, сгенерированного генератором паттернов, даст результат вроде этого:

На некоторых горизонтальных линиях должны быть явные толстые и тонкие участки, а на некоторых даже большие пропуски. Вы ищете линию с наиболее стабильной шириной экструзии слева направо. Значение K для этой линии будет напечатано справа от неё. На этом этапе, как показано в видео, можно повторить тест с более узким диапазоном значений по обе стороны от лучшего значения K. Это поможет точнее определить оптимальное значение с «более высоким разрешением».

Сохранение K-фактора

Многие параметры, которые мы настраивали до этого, можно постоянно сохранить либо в прошивку, либо в EEPROM. Поскольку K-фактор linear advance зависит от филамента, это может быть не лучшим решением, если вы печатаете разными филаментами; вместо этого вы можете предпочесть сохранять его в профиле слайсера. Все способы описаны ниже.

K-фактор можно установить с помощью G-code M900:

M900 K0.11

Его можно сохранить в EEPROM, отправив следом:

M500

Установку и сохранение K-фактора также можно выполнить через LCD-меню.

Возможно, вы предпочтёте использовать команду M900 в стартовом G-code, особенно если ваш слайсер поддерживает разные стартовые G-code для разных материалов. Если вы используете стартовый G-code, без последующего M500 установка K-фактора будет временной. При следующем перезапуске принтера будет восстановлено значение из EEPROM. При начале новой печати значение в её стартовом G-code перезапишет ранее установленное.

Linear advance можно временно отключить, установив K-фактор в 0:

M900 K0

Частые вопросы

Чем Linear Advance в Marlin отличается от Pressure Advance в Klipper?
Это одно и то же явление, реализованное в разных прошивках. Marlin называет функцию Linear Advance, Klipper — Pressure Advance, RepRapFirmware использует термин Pressure Advance. Принцип идентичен: компенсация задержки давления в сопле, чтобы убрать раздутые углы и тонкие стенки в начале линий. Численные значения K (Marlin) и pressure_advance (Klipper) не взаимозаменяемы напрямую и подбираются под конкретный принтер и материал.
С каких значений K-фактора начать калибровку?
Для директ-драйв экструдера стартуйте с K≈0.2, для боуден-системы — с K≈1.0. Сгенерируйте тестовый паттерн с диапазоном вокруг этих значений (например, 0.0–0.5 шагом 0.025 для директа), напечатайте и выберите линию с наиболее равномерной шириной экструзии. Затем сузьте диапазон и шаг для уточнения.
Нужно ли подбирать K-фактор под каждый филамент?
Да. Жёсткость, температура печати и тип материала (PLA, PETG, ABS, ASA, TPU) меняют сжатие филамента и давление в сопле. Удобнее всего хранить K-фактор в профиле материала слайсера (OrcaSlicer, PrusaSlicer, Bambu Studio, Cura) или вписывать M900 K… в стартовый G-code конкретного филамента.
Как сохранить K-фактор навсегда?
В Marlin: отправьте M900 K<значение>, затем M500 — параметр запишется в EEPROM и восстановится при включении принтера. В Klipper значение прописывается в printer.cfg в секции [extruder] параметром pressure_advance. Если значение прописано в стартовом G-code слайсера, оно перезапишет EEPROM-значение только для текущей печати.
Почему Linear Advance не работает или даёт странные результаты?
Частые причины: функция не включена в прошивке Marlin (нужна перекомпиляция с раскомментированным #define LIN_ADVANCE), конфликт с драйверами TMC2208 в устаревшем step/dir-режиме, одновременно включённый S-Curve Acceleration, слишком слабый ток драйвера E или нестабильный e-steps/поток. Перед тестом убедитесь, что калибровка экструзии и первого слоя в порядке.
Что делать, если на тесте ни одна линия не выглядит идеальной?
Сначала проверьте базу: точные e-steps, корректный поток (flow), стабильный первый слой и температуру. Нестабильность ширины линий из-за этих факторов смазывает картину Linear Advance. После этого повторите тест с более узким диапазоном и меньшим шагом K (например, 0.02 вместо 0.1) вокруг лучшего предыдущего результата.

← Ко всем шагам калибровки

Частые вопросы

Чем отличаются Linear Advance и Pressure Advance?

По сути это одно и то же: Linear Advance в Marlin (K-фактор), Pressure Advance в Klipper. Оба компенсируют давление в хотенде на разгонах и торможениях.

Что даёт калибровка LA/PA?

Убирает наплывы (bulge) на углах и нехватку пластика после них — углы становятся чёткими.

Какими командами задать значение?

M900 K<значение> в Marlin, SET_PRESSURE_ADVANCE ADVANCE=<значение> в Klipper, затем сохранить в профиль.

Раздел основан на Teaching Tech 3D Printer Calibration, автор Michael Laws (Teaching Tech), под CC-BY-SA-4.0. Все расчёты выполняются у вас в браузере.