В данной статье расмотрим первоначальную проверку файла конфигурации printer.cfg
, а так же исправность оборудования перед первой тестовой печатью.
Для удобства навигации каждый шаг будет выделен в отдельный раздел.
Само програмное обеспечение Klipper
заранее не знает ни какая плата MCU используется, ни как ее правильно конфигурировать. Поэтому чтобы все работало правильно, необходимо использовать правильно настроенный printer.cfg
. Именно из этого файла Klipper
узнает сколько у него управляемых MCU
, какие пины за что отвечают, допустимые температурные режимы, настройку кинематики, перечень периферии и многое другое.
Перед настройкой рекомендуется взять основу конфигурационного файла из примеров файлов конфигурации или из папки ~/klipper/config/
.
Лучше один раз проверить
printer.cfg
, чем постоянно спотыкаться на настройкеKlipper
.
Конфигурационный файл достаточно часто содержит спец. символы в качестве параметров к Пинам:
Конфигурационный файл также может состоять из нескольких других файлов, для этого идет следующий конструкт: [include (путь к файлу)]
[include ./macros.cfg]
На начальных этапах их лучше удалить из файла printer.cfg
, либо проверять каждый из них по отдельности. Так как в конфигурационном файле допускается переопределение параметров, в зависимости от своего расположения - include
может менять параметры.
Так же, include
могут ссылаться на конфигурационные файлы, которых у вас нет (забыли скопировать или изменить имя из примера).
Чаще всего он переопределяет путь к [mcu]
и расположение каталога [virtual_sdcard]
, так как конфигурации Fluidd или Mainsall любят это делать. Потом начинается поиски почему вы поправили путь к MCU, а по лог файлу видно что нет.
Первое что следует проверить, это работоспобность аварийной остановки, которую вызывают команды M112
или нажатие кнопки Аварийной Остановки в web интерфейсе. В дальнейшей настройке важно иметь возможность аварийно остановить принтер, чтобы избежать повреждения или выхода его из строя. После аварийной остановки он должен нормально приходить в рабоспособное состояние по команде FIRMWARE_RESTART
.
Возможно на первом этапе настройки аварийная остановка не будет работать, потому что у вас неправильно прописаны mcu
, и прошивка не стартует. Однако проверка защитных механизмов - это первое, что следует делать при начале эксплуатации.
Полный перечень доступных параметров для раздела [printer]
описан в документации.
Данный раздел служит для описания кинематики вашего принтера, а так же для установления возможных скоростей, ускорений и тп.
В большинстве случаев выглядит следующим образом:
[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 3000
В данном случае применяется кинематика cartesian
, она же "Прюша", "дрыгостол" и тп. Основными представителями этой кинематики можно назвать принтера Prusa i3 MK3, Creality Ender3, Kingroon KP5L и другие. Платили бы нам за рекламу, мы еще и ссылки с промокодами бы сделали, но увы .
Прошивка Klipper
поддерживает также и другие популярные кинематики:
corexy
, а так же производную corexz
;hybrid_corexy
- она же markforge
, а так же производную hybrid_corexz
;rotary_delta
, ее производную delta
, и ее производную deltesian
;none
- служит для ситуации когда отсутствуют шаговые моторы или для отладки.В зависимоти от выбранной кинематики, прошивка Klipper
по разному рассчитывает перемещения, а так же по разному управляет шаговыми моторами. Именно поэтому это основополагающий момент, который необходимо проверить и указать верный, в вашем случае, в начале настроек.
Параметры max_velocity
и max_accel
задают максимально возможные скорость перемещения (любых перемещений) и ускорение, которые доступны принтеру в целом. В случае если запрашиваемая скорость будет превышать максимально допустимую, значение будет снижено до указанного в параметре max_velocity
.
Полный перечень доступных параметров для раздела [mcu]
описан в документации.
Подключение mcu
детально расмотренно в статье Подключение MCU.
В большинстве случаев выглядит следующим образом:
[mcu]
serial: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method: command
Основой параметр который важен в данном блоке - serial
, если же используются MCU
на CAN шине то - canbus_uuid
.
Кроме того, если вы используете несколько MCU
, убедитесь, что для всех них существуют блоки [mcu KrayKray]
в printer.cfg
Полный перечень доступных параметров для раздела [stepper]
описан в документации.
Каждый принтер может иметь разное количество шаговых моторов, которое зависит в том числе от кинематики. Некоторые принтеры имеют несколько шаговых моторов на ось.
Основное правило которому необходимо следовать: первый шаговый мотор на оси не имеет цифры в своем названии, второй и последующие - имеют. Например для принтера Voron 2.4, который имеет 4 шаговых мотора по Z наименования моторов будут: stepper_z
stepper_z1
stepper_z2
stepper_z3
.
В большинстве случаев он выглядит следующим образом:
[stepper_x]
step_pin: PC2
dir_pin: PB9
enable_pin: !PC3
microsteps: 16
rotation_distance: 40
endstop_pin: ^PA5
position_endstop: 0
position_min: 0
position_max: 235
homing_speed: 50
В данном разделе расмотрим только управляющие пины, из примера выше:
[stepper_x]
step_pin: PC2
dir_pin: PB9
enable_pin: !PC3
...
endstop_pin: ^PA5
В данном случае для нас важно чтобы step_pin
, dir_pin
- были уникальны для каждого шагового двигателя, потому что именно через эти управляющие пины определяется момент выполнения им поворота (шага) и направление этого поворота.
В случае если шаговый мотор движется в противоположном направлении, то для кинематики castesian
неоходимо просто инвертировать направление (или отменить инверсию). Делается это добавлением ! перед именем пина:
dir_pin: !PB9
В случае если используется кинематика CoreXY
, то для настройки направлений XY наглядно проилюстрированы параметры:
Данное изображение взято из официальной документации VoronDesign.
Параметр enable_pin
может быть общим для несколькольких шаговых моторов, так как он активирует/деактивирует мотор.
Проверить правильность подключения шагового мотора и его работосопобность позволяет команда STEPPER_BUZZ
STEPPER_BUZZ STEPPER=stepper_x
В части концевика для шагового мотора должен быть прописан pin:
endstop_pin: ^PA5
В данном случае ^ указывает что используется подтяжка вверх.
В случае если используется Sensorless парковка, на примере драйвера tmc2130
для шагового мотора по оси Х, то параметр может выглядеть следующим образом: tmc2130_stepper_x:virtual_endstop
.
В случае если используется Probe (BLTouch, Klicky, Beacon и тд.) вместо концевика по оси Z, то параметр будет выглядеть следующим образом endstop_pin: probe:z_virtual_endstop
, а параметр position_endstop
в секции [stepper_z]
должен быть удален.
В данном разделе рассмотрим только те параметры, которые определяют допустимые координаты по осям принтера.
Прошивка Klipper
оперирует допустимым интервалом координат, поэтому интервалы координат 0..200
и -200..0
будут одинаково допустимы и работоспособны.
Учтите, что при выходе из допустимых интервалов координат - Klipper
аварийно остановит выполнение всех дальнейше запланированных задач, и выдаст ошибку.
position_endstop: 0
position_min: 0
position_max: 235
position_endstop
- домашняя координата оси, ось примит эту координату при срабатывании концевика. position_endstop
ВСЕГДА лежит в интервале допустимых коордиат от position_min
до position_max
, чаще всего position_endstop
равен position_min
, и в данном случае равен 0.. Иногда концевик стоит не в минимальном, а в максимальном положении. Тогда его значение должно близиться к максимальной допустимой координате оси, но не превышать его. Если брать данный пример то - 235;position_min
- минимально допустимая координата на оси, может быть отрицательной;position_max
- максимально допустимая координата на оси. Неочевидно, но она также может быть отрицательной;В данном разделе рассмотрим только те параметры, которые определяют само перемещение, а так же те, которые влияют на расчеты перемещений. Все перемещения в FDM 3D принтерах - это вращение шагового мотора, поэтому чтобы переместить что-то в конкретное место, нужно знать на сколько шаговый мотор должен повернуться. Гаррус Вакариан будет рад, если вы откалибруетесь.
Подробно про Rotation Distance
расмотренно в статье Калибровка перемещений.
microsteps: 16
rotation_distance: 40
full_steps_per_rotation: 200
full_steps_per_rotation
- Физическая характеристика мотора, сколько полных шагов он делает на полный оборот в 360 градусов. Распространены два типа шаговых моторов: у которых полный шаг составляет 1.8 градуса (200 шагов на полный оборот) и шаговые моторы с полным шагом в 0.9 градуса (400 шагов на полный оборот).microsteps
- на сколько микрошагов делится каждый шаг. Сегодняшние технологии позволяют разбивать полный шаг на 2, 4, 8, 16, 32, 64, 128 и 256 микрошагов. По умолчанию микрошаг составляет - 16. Другое количество микрошагов можно задать при использовании соответствующих драйверов и соответствующих настоек, опираясь на их возможности. Например, для драйверов TMC
должен быть настроен UART/SPI режим работы драйвера;rotation_distance
- это расстояние в миллиметрах на которое переместится ось за один полный оборот шаговика, а именно - 360 градусов. Это основной параметр, который корректируется/уточняется при калибровках перемещений.Проверка состояния и исправности работы концевиков. Выполняется командой:
QUERY_ENDSTOPS
Результатом работы команды будет строка:
x:open y:open z:TRIGGERED
Что расшифровывается как: концевики на осях X,Y не нажаты, концевик по оси Z сработал. В нормальном состоянии все концевики должны быть в состоянии open
. А при нажатии на них и одновременном опросе их состояния, концевик должен находиться в состоянии TRIGGERED
.
Если концевик при нажатиии на него с одновременным опросом не меняет своего статуса - он вышел из строя, оборван провод или он настроен некорректно.
Кроме опроса концевиков по команде, можно посмотреть их статус через web интерфейс в разделе Tune
:
В части концевика для шагового мотора должен быть прописан pin:
[stepper_x]
...
endstop_pin: ^PA5
В данном случае ^ указывает что используется подтяжка вверх.
В случае если используется Sensorless парковка, на примере драйвера tmc2130
для шагового мотора по оси Х, то параметр может выглядеть следующим образом: tmc2130_stepper_x:virtual_endstop
.
В случае если используется Probe (BLTouch, Klicky, Beacon и тд.) вместо концевика по оси Z, то параметр будет выглядеть следующим образом endstop_pin: probe:z_virtual_endstop
, а параметр position_endstop
в секции [stepper_z]
должен быть удален.
В случае если концевик работает нормально и меняет свое состояние при замыкании/размыкании, но его состояние необходимо инвертировать используя ! (или удалить существующее инвертирование).
Параметры нагревателей и датчиков температур расположены в секциях [extruder]
и [heater_bed]
. Полный перечень доступных параметров для данных разделов описан в документации.
Необходимо проверить чтобы были корректно указаны:
heater_pin: PA1
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC5
min_temp: 0
max_temp: 250
heater_pin
- Пин нагревателя, отвечает за включение и отключение нагревательного элемента;sensor_type
- Название датчика температуры. Существуют два основных типа датчика температуры: NTC термисторы работают таким образом, что при увеличении температуры их сопротивление уменьшается. PTC термисторы – термисторы работают таким образом, что увеличивается электрическое сопротивление с ростом температуры. Поэтому ошибка в указании термистора ведет к аварийной остановке Klipper
, а так же может привести к печальным последствиям. Полный перечень доступных термисторов и усилителей, поддерживаемых Klipper
, указан в документации;sensor_pin
- Пин термистора, отвечающий за измерение температуры;min_temp
- Минимально допустимая температура, выход за которую приводит к аварийной остановке Klipper
;max_temp
- Максимально допустимая температура, выход за которую приводит к аварийной остановке Klipper
.В мире нет ни одного одинакового в своих характеристиках датчика температуры и нагревательного элемента, да их значений минимальны, но они есть. Кроме того вы могли заменить нагревательный элемент. Поэтому необходимо выполнить калибровку и подбор управляющих коэффициентов, для вашего принтера.
PID
- это пропорционально-интегрально-дифференцирующий регулятор, или управление в контуре с обратной связью. Таким образом он управляет нагревательным элементом так, чтобы поддерживать равномерную температуру, регулируя мощность нагревательного элемента. То есть для достижения целевой температуры он включит нагревательный элемент на максимальную мощность, а по мере достижения целевой температуры начнет плавно ее снижать, переходя в режим поддержания температуры.
В секциях [extruder]
и [heater_bed]
присутствуют коэффициенты PID
:
control: pid
pid_Kp: 54.027
pid_Ki: 0.770
pid_Kd: 948.182
В случае, если в параметре control
используется режим watermark
- то коэффициенты PID
можно удалить из секции нагревателя. В режиме watermark
нагревательный элемент всегда работает с максимальной мощностью. По достижению целевой температуры - нагревательный элемент отключается, и в дальнейшем включится в случае если температура выйдет за рамки отклонения указанные в параметре max_delta
, который по умолчанию равен 2.
Для этих целей служит команда PID_CALIBRATE.
PID_CALIBRATE HEATER=<config_name> TARGET=<temperature>
Помните,
PID
калибруется для условий в которых предполагается работа нагревателей, поэтому коэффициентыPID
с обдувом иPID
без обдува будут разными, так же как и для разных температур.
В случае если для контроля температуры вы используете режим
watermark
пропустите калибровкуPID
для данного нагревателя.
Для калибровки PID
экструдера на темпретаруре 240
выполним команду:
PID_CALIBRATE HEATER=extruder TARGET=240
Для калибровки PID
стола на темпретаруре 80
выполним команду:
PID_CALIBRATE HEATER=heater_bed TARGET=80
Сохраним полученные значения PID
в конфиг.
SAVE_CONFIG