TRONXY X5SA 24V MIT SKR 1.4 TURBO – 2 – MARLIN anpassen (Update 19.10.2020)

Die letzten aktuellen Änderungen, die im folgenden Text noch nicht berücksichtigt sind:

  • Hinweis 2: Der magnetische Tronxy-Level-Sensor wird entfernt. Am Z-Endstop-Anschluss funktioniert er nicht wg. Unterspannung. Das Umprogrammieren ist mir zu aufwändig, da ich eh auf den BL Touch wechsle.
  • Erkenntnis: Alle Lüfter müssen im Stecker in der Polarität gedreht werden! Hatte ich beim Gehäuselüfter vergessen, darum ist der schön heiß geworden und ist jetzt hinüber. Der Hotendkühler bläst in Richtung Hotend, das ist richtig !

 

Eher stichpunktartig beschreibe ich im folgenden Beitrag, wie die Firmware Marlin für das SKR-Board erstellt wird. Weitere Update zu diesem Artikel werden laufend eingearbeitet und rot dargestellt.

Marlin aktuelle Firmware laden hier: https://marlinfw.org/meta/download/

  • Download als ZIP. Dann dieses ZIP entpacken.
  • Visual Studio Code laden hier: https://code.visualstudio.com/Download , dabei unter Windows unbedingt die passende (64bit oder 32bit) Version als „user Installer wählen. Die ZIP-Datei enthält keine Installation!
  • Visual Studio Code installieren
  • Visual Studio Code starten und das Plugin PlatformIO IDE installieren.
  • Im Anschluss muss Visual Studio Code neu gestartet werden. Darauf wird man aber hingewiesen.
  • Im Plugin PlatformIO IDE wird jetzt der Marlin-Ordner geladen. Wenn platformio.ini zu sehen ist, ist man in dem richtigen Ordner.
  • Die platformio.ini wird auch als erstes angepasst.

default_envs wird von mega2560 auf LPC1769 geändert. LPC1769 ist im SKR 1.4 Turbo (120MHz) verbaut. Für das 100MHz-Board (ohne Turbo) nimmt man den LPC1768. Für diese Datei war es das dann auch schon. Über das Menü kann man die Datei im veränderten Zustand speichern.

Für die folgenden Anpassungen in der Configuration.h habe ich diverse Stellen im Internet genutzt. Überall habe ich ein bisschen erfahren und dazugelernt. Beste Sucherfahrungen habe ich mit dem Suchbegriff „marlin für x5sa“ gemacht. Da kommt dann zwar auch das Umflashen des Chitu-Boards, aber es kommen auch dieser Sache dienliche Hinweise. Speziell die Informationen unter it4k4i/Tronxy-X5SA-400-Marlin-2.0 – GitHub erschienen mir gut zu sein. Das ist zwar für das SKR 1.3, aber das lässt sich leicht anpassen. Sehr gut ist auch netsecond.net. Dort sollte man unbedingt intensiv stöbern.
edit 13.08.2020:
eine weitere hervorragende Quelle, die genau meine Konfiguration Board/Display/Driver abdeckt:
3dwork, Complete guide SKR v1.4 / v1.4 Turbo with TMC2209 Sensorless drivers and Display TFT35 V3.0

Im Ordner Marlin wird jetzt die Configuration.h angepasst:

USB-Anschlüsse:

Ab etwa Zeile 100 müssen zunächst mal die USB-Schnittstellen aktiviert werden. Der zweite Eintrag muss dabei entkommentiert werden. Die Kommunikationsgeschwindigkeit wird ebenfalls gesetzt.

Motherboard bzw. Elekronikboard:


Die Information dazu holt man sich aus der boards.h, die sich im Ordner src, core befindet. Dort sind nach Prozessor die bekannten Boards gelistet.

Bootscreen:


Eine Kombination aus einer Definition am Anfang, damit der Bootscreen überhaupt gezeigt wird und einer eigenen Druckerbenennung.


Extrem wichtig (Scherz) …

Extruder:


Die Anzahl der Extruder und der Filamentdurchmesser werden hier angegeben. Achtung: In diesem Umfeld gibt es einen Dezimalpunkt und kein Komma! Also 1.75 und nicht 1,75. OK?

Temperatursensoren:


Die Thermistor-Typen werden einige Zeilen später gewählt. Hier findet man im Internet üblicherweise Typ 1 oder Typ 5 als Angabe. Da beide offenbar identische Werte haben, was man in der Erklärung oberhalb der Zeile lesen kann, scheint es aber egal zu sein. Ich bleibe bescheiden: 1

Temperaturgrenzen:


In den folgenden Zeilen werden die Temperaturgrenzen eingestellt. Ich habe es bei den Voreinstellungen belassen.

Die Zeile 478 bis 597 belasse ich zunächst so, wie sie sind. Da geht es um das PID-Verhalten. Da das später eh noch trainiert wird, kümmere ich mich jetzt nicht darum. In den oben genannten Quellen standen höchst unterschiedliche Werte. Da ich sie nicht erklären kann, nützen sie mir nichts.

Extrusions-Temperaturgrenze:


Ein sehr wichtiger Abschnitt folgt mit jetzt. Extrusion bei kaltem Hotend sollte verhindert werden. Die untere Grenze wird auf 170°C eingestellt. Ebenso gibt es eine maximale Extrusionsgrenze, die etwas höher ausfallen muss, um den Bowden zu beladen. Deshalb 600 statt der Voreinstellung 200. Hintergrund dieser Einstellung ist, dass man keinen einzelnen gcode-Befehl absetzen kann, der diese maximale Länge überschreitet. 

Mechanischer Aufbau (Druckertyp):


Eine Einstellung, auf die ich wirklich schon gespannt gewartet habe. Wie teile ich Marlin eigentlich mit, dass ich keine getrennte X- und Y-Steuerung habe, sondern einen X/Y-Core. Es ist aber leider noch komplizierter. Im ersten Versuch hatte ich COREXY gewählt. Damit lief aber die X-Achse nach hinten und die Y-Achse nach rechts. Richtig ist für den Tronxy X5SA hier COREYX.

Endstop-Settings (nicht final – nur vorübergehend !!):


Die Endstops müssen natürlich auch konfiguriert werden. An meinem Tronxy sind es für X und Y jeweils Schalter, die die Homeposition begrenzen, also „min“. Auch der blaue magnetische Sensor für Z arbeitet auf min-Position. Also lasse ich zunächst die folgende Einstellung.

Jetzt wird noch die Schaltlogik festgelegt. Die besuchten Quellen waren sich einig, dass es true sein muss.

Aber die beiden oben vorgenommenen Einstellungen werde ich in einem weiteren Beitrag ändern. Erstens will ich sofort den 3D-Touch einbauen und außerdem werde ich in X und Y die Fähigkeiten des TMC2209 mit Sensorless-Homing ausprobieren.

Treiber definieren:


Da ich TMC2209-Driver verwende, trage ich die hier auch ein. Die betreffenden Zeilen werden zudem entkommentiert. Es gäbe auch noch TMC2209_STANDALONE. Da ich aber die volle UART-Funktion nutzen will, kommt die Option nicht in Frage.

  1. Schrittkonfiguration:

    Für die Voreinstellungen der Steps und Feedrates habe ich jetzt erstmal „geklaute“ Werte genommen. Das muss sowieso noch kalibriert werden.
  1. Bei den Geschwindigkeiten sollte man vorsichtig sein. Hohe Geschwindigkeiten können auch für Instabilität sorgen. Die Defaultwerte habe ich gemäß meiner Quellen reduziert.
  1. Z-Endstop bzw. Taster, Bauraum (vorläufig):

    Der Typ des Zmin-Tasters muss angegeben werden. Der magnetische Sensor ist als Definition vorhanden.

Die Postion des Sensors relativ zur Druckdüse muss angegeben werden. Die Skizze ist hilfreich für die Richtungen. Die Werte habe ich wieder aus der Quelle übernommen. Trotzdem habe ich mich am Drucker davon überzeugt, dass das auch stimmen kann. Tut es!

Die Angaben in den darauf folgenden Zeilen zur Position bezogen auf das Druckbett können so bleiben.
Die Angaben sind wie oben schon erläutert nur vorläufig bis zur Konfiguration des 3D-Touch.

Fast hätte ich es übersehen. Die Y- und die Z-Achse müssen invertiert gesteuert werden.

Auch der Extruder muss invertiert angesteuert werden. Das gilt jetzt aber speziell bei mir, da ich nicht mehr den Standard Extruder nutze sondern einen BMG.

Die Abmessungen des Bauraums werden festgelegt.

Die X_MIN_POS genauso wie für Y und Z muss ich mir später nochmal ansehen. Da müssen m.E. Anpassungen vorgenommen werden. Ich kann aber hier die Werte aus der Quelle nicht einfach übernehmen, da ich ja schon durch den Umbau auf Linearlager andere Positionen habe.

Filamentbruch-Sensor:

Der X5SA hat einen Filamentbruch-Sensor. Den möchte ich natürlich auch wieder nutzen. Die Konfiguration ist ziemlich kompliziert und deshalb lagere ich sie in einen eigenen Beitrag aus. Für den Moment lasse ich die Zeile auskommentiert.

Bedleveling:

Zur Funktionsweise des Bedleveling verlasse ich mich blind auf die Quelle.

Hier wurde nur noch die Anzahl der Testpunkte in jeder Dimension von 3 auf 5 erhöht. Hier hat sich übrigens in der letzten Version von Marlin etwas geändert. Musste man vorher noch weitere Daten zur Testabfolge eingeben, sorgt jetzt ein Algorithmus für eine sinnvolle Levelüberprüfung.

Homing:

Z_SAFE_HOMING

HOMING_FEEDRATE_Z wurde angepasst.

Heizung:

Vorheizen:

Ich habe den Abschnitt mit PET-G hinzugefügt. Ob das geht?

Nozzle-Park:

Das Nozzle-Park-Feature muss aktiviert werden. Sonst läuft der Compiler nicht durch.

Display und Bedienung:

Die Displaysprache hätte ich gern in Deutsch.

Das dürfte wohl bedeuten, dass beim Drehen im Uhrzeigersinn die Werte sinken. Ob ich das so lasse, muss sich noch herausstellen.


Die folgende Einstellung sorgt dafür, dass auf dem Display die Option für Homing jeder einzelnen Achse gezeigt wird.

Damit im EEPROM des Boards gespeichert werden kann, wird die Option hier eingeschaltet. Ganz besonders davon betroffen sind Konfigurationswerte wie beispielsweise steps/mm. Wenn man die später wieder ändern will, geht das nicht über eine neue Firmware, sondern über Kommandos oder das Display. Um neue Werte über das Abschalten zu sichern, speichert man eine Konfiguration mit M500 im EEPROM.

SD-Karten werden unterstützt. Das schaltet man mit folgendem Statement ein. Sobald aber ein Display mit eigenem Kartenleser an dem SKR 1.4 hängt, ist für das normale Arbeiten die SD-Karte auf dem Mainboard nicht mehr nutzbar. Eine Lösung habe ich noch nicht gefunden. Für Firmwareupdates funktioniert es aber.

Der Typ des Displays wird hier eingestellt:

Ich bin zwar etwas skeptisch, ob die Einstellung tatsächlich mein TFT35 V3.0 betreiben kann, weil der über der Option gezeigte Link etwas anderes behauptet, aber in Foreneinträgen habe ich gelesen, dass das richtig sei. Die Firmware am Display schönt das dann wohl alles auf.


Das war offensichtlich die letzte notwendige Anpassung in der Configuration.h.


Es folgen einige Anpassungen in der Configuration_adv.h, die im gleichen Unterordner liegt, wie die Configuration.h.
Gleichzeitig hoffe ich, dass ich alles wieder finde, was ich schon vor einer halben Stunde geschrieben hatte. Dieser „Gutenberg-Editor“ in WordPress treibt mich noch zum Wahnsinn, weil ständig wieder irgendetwas nicht funktioniert oder wahllos gelöscht wird. Frustmodus Ende…


Ich will zwei Treiber für die beiden Z-Motoren verwenden. Das hatte ich in der Configuration.h schon so vorgegeben. Hier wird jetzt die Einstellung festgelegt, wieviele Treiber genutzt werden:

Man kann sich aussuchen, welcher SD-Kartenslot unterstützt wird. Ich habe den Slot am Display gewählt:

edit: Ich habe das wieder auskommentiert, womit der Default eingestellt wird: Der Slot auf dem Mainboard. Ich habe Sorge, dass ich sonst speziell am Anfang in Probleme laufen könnte, weil das Board beim Firmwareupdate nicht erreichbar ist.

Babystepping für Z:

Für eine optimierte Einstellung beim Bedleveling gibt es eine fertige Routine, die nur eingeschaltet werden muss.


Man achte hier auf die Vorgaben zu den Steps. Man kann die Schritte in mm oder Steps angeben. Wenn Steps gewählt sind, sollte zumindest die Z-Achse mit einem höheren Wert belegt werden. Ein Mikrostep des Motors führt nur zu einer kaum wahrnehmbaren Höhenänderung, deshalb habe ich 20 eingestellt.

Mit der folgenden Option kann dann später über Klicken auf dem Statusbildschirm das Baystepping aktiviert werden. Babystepping ist insbesondere deshalb so wichtig, weil man sogar während des Druckvorgangs die Z-Achse bewegen kann.


edit: wieder ein Nachtrag aufgrund Fehlern beim Compilieren


ADVANCED_PAUSE_FEATURE wird gebraucht.

Die Betriebsspannung muss mitgeteilt werden, damit das Steppermanagement richtig funktionieren kann.

  1.  

Mit dem folgenden BETA-Feature wird die Wellenform des Steuersignals für den Stepper näher an die ideale Rechteckform gebracht:

Damit man später die Treiber einstellen kann, muss der Debug-Modus eingeschaltet werden:

Mehr habe ich an der Configuration_adv.h nicht gemacht.

Das Compilieren:

Der Hauptordner in dem die platformio.ini liegt wird angewählt. Über das Menü TERMINAL wird Run Build Task … gewählt.
Der erste Versuch ging schon mal daneben. Als Fehlermeldung kam der Hinweis, dass Python mit Windows ein Problem hat, wenn man gemappte Netzlaufwerke benutzt. Das hatte ich getan. Also den ganzen Marlin-Ordner auf das lokale Laufwerk kopieren.
2. Versuch: Wir kommen jetzt schon weiter, aber nicht viel. Offensichtlich muss eine Option anders eingestellt werden. Habe ich es übersehen?


Tatsächlich, schlichtweg übersehen. Oben eingepflegt.
Aber auch diesmal klappt es nicht.

Ja, leider auch wieder in der Quelle übersehen, – aber sorry, bei tausenden von Zeilen ist das schwierig alles im Auge zu behalten. Natürlich oben in der Configuration_adv.h nachgepflegt.

Nächster Punkt. Ich bin gespannt, was da noch alles kommt.


Diesmal lief es durch, – und das sogar recht schnell …

Um das Beurteilen zu können, sind vielleicht die Rechnerdaten interessant:

Die Datei firmware.bin ist die neue Firmware. Wo die liegt, sieht man im folgenden Bild. Die Datei darf nicht umbenannt werden!


Mitten in diesen Entwicklungsprozess stolperte dann ein Update der Entwicklungsumgebung. Das PlattformIO wurde auf Version 5.0.0 gehoben. Das Update durchzuführen ist kein Problem, – man wird quasi durch die Oberfläche durch den Prozess geleitet. Ein Neustart der Umgebung sorgt dafür, dass auch wirklich alle Bibliotheken und Inhalte aktuell sind.
Dann wollte ich nochmal neu kompilieren und prompt kamen diverse Fehlermeldungen. Die Ursache ließ sich leicht finden: Die „alte“ Marlin Firmware kann mit der neuen Umgebung nichts anfangen. Aber es gibt schon eine neue Marlin-Version. Die habe ich dann geladen
Jetzt müssen die Informationen der geänderten Configuration.h und der Configuration_adv.h in das neue Marlin gebracht werden. Die Files einfach hinüberkopieren ist nicht sinnvoll, da die Versionen von Marlin auch prinzipielle Änderungen in diesen beiden Dateien enthalten.
Mit einem Vergleichstool wie zum Beispiel winmerge öffnet man die konfigurierte Datei im ersten Fenster und die neue Datei im zweiten Fenster. Das Programm vergleicht beide und zeigt schön strukturiert die Unterschiede an.
Mit alt + down bewegt man sich von Abweichung zu Abweichung. Mit alt + right kann man den markierten Inhalt vom linken Fenster zum rechten kopieren. So werden beide Files durchgearbeitet und zuletzt gesichert.
Zurück zur Programmierumgebung lädt man nun den neuen Marlin-Ordner. Hier muss noch in der platformio.ini wieder der passende Prozessor eingetragen werden: LPC1769.
Ein erneutes Kompilieren sollte jetzt problemlos laufen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.