M420 S1 G-Code | Guide mit einfachen Beispielen

Martin

Achtung: Links mit * sind Affiliate-Links. Ich verdiene etwas an qualifizierten Einkäufen, wenn du dich entscheidest, über diese Links einen Kauf zu tätigen – ohne zusätzliche Kosten für dich!


Der M420 S1 G-Code wird im Slicer in den Maschineneinstellungen in die Start G-Code Befehle eingebaut. Der Befehl liest die Daten der Druckbett Nivellierung aus, damit sie während des Drucks verwendet werden können, um die Neigung des Druckbetts auszugleichen.

G-Code ist oft sehr undurchsichtig wenn man noch nie damit zu tun hatte. Besonders durch die ansonsten sehr einfachen Benutzeroberflächen der Slicer ist das Definieren von G-Code Schnipseln in den Maschineneinstellungen manchmal etwas verwirrend – besonders wenn du dir dein eigenes Slicer Profil erstellen möchtest. 

Daher dient dieser Artikel dazu dir den M420 S1 G-Code zu erklären. Du erfährst in diesem Artikel seinen Effekt, wann er angewendet werden muss und mit welchen anderen G-Code Befehlen er verwandt ist und kombiniert werden kann. 

Kurz Zusammengefasst

  • M420 S1 = Daten der Druckbett Nivellierung werden für den Druck verwendet.
  • M420 S1 wird meistens nach G28 verwendet (homing), da G28 die Druckbett Nivellierung deaktiviert.
  • Bei einem 3D Drucker ohne automatischer oder halbautomatischer Druckbett Nivellierung hat der M420 S1 G-Code Befehl keine Auswirkungen. 

Was Bewirkt der M420 S1 G-Code?

Der M420 S1 G-Code bewirkt, dass der 3D Drucker die Daten aus der Druckbett Nivellierung für den gestarteten 3D Druck verwendet. Der Druckbett Nivellier Status wird durch diesen G-Code aktiviert (M420 = “bed leveling state”; S1 = “enabled”).

Der M420 S1 G-Code bewirkt aber nicht, dass die Druckbett Nivellierung gestartet wird. Es werden lediglich die Daten aus der Druckbett Nivellierung ausgelesen. Wenn dein 3D Drucker also über keine Druckbett Nivellierung verfügt und du sie manuell durchführen musst, bewirkt dieser G-Code gar nichts. 

Ohne diesen G-Code wäre die automatische Druckbett Nivellierung deines 3D Druckers sinnlos, da sie für den Druck nicht verwendet werden würde. Falls du dir ein eigenes 3D Drucker Profil in deinem Slicer anlegen möchtest und dein 3D Drucker über eine automatische oder halb-automatische Druckbett Nivellierung verfügt, solltest du also darauf achten diesen G-Code einzufügen. 

Da der 3D Drucker durch diesen Befehl nur auf Daten zugreift, um sie für den Druck anzuwenden, wirst du hierbei keine bestimmten Bewegungen am Anfang des 3D Drucks sehen wie zum Beispiel beim G28 G-Code (Home-Position anfahren).

Der M420 S1 Befehl unterteilt sich in den M420 G-Code und den S1 Parameter. Da G-Code eine Art Programmiersprache ist, ist die genaue Reihenfolge und Schreibweise des Befehls sehr wichtig. 

Wie und Wo wird der M420 S1 G-Code Aktiviert?

Der M420 S1 G-Code wird meistens direkt nach der Definition der Einheiten und der Temperatur Parameter im Start G-Code eingegeben. Der Start G-Code befindet sich in den Maschineneinstellungen des jeweiligen Druckers.

Um in Cura an in die Maschineneinstellungen zu kommen, gehst du auf “Settings” > “Printer” > “Manage Printers…”. Danach öffnet sich eine Liste an 3D Druckern die du in Cura hinzugefügt hast. Klicke dann den 3D Drucker an bei dem du den G-Code einfügen möchtest und gehe auf “Machine Settings”

In den Maschineneinstellungen kannst du grundlegenden Einstellungen wie die Größe des Druckvolumens, der Form des Druckbetts und andere Werte definieren. Im unteren Teil der Maschineneinstellungen befindet sich der Start und End G-Code.

Den M420 S1 Befehl fügst du direkt nach dem G28 Befehl ein, damit der 3D Drucker die Daten aus der Druckbett Nivellierung nach dem Anfahren der Home Positionen laden kann. 

Kommentare sind beim Programmieren immer sehr hilfreich damit du auch noch später weißt wofür die einzelnen Befehle da sind. Beim G-Code gilt alles rechts neben einem Semikolon als Kommentar. Ich habe hinter meinem M420 S1 Befehl “enable mesh leveling” geschrieben. 

Brauche ich M420 S1 nach G28?

Durch den G28 G-Code Befehl wird die Home-Position angefahren. Außerdem wird die Druckbett Nivellierung deaktiviert. Mit dem M420 S1 G-Code kann die Druckbett Nivellierung danach wieder aktiviert werden. 

Falls dein 3D Drucker über eine automatische Druckbett Nivellierung verfügt, solltest du unbedingt den M420 S1 Befehl nach dem Anfahren der Home Position, also dem G28 G-Code Befehl, in den Start G-Code schreiben. Ansonsten bleibt die Druckbett Nivellierung deaktiviert und die Neigung des Druckbetts wird beim Drucken nicht ausgeglichen. 

Bei den meisten 3D Druckern mit einer automatischen Druckbett Nivellierung wird beim Erstellen/Laden von Standardprofilen der M420 S1 Befehl automatisch nach dem G28 Befehl eingebaut. Falls du dir jedoch dein eigenes Slicer Profil erstellen möchtest, solltest du darauf achten die Reihenfolge einzuhalten, damit dein 3D Drucker die Werte aus der Druckbett Nivellierung beim Druck anwenden kann. 

Falls du dir unsicher bist, ob die danach folgenden Befehle im Start G-Code die Druckbett Nivellierung deaktivieren, schadet es nicht den M420 S1 Befehl noch einmal in den G-Code zu schreiben. Da der Parameter “S” nur zwischen 1 und 0 wechseln kann, bewirken zwei “S1” Befehle nicht, dass er deaktiviert wird. 

Brauche ich M420 S1 nach G29?

Der G29 G-Code startet die automatische Druckbett Nivellierung vor jedem Druck wenn er im Start G-Code des Druckers im Slicer steht. Danach ist der M420 S1 G-Code nicht nötig, da die Daten der Nivellierung schon vorhanden sind und verwendet werden.

Die Druckbett Nivellierung die durch den G29 Befehl gestartet wird entspricht der Strategie die du in der Konfigurationsdatei definiert hast. Wenn nichts definiert wurde, bewirkt der G-Code nichts.

Du kannst die Strategie für die Druckbett Nivellierung in der Konfigurationsdatei durch verschiedene Befehle definieren. Die gespeicherten Daten können über den M420 S1 Befehl abgerufen werden. Bei modernen 3D Druckern mit eingebauter automatischer Nivellierung ist dies meistens schon erledigt. Ansonsten sind hier die jeweiligen Befehle:

  • Mesh-based Leveling:
    • Mesh Bed Leveling:
      #define MESH_BED_LEVELING
      Eine interaktive Druckbett Nivellierung für 3D Drucker ohne einen Sensor. Die Nivellierung wird über das Menü unterstützt und erfolgt durch die Papiermethode
    • Auto Bed Leveling (Bilinear):
      #define AUTO_BED_LEVELING_UBL
      Eine bilineare Druckbett Nivellierung mit oder ohne Sensor. 
    • Unified Bed Leveling:
      #define AUTO_BED_LEVELING_BILINEAR
      Eine bilineare Druckbett Nivellierung mit Sensor mit vielen Optionen zur Anpassung.
  • Matrix-based Leveling:
    • Auto Bed Leveling (Linear):
      #define AUTO_BED_LEVELING_LINEAR
      Eine lineare Nivellierung des Druckbetts mit oder ohne Sensor. 
    • Auto Bed Leveling (3-Point):
      #define AUTO_BED_LEVELING_3POINT
      Eine Dreipunkt Nivellierung mit oder ohne Sensor. 

Andere M420 G-Code Parameter

Mit dem M420 G-Code kann der Nivellierungszustand des Druckbettes abgerufen und/oder gesetzt werden. Nach diesem G-Code können diverse Parameter verwendet werden, um die Daten der Nivellierung zu verändern oder abzurufen.

Nach dem M420 G-Code Befehle können diverse Parameter folgen um auf die Daten Daten der Druckbett Nivellierung zuzugreifen.

  • [C<bool>]: Das C steht hier für “center”. Du kannst mit C1 einen neuen Mittelpunkt im Netz (“mesh”) der Daten der Druckbett Nivellierung erstellen. Dieser neue Mittelpunkt wird als Mittelwert aus dem höchsten und dem niedrigsten Punkt berechnet. 
  • [L<int>]: Mit diesem Befehl kannst du einen bestimmten Eintrag der Daten auswählen. Dabei wäre zum Beispiel L3 der dritte Eintrag. Mit diesem Befehl wird der dritte Satz aus den EEPROM Daten für die Druckbett Nivellierung verwendet. 
  • [S<bool>]: Mit S1 werden die gespeicherten Daten für die Druckbett Nivellierung während des Drucks verwendet. Mit S0 wird die Druckbett Nivellierung deaktiviert. Wenn kein Datensatz vorhanden ist, wie bei 3D Druckern ohne automatische Druckbett Nivellierung, passiert gar nichts. 
  • [T<0|1|4>]: Mit diesem Parameter werden die Daten aus der Druckbett Nivellierung in verschiedenen Formaten ausgegeben. T0 steht für menschlich lesbar, T1 für CSV, und T4 für compact.
  • [V<bool>]: Das V steht für “Verbose”. Mit dem V1 Parameter werden die gespeicherten Daten der Druckbett Nivellierung ausgegeben und angezeigt. 
  • [Z<linear>]: Das Z steht für “Z fade height”. Mit diesem Parameter kannst du die Korrektur der Druckbett Nivellierung abschwächen je höher der Druckkopf ist. Sobald der eingestellte Wert erreicht wurde, wird die Nivellierung nicht mehr angewendet. 

M420 S1 vs. G29

Der Unterschied zwischen den beiden G-Codes M420 S1 und G29 liegt darin, dass G29 die Druckbett Nivellierung ausführt und die Daten danach für den 3D Druck speichert und M420 S1 nur die Daten aus einer vorhergegangenen Nivellierung für den 3D Druck aktiviert. 

Wenn du also G29 vor jedem 3D Druck verwendest, brauchst du den M420 S1 Befehl nicht, da für den 3D Druck dann die frisch erzeugten Daten verwendet werden. 

Falls du nur gelegentlich dein Druckbett nivellieren möchtest, ist der M420 S1 G-Code besser geeignet, da er die durch die letzte Nivellierung erzeugten Daten für den aktuellen Druck verwendet. 

Achte aber immer darauf, dass der Befehl für die Home Position (G28) die Druckbett Nivellierung wieder deaktiviert. Falls du also nach dem G29 Befehl noch einmal mit G28 die Home Position anfährst, solltest du die Daten aus der Nivellierung mit M420 S1 erneut laden. 

Hier geht es zum ausführlicheren Vergleich zwischen M420 S1 und G29.

G29 vs. G28

Der G29 G-Code Befehl führt die Druckbett Nivellierung aus. Der G28 Befehl lässt den Druckkopf zur Home Position fahren. Der Zusammenhang zwischen diesen beiden Befehlen ist, dass G28 die Druckbett Nivellierung deaktiviert.

Der G28 Befehl fährt nacheinander die drei Achsen des 3D Druckers auf die Home Position. Dabei fährt er so lange auf der Achse zum Nullpunkt, bis er den Endstop erreicht. 

Der G28 Befehl sollte sich in jedem Start G-Code befinden. Wenn ein 3D Drucker nicht in seiner Home Position ist bevor er den Rest seines G-Codes abfährt, wird er höchstwahrscheinlich ans Ende mindestens einer Achse kommen. Das könnte dann relativ laut werden und womöglich in einem Crash enden. 

Zusammenfassung

In diesem Artikel hast du gelernt was der M420 S1 Befehl bewirkt, wie du ihn anwendest und wie er mit verwandten G-Code Befehlen zusammenhängt. 

Die Druckbett Nivellierung ist essentiell für ein gutes Ergebnis beim 3D Druck. Ohne ein gut nivelliertes Druckbett haftet die erste Schicht des Objekts nicht gut genug auf dem Druckbett. 

Mit dem M420 S1 Befehl im Start G-Code deines 3D Druckers kannst du sicherstellen, dass er die Daten aus der letzten Druckbett Nivellierung für den Druck verwendet. Achte darauf, dass er immer nach dem G28 Befehl (Home-Position) kommt, da dieser Befehl die Druckbett Nivellierung deaktiviert.


Achtung: Diese Website ist Eigentum von Martin Lütkemeyer und wird von Martin Lütkemeyer betrieben. Martin Lütkemeyer ist Mitglied bei Partnerprogrammen von Amazon Services LLC und anderen. Dies sind Affiliate-Werbeprogramme, die es Webseiten ermöglicht, Werbeeinnahmen durch Werbung und Verlinkung mit Amazon.com und anderen zu erzielen. Die mit * markierten Links sind Affiliate-Links.