TMС2130: примененные технологии и подключение к RURAMPS4D в режиме конфигурирования по SPI
В данной статье я попробовал собрать максимум информации о фирменных технологиях Trinamic, используемых в драйверах TMC2130 из разных источников, а так же о подключении этих драйверов для конфигурирования через интерфейс SPI к плате RURAMPS4D и настройке прошивок 3D принтеров для работы с TMC2130.
Для начала немного теории, кому это не интересно, может пролистать до раздела «Подключение и настройка».
Описание технологий TRINAMIC.
Контроллеры и драйверы от TRINAMIC отличает от других драйверов, то, что они получают информацию о параметрах вращения из сигналов обратной ЭДС и токов обмоток. Полученные данные позволяют добиться прецизионного управления мотором. В настоящий момент TRINAMIC предлагает шесть базовых технологий:
stallGuard2™ – основополагающая технология, позволяющая оценивать момент на валу двигателя по обратной ЭДС и токам обмоток;
coolStep™ – вторая по важности технология, позволяющая оптимизировать ток обмоток с учетом прикладываемой нагрузки;
spreadCycle™ – технология, позволяющая обеспечивать прецизионное плавное движение двигателя;
stealthChop™ – технология, обеспечивающая беспрецедентное снижение шума до уровня характерного для обычных двигателей постоянного тока;
dcStep™ – технология, гарантирующая защиту от пропуска шагов и от потери положения вала двигателя;
microPlyer™ – технология разбиения шагов управления на 16 дополнительных микрошагов с автоматической подстройкой длительности.
Рассмотрим данные технологии подробнее и начнем со stallGuard2™:
stallGuard2™ – технология, позволяющая измерять нагрузку на валу двигателя. На самом деле название этой технологии весьма говорящее. Применительно к двигателям слово «stall» в переводе с английского означает «останавливаться», а сама stallGuard первоначально разрабатывалась как программная альтернатива концевым датчикам. Когда подвижный механизм упирается в препятствие, нагрузка двигателя возрастает, что и обнаруживает stallGuard. Однако сейчас данная технология шагнула далеко вперед и позволяет использовать получаемые измерения в качестве сигналов обратной связи для прецизионного управления движением. Рассмотрим принцип работы stallGuard.
Схема измерения определяет электрическую энергию, подаваемую в двигатель (EI) и энергию, которая возвращается в источник питания (EB). Разница между этими показателями определяет энергию, которая была передана механической системе (EM). stallGuard2 контролирует значение EB, и, если оно приближается к нулю, это значит, что вся энергия передается в систему и подвижный механизм, скорее всего, уперся в препятствие.
Принцип измерения нагрузки двигателя в технологии StallGuard2 от TRINAMIC
Любой электродвигатель имеет потери, поэтому часть энергии рассеивается в виде тепла ET, кроме того, в разных приложениях используются разные двигатели, которые отличаются по параметрам и работают при разных условиях с различной нагрузкой. Чтобы учесть эти особенности, вводится коэффициент ограничения SGT.
Настройка параметров StallGuard2
Коэффициента SGT определяет максимальный допустимый момент на валу в данном конкретном приложении. Если момент превышает это значение, можно считать, что двигатель остановился. После того, как значение SGT задано, StallGuard2 пересчитывает величину ST таким образом, чтобы при максимально допустимом моменте его значение было равно нулю. Обычно SGT выбирают с некоторым запасом с учетом калибровки.
Оценка показаний StallGuard2
Для оценки показаний StallGuard2 используется выход DIAG1 на плате драйвера TMC2130. Его можно подключить на вход концевого выключателя.
coolStep™– еще одна базовая технология от Trinamic. Она позволяет управлять током питания обмоток с учетом прикладываемой нагрузки.
Если не углубляться в тонкости, то принцип работы coolStep достаточно прост. Микросхема драйвера с помощью StallGuard2 определяет нагрузку на двигателе и ток в обмотках, а coolStep использует эти данные для подстройки тока. Если нагрузка растет, ток увеличивается. И наоборот, если нагрузка падает, то ток уменьшается вслед за ней.
- Принцип работы технологии coolStep от TRINAMIC
- Использование coolStep дает следующие преимущества:
- Повышение КПД до 75%;
- Минимизация перегрева двигателя;
- Возможность отказа от принудительного охлаждения двигателя;
- Возможность использования менее мощных и менее дорогих двигателей.
coolStep поддерживает оптимальное значение тока, что позволяет снизить потери, и, как следствие, значительно повысить КПД системы. На графике, показанном ниже, видно что, на частотах выше 60 об/мин использование coolStep приводит к росту КПД на 20%. Здесь стоит отметить, что, так как данная технология использует данные от StallGuard2, она также эффективно работает только на средних частотах.
Повышение КПД при использовании coolStep TRINAMIC
Так же технология coolStep позволяет значительно снизить избыточное тепловыделение.
spreadCycle™– технология, позволяющая обеспечивать прецизионное плавное вращение шагового двигателя. Перед тем как рассказать о ее основных особенностях, рассмотрим классический алгоритм коммутации обмоток двигателей (Classic Chopper).
Для питания обмоток шаговых двигателя используются мостовые схемы. При этом применяют три комбинации состояний ключей:
On Phase (On) – фаза прямого протекания тока (фаза 1);
Fast Decay Phase (FD) – фаза форсированного обратного протекания тока (фаза 2);
Slow Decay Phase (SD) – фаза свободной циркуляции тока (фаза 3).
Коммутация обмотки шагового двигателя
Очевидно, что для управления током обмотки хватило бы и двух первых фаз (ON и FD), однако добавление фазы свободного протекания тока (SD) позволяет минимизировать потери и снизить уровень шумов. Длительность этой части периода в драйверах от Trinamic жестко задается пользователем с помощью таймера.
При использовании традиционного алгоритма Classic Chopper цикл коммутации состоит из трех вышеперечисленных фаз: On – FD – SD. При этом динамически изменяется только длительность фазы прямого протекания тока (On), а время обратного протекания тока (FD) фиксировано. Отсечка первой фазы происходит при срабатывании компаратора. Длительность второй фазы (Fast Decay) в микросхемах от Trinamic программируется пользователем с помощью таймера. Она должна быть не слишком короткой, чтобы ток успевал снизиться, но и не слишком длинной, чтобы не возникали дополнительные шумы и потери мощности.
Диаграмма токов при традиционном алгоритме коммутации
После задания фиксированной длительности фазы FD производят калибровку смещения, чтобы добиться непрерывного тока в катушках.
Форма токов при традиционном алгоритме коммутации до и после калибровки смещения
У традиционного алгоритма есть недостатки. Во-первых, вращение двигателя не всегда оказывается плавным, а при недостаточно точной калибровке это становится особенно заметно. Во-вторых, коммутация обмоток приводит к возникновению значительных помех и характерных шумов шаговых двигателей. При этом даже повышение рабочей частоты не всегда помогает от них избавиться. С другой стороны, рост частоты приводит и к увеличению потерь.
В отличие от традиционного алгоритма, при использовании spreadCycle™ цикл коммутации разбит на четыре этапа: On – SD– FD– SD. При этом возможна автоматическая подстройка как длительности фазы прямого тока (On), так и фазы обратного тока (FD). Это позволяет добиваться максимально быстрого отклика и прецизионного контроля тока обмотки.
Диаграмма токов при алгоритме коммутации spreadCycle™
spreadCycle™ имеет сразу три важных преимущества над традиционным алгоритмом:
- повышение плавности движения;
- снижение шума от двигателя;
- уменьшение уровня помех.
Обеспечение плавности движения – одно из ключевых требований для прецизионных приложений, например, для 3D принтеров и станков с ЧПУ. Снижение уровня шума – важное условие для повышения комфорта работы как для операторов на промышленных объектах, так и для обычных пользователей в домашних или офисных условиях. Если же от механизма требуется получить минимальный уровень шума, то следует обратить внимание на следующую технологию с говорящим названием stealthChop™.
stealthChop™– технология, обеспечивающая беспрецедентное снижение шума при работе шаговых двигателей.
stealthChop использует обратную связь не по току, как в spreadCycle, а по напряжению. При этом контролю тока уделяется гораздо меньше внимания. Таким образом, в stealthChop нет необходимости в фазе FD, а последовательность коммутаций выглядит следующим образом: On– SD. Такой цикл, очевидно, приводит к снижению пульсаций тока.
Сравнение форм сигналов управления при использовании stealthChop™ (слева) и spreadCycle™ (справа)
Даже простое сравнение диаграмм токов в обмотках шаговых двигателей позволяет заметить, что уровень шумов при использовании stealthChop™ хоть немного, но ниже, чем у spreadCycle™ .
Сравнение форм токов при использовании stealthChop™ (слева) и spreadCycle™ (справа)
Одна из причин возникновения акустических шумов при использовании традиционного алгоритма коммутации или алгоритма spreadCycle заключается в динамической автоподстройке длительностей импульсов. При этом даже небольшие шумы приводят к джиттеру частоты, который, в конечном итоге, вызывает характерный шум шаговых двигателей. stealthChop использует жестко заданную частоту коммутации, что и становится причиной уникальной «тихоходности», сравнимой с показателями двигателей постоянного тока. Таким образом, при должной настройке пользователь услышит только шелест подшипников.
Изменение частоты сигналов при использовании stealthChop™ (слева) и spreadCycle™ (справа)
К сожалению, stealthChop имеет невысокие динамические характеристики и не подходит для приложений, в которых требуются значительные ускорения. Так как драйверы и контроллеры от Trinamic позволяют переключаться между stealthChop и spreadCycle, то имеет смысл комбинировать эти алгоритмы с учетом диапазона частот и ограничений по разгону/ торможению. Если же по каким-то причинам использование фирменных алгоритмов затруднено или неоправданно, то всегда можно перейти к традиционному методу коммутации.
Оптимальное использование stealthChop™ и spreadCycle™
В руководствах пользователя от Trinamic приведено несколько интересных исследований по эффективности различных алгоритмов коммутации. На графике представлены результаты одного из них. На низких частотах вращения (до 100 об/мин) лидирует stealthChop, далее почти до 1000 об/мин значительное преимущество имеет spreadCycle.
Испытания stealthChop™ и spreadCycle™
С другой стороны, крутящий момент в режиме stealthChop™ не падает примерно до 350об/мин. Если перевести обороты вала в скорость перемещения хотенда, то например, для моего принтера с кинематикой CoreXY и 20-зубыми шпулями в режиме stealthChop™ без потерь мощности можно работать на скоростях до 230мм/c, но при серьезных ускорениях желательно переключаться в spreadCycle на скоростях выше 150 мм/с, я пока разгонял до 170мм/c, при скоростях выше настроено на переключение в spreadCycle.
microPlyer™ – еще одна фирменная технология от Trinamic, направленная на повышение плавности движения. microPlyer используется для разбиения шагов на 16 дополнительных микрошагов с автоматической подстройкой длительности.
dcStep™– технология, по заявлению инженеров Trinamic, гарантирующая защиту от пропуска шагов и от потери информации о положении вала двигателя. Это очень полезная технология для различных прецизионных механизмов. Дело в том, что двигатель может пропускать шаги при избыточной нагрузке на вал, что приводит к потере контроля за положением. В традиционных приложениях, чтобы защититься от такой ситуации, максимально допустимый момент на валу ограничивался примерно на уровне 50% от реального максимального момента двигателя. С помощью dcStep этого можно избежать.
Если в процессе работы произошло увеличение нагрузки выше заданного значения, то dcStep автоматически снижает частоту вращения в соответствии с текущим моментом на валу и пропуска шагов не происходит.
Временная диаграмма частоты вращения двигателя
Благодаря такому подходу удается значительно расширить полезную область использования двигателя. При этом из него можно «выжать» до 80…90% от максимального момента, то есть при использовании dcStep для решения задачи хватит и менее мощного двигателя.
Для управления dcStep используются три вывода (сигнала):- DCEN – отвечает за активацию режима dcStep. Включение происходит или при подаче на вывод высокого уровня, или при достижении определенной скорости (задается в регистре TPWMTHRS). В данном случае dcStep не работает в stealthChop режиме.
- DCO – появление низкого уровня на данном выводе, сигнализирует микроконтроллеру о том, что мотор не готов, и микроконтроллер приостанавливает выдачу сигнала STEP на драйвер.
- DCIN – появление низкого уровня дает команду драйверу приостановить выдачу «шагов» на мотор и устанавливает DCO в низкий уровень. Используется для синхронизации двух моторов.
В документации не совсем понятно сказано про синхронизацию моторов, а именно откуда должен поступать сигнал DCIN, как я понял, DCIN одного драйвера должен быть подключен к DCO второго и наоборот. Но мое мнение может быть неверным.
Для TMC2130 возможны два варианта использования dcStep. В первом варианте управление dcStep происходит с использованием внешнего микроконтроллера.
Вариант реализации dcStep c использованием микроконтроллера.
Если драйвер обнаруживает перегрузку и пропуск шагов, он выставляет сигнал DCO в низкий уровень, в свою очередь, микроконтроллер прерывает выдачу STEP/DIR сигналов на микроконтроллер до возвращения DCO обратно к высокому уровню.
Временная диаграмма работы dcStep с использованием сигнала DCO.
Второй вариант работы dcStep происходит без взаимодействия с внешним контроллером.
В этом случае, при обнаружении драйвером перегрузки и пропуска шагов, происходит увеличение или уменьшение (в зависимости от направления вращения) регистра LOST_STEPS, вместе с этим драйвер снижает частоту вращения вала (минимум задается в регистре VDCMIN) для снижения нагрузки. После уменьшения нагрузки до допустимой, драйвер продолжает работу с мотором и добавляет шаги из регистра LOST_STEPS к принятым от контроллера.
Временная диаграмма работы dcStep с использованием LOST_STEPS
Уменьшение резистивных потерь и нагрева драйверов при работе на больших токах.
Хочу так же упомянуть один момент, обнаруженный в документации на TMC2130. Разработчики советуют ставить диоды Шоттки с целью уменьшения нагрева драйвера при работе на токах выше 1.2А. В stealthChop режиме эффект от применения диодов меньше, чем в spreadCycle.
Подключение и настройка.
Рассмотрим схемы подключения TMC2130:
Подключение в режиме STEP/DIR. Данная схема включения подразумевает управление драйверами от микроконтроллера с помощью сигналов STEP/DIR, а также конфигурирование режимов работы драйвера по интерфейсу SPI, в том числе «на лету».
Вторая схема включения драйвера для работы драйвера в Standalone режиме. Подключение почти аналогично первому, за исключением того, что конфигурация драйвера задается жестко перемычками.
Третья схема подключения самая интересная, в ней драйвер управляется и конфигурируется через SPI интерфейс, сигналы STEP/DIR в данном случае не нужны. Но для такой схемы работы необходим дополнительный контроллер от Trinamic, например TMC4361. Данный контроллер получает информацию о перемещениях по SPI от микроконтроллера, и так же по SPI управляет драйвером.
В нашем случае используется первая схема подключения, рассмотрим ее подробнее.
В исполнении драйверов от компании Watterott, перемычка, отвечающая за включение SPI_MODE разомкнута, и соответственно режим конфигурирования по SPI включен по умолчанию. Кроме этого перемычки CFG4 и CFG5 установлены таким образом, что на выводе DCEN_CFG4 установлен низкий уровень, а на DCIN_CFG5 высокий уровень. В драйверах от FYS версии 1.0 необходимо перевести описанные выше перемычки к такому же виду. В версии от FYS 1.1. перемычки уже установлены как на драйверах Watterott.
Согласно документации, в режиме конфигурирования по SPI, dcStep отключен, и на вход синхронизации моторов постоянно приходит высокий уровень.
Как я понимаю в таком случае режим dcStep работает при достижении определенной скорости (задается в регистре TPWMTHRS) и отключен в работе в stealthChop. Кроме того непонятно что делать с синхронизацией осей при таком включении перемычек, а если не синхронизировать оси XY при пропуске шагов, то ничего путного не получится. Есть предположение, что режим dcStep вообще не используется в данном исполнении, но это надо еще внимательно изучить прошивку и сделать ряд экспериментов. Если я ошибаюсь на счет dcStep, поправьте меня.
Теперь займемся подключением TMC2130 к SPI на плате RURAMPS4D. Во первых, выводы: SDI, SCK, CS, SDO для драйверов FYS 1.0 необходимо переставить на верхнюю поверхность модуля драйвера, в версии 1.1. уже ничего перепаивать не надо.
Кроме того если планируется применять sensorless режим (парковка без концевых датчиков), необходимо припаять пин к выходу DIAG1 драйвера и кинуть провод на вход концевика.
После подключения, приступаем к конфигурированию прошивки. Сразу хочу сказать, что корректно TMC2130 завелись только в Marlin 2.0 и Repetier. В Mk4Duo при работе в режиме spreadCycle моторы издают высокочастотный писк, кроме того при переходе со слоя на слой, хотенд совершает какие то хаотические перемещения, и новый слой начинает печататься совсем в другом месте стола. Разработчику о проблеме написал, но на данный момент похоже не исправили.
Для начала необходимо установить в Arduino IDE библиотеку для работы с TMC2130 -TMC2130Stepper.h, после чего настраиваем конфигурацию прошивки:
Настройки конфигурации в Marlin 2.0:
В файле pins . h задаем значения CS для каждого драйвера согласно схеме подключения:
//
// Steppers
//
#define X_STEP_PIN 37 // Support Extension Board
#define X_DIR_PIN 36
#define X_ENABLE_PIN 38
#define X_CS_PIN 61
#define Y_STEP_PIN 32 // Support Extension Board
#define Y_DIR_PIN 35
#define Y_ENABLE_PIN 34
#define Y_CS_PIN 14
#define Z_STEP_PIN 30 // Support Extension Board
#define Z_DIR_PIN 2
#define Z_ENABLE_PIN 33
#define Z_CS_PIN 15
#define E0_STEP_PIN 29
#define E0_DIR_PIN 28
#define E0_ENABLE_PIN 31
#define E0_CS_PIN 43
#define E1_STEP_PIN 22
#define E1_DIR_PIN 24
#define E1_ENABLE_PIN 26
#define E1_CS_PIN 41
#define E2_STEP_PIN 25
#define E2_DIR_PIN 23
#define E2_ENABLE_PIN 27
#define E2_CS_PIN 39
В файле Configuration_adv.h
#define HAVE_TMC2130 //включение поддержки TMC2130 в режиме конфигурирования по SPI
#if ENABLED(HAVE_TMC2130) || ENABLED(HAVE_TMC2208)
// CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY
#define X_IS_TMC2130 //указывает какие драйвера у нас подключены по SPI
#define Y_IS_TMC2130
#define Z_IS_TMC2130
#define E0_IS_TMC2130
#define E1_IS_TMC2130
#define E2_IS_TMC2130
Дальше задаются значения токов, микрошаг, включение интерполяции и прочее
#define R_SENSE 0.11 // R_sense resistor for SilentStepStick2130
#define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current
#define INTERPOLATE true // Interpolate X/Y/Z_MICROSTEPS to 256
#define X_CURRENT 800 // rms current in mA. Multiply by 1.41 for peak current.
#define X_MICROSTEPS 16 // 0..256
#define Y_CURRENT 800
#define Y_MICROSTEPS 16
#define Z_CURRENT 800
#define Z_MICROSTEPS 16
#define X2_CURRENT 800
#define X2_MICROSTEPS 16
#define Y2_CURRENT 800
#define Y2_MICROSTEPS 16
#define Z2_CURRENT 800
#define Z2_MICROSTEPS 16
#define E0_CURRENT 800
#define E0_MICROSTEPS 16
#define E1_CURRENT 800
#define E1_MICROSTEPS 16
#define E2_CURRENT 800
#define E2_MICROSTEPS 16
#define E3_CURRENT 800
#define E3_MICROSTEPS 16
# define STEALTHCHOP //включение режима stealthChop
# define MONITOR _ DRIVER_ STATUS //включение режима диагностики драйвера на перегрев, при перегреве драйвер будет уменьшать ток на величину CURRENT_STEP_DOWN, до очистки флага перегрева.
# define HYBRID_ THRESHOLD //включение гибридного режима (при превышении скорости задающейся ниже, драйвер переключается из режима stealthChop в более мощный - spreadCycle )
#define X_HYBRID_THRESHOLD 100 // [mm/s]
#define Y_HYBRID_THRESHOLD 100
#define Z_HYBRID_THRESHOLD 3
#define Z2_HYBRID_THRESHOLD 3
#define E0_HYBRID_THRESHOLD 30
#define E1_HYBRID_THRESHOLD 30
#define E2_HYBRID_THRESHOLD 30
#define E3_HYBRID_THRESHOLD 30
# define SENSORLESS _ HOMING // включение режима парковки без концевиков
#if ENABLED(SENSORLESS_HOMING)
# define X _ HOMING _ SENSITIVITY 8 //задаем чувствительность (чем меньше значение, тем выше чувствительность)
#define Y_HOMING_SENSITIVITY 8
#endif
Есть еще опция калибровки Z , но я пока ее не пробовал
//#define TMC_Z_CALIBRATION
#if ENABLED(TMC_Z_CALIBRATION)
#define CALIBRATION_CURRENT 250
#define CALIBRATION_EXTRA_HEIGHT 10
#endif
Многие параметры могут меняться G-кодами, например:
M906 – задает ток драйвера в миллиамперах
M122 S0/1 – выдает информацию о состоянии драйвера
M913 задает скорость для гибридного режима
M914 задает чувствительность в sensorless homing режиме
Настройка конфигурации в Repetier firmware.
Файл Configuration. h
#define DRV_TMC2130
#define SENSORLESS_HOMING
pin will be used, all others are normal step/dir/enable drivers
#define TMC2130_X_CS_PIN 61
#define TMC2130_Y_CS_PIN 14
#define TMC2130_Z_CS_PIN 15
#define TMC2130_EXT0_CS_PIN 43
#define TMC2130_EXT1_CS_PIN 41
#define TMC2130_EXT2_CS_PIN 39
#define MOTOR_CURRENT { 1000,1000,1000,1000,1000,1000 } //задание рабочих токов
#define TMC2130_STEALTHCHOP 1 // включение режима stealthChop
#define TMC2130_INTERPOLATE_256 1 // Enable internal driver microstep interpolation
#define TMC2130_STALLGUARD 0 // чувствительность для sensorless режима
#define TMC2130_PWM_AMPL 255
#define TMC2130_PWM_GRAD 1
#define TMC2130_PWM_AUTOSCALE 1
#define TMC2130_PWM_FREQ 2
# define TMC 2130_ TCOOLTHRS_ X 300 //минимальные скорости при которых работают coolStep и stallGuard 2 (значение – это длительность микрошага)
#define TMC2130_TCOOLTHRS_Y 300
#define TMC2130_TCOOLTHRS_Z 300
В прошивке Repetier нет настроек для включения гибридного режима, мониторинга перегрев драйверов и выдачи отладочной информации.
В целом мне понравилось, как работают драйвера TMC2130: очень тихо, и вместе с тем добиться пропуска шагов достаточно сложно, я пробовал печатать на скорости 200 мм/с, и ускорениями 2000 мм/с, пропуска шагов не было. С другой стороны в исполнении TMC2130 в формате popolu их потенциал раскрыт не полностью.
В данной статье были использованы материалы с сайта компании Терраэлектроника, документация на TMC2130 от Trinamic, а так же различные форумы, посвященные данной теме.
Еще больше интересных статей
Klipper - восстановление прерванной печати
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Внезапно выяснилось что у стокового клиппера есть странная особенно...
Датчик наличия пластика для Bambu Lab Х1 Carbon.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Собираем 3D-принтер своими руками. Пошаговая инструкция. Часть 1.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Как уже анонсировал Серега, я начинаю публиковать цикл статей по сборк...
Комментарии и вопросы
топ
Просто flashforge удачно перер...
Зачем платить за рекламу принт...
Имеется следующее: Принтер сам...
Обнаружил хруст при движении с...
Привет.Принтер долго стоял, се...
При автовыравнивании после 12...