Настройки Klipper хранятся в текстовом файле printer.cfg
и изменяются с помощью правок этого файла. Ничего компилировать не нужно. Внёс правки → сохранил → перезапустил → готово. Очень удобно для экспериментов.
Есть обязательные параметры, которые необходимо явно указывать и определять и необязательные, которые имеют встроенное значение по умолчанию. Необязательные в свою очередь делятся на те, что всегда активны, даже если не указаны или закомментированы (с помощью #
) в файле и на те, что отключены, если не указаны или закомментированы.
Например, вы не можете не указать кинематику, это вызовет ошибку запуска клиппера. Но если вы не укажете минимальную температуру экструзии, будет использовано значение 170℃ по умолчанию. Если вы не укажете Input Shaping в конфиге, он будет отключён, а команды, связанные с ним, будут вызывать ошибку. Иногда в других руководствах можно встретить какие-то параметры, которые и так соответствуют значениям по умолчанию. Я такие параметры просто не указываю в большинстве случаев.
printer.cfg
поддерживает модульность и вложенность. Блоки кода могут быть вынесены в отдельные конфигурационные файлы, для подключения которых в printer.cfg
нужно добавить строчку
[include имяфайла.cfg]
Это удобно для вынесения в отдельные файлы дополнительных блоков, таких как BLTouch, Input Shaping или дополнительные MCU.
Обратите внимание, что параметры могут дублироваться в основном файле
printer.cfg
и дочерних конфигах, и при этом иметь разные значения.
Значения дублирующихся параметров будут перезаписывать друг друга по следующим правилам:
printer.cfg
имеет наивысший приоритет и значения параметров, указанных в этом файле переопределяют значения этих параметров в других включённыхЯ активно использую это в своих конфигах чтобы упростить переход между некоторыми режимами, такими как использование BLTouch, и для того, чтобы упорядочить свои эксперименты, вынеся дефолтные значения в отдельный конфиг.
Файл printer.cfg
расположен в папке /home/pi/klipper_config/
. Вы можете править его в веб-интерфейсе Fluidd или в любимом редакторе через WinSCP.
Рассмотрим правку через веб-интерфейс Fluidd. В Mainsail интерфейс устроен по очень похожему принципу. А Octoprint клиппероводы неприемлют по религиозным причинам.
Configuration
printer.cfg
отсутствует, создайте через Add FileEdit
Fluidd активно развивается и интерфейс часто меняется. Инструкция может внезапно устареть, что не раз случалось прямо во время написания руководства.
Все параметры подробно описаны на английском языке в официальном руководстве Klipper. Здесь будут рассмотрены только частично. В репозитории так же есть конфигурации для распространённых плат или принтеров. За основу взята конфигурация для MKS Robin Nano (v1.2.004) с изменениями для нашей платы (у нас всё-таки v1.1). Стоковые конфигурации принтеров Flying Bear Ghost 4S, Flying Bear Ghost 5 и Flying Bear Reborn вы можете скачать ниже по ссылкам. В этом разделе пояснения к конфигурации будут рассмотрены на примере FBG5 чтобы не перегружать текст. Существенные дополнения и модификации, а так же макросы, вынесены в отдельные разделы.
Конcтруктор конфигурации для принтеров FBG4S, FBG5 и FBR под платы MKSRNv1.1, MKSRNv1.3 и MKSRN-Sv1.3:
GitHub
По ссылке более актуальные конфигурации. Конфигурация ниже представлена для ознакомления.
[mcu]
serial: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method: command
Для USB:
serial: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
но лучше проверить свой порт по инструкции
Для UART RPi Zero W и RPi 3B+
serial: /dev/ttyAMA0
Для UART RPi 4
serial: /dev/ttyAMA1
[printer]
kinematics: cartesian
max_velocity: 250
max_accel: 3000
max_accel_to_decel: 2000
max_z_velocity: 20
max_z_accel: 100
Значения max_velocity
и max_accel
определяются в ходе калибровок, а square_corner_velocity
лучше оставить по умолчанию (не указывать) для корректной работы Input Shaping.
Для FBR kinematics: corexy
, что вполне логично.
Внимание! Направление
dir_pin
для вашего принтера может отличаться. Направление движения каретки можно менять с помощью знака <!
> перед значением пина. Стоковые FBG4S идут с драйверами A4988, но большинство меняют их на тихие TMC22**, для чего нужно сменить направление. FBG5 вообще сначала шли с комбинацией TMC2208 на X/Y и A4988 на Z/E, а потом на замену пришёл набор из 4-х TMC2225. К тому же многие переводят принтеры на direct-версию с заменой двигателя на «блинчик» и соответственно вращение двигателя может отличаться. Рекомендуется перед первым запуском парковки вручную поместить каретку и стол в среднее положение, чтобы в случае неправильного направления движения у вас было время на экстренное отключение принтера.
[stepper_x]
step_pin: PE3
dir_pin: PE2 # !PE2 for A4988, PE2 for TMC22**
A4988, PE2 for TMC22**
enable_pin: !PE4
microsteps: 16
rotation_distance: 40
endstop_pin: !PA15
position_endstop: 0
position_max: 255 # X-axis bed size
homing_speed: 50
[stepper_y]
step_pin: PE0
dir_pin: PB9 # !PB9 for A4988, PB9 for TMC22**
enable_pin: !PE1
microsteps: 16
rotation_distance: 40
endstop_pin: !PA12
position_endstop: 0
position_max: 210 # Y-axis bed size
homing_speed: 50
[stepper_z]
step_pin: PB5
dir_pin: !PB4 # PB4 for A4988, !PB4 for TMC22**
enable_pin: !PB8
microsteps: 16
rotation_distance: 8
endstop_pin: !PA11
position_endstop: 0.5
position_max: 200 # Z-axis print volume size
homing_speed: 20
rotation_distance
- особенность Klipper, аналог «шагов на мм» в Marlin. Отражает расстояние, на которое переместится подвижная часть за полный оборот ротора шагового двигателя. Когда-то в Klipper использовался более близкий аналог, «мм на 1 шаг», но это было изменено для того, чтобы убрать необходимость пересчитывать значения при смене дробления на микрошаги и для других вычислений. Теперь для смены дробления достаточно просто изменить параметр microsteps
. Документация по rotation distance.
position_max
определяет размер области печати по данной оси.
homing_retract_dist: 5
(стоит по умолчанию) добавляет откат от нулевой позиции после парковки по умолчанию, если не нравится, нужно явно указать значение 0
.
Если хотите чтобы центр печати и центр стола совпадали, нужно указать офсеты - смещение нулевой координаты стола относительно нулевой координаты каретки. Смещения указываем в параметрах position_min
и position_endstop
для stepper_x и stepper_y. В файлах для FBG указаны мои значения.
Для двигателей с шагом в 0.9° нужно добавить параметр full_steps_per_rotation: 400
. Если не указывать, то по умолчанию используется значение 200
, которое годится для двигателей 1.8°.
position_endstop
для оси Z
имеет значение 0.5
по рекомендации из FAQ Klipper. Это сделано для того, чтобы нивелировать погрешность механического концевика и избежать повреждения стола и сопла. При смене на оптический можно выставить 0.0
. Обязательно требует полной перекалибровки уровня стола после смены значения.
У FBR прописан второй мотор оси Z, поэтому присутствует соответствующий блок, в котором опускаются настройки скоростей:
[stepper_z1]
step_pin: PA6
dir_pin: !PA1
enable_pin: !PA3
microsteps: 16
rotation_distance: 4
endstop_pin: !PC4
[extruder]
step_pin: PD6
dir_pin: !PD3 # PD3 for A4988, !PD3 for TMC22**
enable_pin: !PB3
microsteps: 16
rotation_distance: 7.880
nozzle_diameter: 0.400
filament_diameter: 1.750
max_extrude_only_distance: 100
pressure_advance: 0.000
heater_pin: PC3
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC1
control: pid
pid_Kp: 14.669
pid_Ki: 0.572
pid_Kd: 94.068
min_temp: 0
max_temp: 260
rotation_distance
надо калибровать так же как шаги фидера (экструдера), инструкций полно в интернете. Формула пересчёта «шагов на мм» в «rotation_distance» для FBG с мотором 1.8°: {rotation_distance} = 200 * {микрошаги} / {шаги на мм}
. Формула для калибровки: {новый rotation_distance} = {старый rotation_distance} * {полученная величина экструзии} / {запрошенная величина экструзии}
. Указано моё значение для стокового фидера FBG5. Моё значение для стокового фидера FBG4S - 7.600. Значения у всех пользователей разные!
От значения nozzle_diameter
зависит величина допустимого соотношения объёма выдавливаемого пластика и дальности перемещения сопла. Если принтер получит команду с недопустимой величиной, то печать прервётся с ошибкой для защиты механики принтера. Используется в параметре max_extrude_cross_section
, который не рекомендуется менять.
max_extrude_only_distance
задаёт максимальную длину подачи филамента за одну команду. Важно для заправки пластика. 50 по умолчанию, около 100 для «краба», около 600 для боуден.
pressure_advance
- аналог Linear Advance. Значение можно передавать из стартового G-code филамента в Prusa/Super слайсере с помощью команды SET_PRESSURE_ADVANCE, например SET_PRESSURE_ADVANCE ADVANCE=0.1
. Если явно не прописан в конфиге, то выдает ошибку при передаче команды SET_PRESSURE_ADVANCE.
min_extrude_temp
- минимальная температура хотэнда для подачи пластика. По умолчанию 170, для калибровки rotation_distance фидера можно временно поставить 0.
[heater_bed]
heater_pin: PA0
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC0
control: pid
pid_Kp: 325.10
pid_Ki: 63.35
pid_Kd: 417.10
min_temp: 0
max_temp: 130
[fan]
pin: PB1
[heater_fan heater_fan]
pin: PB0
Подключён к разъёму нагревателя второго экструдера. Управляется MCU. Включается сразу при нагреве хотэнда, выключается по достижению температуры, указанной в heater_temp
, по умолчанию 50℃. Так же обдув включается автоматически независимо от команд управляющего компьютера в случае ошибки или потери связи между MCU и Pi во время печати. По умолчанию привязан к extruder
. При использовании другого или более одного экструдера нужно явно указать значение параметра heater
.
[output_pin BEEPER_pin]
pin: PC5
pwm: True
value: 0
shutdown_value: 0
cycle_time: 0.001
scale: 1000
Позже с соответствующем разделе будет соответствующий макрос.
[filament_switch_sensor filament_sensor]
switch_pin: PA4
runout_gcode:
BEEP P=1500
Можно включать и отключать командой G-code SET_FILAMENT_SENSOR SENSOR=filament_sensor ENABLE=[0|1]
. В данной конфигурации помимо паузы запускает макрос BEEP
- подачу звукового сигнала.
[virtual_sdcard]
path: ~/gcode_files
[pause_resume]
[display_status]
virtual_sdcard
создаёт папку для хранения файлов с G-code для печати и эмулирует карту памяти MCU.
pause_resume
включает возможность ставить печать на паузу с запоминанием позиции каретки.
display_status
используется для вывода информации на экран.
[firmware_retraction]
retract_length: 0
retract_speed: 35
Включение firmware_retraction
- отката с помощью команд G-code G10 (ретракт) and G11 (подача). Калибруется как обычный откат. Полезно тем, что при смене значений не требует перенарезки модели в слайсере. Минус в том, что не учитывает дополнительные плюшки типа «wipe». Параметры можно задавать из G-code филамента в слайсере с помощью команды SET_RETRACTION RETRACT_LENGTH={длина ретракта} RETRACT_SPEED={скорость ретракта}
.
[respond]
Включает команду M118 для вывода сообщений в консоль. Полезно в некоторых случаях для получения ответов от принтера, например в макросах.
[bed_screws]
screw1: 25,30
screw1_name: front left screw
screw2: 230,30
screw2_name: front right screw
screw3: 230,180
screw3_name: back right screw
screw4: 25,180
screw4_name: back left screw
speed: 150
Знакомый по стоковой прошивке помощник для регулировки уровня стола с помощью листа бумаги. Перемещает сопло над столом по заданным координатам. Координаты соответствуют положению регулировочных винтов для того, чтобы во время регулировки сопло находилось точно над винтом (ну или как можно ближе, если размер головы не позволяет). Запускается командой BED_SCREWS_ADJUST
, дальнейшие инструкции появятся в терминале.
Если у вас кастомная голова, которая может упираться куда-нибудь, например в валы оси Z, исправьте значения для безопасного перемещения. У FBG4S и FBG5 разное расположение винтов (ну и тем более у FBR).
Подключение и настройка BLTouch будут рассмотрены в разделе Дополнительные устройства.