3D-DIY.de

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 G28 für das Homing wird ein G29 L0 eingefügt. In dieser Einstellung misst der Drucker nur an einem Punkt den Nullpunkt der Z-Achse. Sollen drei Punkte gemessen werden, um das Mesh daraufhin anzupassen, folgt noch ein 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.

War das Tutorial nützlich für dich?

Dir hat das Tutorial gefallen, du konntest es für dich selbst umsetzen oder den entscheidenden Anstoß für dein Projekt mitnehmen? Das freut mich!

Wenn du magst, kannst du dich mit einem Kaffee erkenntlich zeigen.

Kennst du die schon?

74 Kommentare zu „Marlin Auto Bed Leveling mit UBL“

  1. Hallo an Alle,

    da ich kein Facebook oder Insta habe, stelle ich hier die Fragen.
    An welche Pins wurde der BL-Touch beim MKS Gen L angeschlossen?
    Möchte die angebotene Marlin 1.19 mit Standart-Treiber nutzen.
    Foto wäre schön.
    RGB(W) ist die in absehbarer Zeit wieder erhältlich?

    1. Hi,

      leider ist das ganze schon so lange her, dass ich selbst kein Bild mehr vom Anschluss am Gen L habe. Folgendes Bild war das beste, was ich dazu im Netz noch finden konnte: https://external-preview.redd.it/Dpa9om-9lRFFlOhOkwvUi8BqlOpg7NAxjs1nGqGSDBw.jpg?width=640&crop=smart&auto=webp&s=67fc9d401075113a65754972bfe3e71bf9546b7b

      Schwarz und weiß kommen auf den Z-Min Endstopp Anschluss, schwarz in die Mitte, weiß unten. Die drei bunten Kabel kommen auf den Servo-Block, am besten auf der untersten Reihe, von links nach rechts: gelb, rot, braun. Ich hoffe, das hilft dir weiter.

      Wegen des RGBW-Kits: Da die meisten aktuellen Mainboards nicht mehr ausreichend freie PWM-Pins haben und/oder direkt eine Schnittstelle für Beleuchtung mitbringen, habe ich den Verkauf des Kits eingestellt, nachdem das letzte komplette Set weg war. Schreib mir aber gern mal eine Mail oder nutze das Kontaktformular. Ich werde schauen, ob von allen Komponenten noch ausreichend Bestände vorhanden sind, um dir ein komplettes Kit zu packen.

      Viele Grüße
      Kevin

  2. Hallo Kevin,
    danke für deine ausführliche Erklärung. Damit konnte ich den BL-Touch an meinem Geeetech A20T (mit Marlin 2) zum Laufen kriegen.
    Ich habe jetzt aber das Problem, dass ich nicht erkennen kann, dass der Drucker das Mesh berücksichtigt, sprich die Z-Achse bewegt beim Drucken. Das Mesh habe ich nach deiner Anleitung abgespeichert.

    Das ist der Startcode von Cura:
    G28
    G29 L0
    G29 J

    G1 Z15 F300
    M107
    G90
    M82

    G92 E0

    G0 X10 Y20 F6000

    ; Material extrudieren
    G1 Z0.8
    G1 F300 X200 E40
    G1 F1200 Z2

    G92 E0
    G28

    Hast du eine Idee, woran es liegen könnte?
    Mein Firstlevel ist leider mit Sensor schlechter als ohne 🙂

    Tschoe, Guido

    1. Hallo Guido,

      ich sehe in deinem Start GCode ganz am Ende ein zweites G28. Ich vermute mal, dass dir das das Mesh wieder verwirft. Ich würde es mal löschen und schauen, was der Drucker dann macht.

      1. Hallo Kevin,
        ich habe das zweite G28 entfernt und mal genau geguckt. Die z-Achse bewegt sich in der Tat, aber es ist nicht möglich, einen vernünftigen First Layer zu drucken.
        Danke trotzdem.
        Tschoe, Guido

        1. Hallo Guido,
          hast du dann mal versucht beim ersten Layer per Babystepping die Nozzle weiter abzusenken? Damit solltest du ja irgendwann auf einen guten Wert kommen. Um den kannst du dann dein Mesh entsprechend absenken, wie auch in der Anleitung beschrieben.

  3. guten tag,
    ich habe soweit alles eingerichtet und es scheint alles soweit richtig zu sein, allerdings bewegt sich bei mir die z-achse kein stück.
    ich hab das gefühl der drucker versucht die unebenheiten auszugleichen indem er die geschwindigkeit anpasst, da sich beim drucken die geschwindigkeit häufig ändert.
    ist das nur eine andere methode des ubl oder ist das was falsch?

    1. Hallo,

      wäre mir nicht bekannt, dass durch Geschwindigkeitsanpassungen ein Ausgleich erfolgt. Wüsste auch nicht, was das bringen soll, wenn eine Lücke zwischen Bed und Nozzle klafft, wird die durch langsam drucken ja nicht kleiner.

      Wichtigste Frage wie immer zuerst: Hast du den Start Gcode im Slicer entsprechend angepasst? Sprich, wenn du am Ende der Einrichtung das Mesh mit G29 S0 auf Slot 0 speicherst, dann im Start Gcode G28 und danach G29 L0 einfügen?

  4. Nicole Steinfelder

    Hallo Kevin
    Ich habe alles so gemacht wie du es beschrieben hast aber leider befindet sich die noozle dann beim Drucken mindestens 1 cm zu weit vom Druckbett.
    G29 P6 C -1.0 bringt leider nichtd ( gespeichert wie du es beschrieben hast). Nur wenn ich mein z Offset mit M851 ändere dann geht die noozle näher ans Bett aber dann wird nichts ausgeglichen und ich habe vorne dann super ersten layer unf hinten dann kaum was gedruckt weil nozzle hi nah dran. Was mache ich falsch? LG Nicole

    1. Hallo Nicole P6 Schritte sind in mm, wenn wirklich ein cm fehlt, dann müsstest du G29 P6 C -10.0 senden.
      Start Gcode hast du auch entsprechend im Slicer angepasst? Also wenn du am Ende mit G29 S0 auf Slot 0 speicherst, dann im Start Gcode G28 und dann G29 L0 einfügen.

  5. Hallo Kevin.
    Ein Berichtigung für alle die es mal benötigen,
    #define HOTEND_OFFSET_X {0.0, 9.2, -9.2} // (in mm) for each extruder

    So ist es richtig wenn man 3 Düsen auf der X Achse benutzt, Y – Achse wäre bei mir =0
    Bei Simplify3D bitte nichts in der g-Code einstellung ändern (Werkzeugversatz).
    Danke nochmals Kevin.
    Schöne Grüsse
    Christoph

  6. Hi Kevin.
    Eine frage hätte ich noch, auch wenn es nichts mit Bedlev.. zu tun hat.
    Und zwar dieser auszug aus Marlin:
    #define HOTEND_OFFSET_X {0.0, 9.2} // (in mm) for each extruder
    Ich habe 3 Düsen in abstand von 9.2__0__9.2 mm
    nun gut die erste Düse sagt ja die 0.0 in Marlin.
    Aber wie ist es wenn ich -9.2 eintragen möchte, alle Düsen sin auf Y 0,0mm.
    Schöne Grüße
    Christoph

    1. Hallo Christoph,

      ich würde zumindest davon ausgehen, dass der Offset auch negativ sein darf. Zumindest ist es bei Probe Offset für den BLTouch zulässig.

      Respekt übrigens, für den Drucker, den du dir da gebaut hast!

      1. Hallo Kevin, Das OFFSET für den Werkzeugwechsel habe ich hinbekommen, negativ Werte wurden übernommen.
        Danke, der Delta Drucker ist schon toll nur hat der noch die ALTE Mischdüse drauf und das war NIX. Jetzt habe ich die 3er Düse mit einem Düsenabstand von nur 9,2mm die ist richtig gut, EIGENBAU die FERNOST Jungens können so was nicht :-).
        Danke Kevin für deine schnellen Antworten.
        TOP

  7. Hallo Kevin.
    Also ich bekommen mein Bedleveling nicht hin, es ist das Start Script bei S3D.
    Könntest Du mit dabei HELFEN ??
    M106 P1 S255;
    M104 S210;
    M109;
    M140 S55;
    M190;
    G28;
    G29;
    M500;
    M420 L1 S1;

    Schöne Grüße
    Christoph

    1. Hi Christoph,

      was in deinem Startscript noch fehlt, ist das Laden des Meshs, das du ja hoffentlich vorher einmal eingelesen und abgespeichert hast 🙂
      So müsste es gehen:
      M106 P1 S255;
      M104 S210;
      M109;
      M140 S55;
      M190;
      G28;
      G29 L0;
      M500;
      M420 L1 S1;

      1. Hallo Kevin, danke für die schnelle Antwort, ich muß noch dabei sagen das es sich um ein Delta Drucker handelt.
        Aber wie lade ich das Mesh?
        Vorab Danke !!
        🙂

        1. Hallo und frohes Neues Christoph,

          schau mal in den Startcode, den ich gepostet hatte, das G29 ist durch L0 ergänzt. Das sagt der Firmware, dass das Mesh an Speicherplatz 0 geladen werden soll. Voraussetzung, dass das funktioniert, ist natürlich, dass du wie hier im Beitrag beschrieben, zuerst ein Mesh einliest und dort mit G29 S0 ablegst.

          Das Beobachten der Achsen, um die Funktion von UBL zu bestätigen, fällt natürlich beim Delta aus, da hast du leider recht.

        2. Hallo Kevin ein frohes Neues Jahr wünsche ich Dir auch.
          Ja jetzt haut es hin Danke Danke
          Super.
          So jetzt noch die einstellungen der abmaße z.Z. werden die teile noch zu GROß +0,5mm das geht doch garnicht 🙂
          Schöne Grüße und Danke
          Christoph

      2. Hi,
        Habe es wie in deiner Anleitung durchgeführt. Aber er gleicht nichts aus. Habe immer unterschiedliche Höhen. Mein startcode lautet:
        G21
        G90
        M82
        M107 T0
        M140 S
        M104 S
        M190 s
        M109 S
        G28
        G29 L1
        M500
        M420 L1 S1
        G29 J
        G92 E0

        1. Hallo Zolli,

          zumindest „M500“ und „M420 L1 S1“ Sollten im Startcode nicht nötig sein. „G29 J“ habe ich persönlich auch nie verendet. Ich würde also zumindest die ersten beiden, evtl. auch die dritte genannte Zeile mal aus dem Startcode entfernen und sehen, ob es dann klappt.

          Ansonsten zur Sicherheit: Beim Speichern des Mesh hast du das auch im Slot 1 abgelegt, mit „G29 S1“? Denn in der Anleitung wird ja Slot 0 verwendet und entsprechend im Startcode auch per „G29 L0“ geladen. Wenn du auf 0 speicherst, aber im Startcode von 1 abrufst, dann liegt da natürlich kein Mesh und das Leveling kann nicht funktionieren.

  8. Hi,

    hab bei mir das Ganze so gemacht aber es passt irgendwie nicht, das Bett wird nicht ausgeglichen, habe die Scripts überprüft, die firmeware mehrmals drauf aber iwie klappt es nicht.
    Gibt es eine grenze die UBL ausgleicht und nicht ?
    Ich glab mein bett ist zu schief…

    Danke schonmal!.

    1. Hallo Steffen,

      also da ich mal falsche Werte hatte, die mehrere cm abgewichen sind, kann ich aus eigener Erfahrung sagen, dass der Drucker da durchaus trotzdem versucht das auszugleichen. Grenzen sollte es also keine geben. Nutzt du OctoPrint? Da gibt es ein Plugin, um das Mesh zu visualisieren. Wäre interessant, ob da was abgelegt ist und wie das aussieht. Wenn ein Mesh vorhanden ist, dann ist die nächste Frage, ob es auch geladen wird. Wenn das G29 L0 im Start Gcode fehlt, dann nutzt der Drucker das natürlich nicht. Ob UBL arbeitet kann man manchmal auch im Druck der ersten Layer sehen, wenn die Spindel der Z-Achse sich leicht bewegt.

      1. Hi kevin,
        Danke für dein Feedback, im Octoprint ist alles drin und ich habe es auch aktiviert habe nur den Slot 1 genutzt also G29 L1
        Da ist es auch abgespeichert.

        Ich werde es die Tage nochmal Testen….

        1. Hi, also habe es getestet jedoch habe ich mit dem ABL bessere ergebnisse ich weiß nicht wieso, beim UBL gleicht er nicht aus obwohl ich die neuste 1.1.9 version habe…
          naja was will man machen

        2. Hallo Steffen, das ist echt merkwürdig. Habe ich so noch nicht erlebt. Wenn das Ganze arbeitet, sollte man ja anhand der leichten Bewegungen der Z-Spindel sehen, dass Unebenheiten ausgeglichen werden. Kannst du vielleicht mal deinen kompletten Start Gcode aus dem Slicer posten?

        3. Hallo Kevin,

          Das ist mein startcode in s3d

          G28;
          G29 L0;

          Das ist doch richtig wenn ich das in Slot 1 gespeichert habe ?

          Ändert sich eigentlich am Display vom Drucker die Werte wenn er über die Unebenheiten fährt oder bleibt das immer gleich stehen ?

          Gruß Steffen

        4. Hallo Steffen,

          du schriebst, dass du das Mesh auf Slot 1 gespeichert hast. Dann Wäre G29 L0 in deinem Startcode aber verkehrt, das müsste dann L1 sein, wenn du beim Einmessen G29 S1 verwendet hast.

  9. Hallo Kevin,

    mal eine Frage, ich habe mir den 2in1 Hotend von Bigtreetech geholt. Um ihn zu nutzen habe ich von Marlin 1.1.9 auf Marlin 2.0.x Bugfix geupdated. Deine Modifikationen der Configuration.h habe ich in die neue Übernommen und das UBL läuft augenscheinlich auch. Allerdings bin ich es gewohnt, dass er jeden Punkt beim G29 P1 zweimal anfährt. Das scheint er bei der Marlin 2.0 nicht zu machen.
    Vielleicht eine Idee, wo ich da was ändern muß?

    Viele Grüße

    Burkhard

    1. Hallo Burkhard,

      das lässt sich wieder einstellen. In der Standardkonfiguration ist die entsprechende Zeile auskommentiert. Einfach die // wegnehmen, dann sollte es gehen:
      //#define MULTIPLE_PROBING 2

      1. Hallo Kevin,

        ich sag ja, ist nicht gut, wenn man alt wird. Habe an der Zeile sogar schon an der Probenzahl gespielt, aber glaub nicht, dass mir aufgefallen ist, dass die auskommentiert ist (peinlich).

        Vielen, herzlichen Dank und ein gesegnetes Weihnachtsfest

        Viele Grüße

        Burkhard

  10. Hallo,

    ich hab die Standard Version 1.1.9 für die Standard Treiber geflasht. Hab mal geschaut, auf der Platine sind die A4982 Treiber verbaut. Muss mir wohl mal das Datenblatt holen und den Arduino Code zerpflücken, vielleicht find ich was. Mich wunderts halt nur, dass die anderen Achsen funktionieren…

    Gruß,

    Martin

    1. Hi Martin,

      zerpflücken musst du da nichts. Schau einfach mal in der configuration.h deiner runtergeladenen Marlin Version. Dort gibt es einen Abschnitt Namens „Stepper Drivers“ (müsste irgendwo in der Gegend um Zeile 660 sein). Da wird definiert welche Achse welche Treiber hat. Musst dort also nur entsprechend A4982 auf allen Achsen eintragen, wenn noch nicht geschehen. Das andere was du mal checken kannst, sind deine Steps/mm. Wenn nur X spinnt, ist da vielleicht auch ein falscher Wert eingetragen. Das ist mir auch mal beim Extruder kalibrieren passiert, da ist mir das Komma um eine Stelle verrutscht. Was das bedeutet, kann man sich ja ausmalen 😀

  11. Nochwas, hab die Firmware jetzt auf mein MKS Base 1.4 Board geflasht, allerdings stimmt etwas mit der X Achse nicht. Wenn ich die Achse von Hand verfahre, fährt diese mit einem irren Tempo, auch der Weg passt nicht, bei 1mm Vorgabe fährt die Achse ca. 1,8 cm. Die anderen Achsen scheinen zu stimmen. Durch die hohe Geschwindigkeit hat es mir beim homen der X-Achse den Endschalter verbogen :(.

    1. Hi Martin,

      welche Firmware hast du denn da verwendet und hast du noch was angepasst? Das MKS Base hat ja fest verbaute Treiber und auch den ein oder anderen Pin intern anders nummeriert. Alle Marlin Versionen, die ich hier zum Download stelle, sind für das MKS Gen L gedacht. Dort lassen sich die Treiber austauschen. Die meisten Versionen unterstützen TMC2130 Treiber, nur die Tornado Gold Standard Version ist für die A4988 gedacht. Aber wenn ich mich recht erinnere, sind auf dem Base nochmal andere Treiber verbaut. Das könnte also durchaus die Ursache für dein Problem sein.

    1. Hi Martin,

      das hängt natürlich stark von deinem Mainboard ab. Ganz grundsätzlich hast du ja zwei Kabel: Ein zweiadriges (in der Regel schwarz/weiß) und ein dreiadriges (orange/rot/braun). Das schwarz/weiße kommt an den Z- Endstopp-Anschluss und zwar schwarz auf G und weiß auf S, also die unteren beiden der drei Pins.

      Die übrigen drei kommen an den Servos Block. Das MKS Gen L hat davon 2 mit jeweils 6 Pins in zwei Reihen. Davon nimmst du die unterste Reihe und von links nach rechts orange, dann rot, dann braun.

      Ich hab leider grad keine eigene Grafik zur Hand, aber auf die Schnelle diese hier gefunden. Hoffe das hilft dir!

  12. Servus Danke für die Antworten.
    Hab das UBL auf slot 0 gespeichert und rufe es auch auf slot 0 ab.

    Ich werde es heute abend nochmal probieren.

  13. Ich habe mir jetzt auch die TMC 2130 Treiber und das MKS Mainboard zugelegt. Leider hatten die von Watterott nicht die Pins oben, so kaufte ich noch welche von Amazon die haben die und es sind diverse Kabel dabei.
    Mal sehen ob das geht.

    Weißt du wo man ein komplettes Heizbett vür den Tevo Tornado kaufen kann?
    Also mit Heitzmatte Obervfläche usw. ?

    1. Also hast du komplette Treiber von Amazon gekauft? Vermutlich die chinesischen. Von dem, was ich über die gehört habe, wäre es einfacher, bei den Watterott Treibern die Pins oben dran zu löten.

      Komplettes Heizbett gibt es, soweit ich weiß, nicht zu kaufen. Wenn dein Glas gebrochen ist, müsstest du dich da woanders nach Ersatz umsehen. Entweder mal lokal beim Glaser fragen, was er hitzebeständiges da hat und ob er das auf Maß schneiden und bohren kann oder auf bspw. Alu ausweichen. Die Heizmatte bekommst du abgezogen und wenn du den Kleber sauber entfernst, kannst du die wiederverwenden. Benötigst nur neuen Kleber. Es gibt von 3M spezielle doppelseitige Klebepads, die entsprechend Hitzebeständig sind: https://amzn.to/2JgBTtD Außerdem wirst du eine neue Isolierung für unter der Heizmatte brauchen. Geht dann aber wunderbar. Habe den Tausch auch schon durch, weil mein Bett einen Spring hatte. Hab damals aber auf Garantie eine neue Glasplatte von Tevo bekommen.

      1. Also ich glaube, dass das UBL geht nur die Platte soellig ist, dass es nicht emhr wirkt. das Problem sollte sich aber bald erledigt haben. Ich baue gerade an einem neuen Heizbett.

        Was nicht geht, ist mit dem Befehl: G29 P6 C +0.1
        ins minus zu gehen.
        Ich habe das Offset am Drucker vorher schon auf null gesetzt, müsste aber mindestens noch 0,3 tiefer gehen.
        Das machte er aber nicht, ich musste dies am Drucker einstellen.

        Wenn ich den Drucker auf ZMC 2130 Treiber umbaue, kann ich dann noch über die Speicherkarte drucken?

        1. Eigentlich sollte es auch dann gehen, dafür ist das UBL ja da, auch wenn man bei extrem welligem Bett eher andere Maßnahmen ergreifen sollte. Dass es nicht weiter runter geht, hatte ich schon ein paar Mal gehört. Meistens war dann irgendwas beim Upload der Firmware schiefgegangen. Ein erneutes Aufspielen hat dann geholfen.

          Du kannst mit den 2130 auch weiterhin von der SD Karte drucken, allerdings müsstest du eine Kleinigkeit in der Firmware anpassen und die Verkabelung etwas abweichend von meiner hier veröffentlichten Anleitung durchführen. Was genau zu beachten ist, habe ich in einem entsprechen Artikel zusammengefasst.

        2. Meine Stepper von Watterott haben ja keine Pins oben, wenn ich da sensoless Homing nicht mache, brauche ich doch nichts zu verkabeln oder?
          Dann müssen doch nur die Stepper eingesteckt werden oder.
          Funktioniert dann das drucken über die SD Karte oder muss ich da in der Firmware auch was ändern.
          Welche deiner Firmenwares nehme ich denn dann?

  14. Servus ,

    hab es Gestern nochmal probiert klappte aber immer noch nicht,

    Kann es sein, dass der Befehl G29 P6 C +0.1 erstz dann auf die Zachse übertragen wird wenn so eingegeben wurde.
    G29 P6 C +0.1
    G29 S0
    G29 A
    M500

    Leider ändert es nichts daran, dass sich die Zachse nicht ausrichtet.

    Hat du irgendwelche Tipps?

    1. Hallo Christian,

      Änderungen, die du über G29 P6 machst, werden erst übernommen, wenn du sie speicherst, also wie geschrieben G29 S0, G29 A, 500.
      Was mir aber grad auffällt: Du schreibst, dass du mit G29 S0 speicherst, in deinem Start Gcode steht aber G29 L1. Du speicherst das Mesh also auf Slot 0, rufst aber von Slot 1 ab. Das kann dann natürlich nicht gehen. Da müsstest du entweder bei beidem 1 oder 0 verwenden.

  15. Ich habe den Start Gcode:
    G28
    G29 L1
    G1 X20 Y5 Z0.45 F3000 ; get ready to prime
    G1 X20 Y5 F3000 ; get ready to prime
    G92 E0 ; reset extrusion distance
    G1 X200 E20 F600 ; prime nozzle
    G1 X180 F5000 ; quick wipe

  16. Der G29 L0 befehl steht im Start Gcode drin.

    Auf G29 P6C +- reagirt er erst gar nicht .

    Ich kann auch am Drucker wenn ich move axis Z mache nicht ins minus 0 gehen der geht nur bis 0.
    Nur wenn er halt nur bis 0 geht dann geht, denke ich, dass er auch bei den G29 P6C +- nicht weiter runtergeht. Denn der Offset am Drucker ist ja schon 0. An der Z- Achse selbs, merkt man auch nur kleine vibrationen.
    Meine Platte, ist zwar sehr uneben aber gerade deshalb, denk ich müsste sich die Z achse, ja um so mehr rühren. Z.B. wollte ich den Rahmen für das MKS GEN L mainboard drucken, die obere Linke ecke wr gut die untere rechte Ecke war direckt draufgepresst man hörte das klacken auch am Drucker wenn der Extruder lehr durch geht.

  17. Servus,

    also irgendwie klappt das nicht so, hab alles nach deiner beschreibung gemacht, aber es haut noch nicht so hin.

    Wenn er das Z überhaupt ausgleicht dann aber nur minimal und keinsesfalls wie es soll.

    Klappt das nur übers USP Kabel mein das drucken oder klappt das UBL auch über die Speicherkarte?
    Heist das
    G29 F 10.0
    Oder
    G29 F10.0
    ?
    Wie stell ich das offset ein?

    Nur mi den
    G29 P6 C-+
    ?

    1. Klappt sowohl über SD, als auch über USB. Hast du denn im Slicer den Start-Gcode angepasst? Da muss dann ja nach dem G28 noch ein G29 L0 (oder 1, je nachdem, was du vorher bei G29 S genommen hast) um das UBL Mesh zu laden. Wenn das nicht passiert, dann druckt der Drucker so weiter, wie bisher.

      G29 F10.0 wäre richtig. Zwischen dem Buchstaben für den Befehl und dem Wert sollte kein Leerzeichen sein. Offset stellst du nur mit G29 P6 C ein.

  18. Servus,

    jetzt bhabe ich noch eine Frage das MKS gen L board ist ja anders wie mein MKS base, an welche pins stecke ich den BLTouch an?

    1. In der Hinsicht sind die Pins gleich. Der BLTouch kommt ja auf den „Servos“ Block. Der einzige Unterschied: Das MKS Base hat davon nur einen, das Gen L hat zwei. Der erste Block hat die gleichen Nummern, wie der Servos Block auf dem Base

  19. Burkhard Kneiseler

    Hallo Kevin,

    hat Alles so geklappt, wie Du es beschrieben hast. Vielen Dank. Ich hab nur eine Frage zu Deinem Abschlusssatz:
    “ Wer es ganz genau haben will, kann ein spezielles Testmuster drucken lassen, an dem sich Abweichungen auf den einzelnen Messpunkten erkennen lassen. “

    Gibt es da irgendwo eine Anleitung zu?

    Viele Grüße,

    Burkhard

  20. Hi Kevin!

    Erstmal, ein super Beitrag. Der hat mir schon sehr weiter geholfen meinen Drucker zu konfigurieren und einzurichten.
    Und jetzt kommt das ABER:

    Jedesmal, wenn ich meinen Drucker aus- und wieder einschalte muss ich mit
    G29 P6 C +/-x.x
    meine Mesh neu einstellen. Mal +2.5, mal +3.3 oder +0.2. Ich habe es so verstanden, dass man dieses einmal machen muss und dann ist gut. Auch das einmalige Messen vor einem Druck findet nicht statt. Hast Du da vielleicht irgendwie eine Idee, was ich falsch mache?

    Ansonsten weiter so!
    Grüsse
    Zabbel

    1. Hi Zabbel,

      erstmal sorry für die etwas späte Antwort. Dein Kommentar ist automatisch in den Spamfilter gerutscht und da habe ich es gerade erst rausgefischt.

      Grundsätzlich hast du das richtig verstanden. Eigentlich muss man das nur einmal machen und dann ist Ruhe. Vor jedem Druck wird dann je nach Start GCode an einem Punkt der Z Nullpunkt bestimmt, oder eben über eine Messung von drei Referenzpunkten das Mesh korrigiert. Mal ein paar Punkte aus der Hüfte geschossen, die du prüfen kannst:
      – Korrekte Firmware mit aktivem UBL drauf? Manchmal hakt auch was beim Upload der Firmware. Erneutes Flashen schafft dann Abhilfe.
      – G29A und M500 ebenfalls durchgeführt, um die Werte im EEPROM zu speichern? Auch nochmal wiederholt, nachdem G29 P6 C gemacht wurde?
      – Start GCode angepasst? Erst G28, dann G29 L1 (oder 0 oder was auch immer du vorher beim G29 S verwendet hast)

      Was mich etwas wundert, ist dass du jedes mal so stark abweichende Werte eingeben musst. Das ist schon sehr merkwürdig. Check doch die o.g. Dinge nochmal und melde dich gern bei mir, mit dem Ergebnis.

  21. Hallo Kevin,

    sehr intessanter Beitrag und gut erklärt.
    Ich habe bloß immer das Problem wenn ich im Slicer Skript angebe G29 L1
    (L1 deswegen weil ich beim Speichern S1 eingegeben habe) dass befor der Druck startet beginnt er mit dem Mesh Leveling immer zu weit links Außen, also fast schon Außerhalb des Bruckbettes.
    Wenn ich das Bett Leveling über das Display manuell Starte beginnt er sauber Symetrisch auf dem Druckbett mit ca. 10mm Abstand innerhalb es Bettes. Wenn ich im Slicer Skript nur G29 eingebe ohne L1 passt es auch.
    Wenn ich aber L1 nicht lade ist es doch für die Katz, oder täusche ich mich? Kannst du mir da evtl. einen Tip geben.

    Gruß
    Helmut

    1. Hallo Helmut,

      wenn du im Startscript des Slicers nur G29 angibst, dann wird das zuvor verwendete Mesh nicht verwendet, das wäre als sinnlos, wie du ja richtig erkannt hast.

      Hast du denn vor dem Einmessen des Mesh auch ein G28 gemacht und hast du im Startscript auch nach wie vor das G28 vor dem G29 L1 stehen?

      1. Hallo Kevin,

        habe mich exakt an deine Anleitung gehalten und ein G28 gemacht. G28 steht auch im Start Script vor G29 L1.
        Sind die Positionen für das abgespeicherte Leveling in der configuration.h irgendwo zu finden?
        M500 funktioniert auch. Keine Ahnung woran das liegt.

        Grüße
        Helmut

        1. Hallo Kevin,

          ich habs geschafft.
          Da hat es an vielen stellen gehapert.
          Bin halt noch Blutiger Anfänger.
          Dachte das Mesh besteht nur aus den neun Punkten, und die hat es halt jedesmal gemessen, weil in der configuration.h natürlich nocht nicht UBL Aktiviert war. Muss glaub ich nicht mehr viel dazu sagen. Wenn ich dann die G29 geladen habe hat er die neun Punkte, keine Ahnung warum immer außerhalb des Bettes gemessen, was er ja aber eigentlich eh nicht mehr machen soll. Das macht er ja jetzt nicht mehr nachdem er G29 Slot 1 lädt, sondern piept nur kurz. Jetzt ist alles klar, hab dann in der Configuration_adv.h die Bettgröße etwas angepasst und G26_MESH_VALIDATION aktiviert in configuration.h.

          Grüße
          Helmut

  22. Philipp Schumacher

    Hallo Kevin,
    Danke für den Artikel, der hat mir Licht ins Dunkel gebracht.
    UBL läüft einwandfrei.
    Genial ist, dass man mit dem G29 P6 C +- live im Druck die höhe anpassen kann. das macht das Z-offset überflüssig. Eine riesen Erleichterung.
    Jetzt muss ich nur noch sehen, wie ich diese Befehle (oder auch die gesamte Mesh erstellung) als Buttons in Octoprint einfügen kann. Das wäre sehr Komfortabel, wenn der Drucker mal wieder Service benötigt.

  23. Hallo Kevin,
    recht herzlichen Dank, jetzt funktioniert das UBL.
    Ich sehe wie sich die Z Achse anpasst, eine tolle Sache.

    Nochmal alles Gute und Danke

  24. Hallo Kevin,
    ich habe Deinen Beitrag zu UBL Leviling gelesen.
    Bei mir wird zwar das UBL Leveling durchgeführt, jedoch kann ich beim Ausdruck keine Änderungen erkennen.
    Das Heizbett ist nicht ganz eben und trotz UBL Leveling ist die Düse zu nah (Filamentstau) oder zu weit entfernt keine gute Haftung.

    Ich habe einen JGAurora A5 mit BLtouch Marlin Firmware 1.1.9 .
    Als Slicer verwende ich Simplify3D.
    Den Offset habe ich ermittelt und in der Firmware eingetragen.
    Werden bei Dir die ermittelten Werte in den Ausdruck übernommen?
    Vielleich habe ich ja was beim Start Script nicht beachtet.
    Hier mein Start Script.
    M502 ; Reset settings to configuration defaults…
    M500 ; …and Save to EEPROM. Use this on a new install.
    M501 ; Read back in the saved EEPROM.
    G29 P1 T ; Do automated probing of the bed.
    G29 P3 T ; Repeat until all mesh points are filled in.
    G29 T ; View the Z compensation values.
    G29 P5
    M420 S1
    G29 S1 ; Save UBL mesh points to EEPROM.
    G29 F 10.0 ; Set Fade Height for correction at 10.0 mm.
    G29 A ; Activate the UBL System.
    M500
    G1 X20 Y5 Z0.45 F3000 ; get ready to prime
    G1 X20 Y5 F3000 ; get ready to prime
    G92 E0 ; reset extrusion distance
    G1 X200 E20 F600 ; prime nozzle
    G1 X180 F5000 ; quick wipe

    Als denn ich sage schon mal Danke.

    Gruß Andreas

    1. Hallo Andreas,

      das Problem ist, dass du den ganzen initialen UBL-Kram, den man eigentlich nur einmalig durchführen muss, in dein Startscript gepackt hast. Abgesehen davon, dass es unendlich lange dauert, bis du mal drucken kannst, würde das wahrscheinlich sogar funktionieren, wenn dann nicht das entscheidende Laden des Meshs mit G29 L0 (bzw. in deinem Fall G29 L1) fehlen würde.

      Diesen kompletten Abschnitt musst du nur einmal manuell ausführen. Am besten auch nicht am Stück, sondern Zeilenweise von Hand, damit alles richtig klappt:
      M502 ; Reset settings to configuration defaults…
      M500 ; …and Save to EEPROM. Use this on a new install.
      M501 ; Read back in the saved EEPROM.
      G29 P1 T ; Do automated probing of the bed.
      G29 P3 T ; Repeat until all mesh points are filled in.
      G29 T ; View the Z compensation values.
      G29 P5
      M420 S1
      G29 S1 ; Save UBL mesh points to EEPROM.
      G29 F 10.0 ; Set Fade Height for correction at 10.0 mm.
      G29 A ; Activate the UBL System.
      M500

      Und dann kommt dein eigentlicher Start-Gcode, den du in Simplify eintragen musst, ergänzt um zwei entscheidende Zeilen:
      G28
      G29 L1
      G1 X20 Y5 Z0.45 F3000 ; get ready to prime
      G1 X20 Y5 F3000 ; get ready to prime
      G92 E0 ; reset extrusion distance
      G1 X200 E20 F600 ; prime nozzle
      G1 X180 F5000 ; quick wipe

      Hoffe, das hilft dir weiter.
      Viel Spaß beim Drucken!

  25. Hi Kevin,

    verstehe ich nicht ganz mit dem Z-Offset. Momentan benutze ich nicht das UBL sondern das normale ABL mit 20 Messpunkten. Mein Z-Offset habe ich auf -1.15 gesetzt.
    Bei UBL soll das Z-Offset auf 0 gesetzt werden ?
    Mit verschieben durch G29 P6 C +0.1 bekomme ich dann die Nozzle weiter weg vom Druckbett und mit – näher ran?

    Gruß
    Silvio

    PS: Die 20 Messpunkte nerven einfach vor jedem Druck , mit UBL sollte das ABL ja schneller gehen.

    1. Das geht auf jeden Fall schneller. Ist als wenn du ganz normal druckst. Einmal in der Bettmitte Z messen und los gehts. Das mit dem Z-Offset auf 0 scheint auch n Ding gewesen zu sein, was da in den frühen Versionen von UBL problematisch war. Mit neueren Versionen ist das – würde ich sagen – auch etwas einfacher und unkritischer geworden. Aber an sich wäre es bei 100% passender Konfiguration trotzdem richtig, denn du definierst ja schon beim Einrichten des BLTouch welche Abstände der in X, Y und Z-Richtung von der Nozzle hat. Wenn das Z da auf den mm richtig gesetzt ist, bräuchte es keinen zusätzlichen Offset mehr.
      G29 P6 macht das Finetuning, genau so, wie du sagst, positive Werte mehr nach oben, negative näher ans Bett.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.