Металл2024 Реклама
Метобр2024 Реклама

Klipper TMC2208 UART

shadrincev
Идет загрузка
Загрузка
25.02.2019
14409
35
Техничка

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

14
Klipper TMC2208 UART
Не большое продолжение темы TMC2208 v2 UART. Многих заинтересовала тема прошивки Klipper и UART. Что-ж, попробую удовлетворить спрос.

Для чего? Сами по себе драйвера тихие, но глючные и слабые из-за своего автоматического режима работы и частым явлением является пропуск шагов. А при использовании на оси z, особенно с ремнём в место винта, так прям караул. Вот я и попытался поковыряться в их настройке, тем более они это позволяют делать по UART. Т.е. задать вручную все параметры работы, вместо автоматических.

Параметры UART на примере оси x. В klipper реализовали механизм общения по одному проводу и он работает отлично. Что и каким образом реализовано можно спросить у автора. [tmc 2208 stepper_x]

uart_pin: P0.16

# Пин TMC2208 PDN_UART, по которому будет идти общение драйвера и платы.

#tx_pin : # Второй пин для общения, в klipper он не нужен.

microsteps : 16

# Количество шагов для настройки драйвера. Может иметь значения: 1, 2, 4, 8, 16, 32, 64, 128, 256.

interpolate : False или True

# Включение и выключение режима интерполяции шагов до 256 микрошагов.

run _ current : 0.94

# Количество тока (в амперах) для настройки драйвера при движении.

hold _ current : 0.94

# Количество тока (в амперах) для настройки драйвера при простое (ток удержания), когда шаговики не двигаются. Имеет такое же значение что и run_current, но можно и уменьшить для ненагруженных осей, но не сильно – иначе пропуски и срывы! Тогда во время простоя, драйвер и шаговик будут потреблять меньше тока и быстрее остывать.

sense _ resistor : 0.110

# Сопротивление (в Омах) резистора на плате драйвера (стандартно R110)

stealthchop _ threshold : 500

# Скорость (в мм/с) для установки порога срабатывания включения режима 'stealthChop'. Режим 'stealthChop' будет включен, если скорость движения ниже этого значения, при большем он отключается (вроде так). При значении 0 все режимы выключены и драйвер будет очень громким (даже громче А4988).

driver _ iholddelay : 8 # !

driver _ tpowerdown : 20

# Время на переключение в режим простоя драйвера с параметром hold_current.

driver_blank_time_select: 2 # !

driver_toff : 3 # !

driver_hend : 0 # !

driver_hstrt : 5 # !

driver_pwm_autograd: False или True

# об этом параметре ниже

driver _ pwm _ autoscale : False или True #!

# ! везде где поставил знак ! это значит, что я не нашел, за что отвечают этот параметр. Может, кто из комментаторов объяснит.

driver _ pwm _ lim : 12

driver _ pwm _ reg : 8

driver_pwm_freq : 1

driver_pwm_grad : 14

driver_pwm_ofs : 36

# Последние параметры относятся к разделу driver_pwm_autograd при значении True они выставляются автоматически чипом. При False их можно задать вручную.

Для ручной корректной настройки нужно выполнить следующее:

1. Выставить значение True.

2. Подать питание на двигатели.

3. Начать двигать осью необходимого драйвера пару секунд.

4. Во время движения дать команду в терминал октопринта: DUMP_TMC STEPPER=stepper_x (в место х вбить необходимую ось или extruder)

5. Посмотреть значения в терминале после строки // PWM_AUTO и внести эти значения в указанные выше параметры.

После внесения значений, если вы имеете пропуски шагов или проблемы с ускорением, то параметры driver_pwm_grad и driver_pwm_ofs нужно корректировать в + или по единице добиваясь стабильной работы драйвера. Идея состоит в том, чтобы получить автоматически определенные параметры, которые оказались несколько не оптимальными, а затем вручную настроить их так, чтобы драйвер работал в ситуациях, с которыми авто настройка не может справиться.

Возвращаясь к проблемам с ось z. Как и указал выше, моя ось стоит на ремне, и вся нагрузка падает на двигатель и драйвер. И работать нормально драйвер только с ручными параметрами и отключенной интерполяцией, шаги использовал 64. Шагов мало, согласен не так тихо, но следует помнить, что если везде выставить максимум 256, то klipper не сможет корректно рассчитать все перемещения и вылетит с ошибкой, что двигатель отстает. Поэтому, если удумаете использовать отключенную интерполяцию для всех осей и extruder, то для оси Х, У не стоит ставить не больше 128 шагов, для extruder и оси z 64 (Но это не точно, может у вас заведется по другому!).

Вроде все, что хотел сказать по UART . Критика, уточнения и дополнения приветствуются.

Для затравки: в следующей статье расскажу о двойном klipper’е.

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

14
Комментарии к статье
Кремень КБ Реклама
Кремень КМ Реклама