TMC2209 mit Stepper

Grüß euch!

Das ist mein erster Beitrag, denn ich bin ein absoluter Neuling im Bereich Arduino bzw. Elektrotechnik allgemein.
Ich habe ein Zykloidgetriebe konstruiert und gedruckt und möchte dieses nun mit einem Stepper betreiben.
Mein Hauptproblem ist, dass ich nichtmal weiß wonach ich googeln soll, um meine Probleme zu lösen, weil ich wie gesagt, noch wenig bis keine Ahnung von elektronischen Komponenten bzw. Möglichkeiten habe.

Zur Ausgangslage:
Ich habe den Stepper bis jetzt mit einem V3 CNC Shield + A4988 Motortreiber auf meinem UNO R3 zum laufen gebracht und mit der AccelStepper library so programmiert, dass sich der Motor per Knopfdruck dreht, beim nächsten Knopfdruck abbremst, die Richtung wechselt und wieder auf MaxSpeed beschleunigt. Bis dahin wars selbst ohne Ahnung nicht großartig kompliziert. Allerdings möchte ich mehr aus dem Getriebe rausholen und genauer ansteuern, zB per Joystick.

Zum Hauptproblem:
Ich wollte den A4988 durch einen TMC2209 ersetzen und damit dann weiter arbeiten und lernen. Laut Herstellerangaben und Google hätte ich den A4988 einfach durch den TMC ersetzen können - dem war dann leider nicht so, alleine schon weil zwei Pins mit dem Kondensator vom Shield gekuschelt hätten.
Nicht nur, dass mein Shield nicht mehr funktioniert und ich den Bootloader vom UNO ersetzen musste, habe ich jetzt auch noch den TMC gegrillt, weil ich versucht habe alles über das Breadboard zu verkabeln. (Problem dürfte wahrscheinlich die 24V Versorgung + 25V Kondensator oder fehlende Erdung gewesen sein, keine Ahnung)
Ich weiß leider nicht mehr weiter in Bezug auf Verkabeln, Bauteile und Möglichkeiten.
Leider finde ich einfach nirgends einen geeigneten Guide oder eine Webseite, die sich mit diesen Themen im Bereich Robotik kompakt, ordentlich und anfängerfreundlich auseinandersetzt.

Was ich konkret brauche:
Anfängerfreundliche (Deppensichere-) Auskunft oder sinnvolle Quellen, wie ich am einfachsten (einfach im Sinne von "ähnlich wie CNC Shield" - also wenig Kabel und kompakt) einen TMC2209 mit einem Nema 17 verwenden kann. Weiterführend würde ich den Motor eventuell gerne mit einem Joystick steuern.
Außerdem muss ich zwingend das Ausgangsdrehmoment vom Getriebe testen (Angeblich lässt sich das irgendwie mit dem Treiber recht genau auslesen?). Ich habe zwar eine mechanische Vorrichtung bzw. Messstation design und gedruckt, allerdings denke ich das bei ca 3Nm definitiv nicht Schluss sein kann.

Was ich habe:
Original UNO R3
Nema 17 48mm, Bipolar, 2A, 1.3Ohm, 2.40mH, 0.55Nm
24V, 5A Netzteil
A4988 Motortreiber
KY-023 Joystick Modul
CNC Shield V3, Spannung ist drauf, funktioniert aber nicht mehr?
keinen TMC2209 mehr, lol

Ich bedanke mich im Voraus und bitte nicht vergessen: man kann nicht alles wissen!

In Deiner Überschrift steht "TMC2209", eigentlich fragst Du aber nach Hilfe für A4988, richtig?

Hier findest Du Infos: A4988 Stepper Motor Driver Carrier

Zum Testen kannst Du das auf ein Steckbrett stecken.

Als anfängerfreundliche Bibliothek empfehle ich Dir die MobaTools, findest Du im Bibliotheksmanager der Arduino-IDE. Die Doku beschreibt die verwendbaren Methoden, die Beispiele helfen Dir beim Einstieg.

Bei Fragen fragen :wink:

1 Like

Moin @dastimm ,

dass man nicht alles wissen kann, gilt auch hier bei uns im Forum ... ;-)

Kannst Du vielleicht noch die Ausführungsform Deines TMC2209 mitteilen? Es gibt für den "nackten" Chip ein ausführliches Datenblatt, z.B. hier

https://cdn-reichelt.de/documents/datenblatt/A200/TMC2209_DATASHEET_V105.pdf

aber andererseits (und das hast Du vermutlich) Module, auf denen das IC verbaut wurde:

So etwas z.B. bigtreetech

oder auch anders ...

Gruß
ec2021

P.S.: Ein guter Hinweis von @agmue ... Geht's noch um den TMC?? Ich hatte das hier so verstanden:

Auf jeden Fall bestehen zwischen A4988 und TMC2209-Modulen Unterschiede.

Der TMC2209 verfügt über eine serielle Schnittstelle (siehe das oben verlinkte Datenblatt):

The UART single wire interface allows control of the TMC2209 with any microcontroller UART. It shares 
transmit and receive line like an RS485 based interface. 

Die Pinbelegung ist bei dem Modul von bigtreetech und einem üblichen A4988 Breakout Board sehr ähnlich, aber nicht identisch:

Inwieweit das relevant ist, wäre zu prüfen ...

Vielleicht sind die folgenden Links von Interesse:

https://forum.arduino.cc/t/tmc2209-v1-3-tausch-zum-a4988/1292861/6

https://forum.arduino.cc/t/tmc-2209-v2-0-verkabelung/1063991/2

https://forum.arduino.cc/t/tmcstepper-arduino-tmc2209/956036/8

https://circuitdigest.com/microcontroller-projects/interfacing-TMC2209-stepper-motor-driver-with-arduino-uno-basic-direction-and-stepping-control

Erstmals danke für die sehr schnelle Antwort!
Konkret gehts mir aktuell nur um die Verwendung von einem TMC2209. Für den A4988 hab ich ausreichend Tutorials etc gefunden, nur leider nicht für den TMC2209.
Aber die MobaTools library werd ich mir definitiv auch anschauen, danke!

Danke für die schnelle Antwort!
Ja es geht mir um den TMC2209, hab ich scheinbar nicht gut formuliert.

Ich habe genau die Ausführung von deinem Bild, also den TMC2209 V1.3 von Bigtreetech.
Leider kann ich keine Anhänge hochladen, weil mein Account noch zu neu ist, sonst hätte ich das Datenblatt gleich mitgeschickt.
Link zum PDF (falls das funktioniert) wäre dieser.

Wie gesagt ist der Treiber heute von uns gegangen, wenn es also eine bessere bzw. praktischere Ausführung etc. gibt, wäre so eine Info auch hilfreich. Ansonsten bestell ich mir wieder einen (oder besser gleich mehrere :smiling_face_with_tear:)

Danke für die Links, einiger dieser Beitrage habe ich schon durchforstet, allerdings nur halb verstanden. (= hatte noch nicht genug Zeit, alles zu verstehen)
Die Anleitung vom letzten Link für den TMC2209 habe ich heute befolgt, nur mit dem Unterschied, dass ich eben mein 24V 5A Netzteil als externe Stromquelle verwendet habe.
Quasi genau wie in diesem Video zum A4988.

Was ich halt eben nicht gewusst habe bzw. woran ich einfach nicht gedacht habe ist, dass die Kondensatoren aus dem Arduino Starter Kit nur bis max. 25V ausgelegt sind.

Hat mich zwar zuerst geärgert, dass ich meinen TMC gekillt habe, nach kurzem googeln (und ChatGPT fragen - jaja ich weiß) war ich aber froh, dass ich was dazu gelernt habe.
Ich schätze das gehört nun mal dazu.

Ich frag mich halt nur ob das Verkabeln mit dem Breadboard die beste Variante ist oder ob es eben sowas ähnliches wie das CNC Shield für den A4988, nur eben für einen TMC2209 gibt?

Hier schon mal interessante Informationen zum silentstepstick, den es in verschiedenen Ausführungen (u.a. tmc2209) gibt:

https://learn.watterott.com/de/silentstepstick/faq/

Kann schon sein, dass ich Dir nur so nach und nach etwas liefern kann ,,, ;-)

z.B.: Dieser Link auf ein CNC-Shield, das (gemäß Lieferant, keine Garantie meinerseits) mit den silentstepsticks kompatibel sein soll (Versorgungsspannung: 12-36V DC):

https://www.roboter-bausatz.de/p/uno-cnc-shield-v3-kompatibel-mit-arduino-uno

Nur erstmal zum Testen, nicht für den Dauerbetrieb, versteht sich.

Wozu benötigst Du ein Shield für mehrere Achsen, wenn Du ein Zykloidgetriebe hast? Oder geht es um mehrere (wie viele?) Achsen?

Da ich (auch) kein Freund von Breadboard-Verkabelungen bin, suche ich auch immer gerne nach Breakout-Board-Alternativen. Für die Stepper-Treiber DRV8825, A4988 gibt es diese Stepper-Driver-Module, auf die man diese Treiber aufstecken kann und so nur noch wenige Pins angeschlossen werden müssen, ähnlich dem CNC-Shield für mehrere Treiber.
Das funktioniert (mit Einschränkungen: kein UART) auch mit dem TMC2208,.. für den TMC2209 bin ich mir nicht ganz so sicher,.. vielleicht hat hier ja jemand Erfahrung damit.

Dann wären diese Träger-Platinen ohne Anpassung wohl nicht die beste Wahl, da du hier auf die Serielle UART-Verbindung Zugriff haben musst.

Auch eine Erwähnung wert, wäre der Adafruit TMC2209 (Guide hier), der mir, was die Anschlüsse betrifft, recht benutzerfreundlich aussieht.

Dieser Link ist schon mal Gold wert, danke dafür!

Genau dieses CNC Shield habe ich, jedoch funktioniert dieses nicht mehr, seitdem ich den A4988 durch einen TMC2209 ersetzt hatte. Die zwei extra pins für DIAG und INDEX, welche der A4988 nicht hat, habe ich zwar weggebogen und isoliert, damit sie nicht mit dem darunter liegenden Kondensator vom Shield kollidieren, aber zum laufen gebracht habe ich auch nach dem Programm-Umstellen nichts. Da fehlt mir schlichtweg die Erfahrung bzw. das nötige Know-How.
Was ich eben auch nicht verstehe ist, dass obwohl überall Spannung ist, wo Spannung sein soll, das Shield mit dem dafür vorgesehenen A4988 auch nicht mehr funktioniert. Am Treiber liegts jedenfalls nicht, weil ich extra einen neuen verwendet habe. Auch VRef habe ich richtig eingestellt und die Pin Belegung im Programm überprüft.
Normalerweise surrt der Stepper ja beim A4988, jedoch kommt beim Motor gar nichts mehr an.

Derzeit gehts mir nur mal darum, dass ich weiß wie ich am besten einen einzelnen Stepper bzw. ein einzelnes Getriebe präzise ansteuern kann.

Da ich für mein Diplomprojekt (eigentlich für mich selbst) einen Roboterarm bauen will, brauche ich später mehrere Stepper für die einzelnen Gelenke.
Das Shield wäre eben für die Rotation um Z, also Getriebe im Standfuß und Rotation um X/Y (Schulter/Ellenbogen) praktisch gewesen, wenn ich es mit TMC2209 Treiber zum laufen bringen würde.
Für das Handgelenk hätte ich eine Art Differential mit Kegelrädern und Riementrieb vorgesehen, wäre also wieder eine andere Steuerung.
Insgesamt wäre ich nach meiner aktuellen Idee bei 3 Steppern für die Hauptachsen + 2 Stepper für das Handgelenk des Roboters.

Und nur mal rein aus Interesse, wie macht man das alles, nachdem der Prototyp der ganzen Elektronik komplett funktionsfähig ist? Lässt man sich den Spaß irgendwo zusammengebaut fertigen oder was ist das normale Prozedere bei sowas?
Vielleicht eine dumme Frage, aber ich komme eben aus dem Maschinenbau und da wird halt konstruiert, ein Prototyp gefertigt und danach die Produktion gestartet. Kann man sich das bei Steuerungen etc. ähnlich vorstellen?

Ich werd mir die Module trotzdem abspeichern, man kann nie wissen, danke!

So wie ich das verstanden habe, ist der Unterschied zum "nackten" TMC2209, dass man Motor + ext. Stromversorgung direkt anschließen kann, richtig?
Ersetzt quasi die komplette "rechte" (wie in Pin-Schemas) Seite vom normalen TMC2209er.

Korrekt! Auf einer Seite Spannungsquelle und Motor. Auf der anderen Seite alles, was zum Controller/Arduino geht und so spart man sich das Überkreuz-Anschließen für eine bessere Übersicht.

Als Hobbybastler und Rentner teste ich mit einem Steckbrett Hard- und Software, dann löte ich eine Lochrasterplatine und verdrahte sie mit der Außenwelt. Der Prototyp ist auch die produktive Variante.

Bräuchte ich ein paar mehr, würde ich eine mit SMD teilbestückte Platine fertigen lassen. Privat habe ich das noch nie gemacht, aber auch dazu findest Du Hilfe bei anderen Aktiven hier im Forum :wink:

Bei großen Stückzahlen wäre Dir der freundliche Asiate sicherlich gerne behilflich.

Alles klar, damit wäre mir auch schon etwas geholfen, danke!

Ich bin noch auf folgendes Dokument gestoßen:

https://www.makerstore.com.au/wp-content/uploads/filebase/publications/CNC-Shield-Guide-v1.0.pdf

Auf dem Shield ist eine Sicherung dargestellt, zwischen dem Steckplatz für die X und dem für die Z-Achse. Hast Du aber vermutlich schon geprüft...

Ansonsten scheinen auf dem Shield nur noch ein Widerstand und vier Elkos als separate Bauelemente verbaut zu sein. Einfach mal durchmessen ...