Upgrade: MKS SGEN_L 32bit Mainboard & TMC2209 Treiber

avatar
(Edited)


Bisher werkelten in meinem Tornado ein MKS Gen L Mainboard mit 8bit ATmega Prozessor und die superleisen Trinamic TMC2130 Treiber. Ein Kritikpunkt, der bei den 2130 immer wieder laut wurde war, dass sie etwas zu wenig Power an die Motoren geben, weshalb in vielen Foren zumindest für den Extruder andere Treiber empfohlen wurden.

Ich konnte soweit über mein Setup nicht klagen. Nur bei Drucken mit vielen Retracts kam es ab und an zu Aussetzern beim Extruder, die sich hin und wieder in unschönen Fehlern im Druck zeigten.

Vor einiger Zeit kam dann aber Martin vom Online Shop Coq au lo-res auf mich zu und fragte, ob ich Lust habe, das neu erschienene MKS SGEN_L 32bit Mainboard (quasi ein direkter Konkurrent zum SKR Mainboard) im Bundle mit den auch noch sehr frischen TMC2209 Treibern zu testen. Mein Urteil werde ich hier noch in einem separaten Beitrag veröffentlichen. Heute soll es um den Umbau selbst gehen.

Fakten zum MKS SGEN_L

Das Makerbase MKS SGEN_L Mainboard vertritt eine neue Generation der Steuerung von 3D-Druckern. Anstelle eines einfachen 8bit Prozessors, ähnlich einem Arduino, arbeitet es mit einem 32bit Cortex-M3 LPC1768 Prozessor. Das erweitert die Möglichkeiten der Firmware und führt insbesondere bei komplexen Steuerungen zu deutlichen Verbesserungen in der Qualität und Geschwindigkeit des Drucks.

Rein äußerlich entspricht es in den Abmessungen und der Position der wichtigsten Anschlüsse dem beliebten 8bit Vorgänger MKS Gen L und passt damit hervorragend in Drucker, die zuvor mit diesem Board bestückt waren. Im Gegensatz zu seinem großen 32bit Bruder, dem MKS SGen verfügt es aber über weniger I/O und Erweiterungsmöglichkeiten.

Der große Vorteil des neuen Designs liegt darin, dass sämtliche Verbindungen für SensorlessHoming und die erweiterte Kommunikation zwischen Treibern und Mainboard bereits integriert sind. Das aufwändige Verkabeln entfällt also komplett!

Fakten zu den TMC2209 Treibern

Die neu entwickelten TMC2209 Steppertreiber kombinieren beliebte Features der Vorgänger und bringen weitere Verbesserungen und Neuerungen mit. Im Gegensatz zu den TMC2130 setzen sie nicht auf SPI als Kommunikationsprotokoll zum Mainboard sondern auf UART, genau wie die TMC2208.

StallGuard, die Funktion zur Erkennung von Kollisionen, die das sensorlose Homen ermöglicht, fehlte bei den 2208 Treibern. Die 2209 haben dies nun in einer verbesserten Version an Bord. (Wobei zum Zeitpunkt des Verfassens dieser Anleitung Sensorless Homing nicht mit allen verfügbaren Treibermodulen möglich war, unter anderem auch nicht mit den MKS TMC2209. Die Silent StepSticks von Watterott beherrschen Sensorless Homing)

Außerdem liefern die neuen Treiber höhere Motorströme und können so mehr Kraft auf die Stepper bringen und neigen damit weniger dazu, Steps zu verlieren. Auch schnellere Bewegungen und schwerere Druckerkomponenten, sind nun keine Probleme mehr.

Hardware Installation

Die Installation ist denkbar einfach. Insbesondere, wenn aktuell bereits ein MKS Gen L Mainboard verwendet wird, können die Kabel für Stromversorgung, Lüfter, Thermistoren und Heizungen einfach 1:1 getauscht werden.

Wenn du bislang noch nicht an der Steuerung deines Druckers gearbeitet hast, nimm dir die Zeit und lese die folgenden Schritte einmal genau durch. An einzelnen Stellen bin ich nicht auf jedes Detail eingegangen, da vieles sehr ausführlich schon einmal beim Umbau auf MKS Gen L und TMC2130 beschrieben wurde. Dort findest du auch Beschreibungen der einzelnen Anschlüsse, die sich beim 8bit Gen L und dem 32bit SGEN_L in den meisten Fällen gleichen.

Hast du aktuell noch ein anderes Board im Einsatz, empfehle ich dir, zunächst alle Kabel zu beschriften und Fotos vom bestehenden Setup zu machen. So kannst du im Zweifel immer wieder zum Anfang zurück und Fehler schneller ausmachen.

Beim Anschluss der Kabel solltest du unbedingt auf die Polarität der einzelnen Leitungspaare achten. In der Regel wird rot für positiv und schwarz oder blau für negativ verwendet. Die MKS Boards haben die kleine Stolperfalle, dass nicht bei allen Anschlüssen + und - an der gleichen Stelle sind. Schaue daher genau auf die Beschriftung und prüfe alle Kabel nocheinmal, bevor du den Strom das erste Mal anschaltest.

Treiber einsetzen

Je nachdem, welche Treiber du verwendest, können die Stiftleisten farbcodiert sein oder sie sind alle in der gleichen Farbe. Die MKS Treiber haben eine grüne und eine schwarze Leiste, entsprechend der Gegenstücke auf dem Mainboard.

Wenn alle Leisten die gleiche Farbe haben gilt: Die Beschriftung sollte lesbar sein und die drei dreieckig angeordneten Pins sind auf der linken Seite, wenn das Mainboard mit den Treiberanschlüssen nach oben vor dir liegt.

Außerdem solltest du, wie bei allen Trinamic Treibern, darauf achten, dass der eigentliche Treiber-Chip nicht auf der Oberseite, sondern auf der Unterseite sitzt, solltest du die Pins selbst anlöten müssen.

Da auch eine direkte Verbindung zu den Endstopps auf dem Board vorhanden ist, kannst du den dafür nötigen DIAG Pin ebenfalls nach unten weisend auf den Treiber löten. Hier lauert aber auch die erste Fehlerquelle!

Bisher war der DIAG Pin immer an der oberen linken Ecke der Module zu finden. Viele Treiber von chinesischen Anbietern nutzen dieses Design auch noch bei den 2209. Watterott, die das ursprüngliche Layout für die StepSticks mit Trinamic Treibern entwickelt und unter OpenSource Lizenz veröffentlicht haben, stellen inzwischen auf eine neue Version um. In der ist DIAG eine Position nach unten gerutscht.

Es ist also wichtig zu prüfen, von wem deine Treiber stammen und auf welchem Layout sie basieren. Im Watterott V2 Layout ist der alte DIAG Pin nun mit INDEX belegt. Dieser Pin gibt bei jedem vollen Schritt einen Impuls aus und sollte daher nicht mit einem Pin versehen werden.

Jumper setzen

Das MKS SGEN_L kommt mit einer Reihe von Kurzschlussbrücken (Jumper), über die Funktionen konfiguriert und Verbindungen hergestellt werden. Durch das Schließen der UART Brücke für jeden Treiber wird die Kommunikation mit dem Mainboard ermöglicht.


Quelle: https://github.com/makerbase-mks/Datasheet/blob/master/English%20datasheet/MKS%20SGEN_L%20Datasheet.pdf

Eine weitere Reihe zu schließender Brücken befindet sich über den Endstopp Anschlüssen. Für jede Achse, bei der Sensorless Homing verwendet werden soll, muss per Jumper die Verbindung geschlossen werden. Also für X und Y die ersten beiden von links. Dadurch wird der Sockel für den DIAG Pin direkt mit dem Endstopp verbunden, es ist kein zusätzliches Kabel nötig.

Eventuell nötige Hardware-Hacks

Zumindest im Fall des SGEN_L und wohl auch beim SKR Mainboard sind, je nach verwendeten Treibern, ein paar kleine Hacks nötig. Die MKS TMC2209 aus dem Coq au lo-res Bundle konnte ich ohne Modifikationen einsetzen und UART nach Anpassung der Firmware nutzen. Sensorless Homing funktionierte allerdings so nicht. Soweit ich bisher weiß, ist es mit den aktuellen Versionen der MKS Treiber auch nicht möglich.

Zum Vergleich habe ich auch TMC2209 Treiber von Watterott gekauft. Mit denen konnte ich auch Sensorless Homing ohne Probleme nutzen, die Treiber lassen sich aber nicht zu 100% Plug&Play verwenden.

Du musst dich hier also am besten schon vor dem Umbau entscheiden, was dir wichtig ist: Wenn du Plug&Play mit möglichst wenig Aufwand möchtest, dabei aber auf Sensorless Homing verzichten kannst, dann greifst du am besten zum Paketangebot von Coq au lo-res. Willst du unbedingt Sensorless Homing nutzen und scheust die nötigen Hacks nicht, dann sollten mindestens zwei Treiber von Watterott für die X und Y Achse auf deiner Einkaufsliste stehen. Das SGEN_L Mainboard bekommst du natürlich auch separat, ohne Treiber.

UART mit Watterott V2 Treibern

Damit du UART auf dem SGEN_L mit Watterott V2 Treibern nutzen kannst, muss in der unteren Reihe der vierte Pin weggelassen bzw. abgeknipst werden. Außerdem kommen die Treiber ab Werk mit einer offenen Lötbrücke. Die muss geschlossen werden um UART zu aktivieren.

Auf der Unterseite des Treibers befinden sich drei kleine, nebeneinanderliegende Kontakte. Der mittlere geht zum Treiberchip, die beiden äußeren sind mit dem 3. und 4. Pin der unteren Reihe verbunden. Je nachdem, mit welchem Kontakt der mittlere durch eine Brücke aus Lötzinn verbunden wird, steht UART über den 3. oder 4. Pin zur Verfügung.


Quelle: https://github.com/watterott/SilentStepStick/blob/master/hardware/SilentStepStick-TMC2209_v20.pdf

Für unseren Fall schließen wir die Brücke zum unteren Pin (rot eingerahmt). Verwende dafür eine möglichst dünne Lötspitze und achte auf die umgebenden Komponenten! Ich habe leider bei einem Treiber den benachbarten Kondensator C2 zu sehr erhitzt, sodass er sich gelöst hat und am Lötkolben klebte. Leider sind die Dinger winzig und ich habe ihn nicht mehr gefunden. zum Glück habe ich Ersatz bekommen und konnte den neuen Kondensator wieder anlöten. Gute Beleuchtung und evtl. etwas Vergrößerung durch eine Lupe oder ein Mikroskop sind hier empfehlenswert!

Wenn du V2 Treiber verwendest, die DIAG an der neuen Position haben, dann musst du jetzt dein Mainboard umdrehen. Zwar ist auch an der neuen Position ein Anschluss vorhanden, der ist aber auf dem Board nirgendwo angeschlossen. Die einfachste Lösung ist daher, ein Stück Draht zu nehmen und die beiden vertikalen Pins der X und Y Treiberblöcke miteinander zu verlöten. So werden beide Anschlüsse mit den Endstopps verbunden.

Zu guter Letzt ist noch ein zusätzlicher Jumper auf dem Mainboard nötig: Unter den Treibern befindet sich jeweils ein ganzer Block von offenen Pins. Der Jumper wird so platziert, dass die mittleren Pins der beiden unteren Reihen überbrückt werden.

Wer mehr zu diesen Hacks wissen will, findet Fotos und Hintergründe in einem entsprechenden Thread auf Github.

Firmware

Da es sich um ein 32bit Board handelt ist auch eine Firmware nötig, die die entsprechende Architektur unterstützt. Das SGEN_L Läuft mit Smoothieware und Marlin 2.x. Da ich mich hier besser auskenne, ist meine Wahl logischerweise auf Marlin gefallen.

32bit Support gibt es erst ab dem 2.x Zweig von Marlin. Da diese Version aber nach wie vor in Entwicklung ist und noch kein finales Release steht, arbeiten wir hier mit Beta-Firmware, die vereinzelte Bugs haben kann. Auch während der Erstellung meiner Firmware gab es ein paar grundlegende Anpassungen, ohne die Mein Setup evtl. auch gar nicht laufen würde.

Natürlich findest du hier auch meine aktuell verwendete Firmware zum Download. Du findest im Paket alle Dateien, um eigene Anpassungen vorzunehmen und natürlich auch die fertige .BIN Datei, die du einfach direkt auf dein Board laden kannst. Im nächsten Schritt erkläre ich kurz, wie du eigene Firmware für dein Board vorbereitest.

[download id="28707"]

Entwicklungsumgebung einrichten

Um eigene Firmware zu erstellen benötigt man etwas komplexere Software, als die Arduino IDE. Nach Lektüre in der Marlin Doku und etwas Testen bin ich bei Microsoft Visual Studio Code hängen geblieben. Mein bevorzugter Editor ist eigentlich Sublime Text 3. Auch damit würde es gehen, ich hatte aber ein paar Probleme beim Compilen. Mit Visual Studio lief es dann.

Zusätzlich wird Platform.io benötigt, das den Support für die verwendeten Prozessoren mitbringt. Den gesamten Setup-Prozess kannst du in der Marlin Doku nachlesen.

Firmware aufspielen

Im Gegensatz zu Arduino basierten Boards wird die Firmware nicht direkt von der IDE per USB aufs Board übertragen, sondern eine BIN Datei erstellt, die dann auf einer Micro-SD gespeichert wird. Beim nächsten Start liest das Board die Datei aus und aktualisiert seine Firmware.

Das Beschreiben der SD Karte ist über einen handelsüblichen Cardreader möglich. In den meisten Fällen wird das Board beim Anschluss an einen PC auch als Speichermedium erkannt und kann direkt beschrieben werden.

Das Update der Firmware über Octoprint klappt übrigens auch hier wieder. Es müssen nur ein paar Einstellungen angepasst werden:

Abschluss

Wenn alle Verbindungen hergestellt sind und die Firmware erfolgreich geflasht ist, kannst du deinen ersten Testdruck starten. Denke daran, dass du ein völlig neues Board hast. Das heißt alles, was du bisher an Kalibrierungen usw. vorgenommen hast, ist nicht mehr vorhanden. Auch ein eventuell eingelesenes Mesh zum Auto Bed Leveling muss neu erstellt werden.

Eventuell passen für dein Setup einzelne Werte aus der Firmware noch nicht. Im Speziellen das Sensorless Homing ist mit einem Standardwert voreingestellt. Teste das Homing zunächst auf einer Achse (G28 X bzw. G28 Y). Wenn die Achse sich kaum bewegt oder ohne zu stoppen ans Ende fährt, musst du einen höheren oder niedrigeren Wert einstellen.

Im Gegensatz zu den 2130 Treibern reicht die Empfindlichkeit bei den TMC2209 nicht von -64 bis +63, sondern von 0 bis 255. Über den Gcode M914 kannst du bspw. per OctoPrint neue Werte vergeben bzw. die aktuellen auslesen. Starte zur Sicherheit eher mit hohen Werten und taste dich dann in kleinen Schritten weiter nach unten. Hast du einen funktionierenden Wert für beide Achsen gefunden, speichere die neue Konfiguration mit M500.

MKS SGEN_L kaufen

Habe ich dein Interesse geweckt? Ein neues Makerbase MKS SGEN_L Mainboard kannst du wie immer bspw. direkt über Aliexpress bestellen oder du wählst den schnelleren Versand, direkt aus Deutschland und bestellst bei Coq au lo-res.



Posted from my blog with SteemPress : https://www.3d-diy.de/tutorials/mks-sgen-l-32bit-mainboard-tmc2209-treiber/


0
0
0.000
3 comments
avatar

To listen to the audio version of this article click on the play image.

Brought to you by @tts. If you find it useful please consider upvoting this reply.

0
0
0.000
avatar

Congratulations @three-d-diyde! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You received more than 10 upvotes. Your next target is to reach 50 upvotes.

You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

Do not miss the last post from @steemitboard:

SteemFest⁴ commemorative badge refactored
Vote for @Steemitboard as a witness to get one more award and increased upvotes!
0
0
0.000