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
| MS1 | MS2 | Микрошаг | UART-адрес |
|---|---|---|---|
| GND | GND | 1/8 | 0b00 |
| VIO | GND | 1/32 | 0b01 |
| GND | VIO | 1/64 | 0b10 |
| VIO | VIO | 1/16 | 0b11 |
Через 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);
}
Типичные проблемы
Мотор не крутится
- Проверьте UART-подключение (TX через 1kΩ!)
- Проверьте
driver.toff(5)— без этого драйвер выключен - Проверьте питание VM (нужен конденсатор!)
Шум на низких скоростях
- Включите
driver.pwm_autoscale(true) - Снизьте порог TPWMTHRS
Sensorless homing не работает
- Проверьте TCOOLTHRS и SGTHRS
- Сначала калибруйте на открытом ходу
- StallGuard работает только в SpreadCycle (не в StealthChop!)
Сравнение с A4988 и DRV8825
| Параметр | A4988 | DRV8825 | TMC2209 |
|---|---|---|---|
| Макс. ток | 2A | 2.5A | 2A RMS |
| Микрошаг | 1/16 | 1/32 | 1/256 (интерполяция) |
| Шум | 🔊🔊🔊 | 🔊🔊 | 🔇 Бесшумный |
| Sensorless homing | ❌ | ❌ | ✅ |
| UART-настройка | ❌ | ❌ | ✅ |
| Цена | $ | $ | $$ |
Вывод: TMC2209 — лучший выбор для проектов, где важны тишина и продвинутые функции. Для бюджетных проектов A4988 всё ещё актуален.
Применение
- 3D-принтеры — бесшумная печать ночью
- Лазерные граверы — точное позиционирование
- Роботы-помощники — тихая работа в офисе/доме
- Медицинские устройства — минимальный акустический шум
- Автоматизация дома — моторизованные шторы, жалюзи
