Klipper может улучшить ваш рабочий процесс печати с помощью настроенных стартовых макросов G-кода. Продолжайте читать, чтобы узнать все о стартовом G-коде Klipper!
Стартовый G-код в контексте 3D-печати — это серия инструкций в формате G-кода, которые выполняются после начала задания печати и до начала фактической печати. Эти инструкции предназначены для подготовки и калибровки принтера к печати.
Обычно стартовый G-код — это поле включенное в профиль принтера или настройки слайсера, которое интегрируется в начало создаваемого файла .gcode. Это имеет смысл для принтера, работающего на прошивке Marlin, но если вы работаете с Klipper, все работает немного по-другому, как мы увидим позже.
Независимо от того, какая прошивка установлена на вашем 3D-принтере, написание стартового G-кода всегда представляет собой сложную задачу. Может возникнуть соблазн скопировать и вставить несколько строк, найденных в Интернете, даже если они предназначены для другого принтера или случая использования. Однако наличие стартового G-кода, адаптированного к вашему принтеру, позволяет минимизировать количество неудач, создавая стандартизированную основу для работы.
В действительности, написание собственного G-кода не так сложно, как кажется, если вы четко определите его цель. И сегодня мы готовы помочь вам в этом! Мы расскажем, как написать свой собственный стартовый G-код для Klipper, но сначала давайте рассмотрим различия G-кода в Marlin и Klipper.
Klipper и Marlin

Чтобы избежать путаницы в дальнейшем, давайте вкратце рассмотрим различия между прошивками Marlin и Klipper, хотя более подробную информацию можно найти в нашей статье, посвященной этой теме.
Marlin — это прошивка по умолчанию, которой оснащено большинство принтеров на рынке. Она не требует дополнительного оборудования для работы и поддерживает 99% существующих принтеров. Чтобы применить большинство изменений, необходимо перекомпилировать и перепрошить прошивку.
Klipper работает в паре с SBC (например Raspberry Pi). Он прошивается на плату один раз, а все последующие изменения и обновления применяются через веб-интерфейс. Klipper может похвастаться набором функций, которые направлены на достижение более высоких скоростей при минимальной потере качества.
Эти различия означают, что изменение стартового G-кода в Marlin требует повторной нарезки файлов, что может оказаться утомительным. Klipper облегчает эту задачу, поскольку стартовый G-код обычно определяется на стороне прошивки с помощью макросов. Давайте подробно рассмотрим, как они работают.
Макросы G-кода

Макросы Klipper — это набор командных инструкций которые могут выполняться автоматически и по порядку с помощью одного действия со стороны пользователя. Они фактически являются частью конфигурационного файла, поэтому их можно быстро адаптировать и изменять, как и остальные параметры. Если концепция макросов для вас совершенно нова, мы рекомендуем прочитать нашу специальную статью о макросах Klipper, а затем вернуться сюда.
Принципы, составляющие макрос, очень просты. Эти действия состоят как из команд G-кода, таких как G1, G28 или M84, так и из других специфических для Klipper шаблонов команд с параметрами (например BED_MESH_PROFILE LOAD=mesh1). Затем вы можете сформулировать инструкции с помощью полноценного синтаксиса кодирования, включающего циклы if, переменные и действия.
В слайсере достаточно указать имя макроса, чтобы он автоматически выполнялся в файле .gcode. Кроме того, как и любой другой макрос, его можно привязать к кнопке в веб-интерфейсе или запустить через консоль.
Это, конечно, меняет рабочий процесс к которому мы все привыкли в Marlin, но часто в лучшую сторону:
- Нет необходимости заново нарезать отпечаток, чтобы изменить параметры запуска. Достаточно отредактировать файл .config и перезапустить.
- Вы можете создавать условные пункты, которые могут активироваться только при определенных обстоятельствах (например разные температуры стола для PLA и PETG).
- Входящие в комплект инструкции могут работать на более высоком уровне, даже взаимодействуя с Pi и возможно с окружающей средой (например включая и выключая свет или другие IoT-устройства в сети).
От Marlin к Klipper
Если у вас уже есть стартовый G-код который работает в Marlin, можно импортировать большую его часть в макрос Klipper. При незначительной доработке он может оставаться функциональным, если конфигурация оборудования не изменилась. Klipper изначально поддерживает только некоторые команды Marlin, а некоторые функции могут вызываться под другими именами. Вы можете поменять неподдерживаемые G-коды на их эквиваленты и решить проблему.
Итак, теперь, когда мы разобрались с основами, давайте приступим к написанию собственного стартового G-кода для Klipper!
Создать свой макрос

Создать свой собственный макрос проще, чем кажется! Для простоты мы остановимся на наиболее распространенных и полезных операциях:
- Ориентация принтера
- Выравнивание стола и инициализация сетки стола
- Нагрев хотенда и печатной пластины до температуры
- Очистка сопла
- Перемещение печатающей головки в позицию ожидания
Существует множество других возможностей, но для краткости мы подробно рассмотрим только эти. Для более детальной настройки всегда можно обратиться к официальной документации.
Все шаги, представленные здесь, должны быть последовательными, но вы можете пропустить некоторые из них, если они не относятся к вашей настройке.
Пошаговая инструкция
Сначала создайте новый макрос в файле .config с именем, отражающим его назначение. Затем укажите несколько начальных параметров для начала работы:
[gcode_macro START_PRINT]
gcode:
# Use absolute coordinates
G90
# Home the printer
G28
# Reset extruder
G92 E0 Как только все оси будут установлены в исходное положение, мы можем начать нагрев стола до нужной температуры с помощью M190 S<temperature>. Это также заставит его подождать после достижения заданной температуры. Для 60 °C команда будет следующей:
# Heat the bed and wait
M190 S60 Если вы хотите прощупывать печатную пластину каждый раз, вы можете сделать это после нагрева. Если у вас уже есть сохраненная сетка, просто загрузите ее с помощью второй команды:
BED_MESH_CALIBRATE PROFILE=mesh1 METHOD=automatic
BED_MESH_PROFILE LOAD=mesh1 Обратите внимание, что компания Klipper недавно внесла изменение, которое требует загрузки профиля сетки печатной пластины перед печатью, поэтому обязательно включите эту команду в макрос.

Перед нагревом сопла необходимо отодвинуть печатающую головку от области печати, чтобы избежать попадания на нее материала. Это положение варьируется от принтера к принтеру, поэтому перед выполнением проверьте, что подходит для вашей установки:
# Move to wait position
G1 X0 Y0 Z50 F4000.0
# Set and wait for nozzle to reach temperature
M109 S200 Когда все настроено, вы можете прочистить сопло, выдавливанием филамента. Помните, что эти данные могут не подходить для вашего принтера, поэтому при необходимости внесите изменения в расстояние. После завершения этой процедуры мы переустановим экструдер:
# Move Z axis up
G1 Z2.0 F3000
# Move to start position
G1 X10.1 Y20 Z0.28 F5000.0
# Draw the first line
G1 X10.1 Y200.0 Z0.28 F1500.0 E15
# Move to the side
G1 X10.4 Y200.0 Z0.28 F5000.0
# Draw the second line
G1 X10.4 Y20 Z0.28 F1500.0 E30
# Reset extruder
G92 E0 Наконец, вы можете добавить START_PRINT (или ваше имя для макроса) в стартовое поле G-кода вашего любимого слайсера, чтобы этот новый макрос был включен в .gcode файл!
Теперь, когда мы установили базовые параметры, давайте посмотрим, как включить более сложные параметры и автоматизировать процесс в выбранном вами слайсере.
Настройка слайсера

Некоторые пользователи часто переключаются между материалами с очень разными требуемыми температурами, поэтому адаптация макроса каждый раз будет в лучшем случае раздражать. К счастью для нас, мы можем настроить слайсеры на взаимодействие с Klipper и отправлять такую информацию автоматически. Если вы хотите пропустить этот шаг, достаточно добавить только макрос в стартовое поле G-кода.
Чтобы передать информацию о температуре слайсера в Klipper, стартовое поле G-кода должно включать несколько дополнительных параметров и макрос должен уметь их считывать. Что требуется от стороны слайсера, зависит от того, какой слайсер вы используете, в то время как сторона Klipper остается неизменной.
В Cura в разделе «Параметры принтера» добавьте в поле Стартовый G-код следующее:
; M190 S{material_bed_temperature_layer_0}
; M109 S{material_print_temperature_layer_0}
START_PRINT BED={material_bed_temperature_layer_0}
HOTEND={material_print_temperature_layer_0} В Prusaslicer или SuperSlicer в разделе «Настройки принтера > Пользовательские G-коды» добавьте следующее в поле стартового G-кода:
M104 S0
M140 S0
START_PRINT BED=[first_layer_bed_temperature]
HOTEND=[first_layer_temperature[initial_extruder]] Не забудьте сначала указать имя макроса!
Чтобы Klipper смог реализовать эти значения, нам придется добавить определения параметров в начало макроса и изменить команды M109 и M190:
[gcode_macro START_PRINT]
gcode:
{% set bedtemp = params.BED|int %}
{% set hotendtemp = params.HOTEND|int %}
M190 S{bedtemp}
M109 S{hotendtemp} Кроме того, вы можете передать другие параметры, такие как тип филамента или диаметр сопла и заставить Klipper действовать соответствующим образом. Поскольку это немного выходит за рамки данного руководства, мы рекомендуем вам ознакомиться с отличным макросом, написанным rootiest на GitHub.
И последнее, не забывайте всегда тестировать свои макросы перед их выполнением!







