G Code

G Code Befehle eines 3D-Druckers

Veröffentlicht von

Die 10 wichtigsten G-Code Befehle im 3D-Druck

  • G28 – startet die Homing Sequenz, welche den Druckkopf und alle Achsen in Richtung der Endstops fahren lässt.

Beispiel G-Codes für G28

G28 ; home alle Achsen (X , Y und Z)
G28 X Y ; home die Achsen X und Y
G28 Z ; home die Z Achse allein
  • G90 und G91 – Verfahre die Achsen im Absolut (G90) oder Relativen (G91) Positionierungsmodus

Beispiel G-Codes für G90 und G91

G90 ; definiert den Absolutpositionierungsmodus für die XYZ-Achsen
G1 X10 F3600 ; fahre auf Position X=10 mit der Geschwindigkeit F
G1 X20 F3600 ; fahre auf Position X=20 mit der Geschwindigkeit F
G91 ; definiert den Relativpositionierungsmodus für die XYZ-Achsen
G1 X10 F3600 ; fahre um die Strecke X=10 von der bisherigen Position auf die neue Position in Richtung +X
G1 X10 F3600 ; fahre weitere X=10 in Richtung +X
  • G1 – Dieser Befehl beschreibt eine lineare Bewegung zum nächst definierten Punkt

Beispiel G-Codes für G1

G1 X0 Y0 F2000 ; fahre zur Position X=0 und Y=0 in der gleichen Zeit mit der Geschwindigkeit von 2000 mm/min
G1 Z5 F1000 ; fahre die z-Achse auf die Position von Z=5 mit einer Geschwindigkeit von 1000 mm/min
G1 X40 E20 F1800 ; Drücke 20 mm Filament durch die Nozzle und fahre die x-Achse zur Position X=30 in der gleichen Zeit
  • G92 – setze die gegenwärtige Position als neue Ausgangsposition

Beispiel G-Codes für G92

G92 E0 ; die gegenwärtige Filament-Position wird auf E=0 gesetzt
G1 E10 F800 ; extrudiere 10 mm Filament mit 800 mm/min
  • M104 und M109 – 3D-Drucker Extruder Heizbefehle

Beispiel G-Codes für M104 und M109

M104 S195 T0 ; starte sofort (T0) mit dem Aufheizen des Hot-Ends auf 190 °C Zieltemperatur, halte anschließend diese Temperatur
G28 X ; home die x-Achse, der Hot-End heizt währenddessen weiter auf, Achse verfährt
M109 S195 T0; heizt erst einmal auf 195 °C auf, bevor weitere Befehle abgearbeitet werden
G28 X ; home die x-Achse, erst wenn die 195 °C erreicht wurden, verfährt der 3D-Drucker die x-Achse
  • M106 – Geschwindigkeit des Bauteilelüfters einstellen

Beispiel G-Codes für M106

M106 S255 ; Lüfter auf max. Drehzahl stellen S0 = aus S255 =max Drehzahl Werte von 0 bis 255 möglich
M106 S127 ; Lüfter auf halbe Pulsung
M106 S0 ; Lüfter komplett aus

Marlin GCodes

G0, G01 Lineare Bewegung

Bsp.:

[code]G0 [E] [F] [X] [Y] [Z][/code]

Exxx = Länge des Filaments, welches in den Extruder geschoben wird, zwischen Start- und Endpunkt

Fxxx = maximale Geschwindigkeit zwischen Start- und Endpunkt

Xxxx = Koordinate für die x-Achse

Yxxx = Koordinate für die y-Achse

Zxxx = Koordinate für die z-Achse

Die beiden Befehle G0 und G01 stehen für eine lineare Bewegung, die ausgeführt werden soll. Der Befehl wird erst abgearbeitet, sobald er in der Warteschlange an der Reihe ist und alle vorangegangenen Eingabebefehle abgeschlossen sind.
Eine lineare Bewegung verfolgt eine gerade Linie von einem Punkt zum Nächsten. Dabei wird sichergestellt, dass die angegebenen Achsen zur gleichen Zeit an den angegebenen Koordinaten angekommen sind (lineare Interpolation).

Mit dem Befehl G01 F1200 wird der Vorschub für alle darauffolgenden Bewegungen mit G01 festgesetzt, bis ein Annullierung oder Änderungsanweisung kommt.

Marlin behandelt G0 (schnelle lineare Bewegung) als Alias für G1 (schnelle Bewegung)

Die meisten G-Code-Generatoren verwenden per Konvention G0 für eine Bewegung ohne Extrusion und G01 für eine Bewegung, welche die Extrusion mit einschließt. G0 ermöglicht so eine schnellere uninterpolierte Bewegung, die viel weniger Berechnungen erfordert.

Standardeinheit ist mm, kann mit z.B. G20 geändert werden.

Beispiele für G0 und G01

G0 X20 ; bewege die x-Achse zu 20 mm
G00 F1500 ; setze die Feedrate auf 1500 mm/min
G01 X80.5 Y24.6 ; bewege die x-Achse zu 80.5 mm und Y-Achse zu 24.6 mm
G01 F1200 ; setzt die Feedrate auf 1200 mm/min
G92 E0
G01 X40 Y30 E18.5 ; bewege das Werkzeug auf die Position x-Achse 40 mm und y-Achse 30 mm, während dem verfahren zwischen Start und Endpunkt extrudiere 18.5 mm Filament
G01 F1200 ; setze die Vorschubgeschwindigkeit auf 1200 mm/min
G92 E0
G01 X40 Y30 E18.5 F2500 ; fahre zu X und Y, extrudiere währenddessen soviel Filament und beschleunige so schnell wie möglich (vordefiniert über Druckereinstellungen) auf die Vorschubgeschwindigkeit von 2500 mm/min

G02, G03 Interpolierte Kreisbewegung

Bsp.:

[code]G02 [E] [F] I J R [X] [Y] [Z][/code]

Exxx = Länge des Filaments, welches in den Extruder geschoben wird, zwischen Start- und Endpunkt

Fxxx = maximale Geschwindigkeit zwischen Start und Endpunkt

Ixxx = Versatz der aktuellen X-Position als Kreisbogenmittelpunkt

Jxxx = Versatz der aktuellen Y-Position als Kreisbogenmittelpunkt

Rxxx = Radius von der aktuellen XY-Position ausgehend

Xxxx = Koordinate für die x-Achse

Yxxx = Koordinate für die y-Achse

Zxxx = Koordinate für die z-Achse

G02 fügt dem Interpreter eine Kreisbewegung im Uhrzeigersinn hinzu und G03 gegen den Uhrzeigersinn. Die Kreisbewegung beginnt an der aktuellen Position und endet bei den angegebenen XYZ-Koordinaten, welche jedoch durch die I, J und R Angaben um einen Mittelpunktversatz schwenken können.

IJ Klasse

  • I gibt einen X-Versatz an und J einen Y-Versatz
  • mindestens ein I oder J Parameter ist erforderlich
  • X und Y können weggelassen werden, um einen vollständigen Kreis zu erstellen
  • Zielkoordinaten X und Y werden nicht gegengeprüft, der Kreisbogen endet auf dem Zielwinkel
  • ein Mischen von I oder J mit R wird einen Fehler auslösen

R Klasse

  • R gibt den Radius an  oder Y ist erforderlich
  • das Weglassen der X und Y Parameter wird einen Fehler ausgeben
  • X oder Y müssen von der aktuellen XY-Position abweichen
  • wenn R mit I oder J gemischt wird, wird ein Fehler ausgegeben

Zusatzinfo: Die Bogenbewegung erzeugt mehrere kurze geradlinige Bewegungen, deren Länge durch die Konfigurationsoption „MM_PER_ARC_SEGMENT“ (Standard 1 mm) bestimmt wird. Jede Änderung der Z-Position wird über den gesamten Bogen linear interpoliert.

Beispiele für G02 und G03

G02 X100 Y50 I12 J12 ; Bewegung im Uhrzeigersinn von der gegenwärtigen Position zu X=100 und Y=50 mit dem Mittenversatz von der aktuellen Position um 12/12
G03 X100 Y50 I12 J12 ; Bewegung gegen den Uhrzeigersinn von der gegenwärtigen Position zu X=100 und Y=50 mit dem Mittenversatz von der aktuellen Position um 12/12
G02 I20 J20 ; Bewegung mit einem Mittenversatz (20,20) von der aktuellen Position als vollständigen Kreis im Uhrzeigersinn

G04 Verweilzeit

Bsp.:

[code]G04 [P

Pxxx = Dauer der Verweildauer

Sxxx = Dauer der Verweildauer

Der Befehl G04 pausiert die Befehlswarteschlange und wartet eine definierte Zeit.

Weitere Informationen:
Wenn S als auch P enthalten sind, hat S immer Vorrang. M0 / M01 bietet eine unterbrechbare Verweilzeit (ab Marlin 1.1.0 und höher). Ein G04 ohne nachfolgende Argumente ist mit M400 gleichzustellen.

Beispiele für G04

G04 P500 ; verweile für eine halbe Sekunde

G05 Spline Definition

Bsp.:

[code]G05 [E] I J P Q X Y[/code]

Exxx = die geförderte Länge des Filaments vom Extruder zwischen Start- und Endpunkt

Ixxx = in X inkrementeller Versatz vom Startpunkt zum ersten Kontrollpunkt

Jxxx = in Y inkrementeller Versatz vom Startpunkt zum ersten Kontrollpunkt

Pxxx = in X inkrementeller Versatz vom Startpunkt zum zweiten Kontrollpunkt

Qxxx = in Y inkrementeller Versatz vom Startpunkt zum zweiten Kontrollpunkt

Xxxx = Koordinate auf der x-Achse

Yxxx = Koordinate auf der y-Achse

G05 erzeugt eine kubische B-Spline in der XY-Ebene allein mit der x- und y-Achse. Die P und Q Parameter sind als Definition erforderlich. I und J sind bei dem ersten G05 Befehl zwingend erforderlich. Für nachfolgende G05 Befehle müssen entweder I und J oder keine weiteren Parameter angegeben werden. Wurden I und J nicht spezifiziert, wird die Startrichtung des Kubus automatisch mit der Endrichtung des vorangegangenen Kubuses übereinstimmen (als wenn I und J die Negation der vorangegangenen P und Q wären).

Information:
Es ist ein Fehler, wenn eine andere Achse als X oder Y angegeben wird.

Beispiele für G05

G0 X0 Y0
G5 I0 J3 P0 Q-3 X1 Y1 ; Bsp, um eine kurvige „N“-Form zu programmieren
G5 P0 Q-3 X2 Y2 ; ein zweites kurviges „N“, welches sich nahtlos an das Vorangegangne anbindet, kann nun ohne Angabe von I und J erstellt werden

G10 Rückzug

Bsp.:

[code]G10 [S<flag][/code] Sxxx = vor dem Wechsel des Extruders mit G10 S1 einen Rückzug ausführen, nachfolgend G11 (nach Werkzeugwechsel) ausführen und den Retract zurücksetzen (benötigt EXTRUDERS>1)

Info:
Erfordert: FWRETRACT
verwandte Codes: G11, M207, M208 und M209

Beispiele für G10

G10 ; retract

G11 Wiederherstellen

Bsp.:

[code]G11[/code]

Zieht das Filament abhängig von den M208 Einstellungen zurück.

Information:
Erfordert: FWRETRACT
verwandte Codes: G10, M207, M208 und M209

Beispiele für G11

G11 ; recover

G12 Nozzle säubern

Bsp.:

[code]G12 [P<0|1>] [S] [T][/code]

P0/1 = Musterauswahl

Sxxx = Anzahl der Hübe (Hin- und Herbewegung)

Txxx = Anzahl der Wiederholungen

Information:
Grundeinstellung ist definiert durch: NOZZLE_CLEAN_STROKES, NOZZLE_CLEAN_START_POINT, NOZZLE_CLEAN_END_POINT und NOZZLE_CLEAN_PARK

Wenn NOZZLE_CLEAN_PARK aktiviert ist, kehrt die Düse nach dem Reinigungsvorgang automatisch wieder in die XYZ-Position zurück.

Beispiele für G12

G12 ; Strichmuster (Standard)
G12 P1 S1 T3 ; Zickzack Muster mit 3 Wiederholungen

G20 Zoll Einheit

Bsp.:

[code]G20[/code]

Information:
Definiert die Einheiten als Zollig (Zoll) und nicht mehr metrisch. In diesem Modus werden alle G-Code-Parameter wie Positionen, Offsets, Geschwindigkeit, Beschleunigung usw. als Zoll interpretiert.

Beispiel für G20

G20 ; setzt Einheiten als Zoll

G21 Millimeter Einheit

Bsp.:

[code]G21[/code]

Information:
Definiert die Einheiten als metrische Einheit (Millimeter). In diesem Modus werden alle G-Code-Parameter wie Positionen, Offsets, Geschwindigkeit, Beschleunigung usw. als Millimeter interpretiert.

Beispiel für G21

G20 ; setzt Einheiten als Millimeter

G26 Gittervalidierungsmuster

Bsp.:

[code]G26 [B] [C] [D] [F] [H] [K] [L] [O] [P] [Q] [R] [S] [U] [X] [Y][/code]

Bxxx = Betttemperatur (wenn nicht definiert 60 °C) für den Testdruck

Cxxx = weiter mit dem nächsten Punkt (sonst nicht)

Dxxx = Deaktivierung der Leveling-Kompensation (ansonsten aktiv)

Fxxx = Definition Filament-Durchmesser (ansonsten 1.75 mm)

Hxxx = Hot-End-Temperatur (wenn nicht definiert 205 °C) für den Testdruck

Kxxx = Heizelemente bleiben aktiv, wenn Testlauf beendet

Lxxx = Layer-Höhe, welche für den Testdruck genutzt wird

Oxxx = Ooze Menge (Standard 0,3 mm), welche zu Beginn des Tests extrudiert wird

Pxxx = Prime Länge

Qxxx = Retraction Multiplikator (Standard 1.0)

Rxxx = Anzahl der G26 Wiederholungen (Standard 999)

Sxxx = Nozzle Größe (Standard 0.4 mm)

Uxxx = zufällige Abweichung (U ohne Wert, Standard 50)

Xxxx = X Position (Standard, aktuelle X-Position)

Yxxx = Y Position (Standard, aktuelle Y-Position)

Information:
Seit Marlin 1.1.7 wird G26_MESH_VALIDATION und HAS_MESH (AUTO_BED_LEVELING_UBL, MESH_BED_LEVELING, oder AUTO_BED_LEVELING_BILINEAR) für G26 benötigt.

G26 Gittervalidierungsmuster wurde entwickelt, um die Genauigkeit des Netzes mit einer netzbasierenden Nivellierung zu testen.
Mit dem Befehl G26 wird ein Einzelschichtmuster auf das gesamte Druckbett gedruckt, hiermit wird angezeigt, wie genau jeder einzelne Gitterpunkt definiert ist. G26 kann verwendet werden, um zu bestimmen, welche Bereiche des Gitters nicht perfekt sind und wie groß der jeweilige Gitternetzpunkt angepasst werden muss.

G27 Nozzle parken

Bsp.:

[code]G27 [P<0|1|2>][/code]

P0/1/2 = mögliche Z-Achsen Aktionen
P0: Wenn die aktuelle Z-Position niedriger als Z-Park ist, wird die Düse angehoben, um die Z-Park-Höhe zu erreichen.
P1: Unabhängig von der aktuellen Z-Position wird die Düse angehoben / abgesenkt, um die Z-Park-Höhe zu erreichen.
P2: Die Düsenhöhe wird um den Z-Park-Betrag erhöht, überschreitet aber niemals die Maschinengrenze von Z_Max_Pos.

Information:
Benötigt NOZZLE_PARK_FEATURE, die Parkposition wird definiert über NOZZLE_PARK_POINT.

Beispiele für G27

G27 ; fahre hoch zur Parkposition, wenn der gegenwärtige Z-Punkt niedriger ist.
G27 P2 ; hebe die z-Achse immer auf den maximalen Punkt.

G28 Bewege Achse(n) zum Ursprung (Home)

Beispiel G-Code für G28

G28Fahre alle Achsen zum Ursprung ²
G28 X ZFahre die Achsen X und Z zum Ursprung

Parameter:
diese Befehle können ohne zusätzliche Parameter verwendet werden.
X, um zum X-Achsen-Ursprung zurückzukehren
Y, um zum Y-Achsen-Ursprung zurückzukehren
Z, um zum Z-Achsen-Ursprung zurückzukehren
P Vorbehalten für Prusa
I Vorbehalten für Prusa

Wenn die Firmware diesen Befehl erhält, bewegt es die angegebenen Achsen (oder alle Achsen, wenn keine angegeben sind) zu den Endschaltern. Nach dem ersten Anfahren des Endstops bewegt es sich kurz von jedem Endschalter weg und berührt den Endschalter erneut, um die Positionsgenauigkeit zu erhöhen. Dieser Vorgang, bekannt als „Homing“, ist erforderlich, um die Position des Druckkopfschlittens und des Heizbettes in X,Y und Z zu bestimmen. Einige Drucker-Firmware können sogar Bewegungen weg von den Endschaltern und andere Operationen verbieten, solange die Achsen nicht gehomed wurden.

Die X-, Y- und Z-Parameter dienen als Hauptparameter. Alle angegebenen Koordinaten werden ignoriert. Zum Beispiel führt G28 Z10 zum gleichen Verhalten wie G28 Z. Delta-Drucker können einzelne Achsen nicht homen, sondern müssen immer alle drei Achsen homen, daher werden die X-, Y- und Z-Parameter bei diesen Maschinen einfach ignoriert.

Die Marlin-Firmware (Version 1.1.0 und höher) bietet eine Option namens Z_SAFE_HOMING für Drucker, die eine Z-Probe zur Homing des Z verwenden anstelle eines Endschalters. Mit dieser Option werden zuerst die XY-Achsen gehomed, dann bewegt sich der Druckkopf zu einer Position – normalerweise in der Mitte des Betts -, bei dem er sicher nach unten fahren und abtasten kann, um die Z-Achse zu homen.

RepRapFirmware verwendet Makrodateien, um entweder alle Achsen oder einzelne Achsen zu homen. Wenn alle Achsen gehomed werden, wird die Datei homeall.g verarbeitet. Für einzelne Achsen wird die Datei homex.g, homey.g oder homez.g verwendet. Bei Delta-Druckern wird der G28-Befehl immer alle drei Achsen homen, indem die Datei homedelta.g verarbeitet wird, unabhängig von den X-, Y- und Z-Parametern.

Da das Verhalten von G28 nicht spezifiziert ist, wird empfohlen, G28 nicht automatisch in Ihrem Abschluss(END)-G-Code einzuschließen. Bei einem kartesischen Drucker führt dies dazu, dass das gedruckte Objekt beschädigt wird. Wenn Sie den Druckkopf, Heizbett am Ende eines Drucks bewegen müssen, verwenden Sie G0 oder G1.

Notizen:
MK4duo hat einen B-Parameter, der dem Drucker sagt, zu den Koordinaten zurückzukehren, an denen er vor dem Homing war.
2 Der Original Prusa i3 MK2/s, MK2.5/s, MK3/s unterstützt einen W-Parameter, um die Gitterbett-Nivellierung zu unterdrücken. Wenn W weggelassen wird, wird G28 nur homen und KEINE Gitterbett-Nivellierung durchführen. Der Original Prusa i3 MK3/s (TMC2130-Treiber) unterstützt einen C-Parameter zur Kalibrierung der X- und Y-Heimposition.

W Unterdrückt die Gitterbett-Nivellierung (nur Prusa MK2/s, MK2.5/s und MK3/s)
C Kalibriert die X- und Y-Heimposition (nur Prusa MK3/s)

G29 Z-Probe
Beispiel G-Code G29

G29; Bettnivellierung durchführen und Kompensation aktivieren
G29 S2; Spezialoperation – siehe unten
G29 P1 ; UBL automatisierte Probe – siehe unten

Parameter:
Snnn Firmware-abhängiges Verhalten
Pnnn Optionaler Dateiname für die Datei der Bett-Höhenkarte

Dieser Befehl macht eine Probe, um die Höhe des Betts an 3 oder mehr Punkten zu messen und Höhenunterschiede des Heizbettes festzustellen. Anschließend wird die Kompensation aktiviert, damit die Düse parallel zum Bett bleibt. Der Drucker muss mit G28 gehomed werden, bevor dieser Befehl verwendet wird.

Jede Firmware verhält sich unterschiedlich und hängt von der Art der konfigurierten Bett-Nivellierung ab. Zum Beispiel bietet Marlin 1.0.2 drei verschiedene Arten der automatischen Bett-Nivellierung (Nivellierungssensor erforderlich) und eine manuelle Bett-Nivellierungsoption. Siehe die Dokumentation Ihrer Firmware für die spezifischen verfügbaren Optionen.

G29 Auto Bett Leveling

P Setze die Größe des Gitters fest, das sondiert wird (P x P Punkte). Nicht unterstützt von nicht-linearer Delta-Drucker-Bett-Nivellierung. Beispiel: G29 P4
S Setze die XY-Verfahrgeschwindigkeit zwischen den Nivellierpunkten (in Einheiten/min)
P Dry-Run-Modus. Bewerte nur die Bett-Topologie – Wende die Rotationsmatrix nicht an oder reinige sie. Nützlich, um die Topologie nach einem ersten Durchlauf von G29 zu überprüfen.
V Setze das Detailniveau (0-4). Beispiel: G29 V3
T Generiere einen Bericht zur Bett-Topologie. Beispiel: G29 P5 T für einen detaillierten Bericht. Dies ist nützlich für die manuelle Bett-Nivellierung und um Fehler im Bett zu finden (um bei der Platzierung von Teilen zu helfen). Nicht unterstützt von nicht-linearer Delta-Drucker-Bett-Nivellierung.
F Setze das vordere Limit des Nivellierungsgitters
B Setze das hintere Limit des Nivellierungsgitters
L Setze das linke Limit des Nivellierungsgitters
R Setze das rechte Limit des Nivellierungsgitters
E voreingestellt bei g29 wird standardmäßig den Z-Sensor aktivieren, das Bett testen und dann deaktivieren. Füge E oder E1 hinzu, um die Z-Sonde für jede Messung zu aktivieren/deaktivieren. (Dies hat keinen Effekt bei festen Endschaltern.)

Marlin 1.0.2 und frühere Versionen bieten drei Optionen für die automatische Bett-Nivellierung:

  • Die 3-Punkt-Methode sondiert das Bett an drei Punkten, um eine Matrix zu erstellen und ein flaches, aber unebenes Bett anzupassen.
  • Die planare Gittermethode (nicht Delta) sondiert ein Gittermuster, um eine Matrix mithilfe der „Methode der kleinsten Quadrate“ zu erstellen und ein flaches, aber unebenes Bett anzupassen.
  • Die bilineare Gittermethode (nur Delta) sondiert ein Gittermuster, um ein Mesh zu erstellen und mithilfe bilinearer Interpolation ein unebenes Bett anzupassen.

Marlin 1.1.0 und neuere Versionen ermöglichen die Verwendung der bilinearen Gittermethode (d.h. „Mesh“) für alle Arten von Maschinen, nicht nur Deltas. Dies ist die empfohlene Nivellierungsmethode.
Auch in Marlin 1.1.0 und später ermöglicht die Option PROBE_MANUALLY die Verwendung aller Formen der automatischen Bett-Nivellierung ohne Sensor. Das Verfahren ähnelt dem von MESH_BED_LEVELING (siehe unten). Beginne den Prozess mit G29, um die Düse zum ersten Punkt zu bewegen. Passe die Z-Achse mit G1 oder deiner Host-Software an. Sende erneut G29, um zum nächsten Punkt zu wechseln, und wiederhole dies, bis alle Punkte manuell mit dem Kassenzettelverfahren abgetastet wurden.

Auch in Marlin 1.1.0 und später ermöglicht die Option PROBE_MANUALLY die Verwendung aller Formen der automatischen Bett-Nivellierung ohne Sonde. Das Verfahren ähnelt dem von MESH_BED_LEVELING (siehe unten). Beginnen Sie den Prozess mit G29, um die Düse zum ersten Punkt zu bewegen. Passen Sie die Z-Achse mit G1 oder Ihrer Host-Software an. Senden Sie erneut G29, um zum nächsten Punkt zu wechseln, und wiederholen Sie dies, bis alle Punkte abgetastet wurden.

G29 undefiniertes Bett Leveling
G29 UBL Parameter

Marlin-Firmware (Version 1.1.0 und höher) enthält die Option AUTO_BED_LEVELING_UBL für Unified Bed Leveling. UBL kombiniert Gitternivellierung, Neigungsebenenanpassung, 3-Punkt-Nivellierung und manuelle Bearbeitungswerkzeuge in einem einzigen Paket. Um so viel zu erreichen, beinhaltet UBL G29 mehrere neue Parameter und bietet eine zusätzliche Funktion zur Gitterabstimmung mit G26 Mesh Tuning.

G29 manuelles Bett Leveling
G29 G-Code Beispiele

A Aktivieren Aktiviert das Unified Bed Leveling System. (z.B. M420 S1)
D Deaktivieren Deaktiviert das Unified Bed Leveling System. (z.B. M420 S0)
B# Business Manuelle Nivellierung im „Kassenzettel“-Modus.
H# Höhe Höhe, um die die Düse nach jeder manuellen Nivellierung angehoben wird.
C Fortsetzen Fortsetzen, Konstant oder Aktuelle Position, abhängig von der Phase.
E Jede Verstaut den Sensor nach jedem abgetasteten Punkt.
F# Abklingen Nivellierungskompensation klingt allmählich ab, bis sie bei der angegebenen Höhe aufhört.
I# Ungültig Ungültig machen einer bestimmten Anzahl von Gitterpunkten (X und Y).
J# Gitter Durchführung einer Gitter-Nivellierung des aktuellen Gitters mit n Punkten pro Seite.
K# Vergleichen Vergleichen (Unterschied) des aktuellen Gitters mit dem gespeicherten Gitter # und Ersetzen des aktuellen Gitters durch das Ergebnis.
L Laden Laden des Gitters aus dem zuvor aktivierten Speicherort im EEPROM.
L# Laden Laden des Gitters aus dem angegebenen Speicherort im EEPROM.
S Speichern Speichern des aktuellen Gitters im aktivierten Bereich des EEPROM. Auch alle Einstellungen speichern.
S# Speichern Speichern des aktuellen Gitters im angegebenen Bereich des EEPROM und als aktivierten Bereich festlegen.
S-1 Speichern Speichern des aktuellen Gitters als Ausdruck, der wieder in das System eingespeist werden kann.
O Karte anzeigen Anzeige der Gitterkarten-Topologie.
P0 Phase 0 Nullen der Gitterdaten und Ausschalten des Gitter-Kompensationssystems.
P1 Phase 1 Ungültig machen des Gitters und Durchführung einer automatischen Nivellierung zur Generierung neuer Gitterdaten.
P2 Phase 2 Sondieren unbesetzter Bereiche des Gitters (die nicht automatisch nivelliert werden konnten).
P3 Phase 3 Auffüllen unbesetzter Gitterpunkte mit einem festen Wert. Kein „C“ für „intelligente Füllung“ (Extrapolation).
P4 Phase 4 Feinabstimmung des Gitters. Delta-Gitterkompensation erfordert ein LCD-Panel.
P5 Phase 5 Ermitteln der mittleren Gitterhöhe und der Standardabweichung.
P6 Phase 6 Verschieben der Gitterhöhe. Alle Gitterpunkte werden um den mit „C“ angegebenen Betrag angepasst.
Q Test Lädt das angegebene Testmuster, um die Systemfunktion zu überprüfen.
R# Wiederholen Wiederholt den Befehl die angegebene Anzahl an Malen. Standard: Gitterpunkte X * Y.
T 3-Punkt Führt eine 3-Punkt-Nivellierung des Betts auf dem aktuellen Gitter durch.
U Unlevel Führt eine Sondierung des äußeren Umfangs durch, um beim physischen Nivellieren des Betts zu helfen.
W Was? Druckt einen Bericht über die gespeicherten Daten des Unified Bed Leveling.
x# Die X-Position für den Befehl.
y# Die Y-Position für den Befehl.
Z Null Führt eine einzelne Nivellierung durch, um die Z-Höhe der Düse einzustellen.
Z# Null Hebt/Senkt das gesamte Gitter an, um dem angegebenen Unterschied zu entsprechen (zusätzlich zu zprobe_zoffset).
G29 S1 ; Gehe zum ersten Punkt und warte auf eine Messung
G29 S2 ; Speichere die aktuelle Z-Höhe und gehe zum nächsten Punkt
G29 S3 xn yn zn.nn ; Ändere die Z-Höhe eines einzelnen Punktes

Parameter für G29 als S#
S0 erzeugt einen Gitterbericht
S1 startet das Abtasten der Gitterpunkte
S2 tastet den nächsten Gitterpunkt ab
S3 xn yn zn.nn manuelle Änderung eines einzelnen Punktes
S4 zn.nn setzt den Z-Offset. Positiv entfernt vom Bett, negativ näher am Bett.

Die Marlin Firmware (version 1.0.2 und höher) bietet auch eine MESH_BED_LEVELING-Funktion, die verwendet werden kann, um eine Bett-Nivellierung auf Maschinen ohne Nivellierungssensor durchzuführen. Diese Form der Bett-Nivellierung gleicht eine ungleichmäßige Z-Höhe über die Oberfläche des Betts mithilfe eines Gitters und bilinearer Interpolation aus.

G29 Mesh Bed Compensation
G-Code G29 Parameter:
s0 (Standard, wenn kein S-Parameter angegeben ist) Tastet das Bett ab, speichert die Höhenkarte in einer Datei auf der SD-Karte und aktiviert die Höhenkarte. Der Standardordner für die Höhenkarten-Datei ist /sys und der Standarddateiname ist heightmap.csv.
s1 Lädt die Höhenkarte aus einer Datei und aktiviert die Bettkompensation. Der Standardordner und Dateiname sind die gleichen wie bei S0.
s2 Löscht die aktuell geladene Bett-Höhenkarte.

In RepRapFirmware 3.2 und höher führt G29 die Makrodatei mesh.g aus, wenn sie existiert, andernfalls verhält es sich wie G29 S0. Die Datei mesh.g kann andere Aktionen ausführen (z.B. Homing oder Werkzeugauswahl) und dann G29 S0 verwenden, um das Abtasten durchzuführen.

Hinweise:
In der Prusa Firmware ist G29 standardmäßig nicht aktiviert, stattdessen wird G81 verwendet.1

G29.1 Z Probe Offset
Beispiel G29.1 auch M851

G29.1 X40 Y30 Z0.7

Setze den Offset des Z-Sensors. Der Offset wird von allen Sensorbewegungen abgezogen.

Direkt von der Düse:

G29.1 Z0.0

Setzen des Offset des Z-Sensorkopfs. Der Offset wird von allen Sensorbewegungen abgezogen. Der berechnete Wert ergibt sich aus dem Abstand des Werkzeugkopfs vom aktuellen Nullpunkt der Achse.

Der Benutzer platziert normalerweise den Werkzeugkopf am Nullpunkt der Achse und gibt den Befehl G29.2 aus.

G30 einzelne Z-Probe
Beispiele G30

G30 ; Tastet das Bett an der aktuellen XY-Position ab. Wenn der Sensor ausgelöst wird, wird die Z-Koordinate auf die Auslösehöhe des Sensors gesetzt.
G30 s-1 ; Tastet das Bett an der aktuellen XY-Position ab. Wenn der Sensor ausgelöst wird, wird die Z-Koordinate nicht angepasst.
G30 P0 X30 Y60 Z-99999 ; Tastet das Bett an X30 Y60 ab und speichert die XY-Koordinaten und den Höhenfehler als Punkt 0.
G30 P3 X160 Y160 Z-99999 S4 ; Tastet das Bett an X160 Y160 ab, speichert die XY-Koordinaten und den Höhenfehler als Punkt 3 und berechnet eine 4-Punkt-Kompensation oder Kalibrierung.
G30 P3 X160 Y160 z-99999 s-1 ; Wie das vorherige Beispiel, aber gibt nur die Höhenfehler aus.

Parameter von G30
Pnnn Probe-Punktnummer
Xnnn X-Koordinate
Ynnn Y-Koordinate
Znnn Z-Koordinate
Hnnn Höhenkorrektur
Snnn Parameter festlegen

Benutzung:
G30 Pnnn Xnnn Ynnn Znnn Hnnn Snnn

In seiner einfachsten Form tastet es das Bett an der aktuellen XY-Position ab.

Die RepRap Firmware unterstützt zusätzliches Verhalten: Wenn ein Pn-Feld angegeben ist, werden die abgetasteten X-, Y- und Z-Werte als Punkt n auf dem Bett gespeichert, um die Offset-Ebene zu berechnen oder eine Delta-Drucker-Kalibrierung durchzuführen. Wenn X-, Y- oder Z-Werte angegeben sind (z.B. G30 P1 X20 Y50 Z0.3), werden diese Werte anstelle der aktuellen Koordinaten der Maschine verwendet. Ein unsinniger Z-Wert (kleiner als -9999.0) führt dazu, dass die Maschine den aktuellen Punkt abtastet, um den Z-Wert zu erhalten, anstatt den angegebenen Wert zu verwenden. Wenn ein S-Feld angegeben ist (z.B. G30 P1 Z0.3 S), wird die Bett-Ebene zur Kompensation berechnet und gespeichert. Die Kombination dieser Optionen ermöglicht es, die Maschine mit G1-Befehlen zu Punkten zu bewegen und dann das Bett abzutasten, oder dem Benutzer, die Düse interaktiv zu positionieren und diese Koordinaten zu verwenden. Der Benutzer kann diese Werte auch aufzeichnen und in einer Setup-G-Code-Datei für die automatische Ausführung platzieren.

Die RepRap Firmware verwendet den Wert des S-Parameters, um anzugeben, welche Berechnung durchgeführt werden soll. Wenn der Wert -1 ist, werden die Z-Offsets aller abgetasteten Punkte ausgegeben, aber keine Kalibrierung durchgeführt. Wenn der Wert null oder nicht vorhanden ist, bedeutet dies, dass die Anzahl der zu kalibrierenden Faktoren mit der Anzahl der abgetasteten Punkte übereinstimmt. Andernfalls gibt der Wert die Anzahl der zu kalibrierenden Faktoren an, die nicht größer sein darf als die Anzahl der abgetasteten Punkte. In Version 1.09 können die Anzahl der Faktoren bei der automatischen Bettkompensation auf einem kartesischen oder CoreXY-Drucker 3, 4 oder 5 betragen und bei der automatischen Kalibrierung eines Delta-Druckers 3, 4, 6 oder 7.

RepRapFirmware unterstützt einen optionalen H-Parameter, der eine Höhenkorrektur für diesen Abtastpunkt darstellt. Dies ermöglicht es, dass die Z-Sonde eine Auslösehöhe hat, die sich mit der XY-Position ändert. Die nominale Auslösehöhe des Z-Sensors (z.B. am Bettzentrum) wird in der Z-Parameter des G31-Befehls in der config.g-Datei angegeben. Wenn mit G30 abtastest und der Sensor auslöst wird, geht die Firmware davon aus, dass die Düse sich auf der nominalen Auslösehöhe plus dem Wert befindet, der im H-Parameter angegeben wurde.

Die 1MK4duo-Firmware unterstützt einen optionalen Parameter für Delta-Drucker.

Parameter:

Xnnn X-Koordinate
Ynnn Y-Koordinate
Sn verstaut den Sensor, wenn 1 (Standard=1)
Znn mit einem von Null verschiedenen Wert wird das Ergebnis auf die aktuelle delta_height angewendet
Pnn mit einem von Null verschiedenen Wert wird das Ergebnis auf die aktuelle zprobe_zoffset angewendet

Beispiel:

G30 Xnnn Ynnn S Z P

In Prusa Firmware ist dieser G-Code standardmäßig deaktiviert und muss im Quellcode aktiviert werden.

G31 Aktuellen Probestatus setzen oder melden

Beispiele G31

G31 P500 Z2.6
G31 X16.0 Y1.5
G31 Pnnn Xnnn Ynnn Znnn Cnnn Snnn

Parameter

Pnnn Auslösewert
Xnnn Probe X-Offset
Ynnn Probe Y-Offset
Znnn Auslöse-Z-Höhe
Cnnn Temperaturkoeffizient(en) der Auslösehöhe
Snnn Kalibrierungstemperatur
Tnnn (RepRapFirmware 1.17 und neuer) Z-Sensortyp, auf den diese Parameter zutreffen. Standardmäßig wird der aktuelle Z-Sensortyp verwendet, wie er durch den M558 P-Parameter definiert ist.

Wenn der Befehl alleine verwendet wird, gibt es an, ob der Z-Sensor ausgelöst wird, oder es gibt den Z-Sensorwert in bestimmten Einheiten an, wenn der Sensor Höhenwerte erzeugt. Wenn es mit einem Z- und P-Feld kombiniert wird (Beispiel: G31 P312 Z0.7), wird die Z-Höhe auf 0,7 mm gesetzt, wenn der Z-Sensorwert 312 erreicht, wenn ein G28 Z0 (Z-Achse auf Null setzen) Befehl gesendet wird. Die Maschine bewegt sich dann um weitere -0,7 mm in Z, um sich auf Z = 0 zu positionieren. Dies ermöglicht es berührungslosen Messsensoren, sich dem Bett anzunähern, es aber nicht zu berühren, und den entstandenen Spalt zu berücksichtigen. Wenn der Sensor ein Berührungssensor ist und ein einfaches 0/1 Ein-/Aus-Signal erzeugt, gibt G31 Z0.7 dem RepRap-Gerät an, dass es sich in einer Höhe von 0,7 mm befindet, wenn die Sonde ausgelöst wird.

In RepRapFirmware können separate G31-Parameter für verschiedene Sensortypen definiert werden (z. B. 0+4 für Schalter, 1+2 für IR-Sonden und 3 für alternative Sensoren). Um anzugeben, für welchen Sensor Sie Parameter festlegen, senden Sie einen M558-Befehl, um den Sensortyp auszuwählen, bevor Sie den G31-Befehl senden, oder verwenden Sie den T-Parameter.

In Repetier unterstützt G31 keine Parameter und gibt einfach den Status der Z-Sonde (hoch/niedrig) aus.

Notizen:
X- und Y-Offsets des Z-Sensors relativ zum Druckkopf (d.h. der Position, wenn das leere Werkzeug ausgewählt ist) können in RepRapFirmware angegeben werden. Dadurch können Sie Ihre Sensorkoordinaten basierend auf der Geometrie des Bettes berechnen, ohne sie für die Z-Probe X- und Y-Offset korrigieren zu müssen.

In RepRapFirmware können zusätzliche Parameter ‚S‘ (Betttemperatur in °C, bei der der angegebene Z-Parameter korrekt ist, Standard ist die aktuelle Betttemperatur) und ‚C‘ (Temperaturkoeffizient des Z-Parameters in mm/°C, Standard ist null) für den alternativen (ultraschallbasierten) Sensor festgelegt werden. Dies ist nützlich für Sonden, die von der Temperatur beeinflusst werden, wie z.B. PINDA. RepRapFirmware 3.1 und später ermöglichen die Angabe von Temperaturkoeffizienten erster und zweiter Ordnung, z.B. C0.015:0.001.

Kommentar hinterlassen

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