Настройка Z Offset в Klipper: полное руководство

Сопло царапает стол или, наоборот, пластик ложится «в воздух» и не прилипает — почти всегда это следствие неверного Z offset, и в Klipper эта проблема решается командой PROBE_CALIBRATE с последующим сохранением результата. Без корректного смещения по оси Z прошивка не знает реальное расстояние между точкой срабатывания датчика и кончиком сопла, поэтому первый слой получается либо размазанным, либо отслоившимся.

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

Что такое Z offset и почему он критичен

Z offset — это вертикальное расстояние между точкой срабатывания концевого датчика (BLTouch, индуктивный, кинематический щуп) и реальным положением сопла над столом. Датчик срабатывает не в момент касания соплом стола, а раньше или позже, и прошивке нужно знать эту поправку, чтобы корректно выставить ноль оси Z.

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

  • 🔧 Слишком маленький offset — сопло царапает стол, первый слой «прозрачный»
  • 📏 Слишком большой offset — линии круглые, не прижаты, плохая адгезия
  • ✅ Правильный offset — линии слегка сплющены, сливаются в единую поверхность

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

Перед запуском калибровки убедитесь, что механика принтера в порядке. Ослабленные винты крепления сопла, люфт стола или грязь на сопле дадут неверный результат, и процедуру придётся повторять. Также проверьте, что датчик (если используется BLTouch или аналог) корректно срабатывает — это можно проверить командой QUERY_PROBE в консоли.

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

⚠️ Внимание: если калибруете на разогретом столе и сопле, не касайтесь их руками и используйте бумагу аккуратно — горячее сопло может прожечь лист и обжечь пальцы. Не оставляйте разогретый принтер без присмотра.

📊 Какой датчик уровня установлен на вашем принтере?
BLTouch / CR Touch
Индуктивный датчик
Кинематический щуп (Klicky, Tap)
Концевой выключатель без датчика

Калибровка через PROBE_CALIBRATE

Основной способ настройки Z offset в Klipper — команда PROBE_CALIBRATE. Она подводит датчик к столу, фиксирует точку срабатывания, а затем предлагает вручную опустить сопло до лёгкого трения о лист бумаги. Разница между этими положениями и становится значением offset.

Порядок действий следующий. Сначала выполните G28 для парковки всех осей, затем отправьте в консоль:

PROBE_CALIBRATE

Принтер поднимет щуп над центром стола и зафиксирует срабатывание. Дальше командами TESTZ Z=-0.1 (или другим шагом) опускайте сопло, пока лист офисной бумаги не начнёт слегка цепляться при перемещении под соплом. Для тонкой подстройки используйте шаги поменьше: TESTZ Z=-0.01. Когда трение появится, завершите процедуру командой ACCEPT, а затем сохраните результат:

SAVE_CONFIG

После SAVE_CONFIG Klipper автоматически перезагрузится, а значение z_offset запишется в конец файла printer.cfg в секцию автосохранения. Вручную редактировать эту секцию не нужно.

☑️ Калибровка Z offset — чек-лист

Выполнено: 0 / 5

Настройка без датчика: ручной концевик

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

Некоторые используют виртуальный концевик на базе датчика (параметр probe:z_virtual_endstop в секции [stepper_z]) — тогда калибровка снова выполняется через PROBE_CALIBRATE. Конкретная конфигурация зависит от вашего printer.cfg, поэтому сверяйтесь с официальной документацией Klipper под вашу связку железа.

Тонкая подстройка во время печати

Даже после точной калибровки иногда требуется микрокоррекция «на лету». Для этого в Klipper служит команда SET_GCODE_OFFSET. Например, чтобы прижать сопло чуть ближе к столу во время печати первого слоя:

SET_GCODE_OFFSET Z_ADJUST=-0.02 MOVE=1

Параметр Z_ADJUST добавляет поправку к текущему значению, а MOVE=1 плавно применяет её движением оси. В веб-интерфейсах Fluidd и Mainsail для этого есть отдельные кнопки «вверх/вниз» на панели управления. Учтите: такая поправка действует только до перезапуска — если она оказалась удачной, её нужно зафиксировать через Z_OFFSET_APPLY_PROBE с последующим SAVE_CONFIG.

Типичные ошибки и их признаки

Разберём частые проблемы, с которыми сталкиваются при настройке Z offset, и способы их диагностики.

СимптомВероятная причинаЧто проверить
Сопло царапает столOffset слишком малПовторить калибровку, проверить люфт стола
Пластик не прилипаетOffset слишком великУменьшить offset, очистить стол
Offset «слетает» после перезагрузкиНе выполнен SAVE_CONFIGПроверить секцию автосохранения в printer.cfg
Результат нестабилен от раза к разуЛюфт механики, грязное соплоПодтянуть крепёж, очистить сопло
Датчик срабатывает ошибочноПомехи, неверная проводкаПроверить QUERY_PROBE, кабель датчика

⚠️ Внимание: если после замены сопла, термобарьера или датчика вы не перекалибровали offset, старое значение почти наверняка неверно — высота хотенда при любой разборке меняется. Всегда повторяйте PROBE_CALIBRATE после обслуживания печатающей головки.

Почему offset отличается для разных поверхностей стола

Стекло, PEI-пластина и текстурированное покрытие имеют разную толщину и разное «пружинение» при касании. Если вы меняете съёмные столы, для каждого может потребоваться своё значение offset. Некоторые пользователи хранят несколько профилей и подгружают нужный макросом перед печатью.

Проверка результата тестовой печатью

Финальный этап — печать тестового первого слоя. Подойдёт любая модель «first layer test»: большой прямоугольник высотой в один слой. Идеальный результат выглядит как равномерная гладкая поверхность без зазоров между линиями и без прозрачных пережатых участков.

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

Часто задаваемые вопросы

Нужно ли калибровать Z offset на холодном или горячем принтере?

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

Куда сохраняется значение z_offset после SAVE_CONFIG?

Klipper дописывает его в конец файла printer.cfg в специальную секцию автосохранения. Вручную эту секцию редактировать не следует — при следующем SAVE_CONFIG она будет перезаписана.

Чем TESTZ отличается от обычного движения по Z?

Команда TESTZ работает только внутри процедуры PROBE_CALIBRATE и двигает сопло относительно зафиксированной точки срабатывания датчика. Обычные команды перемещения в этот момент недоступны.

Offset настроен, но первый слой всё равно неравномерный. В чём дело?

Возможная причина — кривизна стола. Постройте карту высот командой BED_MESH_CALIBRATE (при наличии датчика) и убедитесь, что сетка подгружается при печати. Также проверьте натяжение ремней и отсутствие люфтов.

Как откатить неверное значение offset?

Удалите или закомментируйте строку z_offset в секции автосохранения printer.cfg, перезапустите Klipper и выполните калибровку заново через PROBE_CALIBRATE.