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.