Klipper TMC2208 UART

shadrincev
Идет загрузка
Загрузка
25.02.2019
3398
34
печатает на Flyingbear P905
Техничка

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

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

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

12
Не большое продолжение темы 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’е.

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

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

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

12
Комментарии к статье

Комментарии

25.02.2019 в 12:18
1

... расскажу о двойном klipper’е.
= Катамаран Победы?

Жду с нетерпением!

ski
25.02.2019 в 13:54
1

Обязательно будет)

25.02.2019 в 12:20
0

Тоже долго разбирался с ними. В результате вернулся к работе без uart. Разница не заметна . Uart нужен для для шагов больше 16.я так думаю

25.02.2019 в 13:40
0

И шаги, и ток, и режим работы... и т.д.

25.02.2019 в 12:52
2

# Количество шагов для настройки драйвера. Может иметь значения: 1, 2, 4, 8, 16, 32, 64, 128, 256.
Скажите пожалуйста, откуда вы это взяли? может я чего пропустил,мно у 2208 микрошаги 16, больше даже по уарт не устанавливаются. Эта возможность есть у 2130. у 2208 только интерполяция может быть включена.

25.02.2019 в 13:38
0

Ай простите. В статье забыл написать, под ними надо все перемычки убрать! Тогда все будет регулироваться.

25.02.2019 в 13:46
1

Полистайте хотя бы даташит к этому тринамику.

25.02.2019 в 13:56
1

.... Слов нет. Тогда уж вы поставте клиппер и проверьте.

25.02.2019 в 15:28
0

Да и что толку от 256, если они экстраполированы из 16? Я лучше тогда LV поставлю, у них хотя бы честные 128 :)

25.02.2019 в 16:21
0

Ваше право. Только тогда откуда 'экстраполированы' мои, допустим на экструдере, 64 шага, или на z - 128? Факты пожалуйста, и даташит стр. 24., наверное, не для вас.

25.02.2019 в 18:01
0

Ваше право. Только тогда откуда 'экстраполированы' мои, допустим на экструдере, 64 шага
Пример экстраполяции. Он каждый просчитанный импульс делит на 4 импульса. (в случае 64) По факту дискретизация остаётся на уровне 16. Это эффективно для снижения шума, а не для повышения уровня точности.
даташит стр. 24., наверное, не для вас.
??? Наверное нет. Или объясните мне, где тут достаточное обоснование для ваших утверждений.

25.02.2019 в 19:09
0

пункт 7 1: и 8 - 1:. Дальше спорить не вижу смысла, оставайтесь при своем мнении.

26.02.2019 в 09:14
0

иии??? Как вы увязали фильтрацию шумов и игнорирование джамперов - селекторов режима с режимом работы драйвера? :) Или, вы сейчас мне пытаетесь доказать, что драйвер может выбирать режим по UART? Так я знаю это, он может, но 256 шагов при этом так и остаются экстраполированными :)

26.02.2019 в 10:09
1

Я не пытаюсь доказать, привел свою точку зрения. Если она ошибочна, что я не исключаю (по многим причинам), если это вас удовлетворит, то пусть будет по вашему - значит я не так понял.

26.02.2019 в 10:39
1

На том и сойдёмся :) ничто не мешает нам остаться при своём мнении, а не бодаться как двум баранам на жёрдочке :D

25.02.2019 в 14:41
2

Шаги и с установленными перемычками ставят как хочешь по uart

25.02.2019 в 15:01
0

Может, не спорю, но где-то на забугорном видел, что советуют убрать, с ними не проверял.

25.02.2019 в 16:03
1

Send: dump_tmc stepper=stepper_a
Recv: // GCONF:      000001c0 pdn_disable=1 mstep_reg_select=1 multistep_filt=1
[...]
Recv: // IOIN@TMC220x: 20000149 ENN=1 MS2=1 PDN_UART=1 SEL_A=1(TMC220x) VERSION=0x20
[...]
Recv: // CHOPCONF:   10030053 toff=3 hstrt=5 TBL=2 vsense=1 MRES=0(256usteps) intpol=1

25.02.2019 в 12:59
2

5. Посмотреть значения в терминале после строки // PWM_AUTO и внести эти значения в указанные выше параметры.
Какой командой вносить, как включать выключать автоматическое и ручное управление, какими командами. не понятно. Вы как-то много написали про параметры которые есть, но слишком маловато, про те которые вам известны, и как их корректировать.

25.02.2019 в 13:41
1

Ну, тут тогда надо начать с установки клипера и где он хранит конфиг, в котором все прописывается. А эти статьи есть уже на форуме, повторяться не хочется.

25.02.2019 в 13:52
2

он хранит конфиг, в котором все прописывается.
вот этого упоминания , в статье и не хватает. Когда понятно как управлять, тогда не только из клипера можно. Собственно с этим и хочу разобраться.
Спасибо.

25.02.2019 в 15:47
1

https://yadi.sk/i/6bUlwrGflxAA7g     калькулятор для TMC2208

https://yadi.sk/i/as0RueWhauIsSw даташит

Скажите пожалуйста, откуда вы это взяли? может я чего пропустил,мно у 2208 микрошаги 16, больше даже по уарт не
легко ставится до 256 даже пофиг на перемычки

25.02.2019 в 16:54
1

легко ставится до 256 даже пофиг на перемычки
Если не затруднит, реальные команды, в прошивке марлин 1.1.9 которые изменяют микрошаг.

25.02.2019 в 15:56
1

stealthchop _ threshold : 500
# Скорость (в мм/с) для установки порога срабатывания включения режима 'stealthChop'. Режим 'stealthChop' будет включен, если скорость движения ниже этого значения, при большем он отключается (вроде так). При значении 0 все режимы выключены и драйвер будет очень громким (даже громче А4988).
значение высокое так как при скорости 130 начинается звон шаговика на 16 шпулях.
при 0 тихие если ставить    hold _ current  ниже раза в 3 чем run _ current и также скорости увеличиваются

25.02.2019 в 16:24
0

Вот спасибо, не знал. Обязательно попробую.

25.02.2019 в 18:51
2

Если не затруднит, реальные команды, в прошивке марлин 1.1.9 которые изменяют микрошаг.
Команд нет правится в прошивке но с подключенным UART в файле Configuration_adv.h

/**
 * To use TMC2130 stepper drivers in SPI mode connect your SPI pins to
 * the hardware SPI interface on your board and define the required CS pins
 * in your `pins_MYBOARD.h` file. (e.g., RAMPS 1.4 uses AUX3 pins `X_CS_PIN 53`, `Y_CS_PIN 49`, etc.).
 * You may also use software SPI if you wish to use general purpose IO pins.
 *
 * To use TMC2208 stepper UART-configurable stepper drivers
 * connect #_SERIAL_TX_PIN to the driver side PDN_UART pin with a 1K resistor.
 * To use the reading capabilities, also connect #_SERIAL_RX_PIN
 * to PDN_UART without a resistor.
 * The drivers can also be used with hardware serial.
 *
 * TMCStepper library is required for connected TMC stepper drivers.
 * https://github.com/teemuatlut/TMCStepper
 */
#if HAS_TRINAMIC

  #define R_SENSE      0.11  // R_sense resistor for SilentStepStick2130
  #define HOLD_MULTIPLIER    0.4  // Scales down the holding current from run current
  #define INTERPOLATE true  // Interpolate X/Y/Z_MICROSTEPS to 256

  #if AXIS_IS_TMC(X)
    #define X_CURRENT     850  // (mA) RMS current. Multiply by 1.414 for peak current.
    #define X_MICROSTEPS   32  // 0..256
  #endif

25.02.2019 в 19:21
3

параметры

driver_toff : 3 # !
driver_hend : 0 # !
driver_hstrt : 5 # !
в Марлине имеют значения
#define CHOPPER_DEFAULT_12V      { 3, -1, 1 }
#define CHOPPER_DEFAULT_19V      { 4,  1, 1 }
#define CHOPPER_DEFAULT_24V     { 4,  2, 1 }
#define CHOPPER_DEFAULT_36V      { 5,  2, 4 }
#define CHOPPER_PRUSAMK3_24V   { 4,  1, 4 }
#define CHOPPER_MARLIN_119    { 5,  2, 3 }
 
1 столбец    toff
2 Столбец   hend
3 Столбец   hstrt

или можно вычислить по калькулятору ссылку которого давал выше

25.02.2019 в 19:47
0

Мог бы... поставил бы больше плюсов, а так только - ОГРОМНОЕ спасибо, а я их расчет найти не мог. :)

25.02.2019 в 20:57
1

в Марлине имеют значения
#define CHOPPER_DEFAULT_12V { 3, -1, 1 }
Спасибо добрый человек, помогли.
Не нашел этого в марлине ни 119 ни 2.0. Встретил в MK4DUO.
Правильно ли я понимаю, раз этих сторок нет их можно просто добавить. Потому как это информация для библиотеки, которая и в марлине и в MK4DUO одинакова?

25.02.2019 в 22:20
1

по сути дела они прописаны в lcd меню в файле tmc_util.h ,выбор параметров,но можно прописать в конфиге

Configuration_adv.h

есть пункт по выбору

 /**
   * Optimize spreadCycle chopper parameters by using predefined parameter sets
   * or with the help of an example included in the library.
   * Provided parameter sets are
   * CHOPPER_DEFAULT_12V
   * CHOPPER_DEFAULT_19V
   * CHOPPER_DEFAULT_24V
   * CHOPPER_DEFAULT_36V
   * CHOPPER_PRUSAMK3_24V // Imported parameters from the official Prusa firmware for MK3 (24V)
   * CHOPPER_MARLIN_119   // Old defaults from Marlin v1.1.9
   *
   * Define you own with
   * { , , hysteresis_start[1..8] }
   */
  #define CHOPPER_TIMING CHOPPER_DEFAULT_12V

25.02.2019 в 20:16
1

UART это всё хорошо, но без поднятия напряжения >30 вольт всё это попытка прыгнуть выше головы )
ЗЫ 2130 по spi кушают 40 вольт, проблем нет, ковыряние настроек пока шла повышайка типа 1200w за 1000 рублей - никаких результатов не принесла, оно и понятно, чем поможет задержка перехода run - stop и прочее, непонятно, а выключать pwm автомасштабирование и градацию вообще не ясна, это ж настройка в динамике, лучше не крутите эту фичу, меньше перегрева будет и плавнее работать.
Без хорошего напряжения только понижение микрошага спасёт
И[TABLE][TR][TD]stealthchop _ threshold : 500 [/TD][/TR][/TABLE]конская цифра, обычно ставят либо чуть больше максимум используемых скоростей, либо чуть выше средней скорости типа 150-200. не сказал бы что шум в спрелцикле хлеще 4988, чуток громче lv 1/128, а на моих 0.9 градусных и скоростях за 200 чуть громче вентилятор БП
ЗЫ2 вот вам таблетка от всех болезней Повышайка (вполне хватит и честных с выходом 6 ампер, ибо эта чуть тёплая, но честных я не нашёл, всё фуфло с амперами на вход и мощность левая как всегда, а эта хороша оказалась)

25.02.2019 в 20:57
0

Спасибо за замечания, я пока ограничился 24в. А дальше жаба... :) Но обязательно учту на будущее!

25.02.2019 в 23:11
2

https://ru.aliexpress.com/item/200W-DC-DC-Boost-Converter-6-35V-to-6-55V-10A-Step-Up-Voltage-Charger-Power/32442749501.html?spm=a2g0s.12269583.0.0.2eb82bb1lrZgRm

Брал вот этот, установил на дельту, вполне справляется и не греется.

А дальше жаба...
Моя жаба немного повыпендривалась при выборе, но после получения и испытаний дала согласие на покупку второго на второй принтер. :)

26.02.2019 в 03:11
0

Спасибо, второе зерно сомнений. :) надо очень задуматься

Для написания комментариев, пожалуйста, авторизуйтесь.

Читайте в блогах

Печатаем гибкую, эластичную, мягкую деталь полимерником

О Плотности фотополимеров

КОМПАС-3D v18 Home. Основы 3D-проектирования. Часть 16.3. Создание игрушечного паровоза. Крыша и тележка паровоза

Boot or not to boot или ректальная реанимация MKS TFT32.

Контейнеры для филамента, которые я использую.

Спасение новогодней елки