Wissen: grbl

Aus letsgoing
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Bauteile

Step 1: Programme installieren


  • Erläuterung
    • Auf den Arduino wird mit dem xloader ein grbl-hex-file hochgeladen. Das grbl-hex-file wird mit win-avr mit dem make-befehl erzeugt.
    • mit dem Vektorzeichenprogramm inkscape wird gezeichnet. Mit dem laser engraver - plugin kann man einen g-code erzeugen.
    • der g-code kann mit notepad++ angesehen oder editiert werden.
    • mit dem universal-g-code sender wird der g-code an den Arduino gesendet.
    • im universal-g-code sender kann man über $-Befehle die Parameter einstellen.
    • alternativ wird mit sketchup gezeichnet

Schritt 2: Verdrahtung der Schrittmotoren mit dem EasyDriver

  • Nema Schrittmotor folgendermaßen anschließen: --A--A--B--B-- :rot - blau - grün gelb --> anlöten von Drahtspitzen
  • Power: unabhängig vom board 12 Volt pro Motor ca. 400 mA
  • Gnd und 5V: wird nicht benötigt
  • x-Achse: Grd - Step - dir an den Arduino Gnd - Pin2 - Pin5
  • y-Achse: Grd - Step - dir an den Arduino Gnd - Pin3 - Pin6
  • Achtung: Niemals einen Motor an- oder abschließen, wenn er Saft hat. Das zerstört das Board!

Schritt 3: grbl controller

Schritt 4: hex-File auf den Arduino hochladen

  • Um das hex-file auf den Arduino hochzuladen, braucht man ein Programm namens XLoader.
  • download x-loader: http://xloader.russemotto.com/
  • Link und Beschreibung finden sich hier: https://github.com/grbl/grbl/wiki/Flashing-Grbl-to-an-Arduino.
  • laut faq wird der bootloader vom arduino nicht überschrieben. der arduino kann also ganz normal weiterverwendet werden.
  • Nachdem Draufbrennen vom hexfile kann man über den serialMonitor Kontakt aufnehmen. Es erscheint das dollarzeichen. Mit eingabe eines dollarzeichens (zeilenumbruch einstellen und die richtige baudrate) kann man das menü sehen. Hier könnten dann auch die parameter verändert werden (geht mit dem univeral-g-code-sender aber komfortabler). siehe Schritt 6: Konfigurieren von grbl.

Schritt 5: g-code-sender installieren

Schritt 6: Konfigurieren von grbl

  • Im Univeral Gcode Senser gibt es den Menupunkt Settings. Dort kann man sehr beque die Firmware-Settings für grbl einstellen.
  • alternativ über commands: dort $$ für die Hilfe eingeben und über z.B. $17=0 den homingcircle ausschalten
  • https://github.com/grbl/grbl/wiki/Configuring-Grbl-v0.8
  • z.B. Schrittmotor mit 8 microsteps und einer Auflösung von 200 Schritten pro Umdrehung: 8 x 200 steps pro Umdrehung ergibt 1600 Schritte pro Umdrehung. Wenn man 10 Steps pro mm bräuchte, dann muss man 1600 geteilt durch 10 gleich 160 steps/mmm eingeben.

Step 7: Aufruf Univeral G-code Sender

  • Port vom UNO eintragen
  • Baudrate 9600 eintragen
  • auf open klicken
  • Es erscheint: **** Connected to COM XY @ 9600 baud ****
  • grbl 0.8c ($ for help)

Step 8: Befehle direkt über Univeral G-code Sender eingeben

  • Klicke auf commands und gib in die Command-Zeile deinen Befehl ein. Mit Enter abschließen.
    • X10
    • X-10

Step 9: Befehle über File Mode eingeben

  • Klicke auf File Mode und wähle über Browse deine Datei mit der Endung cnc aus.

Schritt 10 G-Code mit Incscape generieren


  • formen zeichnen
  • Erweiterungen laserengraver laser preferences directory --> output ordner festlegen
  • anwenden!

alternativ Schritt 11 G-Code mit Sketchup generieren

  • phlat-Plugins installieren


Parameter festlegen

  • FeedRate 250
  • Material Thickness bei Styroporschneider 1 mm (wird benötigt, sonst Standardwerte Schnellgang für alle Fahrten)
  • In/Outside Overcut %
  • Bit Diameter (Drahtdicke + x)
  • Safe Traver (Z) = 0mm bei Styropor
  • Safe Length (X) (Styroporlänge)
  • Safe Width (Y) (Styroporbreite)


Zeichnen - Phlat-Tools und Sendern

  • Rahmen zeichnen um phlat-Layer
  • Mit Hilflinien Ausschnitt festlegen
  • Quadrat zeichnen
  • Schnitt mit phlat-outside cut tool markieren (wenn man das innere braucht), (sonst inside cut)
  • löschen mit dem erase Tool
  • Grüner Pfeil: Generate Gcode Output und speichern

Programm z.B. mit Notepad++ editieren

  • g-Code-Datei mit Texteditor öffnen
  • Prozentzeichen zu Beginn und am Ende entfernen
  • (geklammerte Textzeilen entfernen --> g-Code-Sender meldet sonst Fehler)

Programm mit G-Code-Sender ausführen

  • Datei mit G-Code-Senser öffnen File Mode --> Browse
  • Datei mit Visualize anzeigen (zeigt mit gelbem Stift, wo sich der Fräser gerade befindet)
  • Datei mit Send an den Styroporschneider übergeben.


Schritt 12: machine control

  • reset Zero: Nimmt die momentanen Koordinaten als Nullpunkt ohne die Maschine zu bewegen
  • Return to Zero Bewegt die Maschine zum 0 - 0 Punkt
  • Soft Reset Macht einen Reset vom GRBL-Status ohne die Position upzudaten.
  • $H beginnt homing circle
  • $X schaltet den grbl-Alarm aus
  • $C der G-Code wird nur geparst - die Maschine bewegt sich jedoch nicht
  • $G verlangt status-Informationen von GRBL.

Schritt 13: Maschine mit Virutellem oder echtem Keyboard steuern

  • Mit den Pfeiltasten kann man eingeben wie viele Schritte der Motor ausführen soll
  • Wenn man auf enable Keyboard movement klickt, kann man auch über die tastatur den Motor steuern

Schritt 14: Ein Motor dreht in die falsche Richtung

  • #define X_STEP_BIT 2
  • #define Y_STEP_BIT 3
  • #define Z_STEP_BIT 4
  • #define X_DIRECTION_BIT 5
  • #define Y_DIRECTION_BIT 6
  • #define Z_DIRECTION_BIT 7
  • Beispiel ich möchte x und y Achse invertieren: also bit 5 und 6
  • insgesamt hat man 8 bits 7 6 5 4 3 2 1 0
  • man also 0 1 1 0 0 0 0 0
  • der Befehl lautet: $6=96 (step port invert mask. int:1100000)


Schritt 14: Endschalter

  • ohne Widerstände x an 9, y an 10 (und z an 11)
  • zweites Kabel direkt an GND


  • x an pin9
  • y an pin 10
  • (z an pin 11)

Schritt 15: Homing

  • Wenn man mit $17=1 das Homing eingestellt hat, kann man erst nach einer kompletten Homing-Fahrt Befehle oder eine Datei abarbeiten lassen.
  • Fährt einer oder mehrere Motoren beim Homing in die falsche Richtung kann man mit $18 die Motoren für die Suche nach dem Endschalter umpolen: $18=96 bedeutet x und y Richtung bei der Suche invertieren
  • In der config.h werden alle drei Achsen auf Home gefahren und dann wieder frei gefahren. Das muss man dort noch umstellen und anschließend compilen um so eine neue hex-Datei zu erstellen, die man wieder auf den Arduino hochladen muss.
  • homing bedeutet:
    • nach Clicken auf $H:
    • zuerst wird in "homming seek Geschwindigkeit"(schnell) x und y - Achsen gleichzeitig bis zum endschalter gefahren
    • dann fahren die beiden Achsen langsam (Homing feed Geschwindigkeit) in Gegenrichtung solange bis die Schalter nacheinander wieder geöffnet sind
    • dann fahren die beiden Motoren langsam bis die Endschalter wieder erreicht wurden.
    • Nun fahren die Motoren um eine definierte Strecke langsam frei.
    • über den Befehl $22 (homing pull-off) kann eine zusätzliche Strecke festgelegt werden, die mit "homing seek Geschwindigkeit" angefahren wird. ($22=1.000 (homing pull-off, mm))

Videos und Hilfen

Schritte pro Umdrehung http://dank.bengler.no/-/page/show/5474_configuringgrbl

  • $0, $1 and $2 – Steps/mm*Grbl needs to know how far each step will take the tool in reality. To calculate steps/mm for an axis of your machine you need to know:
  • The turns per mm of the lead screw
  • The full steps per revolution of your steppers (typically 200)
  • The microsteps per step of your controller (typically 1, 8 or 16)
  • The steps/mm can then be calculated like this
  • steps_per_mm = (steps_per_revolution*microsteps)/turns_per_mm
  • Do this for every axis.


  • Beim easydriver sind 8 Microsteps als default-Wert festgesetzt.
  • Berechnung: Schritte pro mmm: = (steps_per_revolution*microsteps)/turns_per_mm
  • 200 * 8 / 1 Umdrehungen pro mm ergibt 1600


grbl compilieren

  • download grbl 0.9
  • entpacken in Arduino - Library-Verzeichnis
  • umbenennen von master-grbl in grbl
  • editieren von config.h (z-Achse auskommentieren und circle_1 in circle_0 umbenennen
  • editieren von cpu_map.h (anpassen der pins)
  • speichern der Dateien
  • Arduino IDE Library grbl importieren
  • system.h nach oben
  • auf arduino flashen
  • arduino schließen und g-code sender öffnen
  • baudrate auf 115200
  • homing cyle durchführen

pin_map.h

(im kommentar die orginalen pins)


// Define step pulse output pins. NOTE: All step bit pins must be on the same port.
#define STEP_DDR DDRD
#define STEP_PORT PORTD
#define X_STEP_BIT 3 // Uno Digital Pin 2
#define Y_STEP_BIT 5 // Uno Digital Pin 3
#define Z_STEP_BIT 6 // Uno Digital Pin 4
#define STEP_MASK ((1<<X_STEP_BIT)|(1<<Y_STEP_BIT)|(1<<Z_STEP_BIT)) // All step bits
// Define step direction output pins. NOTE: All direction pins must be on the same port.
#define DIRECTION_DDR DDRD
#define DIRECTION_PORT PORTD
#define X_DIRECTION_BIT 2 // Uno Digital Pin 5
#define Y_DIRECTION_BIT 4 // Uno Digital Pin 6
#define Z_DIRECTION_BIT 7 // Uno Digital Pin 7
#define DIRECTION_MASK ((1<<X_DIRECTION_BIT)|(1<<Y_DIRECTION_BIT)|(1<<Z_DIRECTION_BIT)) // All direction bits
Meine Werkzeuge
Namensräume

Varianten
Aktionen
Navigation
Projekte
letsgoING Material
letsgoING Hardware
letsgoING Software
Sensoren
Aktoren
LED
Bluetooth
Wissen
Werkzeuge