Rudis-Hobbysite.de
Hier finden Sie meine Projekte
 
 

GRBL


GRBL ist eine kostenlose, quelloffene Open-Source-Software zur Steuerung der Bewegung von Maschinen. Der G-Code Interpreter ist auf einem Atmega Mikroprozessor implentiert und erzeugt die Signale STEP und DIR für die Treiberbausteine der Schrittmotoren.

GRBL ist eine Firmware für einen Arduino Uno oder Mega. Dieser kommuniziert dann mit dem G-Code-Sendeprogramm. Er erhält von diesem den G-Code und Steuerbefehle. Rückgaben sind z.B. die aktuellen Positionen.

Folgende GRBL-Versionen möchte ich hier vorstellen:


GRBL V1.1 ist das neueste originale GRBL für den Arduino UNO. Dieses ist für 3 Achsen ausgelegt und ist somit die Standard Firmware für normale Fräsen. Die Verdrahtung zu den Stepperdrivern ist bei Github im Wiki beschrieben.


GRBL-MEGA V1.1 ist das originale GRBL für den Arduino MEGA. Dieses ist auch für 3 Achsen ausgelegt. Der Mega ist leistungsfähiger als der UNO und somit die bessere Wahl.


GRBLQ ist die dritte Firmware die ich hier vorstellen will. Sie basiert auf der neuesten Version für den Arduino Mega. Die "Quadro"-Achse kann als Drehachse oder als Linearachse konfiguriert werden. GRBLQ kann ist für Fräsen mit Teilapparat ideal. Pins für Spindel-PWM und Achslimits sind auch vorhanden.
Die Umstellung der Q-Achse auf linear erfolgt in der default.h. Wie das geht ist hier im wiki beschrieben.


GRBL-Mega-5X ist die vierte Firmware die ich hier vorstellen will. Sie basiert ebenfalls auf der neuesten Version für den Arduino Mega. Das Pinout passt auf die Ramps1.4-Platine. Die Anschlüsse sind hier im Pinout beschrieben. Mit GRBL-Mega-5X kann man alle 5 Achsen des Rampsboards mit CNC Befehlen ansteuern. Die vierte und fünfte Achse kann als Drehachse oder als Linearachse konfiguriert werden. GRBL-Mega-5X ist wohl für 3D-Drucker gedacht, kann aber auch mit linear konfigurierten Achsen für Styroschneiden eingesetzt werden. Heizbett für Spindel(Draht)-PWM und Achslimits sind auch vorhanden.

Die Einstellungen der Achse für die Styroschneide auf linear erfolgt in der default.h. Sehr schön ist hier auch die Möglichkeit die Achsbezeichnungen auf X,Y,U,V einzustellen, wie es für Kutty notwendig ist.



Tipps:


Die Installation von GRBL mittels Arduino IDE:

Dazu die ZIP von Github herunterladen. Am Besten die Zip entpacken. Den inneren Ordner "grbl" wieder zippen. Der darin enthaltene Ordner "examples" kann vorher noch herausgenommen werden. In der Arduino IDE bei "Sketch-> Bibliothek einbinden-> .ZIP-Bibliothek hinzufügen" den zuvor erstellten Ordner hinzufügen. Hier eventuell noch die "config.h" anpassen. In dem Ordner "examples/grblUpload" befindet sich die Datei "grblUpload.ino". Diese öffnen und auf den angeschlossenen Arduino hochladen. Nun haben wir den Arduino geflasht. Die ArduinoIDE beenden um den Arduino freizugeben. Dieser sollte jetzt mit Kutty kommunizieren können. Dazu in Kutty auf das rote Feld oben links klicken und den richtigen Comport auswählen. Wenn das Feld grün wird hat alles geklappt. Er kann nun eingebaut und verwendet werden.

Grbl einrichten:

Im Kutty-Menue Einstellungen > Einstellungen Maschine lassen sich die Grbl-Parameter übersichtlich editieren. Zu den einzelnen Angaben bitte das Grbl-Wiki Konfiguration benutzen. Dabei $20 und $21 erstmal auf 0 setzen. Diese sind erst in Verbindung mit Homing interessant.


Die "invert mask": Hier werden die Werte nach folgender Tabelle (binär) gebildet. Die Achse X Y Z werden von hinten her aufgelistet. Die Digitalwerte werden dann so zusammengezählt. Soll Z.B. Achse Z anders herum laufen so ist z.B. bei $3=4 einzugeben.


Wert 8 4 2 1
Achse
Z Y X
Beispiel1 2 N N Y N
Beispiel2 5 N Y N Y


Bei der Homing/Referenzfahrt z.B. habe ich die Referenzschalter für X links, für Y vorne und Z oben. Dabei ist X und Y invertiert und ergibt nach der Tabelle 1+2=3. Somit ist $23=3.
Bei GRBL ist der Maschinen-Nullpunkt (G53) nach der Referenzfahrt rechts hinten oben. Das heißt bei Benutzung von Softlimit ist der Maschinenraum im negativen Bereich (dritter Quadrant).
Man arbeitet natürlich mit den Werkstück-Nullpunkten. Das ist zuerst automatisch G54. Es können weitere Werkstück-Nullpunkte bis G59 benutzt werden. Solange in diesen keine Offsets gespeichert sind, kann nur mit negativen Positionen gearbeitet werden. Man setzt sich die Werkstück-Nullpunkte wie man sie braucht und arbeitet dann natürlich wieder meist im positiven Bereich.
Will man nur für eine einzelne Achse kein Softlimit haben, kann man es deaktivieren in dem man Max travel auf 0 setzt. Da eine Drehachse endlos ist, ist es meist sinnvol mit z.B. $133=0 das Softlimit zu deaktivieren.


Eine gute Beschreibung zu GRBL befindet sich auch hier.


Verwenden Sie ein geschirmtes und nicht zu langes USB-Kabel. So ist die Datenübertragung stabiler, Störungen sollten dann nicht vorkommen.



GRBL-Mega-5X für eine Styroschneide einrichten:

Dazu bearbeiten wir die Datei config.h im Ordner Arduino/library/grbl. Folgende Zeile werden geändert:

 53: #define N_AXIS 4 // Number of axes
 54: #define N_AXIS_LINEAR 4 // Number of linears axis
 64: #define AXIS_3_NAME 'U'
 71: #define AXIS_4_NAME 'V' // Letter of axis number 4
173: #define HOMING_CYCLE_0 ((1<<AXIS_2)|(1<<AXIS_4)) // Home Y and V axis first to clear workspace.
174: #define HOMING_CYCLE_1 ((1<<AXIS_1)|(1<<AXIS_3)) // Home X and U axis at second

Nach dem Hochladen muss Grbl noch konfiguriert werden. Das geht ganz übersichtlich mit Kutty im Menü Einstellungen > Einstellungen Maschine. Ist $20 auf 1 gesetzt sind ohne Offset nur negative Koordinaten anfahrbar. Die anderen Werte entsprechend den Maschinenwegen eingeben. Die Laufrichtung der Motoren kann mit $3 und dem Wert aus der Dir invert Mask Tabelle, oder auch einfach durch Drehen des Steckers um 180° eingestellt werden. Zuvor sicherheitshalber spannungsfrei schalten.
Die Anschlüsse sind im WIKI bescheieben.

Bei der Verwendung von 24V für das Ramps-Board ist unbedingt darauf zu achten, dass man die Diode zur Mega-Spannungsversorgung enfernt. Der arduinoeigene Spannungsregler verträgt keine 24V. Dieses wird durch den USB-Anschluss mit Strom versorgt.


Meine Maschinen:


Fräsmaschine:

Die Fräse läuft derzeit einwandfrei mit GRBL V1.1 auf dem Arduino Mega. Dieser hat einen größeren Sendepuffer als der Uno. Bei vielen kurzen NC-Bewegungen wie Gravuren kommt die Maschine mit dem Uno ins Stottern. Die NC-Zeilen sind schneller abgearbeitet als Neue gesendet. Der größere Sendeblock beim Mega verbessert dies beträchtlich. Die Maschine läuft flüssiger.
Ein praktisches Hilfsmittel beim Fräserwechsel ist ein Werkzeuglängensensor. Von A5 mit Krokoklemme an den Fräser und die Kontaktplatte an Gnd. Mehr braucht es im Grunde nicht.
Z0 ist bei mir die Oberseite der Opferplatte, die Werkstückhöhen werden im Cam eingegeben. Die Offsets der Arbeitskoordinatensysteme sind im Arduino gespeichert. So kann man gleich nach der Referenzfahrt losfräsen.

Styroschneide:

Die Schneide wird mit GRBL-Mega-5X gesteuert. Damit funktionieren Referenzfahrt und die Drahtsteuerung.
Für die Drahtsteuerung benutze ich den D8 Ausgang. Dieser wird von Ramps über den CNC-Code geregelt. Hab's so eingerichtet: $30=100 und $31=0, das ergibt mit M3 S100 die volle "Drehzahl" (100% PWM). Mit M5 schält man den Strom wieder aus. Für den kurzen Bogen reichen dann S50 (50% PWM). Damit sinkt die Spannung auf die Hälfte. Für die halbe Drahtlänge braucht man auch nur die halbe Spannung für den gleichen Strom. So bleibt der Vorschub und Abbrand gleich. Mit 0,4 mm Edelstahldraht komme ich so auf ca. 400 mm/min Vorschub.



© R. Kienzler