Installation Marlin auf Anet ET5 Pro (ET4/ET5 Serie)

Diese Anleitung richtet sich an Maker, die Ihren Anet ET4/ET5 3D-Drucker auf die Marlin-Firmware umrüsten wollen.

Ganz wichtig: Die Anpassung der Marlin-Software an die Anet ET4/ET5 Serie hat David Terán gemacht. Und er hat die Ergebnisse seiner Arbeit inklusive einer Dokumentation auf Github allen zur Verfügung gestellt, die Marlin auf ihren ET4/ET5 3D-Druckern installieren möchten. Ohne seine Arbeit gäbe es diese Anleitung nicht. Vielen Dank David Terán!!

Hier der Link zu der Marlin-Github-Seite von David Terán: https://github.com/davidtgbe/Marlin
Wer sich auskennt, kann dort weitermachen. Aber auch für weiterreichende Informationen zu dieser Portierung von Marlin auf die Anet ET4/ET5 Drucker ist es sinnvoll, die Dokumentation von David Terán zur lesen.

Hier folgt ohne weiterreichende Infos eine Schritt-für-Schritt-Anleitung für die Installation von Marlin.

Einige Warnungen bevor wir anfangen:

  • Die Garantie für den 3D-Drucker erlischt mit der Durchführung der Installation von Marlin.
  • Hilfe bei Problemen gibt es nur im Internet. Es gibt sie reichlich – aber nur auf Englisch.
  • Eine gewisse Erfahrung im Umgang mit elektronischen Schaltungen wird vorausgesetzt.
  • Auch sollte man eine Vorstellung von Programmierumgebungen (IDE – Integrated Development Environment) und der Nutzung des Programmiertools für STM32 Microcontroller haben.
  • Die einmal notwendige In-Circuit-Programmierung des Bootloaders erfordert die Arbeit am geöffneten Gehäuse des ET4/ET5 3D-Druckers. Dabei liegen Kontakte offen, die Netzspannung führen. Diese Arbeit darf nur von im Umgang mit Netzspannungen ausgebildeten Personen unter Wahrung aller Sicherheitsvorkehrungen (Trenntrafo) ausgeführt werden!
  • Eine fehlerhaft ausgeführte Umrüstung kann das Mainboard unbrauchbar machen. Die Kosten für ein neues sind zwar überschaubar, aber das Risiko sollte bedacht werden.
  • Die Umrüstung erfolgt auf eigene Gefahr! Die Anleitung wurde nach bestem Wissen und Gewissen erstellt aber weder ihr Autor noch derjenige, der sie zur Verfügung stellt, ist für etwaige bei der Anwendung der Anleitung entstehende Schäden verantwortlich. (Siehe auch CC-BY-4.0 Lizenz am Ende dieser Anleitung.)

Welche Vorteile hat die Umrüstung?

  • Standard-Firmware mit viel Unterstützung im Internet.
  • Einfache Firmware-Updates mit SD-Karte (die aufwändige In-Circuit-Programmierung (s.o.) muss nur einmal durchgeführt werden).
  • Durch die Möglichkeit, die Betriebsparameter der Firmware in weiten Grenzen einzustellen, kann andere Hardware leichter eingesetzt werden (Extruder, Bed-Level-Sensor)
  • Möglichkeit der Verwendung des BLTouch Abstandssensors (nicht Bestandteil dieser Anleitung und nur für Elektronik-„Profis“ durchführbar und empfehlenswert).

Welche Nachteile hat die Umrüstung?

  • Die Bedienung per Touchscreen wird schwieriger. Obwohl das User-Interface laut Kommentaren im Quelltext darauf ausgelegt ist, braucht man sehr „schlanke Finger“. Recht gut bedienbar ist es mit einem Touch-Screen-Stift. Alternativ kann man den Drucker auch per Kommando-Interface per USB bedienen (Pronterface o.ä. auf dem PC, Web-Interface mit OctoPi und Raspberry PI, etc.).
  • Es gibt einen Bug in der hier verwendeten Marlin-Version: Nach dem Laden oder dem Tausch von Filament, muss man den Drucker neu starten (Strom aus/an), da andernfalls die Heizkreise (Bett und Extruder) nicht mehr angesteuert werden.
  • Wenn man Nutzen aus der Marlin-Installation ziehen will, muss man sich im Anschluss an die erfolgreiche Umrüstung intensiv mit den Möglichkeiten von Marlin auseinandersetzen. Insbesondere sollte man die Hinweise von David Terán auf Github und in seinen Kommentaren in der Datei EasyConfig.h (s.u.) lesen und bearbeiten. Und um das Studium der Parameter und der Kommentare dazu in der Marlin-Datei Config.h kommt man auch nicht herum. Das hier ist der Start und nicht der Abschluss.

    Ob das allerdings ein Nachteil ist, müssen alle für sich selbst beurteilen. Wenn man allerdings zu diesem Urteil kommt, sollte man nochmal darüber nachdenken, ob die Marlin-Umrüstung wirklich der richtige Schritt ist.

Lohnt es sich? Ich finde UNBEDINGT!

Was benötigt man für die Durchführung der Marlin Umrüstung?

  • Einen 3D-Drucker aus der Anet ET4/ET5 Serie.
  • Einen PC. (Die Erstellung der Marlin-Firmware geht auch mit einem Mac. Die In-Circuit-Programmierung soll dort ein größeres Problem sein. In Ermangelung eines Macs wurde das nicht getestet und wird daher hier auch nicht beschrieben.)
  • Zugang zum Internet für den Download diverser benötigter Software.
  • Einen In-Circuit-Programmieradapter für STM32 Microcontroller. Entsprechende Geräte erhält man bei den üblichen Quellen. Das Stichwort für die Suche lautet „ST-Link V2“. Eine Empfehlung für ein Modell kann hier aufgrund der Fülle der Angebote und der ständig wechselnden Anbieter nicht ausgesprochen werden. Wer ganz sicher sein will, kann das relativ teure Original von STMicroelectronics kaufen. Das ist für die einmalige Anwendung zur Installation des Bootloaders auf dem ET4/ET5 aber wahrscheinlich übertrieben.
    Für die Verbindung zum PC wird außerdem ein USB2-Verlängerungskabel (Stecker-A – Buchse-A) benötigt.
  • Werkzeug zum Öffnen des Gehäuses des 3D-Druckers (Hex/Inbus 2mm und 3 mm (letzterer liegt dem Drucker bei)).

Vor Beginn der Installation sollte der kapazitive Bed-Level-Sensor des ET4/ET5 Druckers korrekt eingestellt sein. Damit erleichtert man sich die im Anschluss an die Marlin-Installation notwendige Einstellung des Probe-Z-Offsets.

Struktur der Anleitung

Vorbereitung

  • Installation der auf dem PC benötigten Software
  • Download des Bootloaders und der Marlin-Software

Durchführung der Marlin Installation

  • Anpassung von Marlin an den eigenen 3D-Drucker
  • In-Circuit-Programmierung des Boot-Loaders
  • Installation von Marlin

Inbetriebnahme

  • Initialisierung des EEPROMS und Einstellung des Probe-Z-Offsets
  • PID-Tuning des Hotends
  • Weitere Schritte

Vorbereitung

Installation der auf dem PC benötigten Software

  1. Download und Installation der Entwicklungsumgebung (IDE), die zur Anpassung und Kompilierung der Marlin Firmware benötigt wird.
  • Es wird die kostenlose IDE Visual Studio Code von Microsoft verwendet:
    https://code.visualstudio.com/
    Die Installation wird auf die übliche Weise durchgeführt.
  • Danach muss in Visual Studio Code die für die Erzeugung von Programmen u.a. für den im ET4/ET5 3D-Drucker verwendeten Prozessor benötigte Erweiterung PlatformIO installiert werden.
    Durch einen Klick auf das Zahnrad unten links in Visual Studio Code kann man in die Verwaltung der Extensions wechseln:

Dort gibt man im Suchfeld PlatformIO ein und installiert die daraufhin angebotene Erweiterung:

Nun muss noch die für die Erzeugung von Marlin-Firmware benötigte Erweiterung Auto Build Marlin installiert werden. Das geht auf die gleiche Weise, wie zuvor:

Damit ist die Vorbereitung der Entwicklungsumgebung abgeschlossen.

2. Download und Installation der für den In-Cicuit-Programmierer benötigten Software ST-Link Utility.

Die Software wird von STM kostenlos zur Verfügung gestellt:
https://www.st.com/en/development-tools/stsw-link004.html

Man erhält die Software aber nur bei Eingabe eines Namens und einer gültigen Mail-Adresse, an die dann der Download-Link gesendet wird.
Die Installation wird nach dem Download auf die übliche Weise durchgeführt. Dabei muss die Installation des USB-Treibers für den Programmieradapter zugelassen werden.

Nun kann man zum Test den Programmieradapter in den PC einstecken. Das USB-Anschlusssignal sollte zu hören sein. Und wenn man dann die ST-Link Utility Software startet, kann man den korrekten Anschluss des Adapters kontrollieren:

Beim Aufruf von Target – Settings sollte der Programmieradapter ähnlich wie auf dem folgenden Screenprint angezeigt werden.

Sollte der Adapter nicht erkannt worden sein, wird beim Aufruf von Target – Settings eine Fehlermeldung angezeigt:

Dann geht es leider an die Fehlersuche.

Wenn alles so weit funktioniert, sind die Software-Vorbereitungen abgeschlossen. Jetzt kann die der Bootloader und die Marlin-Software heruntergeladen werden.

 

Download des Bootloaders und der Marlin-Software

  1. Als Erstes lädt man den von David Terán für das ET4/ET5 Mainboard angepassten OpenBlt-Bootloader herunter:
    https://github.com/davidtgbe/openblt/releases

Wenn man den Bootloader nicht selbst kompilieren möchte, reicht es, nur die Datei openblt_et4.bin herunterzuladen. Der Bootloader passt zu allen ET4/ET5 Druckern.
Dieser Download wird erst später benötigt.

  1. Und nun die Software, um die es hier geht: Die von David Terán angepasste Marlin-Firmware:

https://github.com/davidtgbe/Marlin

Bei der Auswahl von Code – Download Zip wird das komplette Entwicklungsverzeichnis der Marlin-Firmware als Zip-Datei gepackt und heruntergeladen.

Die heruntergeladene Zip-Datei entpackt man nun in ein Verzeichnis eigener Wahl. In diesem Verzeichnis finden alle weiteren Arbeiten an der Marlin-Software statt. Daher sollte man die Dateien in einem gut in die eigene Verzeichnisstruktur passendem Verzeichnis ablegen.

Nun kann man dieses Verzeichnis in der Entwicklungsumgebung Visual Studio Code öffnen:

In Visual Studio Code wird dann der Inhalt dieses Verzeichnisses angezeigt:

Durchführung der Marlin Installation

Anpassung von Marlin an den eigenen 3D-Drucker

David Terán hat die Dateien so weit vorbereitet, dass nur wenige Anpassungen zu machen sind. Grundsätzlich erfolgt die Konfiguration von Marlin mit Hilfe der Header-Dateien Configuration.h und Configuration_adv.h. Von David Terán stammt noch die Header-Datei EasyConfig.h, mit Hilfe derer viele notwendige Anpassungen automatisch jeweils zum Zeitpunkt der Kompilierung der Firmware vorgenommen werden.

Bis auf eine Datei befinden sich alle zu bearbeitenden Dateien in dem Unterverzeichnis Marlin, was dazu geöffnet werden muss (siehe vorheriges Bild).

Die Anpassungen:

  • Um die Nutzung des Bootloaders zu ermöglichen, muss die Startadresse der Marlin-Firmware so weit verschoben werden, dass der Bootloader davor in den Speicher passt und nicht überschrieben wird. Dazu muss die Datei platformio.ini angepasst werden. Diese findet man in der Verzeichnisanzeige von Visual Studio Code ganz unten:

Dort muss man den Parameter board_build.offset bei den ET4/ET5 Einstellungen entsprechend anpassen. Um ihn zu finden kann man die Suche bemühen (STRG-F). Wenn man nach ET4 sucht, landet man schnell im entsprechenden Bereich. David Terán hat den Eintrag bereits vorbereitet. Um den Offset der Firmware zur Nutzung des Bootloaders auf 0x10000 zu setzen, muss nur das Kommentarzeichen # vor dem Eintrag
#board_build.offset = 0x10000
entfernt werden:

Dadurch wird die Startadresse der Marlin-Firmware auf 0x10000 verschoben.

  • Da diese Anleitung nur die Konfiguration mit Hilfe der von David Terán bereitgestellten EasyConfig.h Datei beschreibt, wird in dieser Datei nun festgelegt, um welchen Drucker aus der ET4/ET5-Serie es sich handelt, für den die Marlin-Firmware erstellt werden soll.

Dazu öffnet man in Visual Studio Code im Marlin-Verzeichnis die Datei EasyConfig.h:

Hinter #define ET_MODEL trägt man den zu dem eigenen Druckermodell passenden Namen aus der Auflistung zwei Zeilen darüber ein.

Es stehen als gültige Werte also die folgenden Bezeichner zur Verfügung:

ET_MODEL_ET4, ET_MODEL_ET4_PLUS, ET_MODEL_ET4X, ET_MODEL_ET4_PRO, ET_MODEL_ET5, ET_MODEL_ET5X, ET_MODEL_ET5_PRO

Anmerkung: Da es sich hier um eine C-Headerdatei handelt, ist das # kein Kommentarzeichen, sondern leitet eine Anweisung an den Präprozessor ein. Also bitte nicht entfernen! Kommentare beginnen in C für eine einzelne Zeile mit // .

Ein Stückchen weiter unten kann man einen Namen eintragen, der später auf dem Drucker-Display beim Start der Marlin-Firmware angezeigt wird:

Das ist ein frei zu wählender Text. Welche Längenbegrenzung es für diese Zeichenfolge gibt, ist (mir) nicht bekannt.

Alle weiteren Parameter in der EasyConfig.h sollten nur angepasst bzw. aktiviert werden, wenn man einen von den Original-Modellen abweichenden Drucker hat und weiß was man tut.

Weiter unten in EasyConfig.h (Punkt 3.) hat David Terán beschrieben, welche Schritte auszuführen sind, sobald die Firmware auf dem Drucker installiert ist.

Außerdem listet er ausführlich auf, welche Parameter in den Dateien Config.h und Config_adv.h bei der Nutzung von EasyConfig.h beim Kompilieren automatisch gesetzt werden. Dadurch werden etwaige Anpassungen dieser Parameter in den Config-Dateien, die man selbst vorgenommen hat, überschrieben!

  • Nun erfolgen die Anpassungen in der Config.h. Ein Tipp dazu: Damit man die eigenen Anpassungen schneller wiederfindet, ist es empfehlenswert, an das Ende der geänderten Zeile einen Marker als Kommentar zu setzen, z.B. // Funduino 01.04.2021. Dann lassen sich mit der Suche nach Funduino alle eigenen Anpassungen schnell wieder auffinden.

Die fast wichtigste Anpassung ist die Aktivierung der Nutzung der EasyConfig.h während der Kompilierung. Das geschieht durch die Entfernung der Kommentarzeichen vor dem entsprechenden #define-Statement:

Aus
//#define ET_EASY_CONFIG

muss
#define ET_EASY_CONFIG
gemacht werden.

Ein weiterer wichtiger Parameter ist der Offset in X/Y-Richtung des Bed-Level-Sensors zur Nozzle:

Die Werte dafür sind beim ET5 Pro und der Nutzung des in das Extruder-Gehäuse eingebauten Standard-Sensors
#define NOZZLE_TO_PROBE_OFFSET { -25, -8.5, 0 }

Die Werte sollten beim ET5 identisch sein. Ob sie für den ET4 stimmen, kann ich nicht sagen.

Bei der Nutzung anders befestigter Sensoren müssen die Werte entsprechend angepasst werden (Beschreibung dazu in den Kommentaren oberhalb des Parameters in der Config.h).

Der Wert für den Z-Offset bleibt 0, da der Z-Offset später auf andere Weise eingestellt wird. Das ist hier sinnvoll, da dieser Offset beim ET4/ET5 keine feste Größe hat, sondern von der individuellen Einstellung des Sensors mit Hilfe des Drehpotentiometers an seiner Oberseite abhängig ist.

Bei den LCD-Einstellungen kann man die Sprache des Benutzer-Interfaces ändern. Ich bevorzuge Englisch. Dann fällt es leichter, die Informationen aus dem Internet zu nutzen, die meist auf Englisch sind.

Bei meinem ET5 Pro funktioniert die Druckbettheizung per PWM nicht. Der Treiber auf dem Mainboard scheint dafür nicht ausgelegt zu sein. Leider gibt es keine Schaltpläne des Mainboards, die es erlauben würden, eine Lösung zu finden. Also muss das Heizverfahren von der PWM-Steuerung auf das Bang-Bang-Verfahren (An-Aus-An-Aus…) umgestellt werden.

Die vorhandene Einstellung nutzt die PID-Steuerung, um per PWM die Temperatur konstant zu halten.

Die Einstellungen müssen wie folgt geändert werden:

Damit wird die PID-gesteuerte PWM abgeschaltet und die Steuerung der Druckbetttemperatur erfolgt durch An- und Ausschalten der Stromzufuhr mit einer Hysterese. Dadurch betragen die Regelungsschwankungen der Druckbetttemperatur etwa 2 bis 4 Grad. Das ist zwar nicht so schön wie bei der PID-Regelung, aber unkritisch.

Ich rate davon ab, die PID-Steuerung zu versuchen. Dabei kann man den Treiber auf dem Mainboard u.U. thermisch zerstören. Und der ist nicht einfach austauschbar.

Damit ist die Anpassung der Config.h für die erste Erzeugung der Marlin-Firmware abgeschlossen.

  • Nun sollte noch eine Änderung in der Config_adv.h vorgenommen werden. Zur Einstellung des Probe-Z-Offsets (Z-Abstand zwischen dem Trigger-Punkt des Bed-Level-Sensors und der Nozzle-Spitze; immer eine negative Zahl, da der Triggerpunkt ja erreicht wird, bevor die Nozzle das Bett berührt) gibt es den aus dem LCD-Menu anwählbaren Probe-Offset-Wizard. Der Startpunkt, von dem aus die Einstellung erfolgt, soll eigentlich so gewählt werden, dass er knapp oberhalb des zu erwartenden Offsets liegt. Um sicher zu verhindern, dass bei Nutzung des Wizards die Nozzle zu Anfang in das Druckbett fährt, wähle ich dort aber einen Offset der deutlich oberhalb dessen liegt (1mm oberhalb des Triggerpunktes des Sensors).

Mit der Nutzung des Wizards habe ich allerdings keine guten Erfahrungen gemacht, weshalb ich ihn nicht verwende. Wie ich den Offset zwischen Nozzle und dem Triggerpunkt des Sensors einstelle (Probe Z Offset), beschreibe ich am Ende dieser Anleitung.

Weitere Änderungen in der Config_adv.h sind nicht notwendig.

  • Jetzt kann die Firmware kompiliert werden. Dazu klickt man auf den kleinen Haken unten links am Rand des Visual Studio Code-Fensters. Wenn man die Maus darauf bewegt erscheint der Text PlatformIO: Build. Die Kompilierung erfordert je nach Rechner einige Zeit.

Im Terminal-Fenster sollte dann die Erfolgsmeldung erscheinen:

Das Ergebnis ist eine Datei mit dem Namen firmware.srec in dem Unterverzeichnis
.pio\build\ET4 des Verzeichnisses, in dem die Dateien aus Github liegen.

Diese Datei muss nun aus dem Dateisystem auf eine Micro-SD-Karte kopiert werden.

Leider kann der Anet Et4/ET5 Drucker zu diesem Zeitpunkt noch nichts mit der Datei auf der Micro-SD-Karte anfangen. Dazu benötigt er den OpenBLT-Bootloader.

Seine Installation ist nun der nächste Schritt.

In-Circuit-Programmierung des Boot-Loaders

Hier erst nochmal die Warnung:
Die nun folgenden Schritte zur In-Circuit-Programmierung des Bootloaders erfordern die Arbeit am geöffneten Gehäuse des ET4/ET5 3D-Druckers. Dabei liegen Kontakte offen, die Netzspannung führen. Diese Arbeit darf nur von im Umgang mit Netzspannungen ausgebildeten Personen unter Wahrung aller Sicherheitsvorkehrungen (Trenntrafo) ausgeführt werden!

Vorausgesetzt wird, dass die Programmiersoftware für die STM32-Microcontroller (ST-Link Utilty) und die Treiber für den ST-Link V2 Programmieradapter auf dem PC installiert sind und der Programmieradapter im Windows Geräte-Manager ohne Fehlermeldung angezeigt wird (s.o.).

Dann geht es los:

  • Filament entladen
  • Drucker ausschalten und Netzstecker ziehen
  • Filament-Halter abschrauben (Plastik-Rohr, damit es nicht abbricht)
  • Glas-Druckbett entfernen
  • Drucker vorsichtig auf die rechte Seite – das ist die ohne den Kaltgeräteanschluss – legen (Schaumstoff oder eine Decke zum Schutz darunterlegen)
  • Bodenplatte lösen – die kleinen Schräubchen herausdrehen und dann die Füße entfernen – und abnehmen

Jetzt ist das Mainboard zugänglich. Leider liegen auch die Netzstromanschlüsse des Netzteils offen. Bitte die Warnung am Anfang dieses Kapitels beachten!

Nun muss der ST-Link/V2 Programmieradapter mit dem Mainboard des ET4/ET5 verbunden werden.

Auf dem Mainboard befindet sich neben dem Prozessor eine einreihige 4-polige Pfostenleiste, deren Pin oben mit U und der Pin unten mit G beschriftet ist:

Die dazwischen liegenden Pins sind der Daten- und der Takt-Anschluss (Data und Clock). Mit Ausnahme des Pins U müssen diese mit dem Programmieradapter verbunden werden:

Der Masse-Anschluss G heißt bei den meisten Programmieradaptern GND (Ground). Data wird meist mit SWDIO und Clock mit SWCLK bezeichnet.

Auf der Webseite https://stm32-base.org/guides/connecting-your-debugger sind die Anschlussschemata vieler gebräuchlicher Programmieradapter beschrieben.

Jetzt wird der eigene Adapter wie in den folgenden Bildern zu sehen angeschlossen.

Die Verkabelung sollte mehrfach überprüft werden. Insbesondere der Anschluss von stromführenden Pins des Programmieradapters (3,3 Volt und 5 Volt) an das Mainboard ist i.d.R. das Ende des Mainboards.

Als Nächstes wird der Adapter mit Hilfe des USB-Verlängerungskabels mit einem USB-Anschluss des PCs verbunden.

Nun wird der Netzstecker des Druckers wieder eingesteckt (siehe Warnungen, die Nutzung eines Trenntrafos ist obligatorisch) und der Drucker eingeschaltet.

Anschließend wird die ST-Link Utility Software gestartet. Um gleich den ganzen Speicher des Microcontrollers auslesen zu können, wird jetzt die Größe des anzuzeigenden Speicherbereich auf 1 Mbyte gesetzt (0x100000 = 1.048.576 Bytes = 1 MB).

Jetzt kann man die Software die Verbindung zu dem Microcontroller auf dem ET4/ET5 Mainboard herstellen lassen. Das erfolgt durch die Auswahl Target – Connect

Die kleine rote LED oberhalb des Microcontrollers hört auf zu blinken und leuchtet nun konstant. Die aktive Verbindung führt zu der folgenden Anzeige:

David Terán empfiehlt die Sicherung des Speichers bis zur Adresse 0x08010000 also die ersten 0x10000 Bytes = 64 kB, um im Zweifel den Anet-Bootloader wieder herstellen zu können. Da ich keine Quelle für die Anet Firmware des ET5 Pro gefunden habe, habe ich den ganzen Speicher gesichert, d.h. den Speicher von 0x08000000 bis 0x080FFFFF mit einer Größe von 0x100000 Bytes = 1 MB.

Anmerkung: Man kann auch die Hex-Anzeige durchscrollen und feststellen, bis wohin der Speicher Daten enthält – das geht bis etwa 0x0808EAFF – und nur diesen Speicherbereich sichern. Dann muss man das Feld Size entsprechend anpassen, z.B. auf 0x90000.

Die Sicherung wird dann mit Hilfe von File – Save file as ausgeführt.

Nun kann der neue Boot-Loader auf den Microcontroller geladen werden. Dazu wird die zuvor heruntergeladene (s.o.) Datei openblt_et4.bin (der Boot-Loader für ET4/ET5 von David Terán) im ST-Link Utility geöffnet (File – Open File).

Der Inhalt der Datei wird in einem neuen Fenster angezeigt.

Nun gibt es kein Zurück mehr 😉. Mit Target – Program & Verify wird die Programmierung gestartet.

Man hat aber noch einmal die Möglichkeit zu prüfen, ob man die richtige Datei ausgewählt hat.

Mit Start geht es los. Im Terminal-Fenster des ST-Link Utility erscheint nach kurzer Zeit hoffentlich die Erfolgsmeldung.

Nun wird das ST-Link Utility geschlossen und der Programmieradapter vom USB-Anschluss des PCs getrennt. Danach wird der Drucker ausgeschaltet und der Programmieradapter vom Mainboard abgesteckt.

Wird der Drucker jetzt wieder angeschaltet, erscheint das OpenBLT-Logo zusammen mit einer Fehlermeldung auf dem Bildschirm. Die Fehlermeldung besagt, dass OpenBLT keine Firmware findet.

Installation von Marlin

Nun schaltet man den Drucker wieder aus und steckt die Micro-SD-Karte mit der zuvor erzeugten Marlin-Firmware in den Drucker. Beim erneuten Einschalten installiert OpenBLT nun die Marlin-Firmware und startet den Drucker anschließend mit dieser.

 

Nachdem Marlin nun (hoffentlich) läuft, kommen wir zu den unbedingt notwendigen Nacharbeiten.

Inbetriebnahme

Initialisierung des EEPROMS und Einstellung des Probe-Z-Offsets

Da die Marlin Software mit den alten Inhalten des EEPROMS auf dem Mainboard nichts anfangen kann, muss das EEPROM initialisiert werden. Das geschieht mit G-Code-Kommandos, die mit Hilfe eines 3D-Drucker-Terminal-Programms an den Drucker gesendet werden.

Dazu wird ein PC per USB an den ET4/ET5 Drucker angeschlossen. Um die Verbindung zum Drucker herstellen zu können muss der USB-Seriell-Treiber für den im ET4/ET5 verbauten USB-Seriell-Wandler CH340 installiert sein. Falls das nicht bereits der Fall ist, erhält man den Treiber am besten vom Hersteller dieser Chips: http://www.wch-ic.com/search?q=CH340&t=downloads

Ob der Treiber korrekt installiert und der Drucker erkannt wird, kann man nach Herstellung der USB-Verbindung zwischen dem Drucker und dem PC im Gerätemanager nachschauen:

Auf dem PC, von dem der Screen-Print stammt, hat der Drucker den Port COM4 erhalten. Dieser muss dann im Terminal-Programm ausgewählt werden.

Als Terminal-Programm verwende ich Pronterface (https://www.pronterface.com). Es gibt auch Alternativen, wie z. B. MatterControl, OctoPrint u. W.

Wenn man die Verbindung zum Drucker hergestellt hat (250000 Baud und der richtige COM-Port), kann man den Drucker per G-Code steuern.

Wenn nun das Terminal verbunden ist, kann man beginnen.

Das EEPROM wird jetzt mit den folgenden beiden Kommandos initialisiert:

M502
M500

Mit den geöffneten Terminal-Programm bestimmt man nun noch den Abstand vom Trigger-Punkt des Bed-Level-Sensors zur Nozzle-Spitze in Z-Richtung und stellt mit dem ermittelten Wert den Probe-Z-Offset in der Marlin-Firmware ein.
Das ist auch per Touchscreen und dem Probe-Offset-Wizard möglich. Besser funktioniert m.E. aber die Einstellung per Terminal mit G-Code-Kommandos.

Zu Anfang muss das Druckbett und die Nozzle auf die zumeist benutzten Temperaturen vorgeheizt werden (bei mir sind das 205 und 60 Grad). Durch die thermische Ausdehnung unterscheiden sich Messungen bei kaltem Druckbett und kalter Nozzle deutlich von der Realität während des Druckes!

Die Marlin Sofware schaltet die Heizung des Hotends nach einer gewissen Zeit aus, wenn nicht gedruckt wird (Hotend Idle Timeout). Das ist normal und man sollte sich nicht davon unter Zeitdruck setzten lassen!

G28 ;Home alle Achsen

M851 Z0 ;Reset Z0 Offset

M500 ;die aktuellen Settings speichern

M501 ;… und aktivieren

G28 Z ;nochmaliges Homing der Z-Achse Axis

G1 F60 Z0 ;Nozzle zum wahren (von der Probe bestimmten) Z0 Offset bewegen

M211 S0 ;den Software Endstop abschalten, da man sonst die Nozzle nicht weiter
in Richtung Druckbett bewegen kann.

Jetzt kommt das, was man schon x-mal gemacht hat: Ein Blatt Papier (normales Druckerpapier 80 g) unter die Nozzle legen und die Nozzle mit Hilfe der Achsensteuerung im Terminal Programm vorsichtig in Richtung Druckbett bewegen (das geht im Terminals-Programm sehr viel besser als mit dem Touchscreen, bei dem man schnell die Nozzle in das Druckbett rammt!), bis das Papier nur noch mit Widerstand bewegt werden kann. Im Display des Druckers sieht man jetzt den eingestellten Offset.

Nun soll man zu diesem angezeigten Offset noch die Dicke des Papiers hinzuzählen (also -0,1 mm), so dass hier der Probe-Z-Offset -1,7 mm wäre. Nach meiner Erfahrung ist das aber „too much“. Ich benutze daher erst einmal den angezeigten Offset. Beim nächsten Druck bestimme ich mit Hilfe eines Messschiebers die durchschnittliche Dicke des gedruckten Skirts, die mit dem Wert der im Slicer eingestellten Dicke der ersten Schicht einigermaßen übereinstimmen sollte und korrigiere den Offset dann noch einmal entsprechend.

Nun muss man den ermittelten Wert speichern und aktivieren.

M851 Z X.XX ;(X.XX wäre in dem obigen Beispiel -1.6)

M211 S1 ;den Software Endstop wieder aktivieren

M500 ;die Werte permanent speichern

M501 ;… und aktivieren

Die Einstellung des Probe-Z-Offset ist damit abgeschlossen.

Jetzt sollte man noch die Ecken des Druckbetts mit Hilfe des LCD-Menus leveln. Auch das Auto-Bed-Leveling ist über das Menu ansteuerbar. Es ist aber sinnvoll, noch den folgenden Code in den Startcode des Slicer mit aufzunehmen, um das Auto-Bed-Leveling vor jedem Druck automatisch ausführen zu lassen:

G28 ;Home
G29 ;
Auto-Bed-Leveling

M500 ;die ermittelte Korrektur-Matrix speichern

Wer es eilig hat (und knapp 2 Minuten sparen möchte), kann auch einfach nur das Auto-Bed-Leveling einschalten und die zuvor ermittelte Matrix laden:

M420 S1 ; Auto-Bed-leveling einschalten und gespeicherte Matrix laden

Aber Eile und 3D-Druck passen ja nicht so richtig zusammen 😉.

PID-Tuning des Hotends

Marlin bietet die Möglichkeit den Regelkreis für die Temperatursteuerung des Hotends zu tunen. Das Ganze nennt sich PID-Tuning. Bei PID (proportional–integral–derivative) handelt es sich um ein mathematisches Verfahren zur Erstellung von stabilen und genauen Regelkreisen. Glücklicherweise erledigt Marlin die Mathematik und Bestimmung der benötigten Werte selbst, wenn man den entsprechenden Befehl gibt.

Im Terminal weist man Marlin an, die Werte für das Hotend für eine bestimmte Temperatur zu ermitteln. Für die Temperatur 205 Grad würden die Kommandos wie folgt lauten:

M106 E0 S255 ; Lüfter mit 100% starten

M303 E0 S205 C8 ; PID-Tuning durchführen

Es wird mit E0 der erste Extruder angesteuert, mit S205 die Zieltemperatur gesetzt und mit C8 Marlin angewiesen, die Messung 8 mal (das ist Standard) zu wiederholen und den Mittelwert aus diesen Messungen zu ermitteln.

Das sieht dann so aus:

Zum Schluss zeigt Marlin die ermittelten Werte an. Die #define-Statements könnte man so an die entsprechende Stelle in die Config.h eintragen und so fest in der Firmware verankern.

Üblich ist es aber, die Werte im Permanent-Speicher des Druckers abzulegen. Für die oben angezeigten Werte sieht das dann so aus:

M301 P24.28 I1.96 D75.02

M500 ;speichern

M501 ;und aktivieren

Wenn man regelmäßig mit stark unterschiedlichen Temperaturen druckt, sollte man das PID-Tuning für diese Hotend-Temperaturen durchführen und die G-Code-Kommandos in die Start-Codes der entsprechenden Slicer-Profile aufnehmen.

Die Wiederholgenauigkeit des Tunings ist beim Standard-Hotend meines ET5 Pro nicht sonderlich hoch, die Hotend-Temperatur wird von Marlin aber dennoch sehr konstant gehalten.

Das PID-Tuning des Druckbettes ist bei meinem Drucker nicht möglich, da die Treiber auf dem Mainboard die PWM-Ansteuerung der Bettheizung nicht schaffen (s.o.).

Weitere Schritte

David Terán empfiehlt noch die Kalibrierung aller Achsen des Druckers. Ich verweise auf seine Kommentare in der EasyConfig.h im Punkt 3.

Bei meinen ET5 Pro waren die Abweichungen aber innerhalb der Messtoleranzen. Der größere Teil von Abweichungen in der Maßhaltigkeit entsteht wohl aus dem Material-Fluss. Da experimentiere ich aber noch.

Die Korrektur einer 4%-Abweichung des Extruder-Vorschubs hat meine Druckergebnisse sogar verschlechtert, so dass ich jetzt wieder die Standardwerte verwende.

Viel Erfolg beim 3D-Druck mit Marlin!

Diese Quellen haben mir neben vielen anderen bei der Installation von Marlin auf meinem ET5 Pro geholfen:

Erst einmal natürlich David Terán:

https://github.com/davidtgbe/Marlin

Dr Vax auf Youtube

Marlin 2.0 Build and Install | ANET ET4/5 | Ender 3 V2

PID-Tuning

https://drucktipps3d.de/pid-tuning-stabile-temperaturen-fuer-den-drucker/

Rechtliches:

Dieser Text wurde von Ulrich Meyer-Ciolek erstellt. Für die Bilder und Screenprints wurden keine fremden Quellen genutzt. Genannte Markennamen und etwaig sichtbare Warenzeichen sind Eigentum ihrer jeweiligen Rechteinhaber und werden hier nur beschreibend verwendet.

Dieser Text steht unter der CC-BY-4.0 Lizenz: https://creativecommons.org/licenses/by/4.0/deed.de

 
Creative Commons Lizenzvertrag
Dieses Werk ist lizenziert unter einer Creative Commons Namensnennung 4.0 International Lizenz.