Trinamic Motion Control MPN encoding patterns, motor driver series decoding, and handler guidance. Use when working with Trinamic stepper drivers and motion controllers (TMC series).
Trinamic (now part of Analog Devices) specializes in motor control ICs:
TMC[FAMILY][SERIES]-[PACKAGE][-SUFFIX]
| | | | |
| | | | +-- T = Tape and reel
| | | +-- Package code (LA, TA, WA, BOB)
| | +-- 2-digit series within family (00-99)
| +-- Family digit (2, 4, 5, 6, 7)
+-- TMC prefix (all Trinamic parts)
Example: TMC2209-LA
| | | |
| | | +-- LA = QFN package
| | +-- 09 = Series number
| +-- 2 = Stepper driver family
+-- TMC = Trinamic prefix
Example: TMC5160-TA-T
| | | | |
| | | | +-- T = Tape and reel packaging
| | | +-- TA = TQFP package
| | +-- 60 = Series (motion controller)
| +-- 5 = Motion controller family
+-- TMC = Trinamic prefix
<!-- Add new learnings above this line -->| Family | Description | Applications |
|---|---|---|
| TMC21xx | Basic stepper drivers | TMC2100, TMC2130, TMC2160 |
| TMC22xx | Advanced stepper drivers | TMC2208, TMC2209, TMC2225, TMC2226 |
| TMC23xx | Stepper drivers | TMC2300 |
| TMC24xx | Stepper drivers | TMC2400 |
| TMC26xx | High-power stepper | TMC2660, TMC2690 |
| TMC4xxx | Gate/motion controllers | TMC4361, TMC4671 |
| TMC5xxx | Integrated motion | TMC5041, TMC5072, TMC5130, TMC5160 |
| TMC6xxx | 3-phase BLDC/PMSM | TMC6100, TMC6140, TMC6200 |
| TMC7xxx | Specialized | Various |
| Code | Package | Description |
|---|---|---|
| LA | QFN | Leadless Array - most common |
| TA | TQFP | Thin Quad Flat Package |
| WA | WQFN | Very thin QFN variant |
| BOB | Breakout Board | Evaluation/development board |
| Application | Recommended | Notes |
|---|---|---|
| Production | LA (QFN) | Smallest footprint, best thermal |
| Prototyping | TA (TQFP) | Easier to hand solder |
| Development | BOB | Plug-and-play evaluation |
| Tight spaces | WA (WQFN) | Ultra-thin profile |
| Suffix | Meaning |
|---|---|
| -T | Tape and reel packaging |
| -TR | Tape and reel (alternate) |
| (none) | Tube/tray packaging |
| Part | Features | Max Current |
|---|---|---|
| TMC2100 | Basic driver, stealthChop | 1.2A RMS |
| TMC2130 | SPI interface, StallGuard2 | 1.2A RMS |
| TMC2160 | High power, spreadCycle | 2.5A peak |
| Part | Features | Max Current | Interface |
|---|---|---|---|
| TMC2208 | UART, stealthChop | 1.4A RMS | UART |
| TMC2209 | UART, StallGuard4 | 2.0A RMS | UART |
| TMC2225 | Enhanced 2208 | 1.4A RMS | UART |
| TMC2226 | Enhanced 2209 | 2.0A RMS | UART |
| Part | Features | Notes |
|---|---|---|
| TMC5041 | Dual driver + controller | 2 motors |
| TMC5072 | Dual driver + ramp | 2 motors |
| TMC5130 | Driver + controller | Single motor |
| TMC5160 | High power + controller | 3A RMS |
| Part | Application | Voltage |
|---|---|---|
| TMC6100 | BLDC gate driver | 6-25V |
| TMC6140 | BLDC power stage | 6-36V |
| TMC6200 | High voltage BLDC | 8-60V |
Trinamic parts are compatible when:
| Original | Upgrade | Notes |
|---|---|---|
| TMC2208 | TMC2209 | Adds StallGuard4 |
| TMC2100 | TMC2130 | Adds SPI + StallGuard2 |
| TMC5130 | TMC5160 | Higher current |
| TMC2225 | TMC2226 | Higher current |
| Part A | Part B | Reason |
|---|---|---|
| TMC2130 | TMC2209 | Different interface (SPI vs UART) |
| TMC2100 | TMC2208 | Different interface (STEP/DIR vs UART) |
| TMC5xxx | TMC21xx | Different architecture |
| Part | Use Case |
|---|---|
| TMC2209 | X/Y/Z axes, extruder |
| TMC2208 | Older designs |
| TMC5160 | High-current motors |
| Part | Use Case |
|---|---|
| TMC2160 | Light duty spindle |
| TMC5160 | Axis motors |
| TMC6200 | BLDC spindle |
| Part | Use Case |
|---|---|
| TMC4671 | Servo control |
| TMC6100 | BLDC joints |
| TMC2209 | Small actuators |
// All Trinamic parts start with TMC
if (!upperMpn.startsWith("TMC")) {
return false;
}
// TMC21xx - Basic stepper drivers
"^TMC21[0-9]{2}.*"
// TMC22xx - Advanced stepper drivers
"^TMC22[0-9]{2}.*"
// TMC4xxx - Gate drivers / Motion controllers
"^TMC4[0-9]{3}.*"
// TMC5xxx - Motion controllers
"^TMC5[0-9]{3}.*"
// TMC6xxx - 3-phase drivers
"^TMC6[0-9]{3}.*"
String extractPackageCode(String mpn) {
String upperMpn = mpn.toUpperCase();
// Check for breakout board first (longest match)
if (upperMpn.contains("-BOB") || upperMpn.endsWith("BOB")) {
return "Breakout Board";
}
// Package codes: -LA, -TA, -WA (with optional -T suffix)
if (upperMpn.contains("-LA") || upperMpn.matches(".*LA(-T)?$")) {
return "QFN";
}
if (upperMpn.contains("-TA") || upperMpn.matches(".*TA(-T)?$")) {
return "TQFP";
}
if (upperMpn.contains("-WA") || upperMpn.matches(".*WA(-T)?$")) {
return "WQFN";
}
// Check without hyphen separator
if (upperMpn.endsWith("LA") || upperMpn.endsWith("LAT")) return "QFN";
if (upperMpn.endsWith("TA") || upperMpn.endsWith("TAT")) return "TQFP";
if (upperMpn.endsWith("WA") || upperMpn.endsWith("WAT")) return "WQFN";
return "";
}
String extractSeries(String mpn) {
String upperMpn = mpn.toUpperCase();
if (!upperMpn.startsWith("TMC")) {
return "";
}
// Find where series number ends
int seriesEnd = 3; // Start after "TMC"
for (int i = 3; i < upperMpn.length() && i < 7; i++) {
if (Character.isDigit(upperMpn.charAt(i))) {
seriesEnd = i + 1;
} else {
break;
}
}
return upperMpn.substring(0, seriesEnd); // e.g., "TMC2209"
}
manufacturers/TrinamicHandler.javaMOTOR_DRIVER, ICSilent operation through voltage PWM chopping:
Sensorless load detection:
Current reduction based on load: