Installation de Marlin sur Anet ET5 Pro (série ET4/ET5)

FunduinoDernière mise à jour le

Vom Anet-Bootloader zur offenen Firmware

Wer seinen Anet ET4 oder ET5 auf Marlin umrüstet, tauscht die geschlossene Werksfirmware gegen den Standard der 3D-Druck-Szene: frei konfigurierbar, gut dokumentiert und mit breiter Unterstützung im Netz.

Der Weg dorthin führt über vier Etappen: die Entwicklungsumgebung einrichten, die Firmware an den eigenen Drucker anpassen und kompilieren, einmalig einen neuen Bootloader per ST-Link in das geöffnete Gerät schreiben und den Drucker danach neu einmessen.

Das ist kein Nachmittagsprojekt. Die Garantie erlischt, das Mainboard kann dabei zerstört werden, und die In-Circuit-Programmierung findet am geöffneten Gerät neben offenen Netzspannungskontakten statt.

Display des Druckers beim Start mit OpenBLT
OpenBLT installiert die Firmware

Bevor du anfängst

Diese Anleitung richtet sich an Maker, die einen Anet ET4 oder ET5 auf die Marlin-Firmware umrüsten wollen. Lies die folgenden Punkte, bevor du loslegst:

  • Die Garantie für den 3D-Drucker erlischt mit der Umrüstung.
  • Hilfe bei Problemen gibt es reichlich im Internet – aber nur auf Englisch.
  • Erfahrung mit elektronischen Schaltungen wird vorausgesetzt, ebenso eine Vorstellung von Entwicklungsumgebungen und vom Programmiertool für STM32-Mikrocontroller.
  • Eine fehlerhafte Umrüstung kann das Mainboard unbrauchbar machen.
  • Die Umrüstung erfolgt auf eigene Gefahr.

Arbeit an Netzspannung: Die einmalige In-Circuit-Programmierung des Bootloaders erfordert das geöffnete Gehäuse. 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.

Was die Umrüstung bringt – und was sie kostet

Vorteile:

  • Standard-Firmware mit breiter Unterstützung im Internet
  • Spätere Firmware-Updates laufen bequem über die SD-Karte, die aufwendige In-Circuit-Programmierung fällt nur einmal an
  • Betriebsparameter lassen sich weit einstellen, andere Hardware wie Extruder oder Bed-Level-Sensor ist leichter einsetzbar
  • Ein BLTouch-Abstandssensor wird möglich

Nachteile:

  • Die Bedienung per Touchscreen wird fummeliger – ein Touchstift hilft, alternativ steuerst du den Drucker per USB über Pronterface, OctoPrint oder ähnliches
  • Bekannter Fehler dieser Marlin-Version: Nach dem Laden oder Wechseln von Filament musst du den Drucker aus- und wieder einschalten, sonst werden Bett- und Extruderheizung nicht mehr angesteuert
  • Um wirklich etwas davon zu haben, musst du dich anschließend in die Parameter von Marlin einarbeiten

Die Anleitung stammt von Ulrich Meyer-Ciolek und steht unter der CC-BY-4.0-Lizenz. Die Anpassung von Marlin an die ET4/ET5-Serie hat David Terán gemacht und auf GitHub veröffentlicht.

Was du brauchst

  • Einen 3D-Drucker der Anet-ET4/ET5-Serie
  • Einen Windows-PC – das Erstellen der Firmware geht auch am Mac, die In-Circuit-Programmierung dort aber nur mit Mühe und ist hier nicht beschrieben
  • Internetzugang für die Downloads
  • Einen In-Circuit-Programmieradapter für STM32, Suchbegriff ST-Link V2
  • Ein USB2-Verlängerungskabel, Stecker A auf Buchse A
  • Inbusschlüssel 2 mm und 3 mm – der 3-mm-Schlüssel liegt dem Drucker bei

Stelle den kapazitiven Bed-Level-Sensor schon vor der Umrüstung korrekt ein. Das erleichtert dir später die Einstellung des Probe-Z-Offsets.

Visual Studio Code und PlatformIO installieren

Die Firmware wird mit der kostenlosen IDE Visual Studio Code von Microsoft erzeugt. Installiere sie auf die übliche Weise.

Danach kommen zwei Erweiterungen dazu. Klicke unten links auf das Zahnrad, wechsle in die Extensions und installiere nacheinander:

  • PlatformIO – erzeugt Programme für den im ET4/ET5 verbauten Prozessor
  • Auto Build Marlin – die Marlin-spezifische Erweiterung
Zahnrad-Symbol für die Extensions-Verwaltung in Visual Studio Code
Über das Zahnrad zu den Extensions
Suchergebnis PlatformIO in der Extension-Verwaltung
Die Erweiterung PlatformIO installieren
Suchergebnis Auto Build Marlin in der Extension-Verwaltung
Die Erweiterung Auto Build Marlin installieren
1 / 3

Die ST-Link Utility installieren

Die Software für den Programmieradapter stellt STMicroelectronics kostenlos bereit – allerdings erst nach Eingabe von Name und gültiger Mailadresse, an die der Downloadlink geht.

Bei der Installation musst du den USB-Treiber für den Programmieradapter zulassen. Stecke den Adapter danach in den PC und starte die ST-Link Utility. Unter Target → Settings siehst du, ob der Adapter erkannt wurde. Erscheint dort eine Fehlermeldung, geht es an die Fehlersuche.

Hauptfenster der ST-Link Utility Software
Die ST-Link Utility

Bootloader und Marlin herunterladen

Zwei Downloads sind nötig:

  • Den von David Terán angepassten OpenBLT-Bootloader. Wenn du ihn nicht selbst kompilieren willst, reicht die Datei openblt_et4.bin – sie passt zu allen ET4- und ET5-Druckern.
  • Die angepasste Marlin-Firmware von seiner GitHub-Seite, über Code → Download ZIP.

Entpacke das Marlin-Archiv in ein Verzeichnis deiner Wahl – dort finden alle weiteren Arbeiten statt. Öffne dieses Verzeichnis anschließend in Visual Studio Code.

GitHub-Seite des Marlin-Forks von David Terán
Marlin per Code → Download ZIP holen
Dialog zum Öffnen eines Verzeichnisses in Visual Studio Code
Das entpackte Verzeichnis öffnen
1 / 2

Marlin an den eigenen Drucker anpassen

David Terán hat vorgearbeitet, es bleiben wenige Änderungen:

  • platformio.ini – ganz unten in der Verzeichnisanzeige. Suche mit Strg+F nach ET4 und entferne das Kommentarzeichen vor #board_build.offset = 0x10000. Damit rückt die Firmware im Speicher nach hinten und überschreibt den Bootloader nicht.
  • EasyConfig.h im Unterverzeichnis Marlin – trage hinter #define ET_MODEL dein Druckermodell ein. Gültig sind ET_MODEL_ET4, ET_MODEL_ET4_PLUS, ET_MODEL_ET4X, ET_MODEL_ET4_PRO, ET_MODEL_ET5, ET_MODEL_ET5X und ET_MODEL_ET5_PRO. Etwas weiter unten kannst du einen Namen eintragen, der beim Start auf dem Display erscheint.
  • Configuration.h – hier machst du aus //#define ET_EASY_CONFIG ein #define ET_EASY_CONFIG. Außerdem trägst du den Offset zwischen Bed-Level-Sensor und Düse ein: beim ET5 Pro mit Standardsensor #define NOZZLE_TO_PROBE_OFFSET { -25, -8.5, 0 }. Der Z-Wert bleibt 0, den stellst du später anders ein.
  • Configuration_adv.h – setze den Startwert des Probe-Offset-Wizards so, dass die Düse beim Start sicher oberhalb des Betts bleibt.

Das # in einer C-Headerdatei ist kein Kommentarzeichen, sondern leitet eine Präprozessor-Anweisung ein – also nicht entfernen. Kommentare beginnen in C mit //.

Setze hinter jede geänderte Zeile einen Marker als Kommentar, etwa // Funduino 01.04.2021. Dann findest du deine Änderungen später mit der Suche wieder.

Datei platformio.ini in der Verzeichnisanzeige von Visual Studio Code
platformio.ini steht ganz unten
Eintrag board_build.offset in der Datei platformio.ini
Das Kommentarzeichen vor board_build.offset entfernen
Zeile mit dem Define ET_EASY_CONFIG im Editor
ET_EASY_CONFIG aktivieren
Parameter NOZZLE_TO_PROBE_OFFSET im Editor
Der Offset zwischen Sensor und Düse
1 / 4

Die Druckbettheizung auf Bang-Bang umstellen

Beim ET5 Pro des Autors funktioniert die PWM-Ansteuerung der Druckbettheizung nicht – der Treiber auf dem Mainboard scheint dafür nicht ausgelegt. Schaltpläne des Mainboards gibt es nicht, also bleibt nur der Umstieg von der PID-Regelung auf das Bang-Bang-Verfahren: ein einfaches An-Aus mit Hysterese.

Die Temperatur schwankt dann um etwa 2 bis 4 Grad. Das ist unschöner als eine PID-Regelung, aber unkritisch.

Versuche nicht, die PID-Steuerung des Betts zu erzwingen. Der Treiber auf dem Mainboard kann dabei thermisch zerstört werden, und er lässt sich nicht einfach tauschen.

Ursprüngliche PID-Einstellungen für die Druckbettheizung
Vorher: PID-geregelte PWM
Geänderte Einstellungen für die Bang-Bang-Regelung
Nachher: Bang-Bang-Regelung
1 / 2

Die Firmware kompilieren

Klicke unten links am Rand des Fensters auf den kleinen Haken – der Tooltip zeigt PlatformIO: Build. Je nach Rechner dauert der Vorgang eine Weile.

Im Terminalfenster erscheint danach die Erfolgsmeldung. Das Ergebnis ist die Datei firmware.srec im Unterverzeichnis .pio\build\ET4. Kopiere sie auf eine Micro-SD-Karte.

Anfangen kann der Drucker damit allerdings noch nichts – dafür fehlt ihm der OpenBLT-Bootloader.

Erfolgsmeldung des Build-Vorgangs im Terminalfenster
Die Firmware wurde erfolgreich erzeugt

Den Bootloader per ST-Link schreiben

So bereitest du den Drucker vor: Filament entladen, Drucker ausschalten und Netzstecker ziehen, Filamenthalter abschrauben, Glasbett abnehmen, den Drucker vorsichtig auf die rechte Seite legen – die ohne Kaltgeräteanschluss – und die Bodenplatte lösen.

Neben dem Prozessor sitzt eine einreihige vierpolige Pfostenleiste. Der oberste Pin ist mit U beschriftet, der unterste mit G. Dazwischen liegen Data und Clock. Verbinde alle außer U mit dem Adapter: G an GND, Data an SWDIO, Clock an SWCLK.

Danach den Adapter per USB-Verlängerung an den PC, Netzstecker des Druckers einstecken und den Drucker einschalten.

In der ST-Link Utility setzt du die Größe des Speicherbereichs auf 0x100000, verbindest dich über Target → Connect und sicherst den vorhandenen Speicher über File → Save file as. Dann öffnest du openblt_et4.bin und startest mit Target → Program & Verify.

Prüfe die Verkabelung mehrfach. Ein stromführender Pin des Programmieradapters – 3,3 V oder 5 V – am Mainboard bedeutet in aller Regel das Ende des Mainboards.

Vierpolige Pfostenleiste neben dem Prozessor auf dem Mainboard
Die Programmierschnittstelle auf dem Mainboard
ST-Link V2 Adapter mit dem Mainboard verbunden
So wird der Adapter angeschlossen
Erfolgsmeldung nach dem Programmieren des Bootloaders
Der Bootloader ist geschrieben
1 / 3

Marlin installieren

Schließe die ST-Link Utility, ziehe den Adapter vom PC ab, schalte den Drucker aus und stecke den Adapter vom Mainboard ab.

Beim nächsten Einschalten zeigt der Drucker das OpenBLT-Logo und eine Fehlermeldung: Es findet keine Firmware. Schalte ihn wieder aus, stecke die Micro-SD-Karte mit firmware.srec hinein und schalte ein. OpenBLT installiert die Firmware und startet den Drucker damit.

Display des Druckers beim Start mit OpenBLT
OpenBLT installiert die Firmware

Das EEPROM initialisieren

Mit den alten EEPROM-Inhalten kann Marlin nichts anfangen, das EEPROM muss zurückgesetzt werden. Dazu schickst du G-Code über ein Terminalprogramm an den Drucker.

Verbinde den PC per USB mit dem Drucker. Der verbaute USB-Seriell-Wandler ist ein CH340; den Treiber bekommst du beim Hersteller WCH. Im Gerätemanager siehst du, welchen COM-Port der Drucker bekommen hat.

Als Terminalprogramm eignet sich Pronterface, alternativ MatterControl oder OctoPrint. Verbinde dich mit 250000 Baud und dem richtigen COM-Port.

Terminalprogramm Pronterface mit hergestellter Druckerverbindung
Pronterface mit 250000 Baud verbunden
EEPROM initialisieren
M502   ; Werkseinstellungen laden
M500   ; Einstellungen dauerhaft speichern

Den Probe-Z-Offset einstellen

Der Probe-Z-Offset ist der Abstand zwischen dem Auslösepunkt des Bed-Level-Sensors und der Düsenspitze. Er ist immer negativ, weil der Sensor auslöst, bevor die Düse das Bett berührt.

Heize zuerst vor – Bett und Düse auf die Temperaturen, mit denen du üblicherweise druckst, etwa 60 und 205 Grad. Kalt gemessene Werte weichen durch die Wärmeausdehnung deutlich ab.

Nach den vorbereitenden Kommandos schiebst du ein Blatt normales Druckerpapier unter die Düse und fährst die Düse über die Achsensteuerung des Terminalprogramms vorsichtig nach unten, bis sich das Papier nur noch mit Widerstand bewegen lässt. Den im Display angezeigten Offset speicherst du dann ab.

Marlin schaltet die Hotend-Heizung nach einer Weile ohne Druckauftrag ab – das ist normal und kein Grund zur Eile.

Feinjustieren lässt sich der Wert beim nächsten Druck: Miss die Dicke des gedruckten Skirts mit dem Messschieber und vergleiche sie mit der im Slicer eingestellten ersten Schichthöhe.

Blatt Papier zwischen Düse und Druckbett, Offset im Display
Den Z-Offset mit einem Blatt Papier bestimmen
Messung des Probe-Z-Offsets vorbereiten
G28        ; Home alle Achsen
M851 Z0    ; Reset Z0 Offset
M500       ; die aktuellen Settings speichern
M501       ; … und aktivieren
G28 Z      ; nochmaliges Homing der Z-Achse
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
Ermittelten Probe-Z-Offset speichern
M851 Z X.XX  ; X.XX wäre in dem Beispiel der Anleitung -1.6
M211 S1      ; den Software Endstop wieder aktivieren
M500         ; die Werte permanent speichern
M501         ; … und aktivieren

Auto-Bed-Leveling einrichten

Level zunächst die Ecken des Druckbetts über das LCD-Menü. Danach lohnt es sich, das Auto-Bed-Leveling in den Startcode deines Slicers aufzunehmen, damit es vor jedem Druck läuft.

Wer die knapp zwei Minuten sparen will, lädt stattdessen die einmal ermittelte Korrekturmatrix.

Auto-Bed-Leveling im Startcode des Slicers
G28   ; Home
G29   ; Auto-Bed-Leveling
M500  ; die ermittelte Korrektur-Matrix speichern

; Alternative, wenn die Matrix bereits gespeichert ist:
M420 S1  ; Auto-Bed-Leveling einschalten und gespeicherte Matrix laden

PID-Tuning des Hotends

Marlin kann den Regelkreis für die Hotend-Temperatur selbst ausmessen. Beim PID-Tuning ermittelt es die Parameter für ein stabiles Regelverhalten – die Mathematik übernimmt die Firmware.

Du gibst die Zieltemperatur vor und die Zahl der Messzyklen. Am Ende zeigt Marlin die ermittelten Werte an. Du könntest sie fest in die Configuration.h eintragen; üblicher ist es, sie im Permanentspeicher des Druckers abzulegen.

Wenn du regelmäßig mit stark unterschiedlichen Temperaturen druckst, führe das Tuning für jede davon durch und nimm die Kommandos in die Startcodes der jeweiligen Slicer-Profile auf.

Das PID-Tuning des Druckbetts ist bei diesem Drucker nicht möglich, weil der Treiber auf dem Mainboard die PWM-Ansteuerung nicht schafft.

Ablauf des PID-Tunings im Terminalfenster
PID-Tuning des Hotends
PID-Tuning des Hotends für 205 Grad
M106 E0 S255     ; Lüfter mit 100% starten
M303 E0 S205 C8  ; PID-Tuning durchführen, 8 Messzyklen

; Die von Marlin ermittelten Werte anschließend speichern,
; hier am Beispiel der Werte aus der Anleitung:
M301 P24.28 I1.96 D75.02
M500  ; speichern
M501  ; und aktivieren
Évaluer le guide

Commentaires

Poser une question ou partager une expérience

Écris-nous si quelque chose ne fonctionne pas. Indique-nous ton modèle de carte et le message d’erreur.

Nous vérifions chaque commentaire avant sa publication. Ton adresse e-mail reste chez nous.