Skip to main content

TMC2209: Бесшумный драйвер нового поколения

TMC2209 — это революционный драйвер шагового двигателя от Trinamic (теперь ADI), который сделал 3D-принтеры бесшумными. В 2026 году это стандарт де-факто для качественных принтеров, станков и робототехнических проектов. Главные козыри — технология StealthChop (бесшумная работа) и sensorless homing (определение упора без концевых датчиков).

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

ПараметрЗначение
Напряжение питания (VM)4.75V – 29V
Максимальный ток (RMS)2.0A
Пиковый ток2.8A
МикрошагДо 1/256 (аппаратно), интерполяция до 256
Интерфейс управленияSTEP/DIR + UART (настройка)
ТехнологииStealthChop2, SpreadCycle, StallGuard4
Sensorless homing✅ Да (StallGuard)
Форм-факторStepStick (совместим с A4988/DRV8825)

Ключевые технологии Trinamic

1. StealthChop2 — Бесшумная работа

Проблема: Классические драйверы (A4988) используют прерывистое ШИМ-управление (chopping), которое создаёт характерный визг на частоте 20-30 кГц.

Решение: StealthChop использует напряжение-управляемый режим (voltage mode) с высокочастотной модуляцией, устраняя слышимый шум.

Классический chopping:    StealthChop:
    ╭╮  ╭╮  ╭╮              ~~~~~~~~
    ││  ││  ││              (плавная синусоида)
────╯╰──╯╰──╯╰────          ────────────────
     ↓                          ↓
   ШУМ!                    ТИШИНА!

2. SpreadCycle — Высокий момент

Для задач, где нужна максимальная мощность (резка, гравировка), можно переключиться на SpreadCycle — это оптимизированный chopping-режим с высоким крутящим моментом.

Hybrid режим: TMC2209 автоматически переключается между StealthChop (низкие скорости) и SpreadCycle (высокие скорости).

3. StallGuard4 — Sensorless Homing

Революционная возможность: Определение момента, когда ротор “упёрся” в препятствие, по изменению противо-ЭДС.

Применение:

  • Homing без концевых датчиков
  • Защита от повреждения механики при заклинивании
  • Обнаружение пропуска шагов
Нормальная работа:          Упор (stall):
    Ток фазы                   Ток фазы
      ↑                          ↑
    ╭─╮                        ╭───────╮
   ╱   ╲                      ╱         ↑ резкий скачок!
──╱     ╲──                ──╱          

UART-интерфейс: Программная настройка

TMC2209 позволяет настраивать ток, микрошаги и режимы через UART без физических перемычек!

Подключение UART

Arduino         TMC2209
   TX ───────── PDN_UART (через резистор 1кОм)
   RX ───────── PDN_UART (напрямую)
   GND ──────── GND

Важно: PDN_UART — это однопроводный интерфейс. TX и RX соединены через резистор.

Библиотека TMCStepper

#include <TMCStepper.h>

#define DRIVER_ADDRESS 0b00 // MS1/MS2 определяют адрес
#define R_SENSE 0.11f       // Сопротивление датчика тока
#define SERIAL_PORT Serial1 // Или SoftwareSerial

TMC2209Stepper driver(&SERIAL_PORT, R_SENSE, DRIVER_ADDRESS);

void setup() {
  SERIAL_PORT.begin(115200);
  
  driver.begin();
  driver.toff(5);                 // Включить драйвер
  driver.rms_current(800);        // Ток 800 мА
  driver.microsteps(16);          // Микрошаг 1/16
  driver.pwm_autoscale(true);     // StealthChop автонастройка
  driver.en_spreadCycle(false);   // StealthChop режим
}

Настройка sensorless homing

void setupSensorlessHoming() {
  driver.TCOOLTHRS(0xFFFFF);    // Включить StallGuard на всех скоростях
  driver.SGTHRS(64);            // Порог чувствительности (0-255)
                                // Меньше = более чувствительно
}

// В прерывании или loop:
if (driver.SG_RESULT() < threshold) {
  // Обнаружен stall! Останавливаем мотор
  stopMotor();
  // Позиция = home
  position = 0;
}

Схема подключения (STEP/DIR + UART)

Arduino Uno                TMC2209                  NEMA 17

    5V ───────────────────── VIO ────┐
   GND ───────────────────── GND ────┼──────────────── GND
    D2 ───────────────────── DIR     │
    D3 ───────────────────── STEP    │
    D4 ───────────────────── EN      │
    TX ─────[1kΩ]─────┬───── PDN_UART
    RX ───────────────┘              │
                            M1A ─────────────────── A+ 
                            M1B ─────────────────── A-
                            M2A ─────────────────── B+
                            M2B ─────────────────── B-
                             VM ─────┬─────────────── +12V/24V
                            GND ─────┼─────────────── GND
                               100µF ┴ 

Настройка микрошагов

Через перемычки MS1/MS2

MS1MS2МикрошагUART-адрес
GNDGND1/80b00
VIOGND1/320b01
GNDVIO1/640b10
VIOVIO1/160b11

Через UART (гибче!)

driver.microsteps(256);  // От 1 до 256 (степени двойки)

Интерполяция: Даже с физическим микрошагом 1/16, TMC2209 внутренне интерполирует до 256 микрошагов, обеспечивая плавность!

Настройка тока

Через UART (рекомендуется)

driver.rms_current(1200);  // 1200 мА RMS
// Пиковый ток будет 1200 × √2 ≈ 1700 мА

Через Vref (как A4988)

Если UART не используется, Vref на плате:

$$ I_{RMS} = \frac{V_{ref}}{1.41} $$

Для 1A RMS нужно Vref ≈ 1.41V.

Сравнение режимов

РежимШумМоментСкоростьПрименение
StealthChop🔇 Бесшумный90%До средних3D-печать, офис
SpreadCycle🔊 Средний100%До высокихЧПУ, гравировка
HybridАвтоАвтоАвтоУниверсальный

Пример: Бесшумный 3D-принтер

#include <TMCStepper.h>
#include <AccelStepper.h>

#define DIR_PIN 2
#define STEP_PIN 3
#define SERIAL_PORT Serial1

TMC2209Stepper driver(&SERIAL_PORT, 0.11f, 0b00);
AccelStepper stepper(AccelStepper::DRIVER, STEP_PIN, DIR_PIN);

void setup() {
  SERIAL_PORT.begin(115200);
  
  // TMC2209 конфигурация
  driver.begin();
  driver.toff(5);
  driver.rms_current(1000);       // 1A для NEMA17
  driver.microsteps(16);
  driver.pwm_autoscale(true);     // Автоматическая оптимизация
  driver.en_spreadCycle(false);   // StealthChop = тишина!
  
  // AccelStepper конфигурация  
  stepper.setMaxSpeed(3000);      // шагов/сек
  stepper.setAcceleration(1500);  // плавный разгон
}

void loop() {
  stepper.moveTo(stepper.currentPosition() + 1600);
  while (stepper.distanceToGo() != 0) {
    stepper.run();
  }
  delay(500);
}

Типичные проблемы

Мотор не крутится

  1. Проверьте UART-подключение (TX через 1kΩ!)
  2. Проверьте driver.toff(5) — без этого драйвер выключен
  3. Проверьте питание VM (нужен конденсатор!)

Шум на низких скоростях

  1. Включите driver.pwm_autoscale(true)
  2. Снизьте порог TPWMTHRS

Sensorless homing не работает

  1. Проверьте TCOOLTHRS и SGTHRS
  2. Сначала калибруйте на открытом ходу
  3. StallGuard работает только в SpreadCycle (не в StealthChop!)

Сравнение с A4988 и DRV8825

ПараметрA4988DRV8825TMC2209
Макс. ток2A2.5A2A RMS
Микрошаг1/161/321/256 (интерполяция)
Шум🔊🔊🔊🔊🔊🔇 Бесшумный
Sensorless homing
UART-настройка
Цена$$$$

Вывод: TMC2209 — лучший выбор для проектов, где важны тишина и продвинутые функции. Для бюджетных проектов A4988 всё ещё актуален.

Применение

  1. 3D-принтеры — бесшумная печать ночью
  2. Лазерные граверы — точное позиционирование
  3. Роботы-помощники — тихая работа в офисе/доме
  4. Медицинские устройства — минимальный акустический шум
  5. Автоматизация дома — моторизованные шторы, жалюзи