Wie verdrahte ich einen TMC2130-Schrittmotortreiber mit einem Arduino UNO, um ihn zu steuern?

Ich möchte einfach einen Schrittmotor mit einem Arduino steuern und brauche den TMC2130 , damit er sehr leise läuft. Ich habe viel gesucht und kann irgendwie nicht finden, wie man es tatsächlich mit einem Arduino und einer Stromquelle verdrahtet.

Ich kann Arduino-Bibliotheken und Beispielcode jedoch in Hülle und Fülle finden. Ich habe Schaltpläne gesehen, aber sie verwenden nur das TMC-Evaluierungskit, das ich nicht kaufen möchte.

Ist ein TMC2130 und Arduino alles, was ich an ICs oder Platinen benötige? Hat jemand Erfahrung damit?

Antworten (4)

Dieser Schaltplan erinnert mich an diese DRV8825-Schaltpläne. Ziemlich einfach zu folgen:

TMC2130 Arduino Schaltplan

Quelle: TC2130 Arduino Wiring (Zuletzt geprüft: 13.07.2018)

Sieht für mich ziemlich einfach aus, es gibt ein Diagramm im Datenblatt auf Seite 5. Ich würde Ihnen dringend empfehlen , das Datenblatt zu lesen und zu verstehen, wenn Sie es nicht höchstwahrscheinlich zum ersten Mal starten und keine Funktionalität haben . Sie werden dann das Datenblatt lesen, bis Sie es verstehen und das Problem finden.

Das erste, was Sie in einem Datenblatt überprüfen sollten, sind die absoluten Höchstwerte. Überschreiten Sie diese Bedingungen nicht.

Der SPI-Bus ist mit dem Arduino verbunden (stellen Sie sicher, dass die Logikpegel gleich sind)

Geben Sie hier die Bildbeschreibung ein

Es scheint, dass die STEP- und DIR-Ports vom Mikroprozessor angesteuert und der Motor auf diese Weise gesteuert werden können (und möglicherweise auch über den Spi-Bus gesteuert werden können).

Ein Beispielschema für das Evaluierungsboard finden Sie hier .

Es gibt hier auch einen Blog, der alle Pins für Arduino UNO zeigt: blog.trinamic.com/2017/06/27/… Auf dem Evaluierungsboard befindet sich nur der TMC2130, es werden also nur die Pin-Nummern kopiert.

Die meisten von uns faulen Leuten verwenden einfach ein RAMPS-Board für unsere Schritttreiber mit dem Arduino. Die Schaltpläne sind verfügbar, aber es ist so einfach, ein RAMPS-Board zu kaufen.

Ein RAMPS-Board wird üblicherweise verwendet, um die 4 Schrittmotoren anzutreiben, die in den meisten 3D-Druckern zu finden sind, aber es ist universell und kann viele Positionierungsanwendungen antreiben.

Oh, ok! Ich wusste nichts über RAMPS, außer dass es normalerweise für den 3D-Druck verwendet wird, also denke ich, dass ich es nicht einmal in Betracht gezogen habe. Ich probier es aus, danke!

Nur weil ich nach den Antworten immer noch nicht wusste, was ich tat, obwohl sie hilfreich sind, etwas Verständnis für Anfänger, da sich das Treiberboard z. B. von einem Treiberboard unterscheidet L298n.

Kurz gesagt, eine Treiberplatine wie die TMC 2130einzige Notwendigkeit +5Vund GND, ein Digital-Pin für DIRund STEP. ENkann an einen GNDStift gezogen werden, um zB mit der AccelStepperArduino-Bibliothek zu arbeiten, würde aber viele großartige Funktionen verpassen. Um sie zu nutzen, meine 6-Schritte-Anleitung, die Ihnen hoffentlich ein oder zwei Tage beim Durcharbeiten der Trinamic-Website für einen schnellen und schnellen Lauf erspart.

Im Allgemeinen ist nur Folgendes zu tun:

  1. Überprüfen Sie das Datenblatt des Schrittmotors auf den ImaxStrom. In meinem Fall: 17hs4401 der Motor hat 1.7A "Rated Current". Das heißt, das TMC 2130würde funktionieren, könnte aber nicht im Stealth-Modus laufen, würde aber funktionieren, da ...

"Der maximal einstellbare Motorstrom beträgt 1,77 A RMS (0,11 Ohm Messwiderstände), aber die SilentStepSticks können nur bis zu 1,2 A RMS verwendet werden." ( https://wiki.fysetc.com/TMC2130/#motor-current-setting )

Motorphasenstrom max. 2 A RMS, 2,8 A Spitze

( https://wiki.fysetc.com/Silent2209/#technical-specifications )

Also habe ich mich für Letzteres entschieden TMC 2209 (Meiner Meinung nach eine bessere Wahl in jeder Hinsicht als die TMC 2130und obwohl der gleiche Hinweis auf 1,2 A erscheint, aber der RMS bei 2 A liegt, funktioniert es also.)

BEARBEITEN: Teemalut, der Ersteller der Bibliothek, hat einige Punkte klargestellt, die ich in der Dokumentation falsch interpretiert habe:

Die Stromstärke schränkt Ihre Wahl des Schrittmodus nicht ein. Die Grenze von 1,2 A ist eine praktische thermische Grenze. Ich würde 2209 lieber nicht nennen, um in jeder Hinsicht besser zu sein als der 2130. Ihm fehlen einige Optionen und es werden einige hinzugefügt, und letztendlich ist es Sache des Benutzers, den Treiber auszuwählen. Ich neige dazu, die SPI zu bevorzugen, weil sie einfacher zu handhaben sind.


Wenn Sie keine Softwaresteuerung über den Treiber haben, müssen Sie den Widerstand manuell einstellen. Andernfalls können Sie Punkt 2 und 3 überspringen.

  1. Um dies manuell zu machen, stecken Sie ein Multimeter an den Massepin des Motorausgangs (neben den 3 leeren Löchern) und die andere Ader an das VrefLoch/Pin und überprüfen Sie noch einmal im Datenblatt, wo Vrefgemessen werden muss, da ändert sich das sogar ab Version zu Version des Platinenlayouts. Könnte der rechte Stift oder der linke der 3 Stifte oder woanders sein. (Und ja, an dieser Stelle müssen Sie sich ein Multimeter besorgen, ein billiger Discounter für 5 Dollar tut es, um die Treiberplatine nicht zu braten)

(Das Multimeter auf Gleichspannung ⎓, NICHT Wechselstrom ~; Schalten Sie die Multimeter-Auswahl auf so nah wie, aber größer als die zu messende Spannung, z. B. 20-V-Bereich für die 2,4-V-Messung)The higher the range difference, the less accurate the measuring will get

Dafür gibt es auf der Homepage tatsächlich einen Rechner nur zum Trainieren der Formel:

Vref = (Ieff * 2,5 V) / 1,77 A = Ieff * 1,41 = Imax

also Vref = (1,7A * 2,5V) / 1,77A = 1,4V


  1. Legen Sie die 5V Logikspannung VIO& GNDund die 12V Motorspannung VM& GNDdaneben an. Verbinden Sie nicht den Motor und nicht unbedingt die GNDPins miteinander, sie können getrennt werden. Nehmen Sie nun einen ganz kleinen Schraubendreher und verstellen Sie die Schraube am Potentiometer, bis die errechnete Gleichspannung erscheint.

Möglicherweise müssen Sie etwas warten, bis die Spannung nicht mehr springt, da sich der TMC 2209 or TMC 2130Treiber beim ersten Anschluss an die Spannung anpasst, bis Sie sich auf - in meinem Fall 2,4 V für einen 1,7 A-Bipolar-Schrittmotor - einstellen können.

Das war der schwierigste Teil.


  1. Die Motortypen sollten sich in der TMCStepperBibliothek der Arduino IDE. Es gibt tatsächlich eine Beispielskizze des TMC2209und die Bibliothek funktioniert auch mit dem TMC 2130und nutzt viele Funktionen der TMC-Treiber ( https://github.com/teemuatlut/TMCStepper )

Ich verwende den Arduino Mini-Klon

Der Enable- und Direction-Pin sollte digitale Pins sein und der Step-Pin SW_RXund SW_TX PWMPins. Die TMC 2209und TMC 2130arbeiten mit 3,3 V und 5 V, also kein Grund zur Sorge.

Alle Pins können nur normale DigitalIO-Pins sein. https://github.com/teemuatlut/TMCStepper/pull/146#issuecomment-684010156


  1. Ändern Sie die Pins gemäß DigitalIOIhrem Board und kommentieren Sie das Zeug gemäß dem folgenden Codebeispiel aus
    #define EN_PIN           7 // Enable 
    #define DIR_PIN          8 // Direction 
    #define STEP_PIN         9 // Step 
    #define SW_RX            5 // 
    #define SW_TX            6 // 
    #define SERIAL_PORT  Serial // [Serial1 to Serial]
    #define DRIVER_ADDRESS 0b00 // TMC2209 Driver address according to MS1 and MS2
    
    #define R_SENSE 0.11f // Match to your driver
                          // SilentStepStick series use 0.11
                          // UltiMachine Einsy and Archim2 boards use 0.2
                          // Panucatt BSD2660 uses 0.1
                          // Watterott TMC5160 uses 0.075
    
    // Select your stepper driver type
    //TMC2209Stepper driver(&SERIAL_PORT, R_SENSE, DRIVER_ADDRESS);
    TMC2209Stepper driver(SW_RX, SW_TX, R_SENSE, DRIVER_ADDRESS); //Uncomment this if you connected SW_RX and SW_TX
    //...

Das war es.


Also ich habe folgende Konfiguration:

  • Arduino Digital Pin 7 -> Aktivieren zuEN

  • Arduino Digital Pin 8 -> Richtung zuDIR

  • Arduino Digital Pin 9 -> Schritt zuSTEP

  • Arduino Digital PIN 5 -> SW_RX zuRX

  • Arduino Digital PIN 6 -> SW_TX zuTX

  • Arduino +5V oder +3,3V -> bisVIO

  • Arduino GND -> bis GNDnebenVIO

  • +12V >2A Stromquelle --> toVM

  • GND >2A Stromquelle --> bis GNDnebenVM

  • Motor A+ -->A2

  • Motor A- -->A1

  • Motor B+ -->B1

  • Motor B- -->B2

(Es würde auch funktionieren, einfach Step und Direction mit dem Arduino mit der AccelStepper Library zu verbinden und EN auf Arduino GND zu ziehen und die anderen offen zu lassen, damit der Motor funktioniert, aber viele Funktionen des TMC wären es nicht verwendet und der Motor wäre wahrscheinlich lauter und "frisst" mehr Strom. Aber das ist eine Lösung, wenn Sie nur noch einen digitalen und einen PWM-Pin auf Ihrem Arduino haben.)

Ich hoffe, jemand wird einen Tag sparen, indem er die Dokumentation durchliest, um zu verstehen, wie diese Treiberplatine mit diesem Beitrag funktioniert.

Hallo und vielen Dank für Ihr umfassendes Tutorial. Nur eine Randnotiz - wenn jemand die TMCStepper-Bibliothek zusammen mit einem ESP32 verwenden möchte, wie ich es getan habe, müssen Sie aufgrund von Kompatibilitätsproblemen die HardwareSerial verwenden. Weitere Einzelheiten finden Sie unter github.com/teemuatlut/TMCStepper/issues/…
@karlitos Freut mich, dass es dir geholfen hat :) Danke für deine Antwort.