Lib-electronic-components trinamic

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).

install
source · Clone the upstream repo
git clone https://github.com/Cantara/lib-electronic-components
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/Cantara/lib-electronic-components "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/manufacturers/trinamic" ~/.claude/skills/cantara-lib-electronic-components-trinamic && rm -rf "$T"
manifest: .claude/skills/manufacturers/trinamic/SKILL.md
source content

Trinamic Motion Control Manufacturer Skill

Overview

Trinamic (now part of Analog Devices) specializes in motor control ICs:

  • TMC21xx: Basic stepper motor drivers
  • TMC22xx: Advanced stepper drivers with UART/StallGuard
  • TMC23xx/24xx: Stepper drivers
  • TMC26xx: High-power stepper drivers
  • TMC4xxx: Gate drivers and motion controllers
  • TMC5xxx: Integrated motion controllers
  • TMC6xxx: 3-phase BLDC/PMSM drivers
  • TMC7xxx: Specialized drivers

MPN Structure

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

Family Codes

FamilyDescriptionApplications
TMC21xxBasic stepper driversTMC2100, TMC2130, TMC2160
TMC22xxAdvanced stepper driversTMC2208, TMC2209, TMC2225, TMC2226
TMC23xxStepper driversTMC2300
TMC24xxStepper driversTMC2400
TMC26xxHigh-power stepperTMC2660, TMC2690
TMC4xxxGate/motion controllersTMC4361, TMC4671
TMC5xxxIntegrated motionTMC5041, TMC5072, TMC5130, TMC5160
TMC6xxx3-phase BLDC/PMSMTMC6100, TMC6140, TMC6200
TMC7xxxSpecializedVarious

Package Codes

CodePackageDescription
LAQFNLeadless Array - most common
TATQFPThin Quad Flat Package
WAWQFNVery thin QFN variant
BOBBreakout BoardEvaluation/development board

Package Selection Guide

ApplicationRecommendedNotes
ProductionLA (QFN)Smallest footprint, best thermal
PrototypingTA (TQFP)Easier to hand solder
DevelopmentBOBPlug-and-play evaluation
Tight spacesWA (WQFN)Ultra-thin profile

Suffix Codes

SuffixMeaning
-TTape and reel packaging
-TRTape and reel (alternate)
(none)Tube/tray packaging

Popular Product Series

TMC21xx - Basic Stepper Drivers

PartFeaturesMax Current
TMC2100Basic driver, stealthChop1.2A RMS
TMC2130SPI interface, StallGuard21.2A RMS
TMC2160High power, spreadCycle2.5A peak

TMC22xx - Advanced Stepper Drivers

PartFeaturesMax CurrentInterface
TMC2208UART, stealthChop1.4A RMSUART
TMC2209UART, StallGuard42.0A RMSUART
TMC2225Enhanced 22081.4A RMSUART
TMC2226Enhanced 22092.0A RMSUART

TMC5xxx - Motion Controllers

PartFeaturesNotes
TMC5041Dual driver + controller2 motors
TMC5072Dual driver + ramp2 motors
TMC5130Driver + controllerSingle motor
TMC5160High power + controller3A RMS

TMC6xxx - 3-Phase Drivers

PartApplicationVoltage
TMC6100BLDC gate driver6-25V
TMC6140BLDC power stage6-36V
TMC6200High voltage BLDC8-60V

Replacement Compatibility

Trinamic parts are compatible when:

  1. Same series number (TMC2209 vs TMC2209)
  2. Same package (LA vs LA, TA vs TA)
  3. Different packaging suffix (-T vs no suffix)

Upgrade Paths

OriginalUpgradeNotes
TMC2208TMC2209Adds StallGuard4
TMC2100TMC2130Adds SPI + StallGuard2
TMC5130TMC5160Higher current
TMC2225TMC2226Higher current

NOT Compatible

Part APart BReason
TMC2130TMC2209Different interface (SPI vs UART)
TMC2100TMC2208Different interface (STEP/DIR vs UART)
TMC5xxxTMC21xxDifferent architecture

Common Applications

3D Printers

PartUse Case
TMC2209X/Y/Z axes, extruder
TMC2208Older designs
TMC5160High-current motors

CNC Machines

PartUse Case
TMC2160Light duty spindle
TMC5160Axis motors
TMC6200BLDC spindle

Robotics

PartUse Case
TMC4671Servo control
TMC6100BLDC joints
TMC2209Small actuators

Handler Implementation Notes

Pattern Matching

// 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}.*"

Package Code Extraction

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 "";
}

Series Extraction

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"
}

Related Files

  • Handler:
    manufacturers/TrinamicHandler.java
  • Component types:
    MOTOR_DRIVER
    ,
    IC
  • Note: Trinamic was acquired by Analog Devices in 2021

Key Features by Series

StealthChop

Silent operation through voltage PWM chopping:

  • TMC21xx: StealthChop (1st gen)
  • TMC22xx: StealthChop2 (improved)
  • TMC5xxx: StealthChop2

StallGuard

Sensorless load detection:

  • TMC2130: StallGuard2 (SPI only)
  • TMC2209: StallGuard4 (UART)
  • TMC5xxx: StallGuard4

CoolStep

Current reduction based on load:

  • TMC2130: Yes
  • TMC2209: Yes
  • TMC5160: Yes

Learnings & Edge Cases

  • Analog Devices acquisition: Trinamic was acquired by Analog Devices in 2021, some new parts may use ADI branding
  • BOB = development: "-BOB" suffix indicates breakout board, NOT a production package
  • UART vs SPI: TMC2208/2209 use UART, TMC2130 uses SPI - NOT interchangeable without firmware changes
  • StallGuard versions: StallGuard2 (TMC2130) and StallGuard4 (TMC2209) have different tuning parameters
  • -T suffix: Tape and reel packaging, functionally identical to tube packaging
  • TMC5xxx dual: TMC5041/5072 control TWO motors, TMC5130/5160 control ONE motor
  • 3-phase vs stepper: TMC6xxx is for BLDC/PMSM motors, NOT stepper motors
<!-- Add new learnings above this line -->