GRBL: Firmware, Einstellungen und Echtzeitbefehle verstehen
Thema: CNC-Steuerung & Achsen
Ein verbreitetes Missverständnis lautet, GRBL sei ein Programm auf dem PC, das die Maschine steuert. Tatsächlich arbeitet die Firmware auf dem Steuerboard; die Anwendung auf dem Rechner ist ein Sender, der G-Code überträgt und Rückmeldungen anzeigt. Wer beide Ebenen trennt, findet Fehler schneller.
Firmware auf dem Mikrocontroller, Bedienung am PC
GRBL 1.1 läuft laut Projektbeschreibung auf einem Arduino mit 328p-Prozessor, etwa Uno oder Nano, und steht unter der GPLv3; die letzte Veröffentlichung ist v1.1h von 2019. Der G-Code kommt über die serielle USB-Verbindung des Arduino.
Weil eine Flusskontrolle fehlt, lässt sich eine Datei nicht einfach hochladen. Ein Sender schickt deshalb eine Zeile, wartet auf „ok“ oder eine Fehlermeldung und schickt dann die nächste. Bei einer PC-basierten Steuerung wie LinuxCNC laufen Interpreter und Bahnplanung dagegen auf dem Rechner. Beide Architekturen ordnet der Beitrag zur Softwarekette offener CNC-Steuerungen ein.
Vom G-Code-Satz zum Schrittimpuls
Im Mikrocontroller durchläuft jeder Satz drei Stufen. Der Parser prüft den G-Code und verwaltet den modalen Zustand. Der Planer schaut bis zu 16 Bewegungen voraus und legt die Geschwindigkeiten so fest, dass jede Achse ihre Beschleunigungsgrenze einhält; an Satzübergängen bestimmt die Junction Deviation ($11) das Abbremsen. Zuletzt entstehen Schritt- und Richtungssignale mit bis zu 30 kHz.
Der Signalweg Schritt für Schritt
Startet nur auf Wunsch. Pause hält den aktuellen Stand fest. Die Darstellung läuft in Lerngeschwindigkeit; sie simuliert keine Maschinensteuerung. Ohne Bewegung erklären Grafik und Liste denselben Inhalt.
- Der Sender auf dem PC überträgt den G-Code zeilenweise über USB und wartet nach jeder Zeile auf „ok“ oder eine Fehlermeldung.
- Der Parser prüft den Satz, zum Beispiel G1 X10 F300, und führt Einheit, Ebene und Vorschub als modalen Zustand mit.
- Der Planer schaut bis zu 16 Bewegungen voraus und plant Beschleunigungs- und Bremsrampen innerhalb der eingestellten Achsgrenzen.
- Die Impulserzeugung gibt Schritt- und Richtungssignale an die Treiber; der Motor dreht die Spindel und bewegt den Schlitten.
- Ein Endschalter meldet über den Limit-Eingang zurück. Er dient der Referenzfahrt oder löst bei aktiven Hard-Limits einen Alarm aus; eine laufende Positionsmessung ersetzt er nicht.
Eine Positionsrückmeldung gibt es nicht; GRBL zählt nur die ausgegebenen Schritte. Grundlagen zu Bahnplanung und Rückführung erklärt der Artikel zur CNC-Bewegungssteuerung.
Die Projektbeschreibung listet den G-Code-Umfang auf, darunter G0 bis G3, G38.2 bis G38.5 zum Antasten, G54 bis G59, G90/G91 sowie M3 bis M5 und M8/M9. Eine Werkzeugradiuskorrektur fehlt, vorhanden ist nur G40; Makros, Variablen und die meisten Zyklen werden nicht unterstützt, Achswörter sind nur X, Y und Z. Die Grundbefehle erklärt der Beitrag G-Codes nach DIN 66025.
Einstellungen mit $$ lesen und ändern
Der Befehl $$ listet alle Einstellungen, die im EEPROM auch nach dem Ausschalten erhalten bleiben. Mit $x=Wert wird geschrieben, etwa $100=320, und GRBL bestätigt mit „ok“. Nach Änderungen an $100 bis $102 verlangt die Dokumentation einen Soft-Reset.
| Einstellung | Bedeutung | Hinweis laut Dokumentation |
|---|---|---|
| $100–$102 | Schritte pro mm für X, Y, Z | Aus Motorschritten, Mikroschritt und Weg pro Umdrehung. |
| $110–$112 | Höchstgeschwindigkeit in mm/min | Gilt auch für G0. |
| $120–$122 | Beschleunigung in mm/s² | Mehrachsbewegungen folgen der schwächsten Achse. |
| $130–$132 | Verfahrweg in mm | Nur für Soft-Limits verwendet. |
| $20 | Soft-Limits | Setzt Homing und passende $130–$132 voraus. |
| $21 | Hard-Limits | Endschalter stoppen sofort, Alarm. |
| $22 | Homing-Zyklus | Sperrt G-Code bis zur Referenzfahrt mit $H. |
Für Geschwindigkeit und Beschleunigung beschreibt die Dokumentation ein Herantasten: achsweise steigern, bis der Motor außer Tritt fällt, dann 10 bis 20 % darunter bleiben und mit Trockenläufen bestätigen.
Eigenes Rechenbeispiel: Schritte pro Millimeter für $100
Wir nehmen 200 Vollschritte je Umdrehung, 8 Mikroschritte am Treiber und eine Spindel mit 5 mm Steigung an. Nach der Formel der Dokumentation ergibt sich $100 = 200 × 8 / 5 mm = 320 Schritte/mm. Die Schrittfrequenz von bis zu 30 kHz begrenzt die Achse damit rechnerisch auf 30.000 / 320 = 93,75 mm/s oder 5.625 mm/min; ob der Motor das erreicht, zeigt erst der Test für $110.
Geprüft wird durch Abfahren und Messen: G91 G1 X100 F300 fährt 100 mm, danach schaltet G90 zurück. Gemessen wird mit Messuhr oder Messschieber, stets in derselben Anfahrrichtung. Angenommen, es ergeben sich 99,4 mm; rechnerisch wären dann 320 × 100 / 99,4 ≈ 321,9 einzutragen. Da 320 direkt aus der Mechanik folgt, lohnt vorher die Suche nach der Ursache, etwa einer abweichenden Steigung oder verlorenen Schritten. Ein Faktor 2, also 50 statt 100 mm, deutet auf eine andere Mikroschritteinstellung am Treiber hin. Steigung und Spiel von Gewindetrieben behandelt der Beitrag zur Kugelumlaufspindel.
Zustände, Alarme und Echtzeitbefehle
Die Dokumentation nennt unter anderem die Zustände IDLE, RUN, HOLD, JOG, DOOR und ALARM, die der Sender mit „?“ abfragt. Im Alarm sperrt GRBL G-Code; Auslöser sind etwa ein Hard-Limit, ein Soft-Limit oder ein Reset während der Bewegung. Nach einem Hard-Limit ist die Position wahrscheinlich verloren, nach einem Soft-Limit bleibt sie erhalten. Mit aktivem Homing startet GRBL im Alarm, bis $H die Referenzfahrt ausgeführt hat; $X hebt die Sperre auf, ist laut Dokumentation aber nur für Notfälle gedacht.
Echtzeitbefehle sind einzelne Zeichen außerhalb des Puffers, die innerhalb einiger zehn Millisekunden wirken. „!“ (Feed Hold) bremst ab und hält an, Spindel und Kühlmittel laufen aber weiter; „~“ setzt fort, Strg-X löst einen Soft-Reset aus, 0x84 (Safety Door) schaltet auch Spindel und Kühlmittel ab. Overrides ändern den Vorschub in Stufen von 10 % und 1 %, den Eilgang auf 100, 50 oder 25 % sowie die Spindeldrehzahl. Zur Einordnung siehe CNC-Override. Ein Feed Hold ersetzt keinen Not-Halt.
Typische Fehler, Grenzen und Weiterentwicklungen
Falsche Schritte pro Millimeter verfälschen jedes Maß. Hard-Limits reagieren auf jede Pegeländerung, Störimpulse auf Endschalterleitungen lösen daher Fehlalarme aus. Bricht das Homing nach kurzer Strecke ab, nennt die FAQ Störungen als Ursache und empfiehlt Filterung, Abschirmung und einen kleinen Kondensator zwischen Eingang und Masse. Die Entprellzeit $26 wirkt nur beim Homing, und Soft-Limits setzen ein aktiviertes Homing voraus.
Verbindungsabbrüche und verlorene Zeilen führt die FAQ meist auf elektromagnetische Störungen zurück, etwa durch Motor- oder Netzleitungen neben Logik- und USB-Kabeln; genannt werden getrennte Führung, rechtwinklige Kreuzung und Sternmasse. Auch USB-Seriell-Treiber am PC kommen in Frage.
Für 32-Bit-Controller gibt es grblHAL, eine Neufassung von grbl 1.1f mit Treibern für mehr als 15 Prozessorfamilien. Es ergänzt etwa Bohrzyklen und, je nach Treiber, Werkzeugwechsel mit M6; manche Sender kommen laut Projekt mit den Erweiterungen nicht zurecht. FluidNC für den ESP32 stammt von den Entwicklern von Grbl_ESP32; dort ersetzt eine YAML-Datei die meisten $-Einstellungen, das Sende-Antwort-Protokoll bleibt erhalten.
Prüfliste für die Inbetriebnahme
- Version mit $I abfragen und die passende Dokumentation verwenden.
- Einen Sender wählen, der GRBL 1.1 unterstützt.
- $$ sichern und den Mikroschritt jedes Treibers notieren.
- $100 bis $102 berechnen, Soft-Reset ausführen, jede Achse abfahren und messen.
- Achsrichtungen und Endschalter im Statusbericht prüfen, erst dann $22 aktivieren.
- $110 bis $122 achsweise ermitteln; neue Programme im Prüfmodus $C testen.
- Soft-Limits erst nach funktionierendem Homing und gemessenem Verfahrweg einschalten.
- Feed Hold, Reset und Not-Halt vor dem ersten Schnitt ausprobieren.
- Motor-, Spindel- und USB-Leitungen getrennt führen.
Quellen und fachliche Einordnung
Primärquellen, geprüft am 08.11.2026. Eigene Lehrbeispiele und schematische Grafiken. Befehlsdetails gelten für die genannte Firmware-Version.
- gnea/grbl: Projektbeschreibung, Plattform und G-Code-Umfang von Grbl v1.1
- gnea/grbl Wiki: Grbl v1.1 Configuration
- gnea/grbl Wiki: Grbl v1.1 Commands und Echtzeitbefehle
- gnea/grbl Wiki: Frequently Asked Questions
- grblHAL: Core-Repository und Unterschiede zu grbl 1.1
- FluidNC: Firmware für ESP32 und Grbl-Kompatibilität