Найти в Дзене
РадиоВрач

Жизнь без концевиков. Настраиваем Sensorless Homing на 3D-принтере. Типовая инструкция (Klipper)

Поскольку случилось так, что плата моего Flying Bear Ghost 6 была обновлена на MKS Robin Nano V3.1, особенностью которой в отличие от стоковой является модульная (заменяемая) группа драйверов шаговых двигателей, было бы не правильно не использовать одну очень интересную фишку TMC 2209, а именно бессенсорный способ парковки по осям. Если не углубляться в подробности, то работает это на обратной связи по увеличению нагрузки при возникновении препятствия, что благополучно считывается датчиком драйвера и расценивается платой, как конец пути. Возможно, механический концевик более надежен и практичен, но кто мы такие, чтобы спорить с прогрессивными технологиями заложенными в конструктив купленных вещей. Способ подключения будет описан для моего случая и моей платы, в прочих модификациях инструкция может несколько отличаться, в таком случае Вам сюда, а вот владельцы Мишек на Robin V3.1 могут спокойно пользоваться данным руководством. Для начала нам нужно расставить перемычки (джамперы), так

Поскольку случилось так, что плата моего Flying Bear Ghost 6 была обновлена на MKS Robin Nano V3.1, особенностью которой в отличие от стоковой является модульная (заменяемая) группа драйверов шаговых двигателей, было бы не правильно не использовать одну очень интересную фишку TMC 2209, а именно бессенсорный способ парковки по осям.

Если не углубляться в подробности, то работает это на обратной связи по увеличению нагрузки при возникновении препятствия, что благополучно считывается датчиком драйвера и расценивается платой, как конец пути.

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

Способ подключения будет описан для моего случая и моей платы, в прочих модификациях инструкция может несколько отличаться, в таком случае Вам сюда, а вот владельцы Мишек на Robin V3.1 могут спокойно пользоваться данным руководством.

Для начала нам нужно расставить перемычки (джамперы), так как без них никто и никуда не поедет - проверено.

1. Драйвера у меня подключены по UART, для этого нам стоит поставить одну единственную перемычку на пинах под драйверами - я их выделил красным квадратиком (больше именно под драйверами перемычек быть не должно).

2. Вторая важная перемычка стоит на контактах питания драйверов (Drive IC Power, вверху желтого квадрата). Стоять она должна там по заводу, у Вас будет выбор 3,3 и 5 вольт, кто-то рекомендует первый вариант, но у меня стоят штатные 5 вольтов и все работает нормально (может не прав, читайте литературу).

3. Последние две перемычки должны стоять на группе контактов DIAG (тоже красные квадратики), без них работать ничего не будет.

Джамперы мы поставили, а дальше нужно проверить пины самого TMC, так как не везде имеются в наличии необходимые ножки. У меня их не было, пришлось впаивать гребенку (см. рисунок ниже).

-2

Далее нам нужно отключить (ОБЯЗАТЕЛЬНО) физические концевики (смотрим выше, я зачеркнул) и установить драйвера на плату. Обращаю внимание, что это мы делаем с выключенным питанием, не нужно подключать и вынимать что-то "на горячую", иначе пойдем покупать новую плату.

-3

Смотрим на спецификацию и понимаем, что контакты по XDIAG и YDIAG соответственно PA15 и PD2. Вообще учимся читать то, что написано в даташит к плате, так как 95% проблем от незнания назначения имени контактов.

Все воткнули, все обнаружили. Теперь осталось прописать пару строк в конфигурации Klipper (printer.cfg):

[tmc2209 stepper_x]
diag_pin: ^PA1 # Set to MCU pin connected to TMC DIAG pin
driver_SGTHRS: 255 # 255 is most sensitive value, 0 is least sensitive
...
[stepper_x]
endstop_pin: tmc2209_stepper_x:virtual_endstop
homing_retract_dist: 0

Не копируем бездумно указанный кусок - это с официального портала klipper. Первый раздел отвечает за настройку драйвера, второй за сам шаговый двигатель. Как наверное Вы уже догадались diag_pin мы нашли в спецификации, а вот driver_SGTHRS мы с Вами будем подбирать, так как 255 - это максимальное значение, сама переменная отвечает за чувствительность срабатывания виртуального концевика.

В разделе двигателя мы должны либо закомментировать (поставить перед строкой #), либо полностью удалить строку физического концевика и написать его виртуальный вариант: endstop_pin: tmc2209_stepper_x:virtual_endstop (для х) и endstop_pin: tmc2209_stepper_y:virtual_endstop (для у).

Для моего 6 медведя на стоковых двигателях настройки получились такими (в принципе можно отталкиваться от них):

[stepper_x]
step_pin: PE3
dir_pin: PE2
enable_pin: !PE4
microsteps: 64
rotation_distance: 40
endstop_pin: tmc2209_stepper_x:virtual_endstop
homing_retract_dist: 0
position_endstop: 1
position_max: 255
homing_speed: 40
[tmc2209 stepper_x]
uart_pin: PD5
#interpolate: true
run_current: 0.800
#stealthchop_threshold: 999999
diag_pin: PA15 # Set to MCU pin connected to TMC DIAG pin
driver_SGTHRS: 115 # 255 is most sensitive value, 0 is least sensitive
[stepper_y]
step_pin: PE0
dir_pin: PB9
enable_pin: !PE1
microsteps: 64
rotation_distance: 40
endstop_pin: tmc2209_stepper_y:virtual_endstop
homing_retract_dist: 0
position_endstop: 1
position_max: 220
homing_speed: 40
[tmc2209 stepper_y]
uart_pin: PD7
#interpolate: true
run_current: 0.800
#stealthchop_threshold: 999999
diag_pin: PD2 # Set to MCU pin connected to TMC DIAG pin
driver_SGTHRS: 115 # 255 is most sensitive value, 0 is least sensitive

Важная ремарка - параметр удержания тока (hold_current: 0.400) желательно закомментировать или удалить, так как могут (повторяю, могут) возникать ошибки в работе драйверов.

Заменяем, сохраняем и в принципе можно начинать работать, но так как каждый принтер уникален, то чувствительность датчиков всегда измеряется в китайских попугаях, отчего рекомендуется настроить driver_SGTHRS вручную. для этого консоле Fluidd вводим:

SET_TMC_FIELD STEPPER=stepper_x FIELD=SGTHRS VALUE=255

Где x-ось, а 255 чувствительность. Меняя последнюю находим оптимально значение, чтобы машина не ломала саму себя. Выглядеть все это будет примерно так:

-4

Отводим голову на середину осей, вводим строчку в консоль и жмякаем энтер, после чего паркуем по X, если не едет, то меняем значение с некоторым шагом вниз - 250, 245, 240 и т.д (в строчке консоли, со жмяканьем энтера. Можно работать более дерзко и менять хоть на 100 и 50. Ваш диапазон 0-255), пока не устанавливаем тот тонкий момент равновесия, когда ось уверенно едет и тормозит при необходимом Вам усилии.

После калибровки оси Х переходим к У, меняя строку на:

SET_TMC_FIELD STEPPER=stepper_y FIELD=SGTHRS VALUE=255

Далее повторяем телодвижения по указанной аннотации. Найдя искомые цифры не ленимся перепроверить их в printer.cfg, так как может и не сохранить.

Все, пробуем парковаться, если работает - убираем лишние концевики, провода и пользуемся принтером с еще большим удовольствием.

Здоровья Вам и хороших тормозов!

P.S. страдания автора к новым экзекуциям принтера можно поддержать тут.