Zum Hauptinhalt springen
Kostenfreier Versand ab 150€
>6 Jahre Expertise im 3D-Druck
Eigene Fertigung in Deutschland

Marlin Auto Bed Leveling mit UBL

Wenn es um 3D-Druck geht, ist es unerlässlich, dass das Druckbett in einer möglichst ebenen und planen Position gehalten wird, damit der Drucker die Schichten des Modells präzise und gleichmäßig auftragen kann. Hier kommt das sogenannte Bed Leveling ins Spiel, eine Methode, die sicherstellt, dass das Druckbett auf einer einheitlichen Ebene liegt, unabhängig von möglichen Abweichungen oder Unebenheiten.

In der Vergangenheit gab es zwei Hauptmethoden für das Bed Leveling: das manuelle Leveling, bei dem das Bett durch Einstellen von Schrauben ausgerichtet wird, oder das automatische Leveling, das den Prozess durch die Verwendung von Sensoren erleichtert. Eine der am häufigsten verwendeten automatischen Methoden war das sogenannte Mesh-Leveling, das jedoch jetzt durch eine verbesserte Methode namens Unified Bed Leveling (UBL) abgelöst wird.

Unified Bed Leveling - oder kurz UBL - ist die nächste Generation des Mesh-Levelings in der Marlin Firmware für 3D Drucker. Ich schaue mir heute an, was UBL ausmacht und wie man es einrichtet, denn umfangreiche Dokus sind derzeit noch rar und wenn man sie findet, dann auf Englisch.

Was ist Unified Bed Leveling

Zuerst vielleicht die Frage: Was ist überhaupt Auto Bed Leveling oder Mesh-Leveling? Kurz gesagt: Es sind Methoden, die den Nutzer dabei unterstützen über des gesamte Druckbett hinweg einen möglichst gleichen Abstand zwischen Nozzle und Druckbett zu erhalten, für gleichmäßige und gut haftende erste Layer. Die klassische Methode ist ein manuelles Leveling, bei dem in der Regel das Bett mit Hilfe von Schrauben ausgerichtet wird. Leider kann es - insbesondere bei günstigen Druckern - immer wieder vorkommen, dass die Druckoberfläche nicht 100% plan ist und z.B. in der Mitte leicht durchhängt. Das lässt sich manuell kaum kompensieren. Auto Bed Leveling kann solche Abweichungen messen und den Drucker entsprechend darauf reagieren lassen, indem die Nozzle automatisch abgesenkt oder angehoben wird.

Voraussetzung ist natürlich irgendeine Form von Sensor, mit dem die Messung erfolgen kann. Die beliebtesten sind wohl induktive Sensoren, kapazitive Sensoren oder elektromechanische Lösungen, wie der BLTouch, den ich auch an meinem Tornado verbaut habe. Tom hat mal einen sehenswerten Vergleich der Leveling Sensoren gemacht.

In der offiziellen Marlin Doku wird UBL beschrieben als a superset of the previous leveling systems, also als eine Übermenge aller bisherigen Leveling Systeme. UBL vereint also die Stärken bisheriger Methoden in einem Paket. Dabei werden insbesondere vier Vorteile besonders hervorgehoben:

  • Optimierte Algorithmen für die Berechnung der Höhenabweichungen über das gesamte Druckbett
  • Die Möglichkeit ein hochaufgelöstes (sprich aus vielen Messpunkten bestehendes) Netz (Mesh) zu messen und fest im Drucker zu speichern, um es bei jedem Druck abzurufen, sowie die Möglichkeit durch eine schnellere Messung an mindestens drei Punkten vor jedem Druck kleine Abweichungen zum gespeicherten Mesh zu berechnen
  • Berücksichtigung des gesamten Druckbetts, indem nicht messbare stellen rechnerisch angeglichen werden
  • Die Möglichkeit das Mesh jederzeit gezielt zu bearbeiten um bestmögliche Ergebnisse zu erzielen

Zusammenfassend kann man sagen, dass man mit UBL in Marlin eine sehr genaue, flexible und zeitsparende Möglichkeit hat, ein automatisches Leveling durchzuführen. Zwar kostet die Einrichtung Zeit, insbesondere wenn dabei viele Punkte gemessen werden, dafür ist vor jedem Druck kein Vermessen des gesamten Betts mehr nötig, wie bei anderen Methoden, die das Bett vor jedem Druck komplett vermessen.

Wie richtet man UBL ein

Um Unified Bed Leveling nutzen zu können, benötigst du eine entsprechen angepasste Firmware, die BLTouch Versionen in meinem Downloadbereich sind alle mit aktiviertem UBL ausgestattet. Wenn du deine Firmware lieber selbst anpasst, würde ich empfehlen auf einer aktuellere Version von Marlin zu setzen, da UBL ein vergleichsweise junges Feature ist und in den letzten Versionen noch einige Bugs behoben wurden.

Ist die Firmware installiert, kann es auch schon an die Einrichtung gehen, der erste und wichtigste Schritt ist dabei das Einmessen des Mesh. Grundsätzlich gibt es dafür zwei Wege zum Ziel: Meine Marlin Versionen haben ein eigenes UBL Menü, das direkt über die Controlbox des Druckers aufgerufen werden kann. Ich muss aber dazu sagen, dass ich dieses Menü nur aus anderen Versionen übernommen und nicht weiter getestet habe. Daher werde ich mich auf Variante 2 konzentrieren und das ist über die Eingabe von Gcode Befehlen, z.B. über OctoPrint, Simplify3D oder Pronterface.

Im ersten Schritt bringen wir Druckbett und Nozzle auf Temperatur, das ist nicht unbedingt notwendig, wird aber empfohlen, weil sich durch die Hitze durchaus kleine Abweichungen in der Länge der Nozzle oder einer Wölbung des Betts ergeben können, die bei einer gewünschten Genauigkeit im Nullkomma-Millimeter-Bereich durchaus etwas ausmachen können. Zudem laufen mit dem heißen Hotend auch die Lüfter in der Controlbox, was vor allen bei Trinamic Treibern, die recht warm werden, wichtig ist.

M190 S60
M104 S200

Der nächste Schritt ist das allgemeine Homing aller Achsen mit G28. Danach folgt das Vermessen des Betts, das kann einige Zeit dauern:

G29 P1
G29 P3 T

Mit dem zweiten Befehl werden die nicht gemessenen Bereiche ausgefüllt. Die Marlin UBL Doku empfiehlt, diesen Befehl mehrfach auszuführen.

Damit ist ein Großteil der Arbeit auch schon erledigt. Es fehlt nur noch das Abspeichern der gerade ermittelten Werte im EEPROM des Druckers.

G29 S0
G29 F 10.0
G29 A
M500

Damit das gespeicherte Mesh bei jedem künftigen Druck verwendet werden kann, muss im Slicer der Start-Gcode angepasst werden. Nach dem G29 J.

Falls beim ersten Druck mit UBL die Nozzle zu hoch oder zu niedrig ist - was bei mir merkwürdigerweise immer der Fall war - kann man das gesamte Mesh verschieben, um den idealen Nullpunkt zu finden:

G29 P6 C +0.1
G29 S0
G29 A
M500

In der ersten Zeile wird einfach der benötigte Wert, um den das Mesh verschoben werden soll eingetragen, im Beispiel sind es +0,1mm. Wichtig ist, dass hier ein Vorzeichen angegeben und anstelle vom Komma ein Punkt verwendet wird. Die übrigen drei Zeilen speichern die neuen Werte wieder ab.

Falls du trotzdem noch Probleme hast, prüfe ob ein Z-Offset eingestellt ist. Ich habe die besten Ergebnisse erzielt, wenn ich den auf 0 setze.

UBL Feintuning

Wer es ganz genau haben will, kann ein spezielles Testmuster drucken lassen, an dem sich Abweichungen auf den einzelnen Messpunkten erkennen lassen. Bisher war das bei mir nicht nötig, da ich auch so schon mit den Ergebnissen sehr zufrieden war.