TMC2209 Stepper Driver

BIGTREETECH, микросхема Trinamic / Analog Devices · BIGTREETECH TMC2209 V1.2, Rsense 0,110 Ом, standalone STEP/DIR

Драйвер тихого управления биполярным шаговым двигателем с STEP/DIR и возможностью UART.

Автор: SLDV LAB

Опубликовано · Обновлено

СложностьСредне
Проекты с компонентом

О МОДУЛЕ

Что делает BIGTREETECH TMC2209 V1.2, Rsense 0,110 Ом, standalone STEP/DIR

TMC2209 позволяет управлять движением через STEP/DIR и отдельно настраивать режимы по однопроводному UART. StealthChop уменьшает акустический шум при подходящей нагрузке и настройке. Функции обнаружения нагрузки не заменяют универсальный датчик абсолютного положения.

Референс — BTT TMC2209 V1.2 с двумя Rsense 0,110 Ом. Здесь используется standalone без UART и без изменения OTP. Указанная настройка тока является RMS; пиковое значение синусоидального тока больше в √2 раза. Это различие важно при выборе двигателя.

При Rsense 0,110 Ом документация BTT даёт Irms = Vref / √2. Это сокращение применимо к указанной плате и аналоговому заданию тока, а не к любому TMC2209. Для небольшой пробы с двигателем Adafruit #324 выбрано Irms 0,20 А: пик около 0,283 А, ниже его паспортных 0,35 А. Заводское положение потенциометра нельзя считать безопасным для этого двигателя.

Сначала используйте простой STEP/DIR. UART требует проверки разводки PDN, адресов и совместимой библиотеки; его нельзя подключать по аналогии с обычной парой TX/RX. Sensorless homing требует отдельной настройки на реальном механизме и не проверяется намеренным ударом в жёсткий упор в этой пробе.

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

Для любой перекоммутации выключайте логическое и силовое питание и дожидайтесь разряда конденсатора. Извлечение двигателя из работающего драйвера может вывести плату из строя. На двухполярные выходы H-моста не ставят один обычный диод поперёк обмотки. Пример не обеспечивает аварийную остановку опасного механизма и не предназначен для нагруженной вертикальной оси.

TMC2209 V1.2, BIGTREETECH · standalone STEP/DIR. Источник фото: Zyltech; https://www.zyltech.com/genuine-bigtreetech-tmc2209-v1-2-stepper-motor-driver/. Лицензия на повторное использование не установлена. Удалён фон; объект равномерно масштабирован, детали и маркировка сохранены.

Схема соединений SLDV LAB показывает функциональные названия контактов; порядок строк не задаёт их физическое расположение. Подключение и первое включение выполняются по процедуре карточки.

Характеристики

Референс платы
BIGTREETECH TMC2209 V1.2, Rsense 0,110 Ом, standalone STEP/DIR
Режим примера
Standalone STEP/DIR, StealthChop
Rsense референса
0.11 Ом
Деление полного шага в примере
1/16 на входе STEP
Настройка и диагностика по UART
Да
Нагрузка
Двухфазный биполярный шаговый двигатель
Интерфейс
UART
Питание модуля
В стенде BTT TMC2209 V1.2: VM = 12 В внешнего источника, VIO = 5 В Uno R3. Руководство V1.2 указывает VM 4,75–28 В, но эта карточка не разрешает переносить диапазон микросхемы на любую плату.

ПРАКТИКА

Подключение

Контакт модуляКонтакт платыНазначение
STEPD2 Arduino Uno R3Сигнал STEP при VIO=5 В; расположение контактов сверить с ревизией BTT V1.2.
DIRD3 Arduino Uno R3Задаётся до импульсов.
EN / ENND4 Uno и 10 кОм к VIOАктивный LOW; HIGH отключает мосты. Не путать с питанием.
VIO / VCC_IO5V Uno R3Питание логических уровней. При другом контроллере VIO и уровни меняются согласованно.
MS1, MS2VIO (5 В)Оба HIGH выбирают 1/16 при заводских настройках standalone TMC2209; таблица TMC2208 не подходит.
PDN_UARTGND в режиме standaloneUART в этом примере не используется; контакт и перемычки PDN сверить по BTT V1.2. Не заземлять вывод, если его одновременно ведёт UART контроллера.
SPREADLOW / штатная конфигурация StealthChopУбедиться по схеме платы, что не выбран SpreadCycle и не остались иные настройки UART/OTP.
VM+12 В внешнего источникаВ стенде у платы электролит 100 мкФ 25 В с правильной полярностью; короткие силовые провода и исправная штатная керамическая развязка.
GNDМинус источника и GND UnoОба контакта земли соединены с общей землёй.
1A/1B и 2A/2B либо A1/A2 и B1/B2Две проверенные пары обмотокНазвания сверить с шелкографией конкретной BTT V1.2. Не ориентироваться на цвет платы или положение регулятора.
DIAG, INDEX и неиспользуемые контактыНе подключатьДиагностика UART и sensorless homing в этот минимальный пример не входят.

Подходит для Arduino. Выберите контакты по документации своей платы.

ВАШ ПРОЕКТ · ВАШ ДАТЧИК

Интегрируйте модуль с ChatGPT

Скопируйте запрос в ChatGPT. Укажите свою плату и среду разработки — получите подключение и код для своего проекта.

Помоги интегрировать TMC2209 Stepper Driver. Сначала уточни изготовителя и ревизию платы, значения обоих Rsense, паспортный ток двигателя, напряжение источника, контроллер и нагрузку. Сверь обозначения контактов и рассчитай ток по схеме конкретной платы. Не используй универсальное Vref и не подменяй фазный ток показанием источника. Подготовь развязку питания, схему, зависимости, короткий пример с отключением мостов, диагностику и процедуру безопасной проверки. Отдельно обсуди охлаждение и невозможность контролировать реальное положение только счётом STEP.

Библиотеки

Установите библиотеку для своей среды и откройте пример из её документации.

Что именно прописать

Контроллер и API
Arduino Uno R3; Arduino AVR Boards 1.8.6

Пример для Uno R3 ATmega328P, не универсальная распиновка ESP32.

Двигатель для примера
Adafruit #324, 12 В, 0,35 А/фазу

Свободный вал без нагрузки; другой двигатель требует нового расчёта.

Rsense
0,110 Ом

Проверьте два измерительных резистора именно BTT V1.2 и не используйте этот расчёт для другой платы.

Ток короткой пробы
Irms = 0,20 А; Ipeak ≈ 0,283 А; Vref ≈ 0,283 В

Для этой платы и analog current scaling по BTT: Irms = Vref / √2. Это не 0,20 А пикового тока.

Микрошаг
MS1=HIGH; MS2=HIGH; 1/16

По таблице TMC2209 при заводском standalone. Для двигателя 200 шагов/оборот 200 входных импульсов задают 1/16 оборота, если нет пропусков.

UART
Не используется; standalone

До проверки удалить конфликты внешнего UART с PDN; не менять OTP. При PDN_UART=LOW первый STEP возвращает ток IRUN; после него предусмотрена пауза 1 с для настройки StealthChop AT#1, затем оставшиеся 199 импульсов.

Управление
STEP=D2; DIR=D3; ENABLE=D4, активный LOW

Подтяжка ENABLE к 5V сохраняет отключение при сбросе Uno.

Проба
200 импульсов; HIGH 10 мкс; LOW не менее 10 мс

Последовательность запускается один раз после t; после неё силовые мосты отключаются.

Подготовка ограничителя тока и питания

text
1. Отключите все источники. Проверьте ревизию платы, Rsense и пары обмоток омметром; мотор пока не подключайте.
2. Соберите питание, общий GND и конденсатор по pins. Выходы отключены через ENABLE/ENN = HIGH. Загрузите скетч в Uno.
3. Подсоедините щупы вольтметра к GND и указанной изготовителем точке Vref при выключенном питании, исключив замыкание соседних контактов.
4. Подайте питание и настройте вычисленное Vref по инструкции именно этой платы. Используйте изолированный инструмент; не касайтесь радиатора и выводов.
5. Отключите всё питание, дождитесь разряда конденсатора и только затем подключите обмотки двигателя. Не меняйте разъёмы при поданном питании.
6. Включите логику, затем силовое питание. Убедитесь, что вал свободен, а источник можно немедленно отключить.
7. Отправьте t в Serial Monitor 115200. При дрожании, дыме, запахе или сильном нагреве выключите питание; не увеличивайте ток вслепую.

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

Arduino Uno R3: короткая серия STEP после t

cpp
const uint8_t STEP_PIN = 2, DIR_PIN = 3, ENABLE_PIN = 4;
void setup() {
  digitalWrite(ENABLE_PIN, HIGH);
  pinMode(ENABLE_PIN, OUTPUT);
  digitalWrite(STEP_PIN, LOW);
  pinMode(STEP_PIN, OUTPUT);
  digitalWrite(DIR_PIN, LOW);
  pinMode(DIR_PIN, OUTPUT);
  Serial.begin(115200);
  Serial.println("Check current limit and remove load, then send t.");
}
void loop() {
  if (!Serial.available() || Serial.read() != 't') return;
  digitalWrite(DIR_PIN, LOW);
  digitalWrite(ENABLE_PIN, LOW);
  // PDN_UART is LOW: the first STEP restores IRUN for AT#1.
  digitalWrite(STEP_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(STEP_PIN, LOW);
  delay(1000);
  for (uint16_t n = 1; n < 200; ++n) {
    digitalWrite(STEP_PIN, HIGH);
    delayMicroseconds(10);
    digitalWrite(STEP_PIN, LOW);
    delay(10);
  }
  digitalWrite(ENABLE_PIN, HIGH);
  Serial.println("200 commanded pulses; bridge disabled.");
}

Полный скетч; базовый API Arduino AVR Boards 1.8.6 сверено, компиляция и аппаратное испытание не выполнялись. Число импульсов является командой и не доказывает фактический угол. Отключение мостов после пробы снимает удерживающий момент; используйте только ненагруженный вал.

Проекты с этим компонентом

Все проекты

Связанные проекты пока не опубликованы.

Связанные материалы и компоненты