- 10 mMn wichtigsten G-Code Befehle
- Marlin G-Codes
- G0 und G01 Verfahren im Eilgang und Vorschub
- G02 und G03 Kreisinterpolation im und gegen den Uhrzeigersinn
- G04 Verweilzeit definierte Wartezeit
- G05
- G10 Eilgang polare Koordinaten
- G11 Eilgang Linien Interpolation
- G12 Nozzle säubern
- G20 Einheit Zoll
- G21 Einheit Millimeter
- G26 Gittervalidierungsmuster
- G27 Nozzle parken
- G28 Bewege Achse(n) zum Ursprung (Home)
- G29 Z-Probe
- G29 Auto Bett Leveling
- G29 undefiniertes Bett Leveling
- G29 manuelles Bett Leveling
- G29 Mesh Bed Compensation
- G29.1 Z Probe Offset
- G30 einzelne Z-Probe
- G31 Aktuellen Probestatus setzen oder melden
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
G28 | Fahre alle Achsen zum Ursprung² |
G28 X Z | Fahre 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
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.