Сопло царапает стол или, наоборот, пластик ложится «в воздух» и не прилипает — почти всегда это следствие неверного 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 в консоли.
Стол и сопло должны быть чистыми. Остатки пластика на кончике сопла добавляют лишние доли миллиметра к измерению. Многие выполняют калибровку на горячем принтере, чтобы учесть тепловое расширение, — это разумный подход, но будьте осторожны при работе возле нагретых узлов.
⚠️ Внимание: если калибруете на разогретом столе и сопле, не касайтесь их руками и используйте бумагу аккуратно — горячее сопло может прожечь лист и обжечь пальцы. Не оставляйте разогретый принтер без присмотра.
Калибровка через 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 — чек-лист
Настройка без датчика: ручной концевик
На принтерах без автоматического щупа ноль по 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.