Как подключить драйвер шагового двигателя TMC2130 к Arduino UNO, чтобы управлять им?

Я просто хочу управлять шаговым двигателем с помощью Arduino, и мне нужен TMC2130 , чтобы он работал очень тихо. Я много искал и почему-то не могу найти, как на самом деле подключить его к Arduino и источнику питания.

Однако я могу найти библиотеки Arduino и примеры кода в изобилии. Я видел электрические схемы, но они используют только комплект TMC eval, который я не хочу покупать.

TMC2130 и Arduino — это все, что мне нужно в плане интегральных схем или плат? У кого-нибудь есть опыт в этом?

Ответы (4)

Эта схема напоминает мне те схемы DRV8825. Довольно просто следовать:

Схема подключения Arduino TMC2130

Источник: TC2130 Arduino Wiring (последняя проверка: 13.07.2018)

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

Первое, что нужно проверить в техническом описании, это абсолютные максимальные значения, не превышайте эти условия.

Шина SPI подключена к Arduino (убедитесь, что логические уровни совпадают)

введите описание изображения здесь

Похоже, что порты STEP и DIR могут управляться микропроцессором, а двигатель управляется таким образом (и также может управляться через шину spi)

Пример схемы можно найти здесь для eval board .

Здесь также есть блог, показывающий все контакты для Arduino UNO: blog.trinamic.com/2017/06/27/… На плате eval есть только TMC2130, поэтому он просто копирует номера контактов.

Большинство из нас, ленивых людей, просто используют плату RAMPS для наших драйверов шаговых двигателей с Arduino. Схемы доступны, но купить плату RAMPS очень просто.

Плата RAMPS обычно используется для управления 4 шаговыми двигателями, которые есть в большинстве 3D-принтеров, но она универсальна и может управлять многими приложениями позиционирования.

Ох, хорошо! Я ничего не знал о RAMPS, кроме того, что он обычно используется для 3D-печати, поэтому я даже не рассматривал его. Я посмотрю на это, спасибо!

Просто потому, что я все еще не знал, что я делаю после ответов, хотя они и полезны, немного понимания знаний для начинающих, поскольку плата драйвера отличается от платы драйвера L298n.

Короче говоря, плата драйвера, как и TMC 2130единственная потребность +5Vи GND, цифровой контакт для DIRи STEP. ENможет быть подключен к GNDбулавке для работы с AccelStepperбиблиотекой arduino, но будет упущено много замечательных функций. Чтобы воспользоваться ими, воспользуйтесь моим 6-шаговым руководством, которое, я надеюсь, сэкономит вам день или два, работая с веб-сайтом Trinamic для быстрой работы.

В общем, все, что нужно сделать, это:

  1. проверка паспорта шагового двигателя на Imaxток. В моем случае: 17хс4401 мотор имеет 1.7A "Rated Current". Это означает, что он TMC 2130будет работать, но не сможет работать в скрытом режиме, но будет работать, поскольку...

«Максимальный устанавливаемый ток двигателя составляет 1,77 А (среднеквадратичное значение) (чувствительные резисторы 0,11 Ом), но SilentStepSticks можно использовать только до 1,2 А (среднеквадратичное значение)». ( https://wiki.fysetc.com/TMC2130/#motor-current-setting )

Максимальный ток фазы двигателя: 2 А (среднеквадратичное значение), 2,8 А (пиковое значение)

( https://wiki.fysetc.com/Silent2209/#технические-спецификации )

Поэтому я выбрал более поздний TMC 2209 (на мой взгляд, лучший выбор во всех аспектах, и TMC 2130даже несмотря на то, что появляется тот же намек на 1,2 А, но среднеквадратичное значение составляет 2 А, так что это работает).

РЕДАКТИРОВАТЬ: Teemalut, создатель библиотеки, разъяснил несколько моментов, которые я неправильно истолковал в документации:

Текущий рейтинг не ограничивает ваш выбор пошагового режима. Ограничение 1,2 А является практическим тепловым пределом. Я бы не стал называть 2209 лучше во всех отношениях, чем 2130. В нем отсутствуют некоторые опции, а некоторые добавлены, и в конечном итоге выбор драйвера остается за пользователем. Я предпочитаю SPI, потому что с ними легче работать.


Если у вас нет программного управления драйвером, вам придется настроить резистор вручную. В противном случае вы можете пропустить пункты 2 и 3.

  1. Чтобы сделать это вручную, подсоедините мультиметр к заземляющему контакту выхода двигателя (рядом с 3 пустыми отверстиями), а другой провод к Vrefотверстию/контакту и снова проверьте таблицу данных, где Vrefдолжно быть измерено, поскольку оно меняется даже от версия к версии макета платы. Может быть правый контакт или левый из 3 контактов или где-то еще. (И да, в этот момент вы должны получить мультиметр, дешевый дисконтный за 5 баксов сделает это, чтобы не поджарить плату драйвера)

(Мультиметр на напряжении постоянного тока ⎓, НЕ на переменном токе ~; переключите выбор мультиметра так, чтобы он был как можно ближе к измеряемому напряжению, но больше, например, диапазон 20 В для измерения 2,4 В)The higher the range difference, the less accurate the measuring will get

На самом деле для этого на главной странице есть калькулятор только для обучения формуле:

Vref = (Irms * 2,5 В) / 1,77 A = Irms * 1,41 = Imax

поэтому Vref = (1,7А * 2,5В) / 1,77А = 1,4В


  1. Поместите логическое напряжение 5 В VIOи GNDнапряжение двигателя 12 В VMи GNDрядом с ним. Не соединяйте двигатель и не обязательно GNDштифты друг с другом, их можно разъединить. Теперь возьмите очень маленькую отвертку и регулируйте винт на потенциометре, пока не появится рассчитанное напряжение постоянного тока.

Возможно, вам придется немного подождать, пока напряжение перестанет прыгать, потому что TMC 2209 or TMC 2130драйвер настраивается при первом подключении к напряжению , пока вы не сможете приспособиться - в моем случае 2,4 В для биполярного шагового двигателя 1,7 А.

Это была самая трудная часть.


  1. Типы двигателей должны быть в TMCStepperбиблиотеке Arduino IDE. На самом деле есть пример эскиза, TMC2209и библиотека также работает с TMC 2130и использует многие функции драйверов TMC ( https://github.com/teemuatlut/TMCStepper )

Я использую клон Arduino Mini

Штыри Enable и Direction должны быть цифровыми штырьками, а штыри Step SW_RXи SW_TX PWMштыри. И работают с 3,3 В и 5 В TMC 2209, TMC 2130так что здесь не о чем беспокоиться.

Все выводы могут быть обычными выводами digitalIO. https://github.com/teemuatlut/TMCStepper/pull/146#issuecomment-684010156


  1. Измените контакты в соответствии с DigitalIOвашей доской и раскомментируйте материал в соответствии со следующим примером кода.
    #define EN_PIN           7 // Enable 
    #define DIR_PIN          8 // Direction 
    #define STEP_PIN         9 // Step 
    #define SW_RX            5 // 
    #define SW_TX            6 // 
    #define SERIAL_PORT  Serial // [Serial1 to Serial]
    #define DRIVER_ADDRESS 0b00 // TMC2209 Driver address according to MS1 and MS2
    
    #define R_SENSE 0.11f // Match to your driver
                          // SilentStepStick series use 0.11
                          // UltiMachine Einsy and Archim2 boards use 0.2
                          // Panucatt BSD2660 uses 0.1
                          // Watterott TMC5160 uses 0.075
    
    // Select your stepper driver type
    //TMC2209Stepper driver(&SERIAL_PORT, R_SENSE, DRIVER_ADDRESS);
    TMC2209Stepper driver(SW_RX, SW_TX, R_SENSE, DRIVER_ADDRESS); //Uncomment this if you connected SW_RX and SW_TX
    //...

Вот оно.


Итак, у меня получилась следующая конфигурация:

  • Цифровой контакт 7 Arduino --> Включить дляEN

  • Цифровой контакт Arduino 8 --> Направление наDIR

  • Arduino Digital Pin 9 --> Шаг кSTEP

  • Цифровой PIN-код Arduino 5 --> SW_RX дляRX

  • Цифровой PIN-код 6 Arduino --> SW_TX дляTX

  • Arduino +5В или +3,3В --> кVIO

  • Arduino GND --> GNDрядом сVIO

  • +12В >2А Источник питания --> кVM

  • GND >2A Источник питания --> GNDрядом сVM

  • Мотор А+ -->A2

  • Мотор А- -->A1

  • Мотор В+ -->B1

  • Мотор В- -->B2

(Это также сработает, если просто подключить Step и Direction к arduino с библиотекой AccelStepper и подтянуть EN к Arduino GND, а остальные оставить открытыми, чтобы двигатель работал, но многие функции TMC не будут используется, и двигатель, вероятно, будет громче и «съест» больше энергии.Но это решение, если у вас на Arduino остался только один цифровой и один ШИМ-вывод.)

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

Привет и большое спасибо за ваш подробный учебник. Просто примечание: если кто-то собирается использовать библиотеку TMCStepper вместе с ESP32, как это сделал я, вам нужно использовать HardwareSerial из-за проблем с совместимостью. Пожалуйста, посетите github.com/teemuatlut/TMCStepper/issues/… для более подробной информации.
@karlitos Рад, что это помогло вам :) Спасибо за ваш ответ.