Marlin-Firmware einrichten und zum Laufen bringen!

Marlin-Firmware einrichten und zum Laufen bringen!

  1. Erste Schritte
  2. Serial Ports, Baudrate, Bluetooth, Benutzerdefinierter Name
  3. Stepper-Treiber
  4. Sensorloses Homing
  5. Microstepping und Stealthchop
  6. PSU-Steuerung
  7. Thermische Einstellungen - Thermistor und Max/Min Temp
  8. PID-Einstellungen
  9. Sicherheit - Kaltextrusion und thermisches Durchgehen
  10. Mechanische Einstellungen - Corexy, Banddrucker, Roboterarm
  11. Endstopp-Einstellungen
  12. Bewegungseinstellungen - Beschleunigung usw. auch in Verbindung mit dem Linear Advance
  13. Z-Probe und Bettnivellierung
  14. Bettgröße
  15. M600
  16. Zusätzliche Funktionen - EEPROM, Vorheizeinstellungen, Düsenreinigung, Print Job Timer, Passwort, Sprache, SD-Kartenunterstützung, Encoder-Empfindlichkeit, Lautsprecher, LCDs, Neopixel

Eine kurze Anmerkung, bevor wir beginnen - ich werde Zeilennummern erwähnen, damit es einfacher ist, die richtige Firmware-Zeile zu finden. Je nachdem, welche Firmware du verwendest oder welche Konfigurationsdateien du benutzt, kann sich das ein wenig unterscheiden, aber es ist immer noch eine relativ einfache Lösung, die richtige Zeile zu finden.

Außerdem werden Anweisungen in Marlin als Definitionen (definitions) bezeichnet, sie können entweder ein, aus oder ein + auswählbarem Wert sein. Diejenigen, die eingeschaltet sind, sind unkommentiert, d. h. sie haben keinen Kommentar-Identifikator, der ein doppelter Schrägstrich ist. Grundsätzlich schaltet der doppelte Schrägstrich alles aus und erlaubt es, Kommentare zu schreiben, wenn du deine Firmware personalisieren willst, damit sie für dich selbst oder andere zu einem späteren Zeitpunkt nutzbar ist. Alles, was mit einem // am Anfang der Zeile geschrieben wird, wird von der Firmware beim Kompilieren völlig ignoriert.

1. Erste Schritte

Um Marlin-Firmware zu bearbeiten, benötigst du die richtige Software. Es gibt zwar einige Optionen, aber die meisten würden Visual Studio Code verwenden. Diese Software kann hier kostenlos heruntergeladen werden, sowohl für Windows, Linux als auch für Mac.

Dazu benötigst du auch die Platform IO-Erweiterung. Sobald VS-Code installiert ist, gehe zu den Erweiterungen in der Symbolleiste auf der linken Seite (das Symbol mit den 4 Quadraten), suche nach Platformio und klicke auf Installieren. Du kannst auch das Plugin für Auto-Build Marlin verwenden, was die Dinge etwas schneller macht, wenn du dein Board mit dem richtigen Prozessor einrichtest, aber wir können dies auch auf die alte Art und Weise tun. Wir werden dir zeigen, wie es geht, weiter unten im Text.

Sobald du alles beisammen hast, muss noch die Marlin-Firmware her. Also ab zum Marlin GitHub und lade dir die aktuellste Version runter.

Du wirst feststellen, dass es eine Bugfix- und eine reguläre Version gibt. Die Bugfix-Version enthält die neuesten Änderungen an der Firmware. Sie ist nützlich, aber auch am wenigsten stabil, da ständig an ihr gearbeitet wird. Das Marlin-Team ist jedoch sehr gut darin, Bugs und Fehler zu erkennen und zu beheben, so dass wir diese Versionen gerne verwenden.

Klicke oben rechts auf Code, um die Firmware als Zip herunterzuladen, entpacke den Zip-Ordner und lade den VS Code. Gehe anschließend auf die Datei und öffne den Ordner und die Marlin-Firmware.

Als Nächstes folgen die Konfigurationsdateien, spezifische Druckerkonfigurationen können ebenfalls auf GitHub gefunden werden.

Diese sind vor allem dann sehr nützlich, wenn du die Firmware nur geringfügig ändern möchtest. Wenn du beispielsweise einen Drucker, sagen wir einen Ender 3, besitzt und gerade das Hotend aufgerüstet hast und den Thermistor in der Firmware ändern musst, kannst du einfach die Konfigurationsdateien für diesen Drucker herunterladen und in den gerade heruntergeladenen Marlin-Ordner einfügen. Auf diese Weise sind alle Besonderheiten der Standard-Firmware des Druckers bereits vorhanden und es müssen nur noch die Werte des Thermistors geändert werden.

Wenn du einen Firmware-Ordner für die Bearbeitung vorbereitest, gibt es einen sehr wichtigen Punkt, der zu beachten ist, bevor du mit der Bearbeitung beginnen kannst, und das ist die Auswahl des richtigen Mainboards und des richtigen Prozessormodells.

Wenn du die Seite configuration.h im Explorer auf der linken Seite aufrufst, siehst du in Zeile 70 einen Befehl, der angibt, welches Mainboard verwendet wird. Für viele Boards gibt es nur eine Version, aber einige haben Varianten bzw. einige Drucker haben in der Vergangenheit verschiedene Boards verwendet. Am besten öffnest du deinen Drucker und prüfst, welches Board verbaut ist.

Um herauszufinden, wie genau dein Board in der Firmware bezeichnet ist, gehe zurück zum Explorer auf der linken Seite, gehe zu src, core und boards.h. Dies ist eine Liste aller Boards, die Marlin unterstützt. Drücke dann STRG F und gib die Marke deines Boards ein, für z.B. Creality Ender 3 Boards, gibst du also Creality ein. Scrolle nach unten, um alles zu überspringen, was mit diesem Schlüsselwort zu tun hat, und du wirst die Creality V4 Boards finden. Du kannst einfach Board_Creality_V4 verwenden. Dies ist im Grunde derselbe Prozess für jedes Mainboard einer beliebigen Marke, solange es von dieser Version von Marlin unterstützt wird. Du findest hier auch die Prozessor-Varianten für dieses Board, für die Version 4 Boards sehen wir hier STM32F103RC und STM32F103RE.

Notiere dir beides, gehe zurück zur Configuration.h und kopiere das Board in den Bereich nach #define MOTHERBOARD. Jetzt kannst du auch auf die Explorer-Symbolleiste auf der linken Seite gehen und auf die Registerkarte platform.io klicken, um sicherstellen, dass das richtige Prozessormodell in der default_envs-Zeile oben auf der Seite steht.

Ok, das war's, jetzt können wir die Firmware bearbeiten. Es gibt zwei Hauptseiten, die wir bearbeiten werden, die meisten davon in config.h, aber einige auch in config_adv.h.

2. Serial Ports, Baudrate, Bluetooth, Benutzerdefinierter Name

Wenn du zu config.h gehst, können wir dort beginnen. Mit dem Mainboard sind wir bereits fertig, also fahren wir mit der nächsten Definition fort: Serial Ports.

So gut wie jeder Drucker verwendet einen Serial Port, um sich mit verschiedenen Geräten zu verbinden. In den meisten Fällen wird nur einer verwendet, aber wenn man etwas anderes wie einen Touchscreen mit einer SD-Karte oder einem USB-Anschluss anschließt, muss man vielleicht ein bisschen damit experimentieren. Das werden wir hier nicht tun, also vergessen wir das für den Moment.

Die Baudrate ist die Kommunikationsgeschwindigkeit für diese Ports. Sie kann unterschiedlich sein, aber die meisten verwenden eine Baudrate von 115200.

Weiter unten findest du weitere Optionen für Serial Ports, aber wir können die undefinierten Angaben so stehen lassen, da du wahrscheinlich keine zusätzlichen Serial Ports benötigst.

Außerdem gibt es Optionen für Bluetooth-Verbindung, die bei Druckern eher selten ist, und eine Option zum Ändern des Druckernamens, die standardmäßig ausgeschaltet ist. Du kannst diesen Namen auf dem LCD-Bildschirm sehen, wenn dein Gerät eingeschaltet ist. Schalte die Option ein und gebe einen neuen Namen ein, wenn du Lust dazu hast.

3. Stepper-Treiber

Als Nächstes sind die Stepper-Treiber dran. Klingt schwierig, ist es aber gar nicht. Jeder Drucker verwendet Steppertreiber, sie steuern die Motoren. Früher benutzten die Drucker den A4988 oder andere Varianten, was dazu führte, dass die Motoren ziemlich laut waren. Heutzutage sind TMC2208 oder TMC2209 als Standardtreiber in den meisten Druckern verbaut. Es gibt aber noch eine ganze Reihe anderer Treiber mit unterschiedlichen Eigenschaften und Vorteilen, wie z. B. Schrittaufteilung, Maximalstrom oder sensorlose Referenzfahrt, bei der keine physischen Endschalter für die Referenzfahrt der Achsen benötigt werden.

Du kannst einfach einstellen, welchen Treiber du für welchen Zugang verwenden willst. Oftmals ist auf dem Mainboard eines Druckers nicht angegeben, welche Stepper-Treiber verwendet werden. Manchmal verwendet ein Board integrierte Stepper-Treiber, was bedeutet, dass sie nicht entfernt werden können. In diesem Fall wird wahrscheinlich nicht angegeben, welcher Treiber verwendet wird, aber manchmal gibt es eine Markierung auf dem Mainboard, die darauf hinweisen kann, welcher Treiber verwendet wird. Creality V4-Boards haben zum Beispiel einen kleinen Code auf dem SD-Kartenanschluss. Wenn dort "T8" steht, bedeutet das, dass der TMC2208-Treiber verwendet wird. Einige Mainboards verwenden herausnehmbare Treiber, was den Vorteil hat, dass man sie im Falle eines Defekts einfach austauschen kann - wenn das bei integrierten Treibern passiert, ist das Board hinüber und man braucht ein neues.

4. Sensorloses Homing

Mir gefällt das sensorlose Homing sehr gut. Es ist zwar nicht so genau wie physische Endstopps, aber es reduziert den Bedarf an Kabeln, und ich hasse Kabel. Nicht alle Treiber unterstützen sensorloses Homing, z. B. können die sehr beliebten TMC2208-Treiber diese Funktion nicht nutzen. Die TMC2209-Treiber können das hingegen schon.

Um das sensorlose Homing zum Laufen zu bringen, sind einige physische Änderungen am Mainboard erforderlich, aber keine Sorge, sie sind wirklich einfach. Dies kann je nach Mainboard unterschiedlich sein, aber normalerweise werden einfach Jumper auf bestimmte Pins gesetzt. Siehe das SKR Mini E3 Handbuch.

In Bezug auf die Firmware, siehst du hier was benötigt wird, um sensorloses Homing zu erhalten: Erstens muss HOMING_BUMP in Zeile 210 (configuration_adv.h) auf 0 gesetzt werden - dies wird normalerweise bei Endstopps verwendet, bei denen die Achse den Endstopp trifft, ein Stück zurückfährt und dann langsam erneut auf den Endstopp trifft. Standardmäßig sind das ein paar mm, wir müssen es ausschalten.

In Zeile 1174 muss ENDSTOP_INTERRUPTS_FEATURE (configuration.h) undefiniert sein.

Der nächste Punkt ist Strom. Das Schöne an diesen Mainboards im Vergleich zu älteren ist, dass der Motorstrom auf alten 8-Bit-Boards nicht per Firmware geändert werden konnte. Man musste die Vref auf der Hauptplatine ändern, indem man ein kleines Trimpot drehte, das sehr empfindlich war. Dreht man es ein klein wenig zu viel, fliegt es auf 1,5, obwohl man für die meisten xy-Motoren nur 0,8 (oder 800 mA) braucht. Du findest die Zeilen zum Einstellen des Stroms ab 2386 (configuration_adv.h).

Die Stromstärke, die du in deiner Firmware benötigst, hängt vom Stepper-Treiber und dem Motor ab. Wenn du einen ziemlich durchschnittlichen Motor wie einen 42-34 Motor hast, muss der Stromwert hier nur 800 betragen. Wenn du ein technisches Datenblatt für deinen Motor findest, siehst du vielleicht, dass der maximale Strom 1,5A oder 1500mA beträgt. Gib aber nicht 1500 in die Firmware ein, das ist ein absoluter Spitzenwert, wir arbeiten nicht mit Spitzenwerten, das würde böse enden. Wir suchen nach dem RMS-Wert, dem quadratischen Mittelwert des Stroms. Die Berechnung des korrekten Stroms ist eigentlich nicht so einfach, aber es gibt Rechner, wie zum Beispiel diesen von ALL3DP.

Das Strommanagement ist bei der Kalibrierung des sensorlosen Homings von entscheidender Bedeutung, da du möglicherweise ein wenig daran herumprobieren musst, um sicherzustellen, dass es optimal funktioniert.

MONITOR_DRIVER_STATUS befindet sich in Zeile 3204 (configuration_adv.h) - damit werden die Treiber regelmäßig überprüft, um ihren Status festzustellen. Marlin kann den Treiberstrom automatisch reduzieren, wenn der Treiber eine Übertemperatur-Vorwarnung meldet. Schalte das also ein.

Du kannst auch TMC_DEBUG in Zeile 3317 (configuration_adv.h) aktivieren, wo weitere Informationen über die Stepper-Treiber zu sehen sind.

Ok, jetzt können wir SENSORLESS_HOMING in Zeile 3272 einschalten (configuration_adv.h), wir müssen dies für X und Y einschalten und die Strömungsabriss-Empfindlichkeit einstellen, das ist, wie empfindlich die Treiber den Strömungsabriss (stall) messen können, d.h. wenn der Motor den Druckkopf zu einer Seite seiner Achse bewegt und das Ende trifft. Wenn der Wert zu niedrig ist, wird er nichts erkennen und den Motor weiterdrehen, auch wenn der Druckkopf seitlich anschlägt, wenn er zu hoch ist, wird er den Strömungsabriss ständig "erkennen", auch wenn der Druckkopf einfach nur da sitzt. Nach dem Flashen der Firmware hat das LCD nun ein Menü, in dem man die Werte für die Strömungsabriss-Empfindlichkeit und den Strom ändern kann, so dass man nur noch die Werte ändern muss, damit es passt. Die Werte für den Strömungsabriss reichen von 0-255, also sollte der erste Versuch in der Mitte um 128 herum gemacht werden. Passe den Wert entsprechend an und versuche es dann wieder und wieder und wieder. Wenn du nicht weiterkommst und egal welchen Wert du wählst, es funktioniert einfach nicht, dann musst du die Stromstärke anpassen, einfach ein bisschen erhöhen. NUR EIN BISSCHEN!! Wenn er 800 Milliampere beträgt, erhöhe ihn auf 850 und versuche es erneut.

Du kannst auch define IMPROVE_HOMING_RELIABILITY ein wenig weiter unten in Zeile 3291 verwenden, was genau das ist, wonach es klingt.

Falls du dich wunderst, das sensorlose Homing auf der Z-Achse ist schwierig, besonders bei Druckern, die Spindeln für die Z-Bewegung verwenden, was bei den meisten Druckern der Fall ist. Um sich hier Ärger zu ersparen, schalte das sensorlose Homing für die Z-Achse nicht ein.

5. Microstepping and Stealthchop

In Zeile 2838 gibt es eine weitere Treiberfunktion X_MICROSTEPS (configuration_adv.h). Stepper-Treiber bewegen sich in Schritten, meist 1,8 Grad pro Schritt, was sehr genau ist, aber kann das noch genauer sein? Abgesehen davon, dass man sich einen anderen Motor besorgen kann, der ein kleineres Maß pro Schritt hat, kann man Microstepping verwenden, das den Treiber anweist, den Motor so zu signalisieren, dass er weniger als 1,8 Grad bewegt werden kann, was für eine sehr genaue Einstellung ziemlich praktisch ist. Die Voreinstellung ist 16, aber man kann auch höher gehen, was natürlich bedeutet, dass sich die Anzahl der Schritte, die erforderlich sind, um einen Motor über eine bestimmte Strecke zu bewegen, ebenfalls ändert. Deshalb hat Marlin diese wunderbare Funktion namens Interpolate in Zeile 2833 (configuration_adv.h), die, wenn man sie auf true setzt, jeden Motorschrittwert automatisch "interpoliert", so dass man nichts manuell ändern muss. Wenn du also das Microstepping von 16 auf 32 stellst, musst du die Schritte für alle Motoren anpassen, um den neuen Wert zu erreichen. Wenn du die Interpolation aktivierst, geschieht dies automatisch.

Der nächste Punkt ist STEALTHCHOP in Zeile 3140 (configuration_adv.h). Schalte dies ein, es macht alles super leise - du solltest auch CHOPPER_TIMING CHOPPER_DEFAULT direkt darunter überprüfen. Du hast höchstwahrscheinlich einen 24-V-Drucker, also stelle ihn auf 24 V. Natürlich hängt die Fähigkeit, Stealthchop zu verwenden, auch von deinem Treiber ab, aber zum Glück können die meisten heutzutage damit umgehen.

6. PSU Steuerung

Zurück in der Configuration.h finden wir in Zeile 388 die PSU-Steuerung (configuration.h), die interessant sein kann, wenn wir unseren Drucker nach Abschluss eines Druckauftrags automatisch herunterfahren wollen.

7. Thermische Einstellungen - Thermistor und Max/Min Temp

Als Nächstes folgen die thermischen Einstellungen in Zeile 430 (configuration.h), und das ist wahrscheinlich das meistgefragte Firmware-Tutorial überhaupt. Für viele Leute ist ein Hotend-Upgrade die erste Änderung, die sie vornehmen. Wenn du also einen Ender 3 hast und auf ein Revo-Hotend aufrüsten willst, was tut man dann? Nun, es gibt zwei Dinge, die zu ändern sind, das erste ist der Thermistor. Die meisten Drucker verwenden einen 100k-Thermistor, für den der Sensortyp in Marlin "1" bestimmt ist. Der Revo und viele andere Thermistoren verwenden jedoch die Nummer 5, die ebenfalls ein 100k-Thermistor ist, allerdings von Semitec. Wie du siehst, gibt es ein paar Marken, die diesen Thermistortyp verwenden. Aber vielleicht willst du ja auf etwas Stärkeres wie einen PT1000 aufrüsten? Das hängt vom PT1000 ab, aber die meisten verwenden den Sensor mit der Nummer 1047 und einem 4,7-Ohm-Pull Up.

Dasselbe kannst du für temp_sensor_bed in Zeile tun 536 (configuration.h).

Der andere Teil des Hotend-Upgrades ist der HEATER_0_MAXTEMP in Zeile 611 (configuration.h). PTFE-Hotends sind im Allgemeinen auf 260C begrenzt, was in Marlin mit 275C angegeben wird. Ich bin mir nicht sicher, warum dies so gemacht wurde, aber egal, welche Temperatur du hier einträgst, die tatsächlich erreichbare Temperatur deines Druckers wird 15C niedriger sein. Wenn du also ein 300C-Hotend hast, müssen mindestens 315C als Maximalwert eingeben werden.

In Zeile 597 findest du auch HEATER_0_MINTEMP, was die Heizung automatisch ausschaltet, wenn sie diese Temperatur erreicht. Wenn du übrigens einen Drucker hast, der die Heizung ausschaltet oder einen Mintemp-Fehler anzeigt und du dir nicht sicher bist, warum das so ist, kann das daran liegen, dass dein Drucker in einer zu kalten Umgebung steht. Wir bekommen im Winter viele Fragen zu diesem Thema, da viele Leute ihre Drucker in der Garage stehen haben und das leicht passieren kann.

In Zeile 623 hast du eine thermische Überschwingung (overshoot) (configuration.h), die Temperaturen über dem Maxtemp-Wert zulässt, bevor sie das Gerät abschaltet. Überschwinger können auftreten, wenn deine Heizung nicht kalibriert ist, was uns zu Zeile 633 und der PID-Abstimmung (tuning) (configuration.h) führt.

8. PID-Einstellungen

Damit werden die Heizung und der Thermistor synchronisiert, so dass die Heizung präzise ist. Das Wichtigste ist hier die Zeile 659, in der die Standardwerte für Proportional, Integral und Derivativ angegeben sind. Du brauchst hier eigentlich nichts zu ändern, aber wenn du die Heizungen wechselst, ist es eine gute Idee, eine PID-Abstimmung durchzuführen, die im Wesentlichen deine Heizung oder deinen Thermistor kalibriert, damit die Temperatur nicht zu stark schwankt, wenn dein Drucker läuft. Ich würde also empfehlen, dies nach einem Hotend-Upgrade zu tun. Es gibt mehrere Möglichkeiten, dies zu tun, aber eine einfache Möglichkeit ist es, dies in deinem LCD-Menü in Zeile 803 zu aktivieren. Eine andere Methode wäre, den Drucker über USB an den Computer anzuschließen und ein Terminalprogramm wie Pronterface zu verwenden.

In diesem Terminal kannst du gcode-Befehle eingeben. Der richtige Befehl für die PID-Abstimmung lautet "M303 E0 S210 C10 U".

Hier ist M303 der Befehl zum Starten des Abstimmungsprozesses.

E0 bezieht sich auf die verwendete Heizung (E0 ist die Standardeinstellung für fast alle Einzelextruder-Drucker).

S210 bezieht sich auf die Temperatur von 210C, die für PLA geeignet ist, aber du kannst sie ändern, wenn du hauptsächlich andere Filamente verwenden willst.

C7 gibt an, wie oft der Test durchgeführt werden soll. Je öfter du den Test durchführst, desto präziser ist er, aber wir haben festgestellt, dass nicht mehr als 7 Versuche nötig sind.

Sobald du diesen Befehl eingegeben hast, wird der Test durchgeführt und die Werte für Kp, Ki und Kd ausgespuckt.

Sobald du diese Werte hast, kannst du sie mit dem M301-Befehl in das Terminal eingeben, wie M301 P30 I3 D60.

Dann speicherst du deine Einstellungen mit einem M500-Befehl, und schon bist du fertig.

Es gibt noch mehr über die PID-Steuerung von Bett und Gehäuse. Die PID-Einstellung für dein Bett ist nicht so notwendig wie die deines Hotends. Hotends werden wesentlich häufiger gewechselt als der Thermistor vom Bett, aber sie ist da, wenn du sie einschalten musst.

9. Sicherheit - Kaltextrusion und thermisches Durchgehen

Der nächste wichtige Punkt ist der thermische Durchschlagschutz in Zeile 827 (configuration.h), den du unbedingt einschalten solltest! Damit wird der Drucker abgeschaltet, wenn die Temperatur über das erwartete Maß hinaus ansteigt. Vielleicht hat sich der Thermistor verschoben und du weißt es nicht. Ohne diese Funktion steigt die Temperatur immer weiter an, und der Thermistorwert ändert sich kaum. Das ist schlecht. SCHALTE ES EIN!

Es gibt auch eine Funktion zur Verhinderung der Kaltextrusion in Zeile 816 (configuration.h). Dadurch wird verhindert, dass der Extrudermotor aktiviert wird, wenn die Temperatur unter dem eingegebenen Wert liegt. Standardmäßig ist hier ein Wert von 170 eingestellt. Welches Filament du normalerweise mit deinem Drucker verwendest, wird dir sagen, welcher Wert hier verwendet werden sollte. Wenn du z.B. hauptsächlich PETG druckst, solltest du eine Temperatur von ca. 220C einstellen.

10. Mechanische Einstellungen - Corexy, Banddrucker, Roboterarm

Als Nächstes folgen die mechanischen Einstellungen, und da wir ein Corexy-Setup verwenden werden, ist dies sehr wichtig. Hier müssen wir Corexy definieren.

Es gibt hier auch andere Kinematiken wie Delta, Banddrucker oder wenn du einen Roboterarm hast, ist das hier auch möglich.

11. Endstopp Einstellungen und Endstop Noise Threshold

Als nächstes folgen die Endstop-Einstellungen in Zeile 1071 (configuration.h). Hier werden einfach die Endstopps aktiviert.

Hier gibt es eine weitere kleine Funktion für Endstop Noise Threshold. Vor langer Zeit musste ich diese Funktion verwenden, als ich extra lange Kabel an einem Drucker anbringen wollte, so dass sich die gesamte Elektronik außerhalb des Gehäuses befand. Aus irgendeinem Grund führten die langen Kabel dazu, dass beim Homing Fehler erkannt wurden, aber diese Funktion hat mir den Tag gerettet.

12. Bewegungseinstellungen - Beschleunigung, Schritte, Feedrate, Jerk, Junction Deviation, Linear Advance

Als Nächstes folgen die Bewegungseinstellungen bei 1194 (configuration.h) und als aller erstes die Standardschritte. Wie bereits erwähnt, drehen sich Schrittmotoren alle 1,8 Grad in Schritten (es sei denn, Sie haben einen 0,9-Grad-Motor). Wenn der Motor einen Riemen, eine Leitspindel oder ein Zahnrad dreht, muss er eine bestimmte Anzahl von Schritten machen, damit sich das Teil um den gewünschten Betrag bewegt. Am häufigsten muss dies bei Extruder-Upgrades geändert werden, wobei du eigentlich nur die Zahl in dieser Zeile ändern musst. Normalerweise geben die Hersteller die Schritte des Extruders (oder esteps) an, aber möglicherweise müssen diese angepasst werden, weshalb wir eine esteps-Kalibrierung durchführen. Dazu gibt es eine Menge Videos.

Esteps und eigentlich alle Stepping-Werte müssen nicht in der Firmware konfiguriert werden, du kannst einfach deinen Start-Gcode bearbeiten, um einen neuen Wert mit einem M92-Befehl einzufügen. Das ist der einfachste Weg, wenn du deinen Extruder aufrüstest, du musst deine Firmware in den meisten Fällen nicht aktualisieren, du kannst einfach den Gcode entweder in deinem Slicer oder über Pronterface verwenden, wie wir bereits gezeigt haben. Dies kann eigentlich für alle Werte in der Kategorie Bewegungseinstellungen mit M203 für die maximale Vorschubgeschwindigkeit (feedrate), M201 für die maximale Beschleunigung, m204 für die Standardbeschleunigung und M205 für die Jerk-Einstellungen erfolgen. Wenn du zum Beispiel die Extruderschritte für einen neuen Bondtech-Extruder ändern möchtest, musst du nur M92 E415 in den Start-Gcode schreiben (M92 ist der Befehl zum Ändern der Schritte eines Motors und E gibt an, dass es sich um den Extrudermotor handelt), das war's. Diese Werte sind also nicht in Stein gemeißelt und können ohne Firmware-Änderung ganz einfach geändert werden.

Übrigens, wenn du dich für gcode-Befehle im Allgemeinen und die damit verwendeten Parameter interessierst, kannst du auf der Website von Marlin nachsehen, die eine Liste aller gcode-Befehle enthält, von denen einige sehr nützlich sein könnten. Hier ist ein Beispiel für den M204 Startbeschleunigungs-Gcode.

Jerk ist eine Funktion, die die Änderungsrate der Beschleunigung einer Achse begrenzt, vor allem wenn der Druckkopf stillsteht und sich dann plötzlich in Bewegung setzt, aber auch bei 90-Grad-Drehungen. Es handelt sich dabei um eine relativ alte Funktion in der Firmware, die von vielen Druckern immer noch verwendet wird, aber neuere Drucker, vor allem solche mit Klipper-Firmware, verwenden etwas, das als Junction Deviation (Verbindungsabweichung) bezeichnet wird, also schauen wir uns das mal an.

Was die Änderungen an der Firmware betrifft, so ist dies sehr einfach: Gehe zu Zeile 1288 und definiere junction deviation. Stelle außerdem sicher, dass classic_jerk in Zeile 1265 nicht definiert ist (configuration.h). Damit ist der Teil der Firmware erledigt, aber du musst noch den Wert für die Junction Deviation herausfinden. Standardmäßig ist er auf 0,013 mm eingestellt, aber das hängt ganz von deinem Drucker ab. Glücklicherweise ist es ein einfacher Test, alles was wir tun müssen, ist ein Modell zu drucken, bei dem jede Schicht einen leicht unterschiedlichen Wert für die Junction Deviation hat und dann zu prüfen, welche Schicht am besten gedruckt wird. Wenn du ein starkes Ringing bemerkst, ist der Wert zu hoch. Zu niedrig sollte er aber auch nicht sein, denn das würde den Prozess verlangsamen.

TeachingTech hat einen großartigen Leitfaden und Rechner.

Als Nächstes folgt die S-Kurven-Beschleunigung in Zeile 1301 (configuration.h), die Vibrationen reduziert und wie die Jerk-Funktion relativ alt ist und zugunsten neuer Funktionen zurückgestellt wurde. Eine davon ist der Linear Advance (lineare Vorschub), was ist das? Nun, damit wird die Geschwindigkeit des extrudierten Volumens bei Beschleunigungsänderungen gesteuert. Ist dir beim Drucken von 90-Grad-Ecken schon einmal aufgefallen, dass sich der Druck dort ein wenig wölbt? Genau das soll der Linear Advance beheben.

In Bezug auf die Firmware ist es ähnlich wie die Junction Deviation. Gehe zu Zeile 2205 in configuration_adv.h und du wirst es finden (configuration_adv.h). Alles, was du tun musst, ist, den Kommentar zu entfernen, damit es definiert ist. Danach musst du ihn kalibrieren, um den richtigen Wert zu finden. Wir nennen ihn den k-Wert, standardmäßig ist er 0,22.

Die Kalibrierung des k-Wertes ist ähnlich wie die Kalibrierung des Wertes der Junction Deviation, wir drucken etwas mit verschiedenen Werten aus und sehen, welcher am besten funktioniert. Zum Glück gibt es bei Marlin einen absolut genialen Rechner, mit dem man das alles ausrechnen kann.

13. Z-Probe, Nivellierung des Bettes, Änderung der Motordrehrichtung

In Zeile 1311 kommen wir zur Nivellierung des Bettes und zu den Z-Probes (configuration.h). Dies ist ein sehr umfangreicher Abschnitt, da es viele verschiedene Methoden der Nivellierung gibt, nicht nur automatische Nivellierungs Add-ons, sondern auch eine Menge anderer Dinge. Wenn du dich über die Firmware des BLTouch oder ähnlicher Geräte informieren möchtest, empfehle ich das Video von TeachingTech, in dem es darum geht, einen BLTouch auf praktisch jedem Gerät zum Laufen zu bringen.

Muss die Richtung deines Motors umgekehrt werden? Manchmal ist dies bei Extruder-Upgrades oder Stepper-Treiber-Wechseln notwendig. Es gibt viele Funktionen in Marlin, die eine Richtungsumkehr erfordern, aber du musst es jetzt nicht tun. Wenn du deine Firmware kompilierst und flashst, versuche einfach, einen Motor zu bewegen und prüfe, ob er in die richtige Richtung läuft. Wenn du die Richtung ändern musst, gehe zu Zeile 1698 und ändere INVERT_[X/Y/Z]_DIR auf false oder true.

14. Bettgröße und Filament-Runout-Sensoren

Der nächste Punkt in Zeile 1753 (configuration.h) ist die Bettgröße. Betten sollten ein wenig Spielraum haben, da wir nicht wollen, dass unser Modell zu nah an der Bettkante druckt, also können wir unsere min_position auf 0 setzen, was der Punkt sein wird, an dem der Endstopp oder das sensorlose Homing diese Achse beim Auto-Homing anhält. Vielleicht ist der Endstopp-Punkt bereits in einem angemessenen Abstand von der Bettkante entfernt, oder er befindet sich nicht einmal auf dem Bett. In diesem Fall benötigst du Spielraum, also bearbeite einfach die min_position in mm, um deinen Spielraum einzuschließen, und bewege dann den Schlitten auf die gegenüberliegende Seite des Bettes zu dem Punkt, über den er nicht hinausgehen soll, und das ist deine max_postion, das ist der Punkt, auf den alle Verfahrbewegungen begrenzt sind.

Als Nächstes folgen die Filament-Runout-Sensoren in Zeile 1818 (configuration.h). Der einfachste Weg, einen Runout-Sensor einzurichten, ist die Verwendung eines normalen Endstopps mit einer kleinen Rolle am Ende. Diese Rolle ist ziemlich wichtig, denn wenn man das Filament herauszieht, verbiegt sich der Metallstreifen oder bricht sogar, wodurch der Schalter unbrauchbar oder unzuverlässig wird. Es gibt auch andere Optionen wie einen Opto-Sensor, der meiner Meinung nach viel zuverlässiger ist. Ich hatte noch nie ein Problem mit dem Sensor am Prusa MK3, aber Endstopp-Sensoren sind einfach hinzuzufügen, sie sind günstig und mit dem richtigen Design können sie sehr gut funktionieren. Also, wenn du einen verwenden möchtest, dann unkommentiere filament_runout_sensor in Zeile 1830, du solltest #define FIL_RUNOUT_ENABLED_DEFAULT aktiviert haben und auf true stellen und du brauchst nur 1, es sei denn, du hast einen Dual-Extruder, also setzt du #define NUM_RUNOUT_SENSORS auf 1, du solltest auf jeden Fall die M600-Befehl aktiviert haben (mehr dazu ein wenig später) so schalte auf Zeile 1877 (configuration.h).

Du musst auch noch zu ADVANCED_PAUSE_FEATURE in Zeile 2752 (configuration_adv.h) gehen und das Kommentarzeichen entfernen. Es gibt noch eine Menge anderer Feineinstellungen, die du hier vornehmen kannst, und Marlin hat einige sehr hilfreiche, leicht verständliche Kommentare daneben gestellt. Ändere sie nach Belieben und passe sie an deinen Drucker an.

Alles, was du jetzt noch tun musst, ist, das Board anzuschließen. Abhängig von deinem Board, kannst du es auch ändern, wenn du möchtest. Um zu überprüfen, wo der Standard-Pin ist, kannst du zu SRC, PINS und deinem Prozessormodell gehen, es auswählen und STRG F drücken und FIL_RUNOUT_PIN eingeben, bei uns auf einem BTT SKR e3 Mini V3.0 ist der Pin PC15, gehe zu Google und gib den Namen deines Boards und das Pinout-Diagramm ein und schaue dir an, wo dieser Pin ist.

15. M600

Wir haben bereits den M600-Befehl erwähnt. Es handelt sich dabei um eine leider zu wenig genutzte, aber sehr nützliche Firmware-Funktion, nämlich das Wechseln des Filaments während des Drucks. Wenn du die ersten paar Schichten in einer Farbe drucken willst, die nächsten in einer anderen und dann immer wieder die Farben wechseln möchtest, kannst du das mit dieser Funktion tun. Sieh dir dieses Abzeichen an, das wir mit dem M600-Befehl erstellt haben.

Wir haben also bereits M600 und die erweiterte Pausenfunktion (advanced pause) aktiviert, jetzt müssen wir die Funktion zum Parken des Druckkopfes aktivieren. Gehe also zu Zeile 2362 (configuration.h) und aktiviere "nozzle park". Du kannst hier die Position ändern, wenn du möchtest, und auch die Geschwindigkeit unter "feedrate" und "minimum z feed rate".

Gehe nun zu Zeile 824 und aktiviere Extrude max length (configuration.h). Damit wird neues Filament bis zu dieser Länge eingezogen, was ausreicht, um altes Filament zu entfernen und die Farbe vollständig zu ändern. Dieser Wert hängt davon ab, ob du einen Bowdenzug oder einen Direct Drive hast. Wenn du einen Bowdenzug mit einem langen PTFE-Schlauch hast, muss dieser Wert ziemlich hoch sein, bei einem Direct Drive kann er niedrig sein.

Gehe anschließend zurück zur erweiterten Pausenfunktion (advanced pause) in configuration_adv.h und stelle sicher, dass PARK_HEAD_ON_PAUSE unkommentiert ist, damit die Düse auch entsprechend geparkt wird (configuration_adv.h).

16. Zusätzliche Funktionen - EEPROM, Vorheizeinstellungen, Düsenreinigung, Passwörter, Sprache, Encoder-Empfindlichkeit, LCDs, Neopixel

Der nächste Punkt ist EEPROM in Zeile 2291 und sollte auf jeden Fall aktiviert werden (configuration.h) - es ist wie die Speicherfunktion bei deinem Drucker. Wenn du also etwas änderst, im Grunde irgendetwas mit einem Gcode-Befehl, kannst du das mit einem M500-Befehl speichern und es bleibt erhalten. Ohne diese Funktion wird der Drucker einfach mit den Firmware-Einstellungen, die du auf deinem Computer festgelegt hast, neu gestartet. Das macht die Sache wirklich praktisch.

Als Nächstes folgen die Vorheizkonstanten (preheat constants) in Zeile 2335 (configuration.h). Wie beim EEPROM sollten sie standardmäßig vorhanden sein, auch wenn die Werte manchmal nicht so toll sind. Ich mag es, wenn diese Werte ein wenig höher sind als die tatsächliche Drucktemperatur, aber das ist nur eine Kleinigkeit. Standardmäßig sind nur PLA- und ABS-Temperaturen voreingestellt, aber wenn du eigentlich keine davon verwendest oder viele Voreinstellungen brauchst, können bis zu 10 hinzugefügt werden.

Als Nächstes folgt die Funktion für saubere Düsen in Zeile 2374 (configuration.h). Dies ist nützlich für einen Dual-Extruder-Drucker, könnte aber auch für einen Single-Extruder-Drucker nützlich sein, wenn die erste Schicht perfekt sein soll.

Das nächste ist das Passwort in Zeile 2498 (configuration.h) - vielleicht möchtest du nicht, dass z.B. dein Kind oder Mitbewohner:innen, die keine Grenzen kennen, den Drucker verwenden. Passwortschutz könnte in dem Fall nützlich sein, aber wenn du der/ die Einzige mit Zugang zum Drucker bist, ist ein Passwort eigentlich sinnlos.

Wir haben auch Einstellungen für die LCD-Unterstützung in Zeile 2529 (configuration.h). Wenn Englisch oder Chinesisch nicht deine erste Sprache ist, ist das kein Problem, du hast einige hier zur Auswahl. Wenn dein Controller ein Encoder-Rad verwendet, könntest du die Empfindlichkeit in Zeile 2602 ändern (configuration.h). Weiter unten in den Controller-Einstellungen kannst du deinen Controller auswählen, vielleicht einen mit SD-Karten-Unterstützung oder einen mit Touchscreen.

Du kannst deinen Drucker auch mit Neopixeln aufrüsten, das sind LEDs, die du an deinem Drucker anbringen kannst, um eine bessere Beleuchtung oder eine coole Lichtshow zu erzeugen. Diese Einstellungen findest du in Zeile 3450 (configuration.h).

Schließlich gibt es noch eine neue und sehr coole Funktion, nämlich Input Shaping. Das ist eine neue Funktion in Marlin, die Vibrationen ausgleichen kann, die unschöne Defekte in deinem Druck verursachen können. Wir haben bereits ein Video und eine Anleitung erstellt, um dir bei der Einrichtung zu helfen.

Diese Liste deckt keineswegs alles ab, sondern gibt nur einen Überblick darüber, was allgemein an Änderungen oft vorgenommen wird. Solltest du Probleme mit einem bestimmten Teil der Marlin-Firmware haben oder eine Erweiterung dieser Liste wünschen, lass es uns wissen. Wir werden diesen Leitfaden in Zukunft erweitern, um dir bei allen Änderungen helfen zu können, die du vornehmen möchtest.