

The TMC2209 MOTOR DRIVER (V 2.0) by MakerBase MKS is a high-performance stepper motor driver designed for precision motion control applications. It is widely used in 3D printers, CNC machines, and other devices requiring silent operation and smooth motor control. This driver supports advanced features such as sensorless homing, microstepping, and dynamic current adjustment, making it an ideal choice for modern motion control systems.








The TMC2209 MOTOR DRIVER (V 2.0) offers robust performance and advanced features. Below are its key technical details:
| Parameter | Value |
|---|---|
| Operating Voltage | 4.75V to 29V |
| Maximum Motor Current | 2.0A RMS (2.8A peak) |
| Microstepping | Up to 256 microsteps |
| Communication Interface | UART |
| Logic Voltage | 3.3V / 5V compatible |
| Features | Sensorless homing, StealthChop2, CoolStep, SpreadCycle |
| Dimensions | 15mm x 20mm |
The TMC2209 MOTOR DRIVER (V 2.0) has a standard pinout for easy integration. Below is the pin configuration:
| Pin Name | Description |
|---|---|
| VM | Motor power supply (4.75V to 29V) |
| GND | Ground connection |
| EN | Enable pin (active low) |
| DIR | Direction control input |
| STEP | Step pulse input |
| UART_TX | UART transmit pin for communication |
| UART_RX | UART receive pin for communication |
| MS1, MS2 | Microstepping resolution selection |
| VREF | Reference voltage for current adjustment |
The TMC2209 MOTOR DRIVER (V 2.0) is designed for ease of use in a variety of applications. Follow the steps below to integrate it into your circuit:
Below is an example of how to control the TMC2209 MOTOR DRIVER (V 2.0) using an Arduino UNO:
#include <TMCStepper.h>
// Define pins for TMC2209
#define EN_PIN 8 // Enable pin
#define DIR_PIN 5 // Direction pin
#define STEP_PIN 2 // Step pin
#define SERIAL_PORT Serial // UART communication port
#define DRIVER_ADDRESS 0b00 // TMC2209 driver address
// Initialize TMC2209 driver
TMC2209Stepper driver(&SERIAL_PORT, DRIVER_ADDRESS);
void setup() {
pinMode(EN_PIN, OUTPUT);
pinMode(DIR_PIN, OUTPUT);
pinMode(STEP_PIN, OUTPUT);
digitalWrite(EN_PIN, LOW); // Enable the driver
SERIAL_PORT.begin(115200); // Initialize UART communication
driver.begin(); // Initialize TMC2209
driver.toff(5); // Enable driver with a short off time
driver.rms_current(800); // Set motor current to 800mA
driver.microsteps(16); // Set microstepping to 1/16
}
void loop() {
digitalWrite(DIR_PIN, HIGH); // Set direction
for (int i = 0; i < 200; i++) {
digitalWrite(STEP_PIN, HIGH); // Generate step pulse
delayMicroseconds(500); // Delay for step timing
digitalWrite(STEP_PIN, LOW);
delayMicroseconds(500);
}
delay(1000); // Wait before reversing direction
digitalWrite(DIR_PIN, LOW); // Reverse direction
for (int i = 0; i < 200; i++) {
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(500);
digitalWrite(STEP_PIN, LOW);
delayMicroseconds(500);
}
delay(1000);
}
TMCStepper library in the Arduino IDE for the above code to work.rms_current and microsteps values based on your motor's specifications.Motor Not Moving:
Overheating:
rms_current setting.No UART Communication:
Motor Vibrates but Doesn't Rotate:
Q: Can the TMC2209 be used without UART?
A: Yes, the TMC2209 can operate in standalone mode using the STEP and DIR pins. However, UART is required for advanced features like sensorless homing and current adjustment.
Q: What is the maximum microstepping resolution?
A: The TMC2209 supports up to 256 microsteps per full step.
Q: How do I enable sensorless homing?
A: Sensorless homing requires UART communication to configure the driver. Refer to the TMC2209 datasheet for detailed instructions.
Q: Can I use the TMC2209 with a 12V power supply?
A: Yes, the TMC2209 supports a wide voltage range from 4.75V to 29V, including 12V.
By following this documentation, you can effectively integrate and utilize the TMC2209 MOTOR DRIVER (V 2.0) in your projects.