Zum Inhalt springen
Home » Dokumentation » Firmware-Aktualisierung & Einstellungen

Firmware-Aktualisierung & Einstellungen

Die Firmware befindet sich im Mikrocontroller auf der Steuerplatine. Der Controller, der auf den meisten billigen Lasergravierern verwendet wird, basiert auf einer Arduino Uno-Architektur, da die ersten Boards echte Arduino Uno-Boards mit CNC-Shields verwendeten. Der Mikrocontroller ist ein ATMega328, der bereits mit einem Arduino-Bootloader ausgeliefert wird (die technischen Details sind auch im Grunde egal). Hier können nicht nur die Parameter geändert werden, sondern die gesamte Firmware kann ausgetauscht / geändert werden. Da es sich um ein offenes Projekt handelt, kann jeder seine eigenen Änderungen an der Firmware vornehmen und hochladen. Ich empfehle jedem, die neueste Version von grbl (1.1h) zu installieren. Es gibt mehrere Möglichkeiten, dies zu tun, die einfachste ist über LaserGRBL (zwei Firmware-Versionen sind hier bereits enthalten). Es funktioniert aber auch über die Kommandozeile oder Arduino IDE.

Bei den meisten neueren Modellen wurde der ATMega328 durch einen ESP32-Chip ersetzt. Dieser Chip ist deutlich schneller und bietet unter anderem WLAN- und Bluetooth-Funktionalität. Der ESP32-Chip benötigt eine andere Firmware, daher ist unten ein weiterer Abschnitt dazu erstellt. Innerhalb dieser Firmware wird aber weiterhin eine Portierung der ursprünglichen grbl-Implementierung verwendet, sodass sich in der Regel aus Sicht der Benutzung kein Unterschied ergibt.

Wenn man benutzerdefinierte Änderungen an der Firmware vornehmen muss, muss man sie mit der Arduino-IDE kompilieren. Wie das geht, wird im grbl-Wiki (https://github.com/gnea/grbl/wiki/Compiling-Grbl) erklärt. Wenn man über ein Standard-Setup verfügt, kann man die bereits kompilierten Versionen auswählen, die mit LaserGRBL geliefert werden.

Mythen über Microcrontroller, Firmwareaktualisierungen

Ich lese immer wieder Aussagen über die Firmware, die meines Wissens nach falsch sind. Aus diesem Grund will ich erst einmal ein paar Dinge klarstellen:

  • Das EEPROM (nichtflüchtiger Speicher des Controllers) hat begrenzte Schreibzyklen
    • Richtig. ABER: das EEPROM der ATMega-Mikrocontroller hat eine Lebensdauer von 100.000 Schreibzyklen. Wenn du also deinen Speicher täglich neu beschreibst, kannst du das 270 Jahre lang tun, bis du ihn zerstörst. Also: Faktisch sind die Schreibzyklen unbegrenzt!
  • Das EEPROM speichert die Einstellungen nicht korrekt
    • Völlig falsch. Einmal geschrieben, sind die Einstellungen gespeichert und bleiben es auch. 99,99% der Benutzer, die mir sagen, dass der Controller ihre Einstellungen nicht speichert, haben nicht die Speichern- oder Save-Taste in der Steuerungssoftware gedrückt. Das Ändern von Werten und das Klicken auf OK im Dialogfenster bedeutet nicht unbedingt, dass die Einstellungen in den Speicher geschrieben werden. Daher immer darauf achten, dass auch in den Speicher zurückgeschrieben wird, was meistens aktiv ausgelöst werden muss. Sowohl LaserGRBL als auch LightBurn speichern die Werte absolut korrekt ab.
  • Das Flashen der Firmware kann den Controller zerstören
    • Teilweise richtig. Natürlich kann man den Controller durch das Flashen falscher Firmwares theoretisch beschädigen. ABER solange du nur Standard-Flash-Tools verwendest und die Fuse-Einstellungen nicht veränderst (wenn du nicht weißt, was das ist, wirst du sie höchstwahrscheinlich nicht verändern), kannst du den Controller immer wieder mit einer neuen Firmware flashen. Wenn man den Bootloader des Controllers überschrieben hat, kann man nicht mehr direkt über USB flashen, aber die MKS-DLC-Boards bieten einen ISP-Anschluss, um den Controller manuell zu flashen. In meiner ganzen Karriere ist mir nur 1 Controller komplett kaputtgegangen (und ich habe Tausende geflasht).
  • Man kann den Controller zurücksetzen, indem man den RESET-Knopf auf der Hauptplatine drückt.
    • Falsch. Diese Reset-Taste führt lediglich einen Neustart des Controllers durch. Es wird nichts zurückgesetzt oder auf Standardwerte gesetzt.

Aktualisierungsprozess 8Bit-Controller (S6-S9)

Hinweis

Die nachfolgenden Beschreibungen beziehen sich auf Laser mit Arduino bzw. ATmega Mikrokontrollern. Das bedeutet die Mainboards von S6 und S9. Die S10 und S30 Laser haben ein neues Mainboard mit einem ESP32 Chip, welches sich mit den folgenden Methoden NICHT flashen lässt.

Wichtige Schritte

1. Zuerst die Einstellungen speichern!
2. Firmware-Update durchführen
3. Einstellungen überprüfen und bei Bedarf wieder herstellen.

Speichern von Einstellungen

Das Speichern der Einstellungen ist wichtig, sobald man die Firmware flasht, da einige Werte während des Flashens auf die Werkseinstellungen zurückgesetzt werden können. Ich würde sogar empfehlen, nach dem Flashen auf die Werkseinstellungen zurückzusetzen und dann geänderte Werte durch das Backup zu ersetzen.

Einstellungen via LaserGRBL sichern

Zuerst muss man eine Verbindung zum Laser herstellen, indem man den richtigen COM-Anschluss auswählt und auf das Verbindungssymbol klickt.

GrBL -> GRBL-Konfiguration auswählen
Klicken Sie auf Exportieren oder notieren Sie sich die Werte.
Die Ausgabe sollte so aussehen. (Werte können unterschiedlich sein!)

Vorkompilierter Firmware-Upload über LaserGRBL

Wenn man nur auf die neueste verfügbare grbl-Firmware aktualisieren möchte, kann man die vorkompilierten Firmware-Images (.hex-Dateien) verwenden, die mit LaserGRBL geliefert werden. Dabei gibt es zwei Optionen, entweder, wenn man ein Standard-Setup ohne Endstopps hat oder alternativ, wenn man Endstopps hat und automatisches Homing verwenden möchte. Weitere Informationen finden sich auf der LaserGRBL Firmware-Flash-Seite. Ich empfehle generell die Version “v1.1h custom, XY homing” zu wählen. Auch wenn man aktuell nicht vor hat, das automatische Homing einzusetzen. Man muss es nicht aktivieren, aber kann es später kurzfristig nutzen, wenn man es doch benötigt. Für Sculpfun Laser empfehle ich meine Version zu verwenden, siehe nächster Abschnitt.

LaserGRBL

Schritt-für-Schritt-Screenshots:

Klicke auf Extras -> Flash Grbl Firmware
Als Ziel wählt man “Arduino Uno”
Wähle eine Firmware (v1.1h entweder mit oder ohne Homing)
Überprüfen des COM-Ports
Klicke auf OK
Es öffnet sich ein Befehlsfenster, in dem der Flash-Fortschritt angezeigt wird. Im Anschluss ist das Update beendet.

Firmware für Sculpfun Laser

Da ein paar Standard-Einstellungen von grbl nicht denen der Sculpfun-Laser entsprechen, habe ich eine eigene Version der Firmware kompiliert, die weitestgehend der Firmware entspricht, die man per LaserGRBL installieren kann, jedoch alle Standard-Einstellungen für die Sculpfun-Laser optimiert ist. Kleine Änderung: in der alten Variante war das individuelle Homing von einzelnen Achsen doch nicht aktiviert. Das ist jetzt aktiviert, daher “v2”.

Liste der Änderungen

Folgende Änderungen wurden im Vergleich zur Standard-Firmware vorgenommen:

//Optimize Homing
#define HOMING_CYCLE_0 ((1<<X_AXIS)|(1<<Y_AXIS))  // Homes both X-Y in one cycle. 
#define N_HOMING_LOCATE_CYCLE 2 // improve repeatability
#define HOMING_FORCE_SET_ORIGIN // set the machine origin at the homed location
#define HOMING_SINGLE_AXIS_COMMANDS //Enables single axis homing commands. $HX, $HY, and $HZ for X, Y, and Z-axis homing.
//Enable second pin for relay control
#define ENABLE_M7 // Enables a second coolant control pin

//Firmware default values
  #define DEFAULT_X_STEPS_PER_MM 80.0
  #define DEFAULT_Y_STEPS_PER_MM 80.0
  #define DEFAULT_Z_STEPS_PER_MM 80.0
  #define DEFAULT_X_MAX_RATE 6000.0 // mm/min
  #define DEFAULT_Y_MAX_RATE 6000.0 // mm/min
  #define DEFAULT_Z_MAX_RATE 6000.0 // mm/min
  #define DEFAULT_X_ACCELERATION (500.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2
  #define DEFAULT_Y_ACCELERATION (500.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2
  #define DEFAULT_Z_ACCELERATION (500.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2
  #define DEFAULT_X_MAX_TRAVEL 410.0 // mm NOTE: Must be a positive value.
  #define DEFAULT_Y_MAX_TRAVEL 400.0 // mm NOTE: Must be a positive value.
  #define DEFAULT_Z_MAX_TRAVEL 800.0 // mm NOTE: Must be a positive value.
  #define DEFAULT_SPINDLE_RPM_MAX 1000.0 // rpm
  #define DEFAULT_SPINDLE_RPM_MIN 0.0 // rpm
  #define DEFAULT_STEP_PULSE_MICROSECONDS 10
  #define DEFAULT_STEPPING_INVERT_MASK 0
  #define DEFAULT_DIRECTION_INVERT_MASK 0
  #define DEFAULT_STEPPER_IDLE_LOCK_TIME 25 
  #define DEFAULT_STATUS_REPORT_MASK 1 // MPos enabled
  #define DEFAULT_JUNCTION_DEVIATION 0.01 // mm
  #define DEFAULT_ARC_TOLERANCE 0.002 // mm
  #define DEFAULT_REPORT_INCHES 0 // false
  #define DEFAULT_INVERT_ST_ENABLE 0 // false
  #define DEFAULT_INVERT_LIMIT_PINS 0 // false
  #define DEFAULT_SOFT_LIMIT_ENABLE 0 // false
  #define DEFAULT_HARD_LIMIT_ENABLE 0  // false
  #define DEFAULT_INVERT_PROBE_PIN 0 // false
  #define DEFAULT_LASER_MODE 1 // false
  #define DEFAULT_HOMING_ENABLE 0  // false
  #define DEFAULT_HOMING_DIR_MASK 0 // move positive dir
  #define DEFAULT_HOMING_FEED_RATE 150.0 // mm/min
  #define DEFAULT_HOMING_SEEK_RATE 1000.0 // mm/min
  #define DEFAULT_HOMING_DEBOUNCE_DELAY 250 // msec (0-65k)
  #define DEFAULT_HOMING_PULLOFF 1.0 // mm

Download: v1.1h-custom-S6S9v2.hex

Die Datei kann auf verschiedene Arten installiert werden. Die zwei folgenden würde ich als am einfachsten ansehen.

Installation via LaserGRBL

Damit LaserGRBL die Firmware in seinem Dialogfenster mit anbietet, muss sie in das Firmware-Verzeichnis innerhalb von LaserGRBL verschoben werden.

Installation mit XLoader

Es gibt ein kleines Tool, XLoader, mit dem die Hex-Dateien ohne weitere Tools hochgeladen werden können. Ich habe hier ein Archiv vorbereitet, das die richtige Firmware schon enthält: Download XLoader. Damit lässt sich die Firmware direkt hochladen. Die Firmware-Datei und der COM-Port müssen noch entsprechend ausgewählt werden.

Egal welche Methode gewählt wurde, im Anschluss sollte sich die Firmware mit der Versionsbezeichnung “grbl 1.1h_S6S9universal” melden. Jetzt sollten noch einmal alle Einstellungen auf die Werkseinstellungen zurückgesetzt werden, das erfolgt mit dem Kommando “$RST=*”. Danach können die Parameter wieder an die persönlichen Vorlieben angepasst bzw. aus dem Backup zurückgespielt werden.

Wenn man nun Parameter verkonfiguriert hat, kann man immer mit dem Kommando “$RST=*” zu den Sculpfun-Standards zurückkehren und hat wieder eine grundsätzlich laufende Maschine.

Selbst kompilierte Firmware mit Arduino IDE

Da ich es gewohnt bin, meine eigene Firmware über Arduino IDE, PlatformIO oder einfach nur die Kommandozeile zu kompilieren, verwende ich normalerweise diesen Prozess. Ich werde hier auch einige Notizen schreiben, wenn ich Zeit habe.

Nachdem die Dateien als Arduino-Library installiert sind, gibt es drei Dateien, die interessant sind: config.h, defaults.h und cpu_map.h. cpu_map.h ist nur für Informationen, welche Arduino-Pins welchen Funktionen zugeordnet sind. Natürlich kann man diese an die Bedürfnisse anpassen, das sollte aber in der Regel nicht notwendig sein. Defaults.h enthält die Standardeinstellungen, die geladen werden, wenn man den Controller auf die Firmware-Standardwerte zurücksetzt. Ich benutze dies, um meine persönlichen Standardeinstellungen zu definieren und muss mich nicht darum kümmern, sie bei jeder Änderung der Firmware zu speichern.

Die interessanteste Datei ist config.h. Hier kann man alle Einstellungen vornehmen, die man möglicherweise benötigt. Dazu gehören das Hinzufügen zusätzlicher Funktionen, das Invertieren von Logikpins oder das Anpassen von Parametern. Nachdem man die Parameter nach Belieben geändert hat, führt man einen Upload mit der Arduino-IDE durch.

LightBurn hat inzwischen auch ein Video erstellt, in der das Verfahren noch einmal gezeigt wird:

Neustart des Mikrocontrollers

Wie bereits erwähnt, kann ein Neustart durch Drücken der Reset-Taste auf der Hauptplatine (falls vorhanden) ausgelöst werden. Natürlich kann man den Controller auch neu starten, indem man ihn aus- und wieder einschaltet. ACHTUNG: Fast alle Hauptplatinen von Diodenlasern (und auch 3D-Druckern) haben eine elektrische Verbindung zwischen dem USB-Anschluss und dem Mikrocontroller. Wenn man den Hauptschalter ausschaltet und die USB-Verbindung aktiv lässt (der PC ist eingeschaltet und liefert Strom über USB), ist der Mikrocontroller NICHT AUSGESCHALTET! Er läuft weiter und wird über USB mit Strom versorgt. Er führt also keinen Neustart durch. [Man kann dies überprüfen, indem man nur das USB-Kabel anschließt und dann LightBurn oder LaserGRBL verwendet, um eine Verbindung zum Laser herzustellen. Das sollte problemlos funktionieren. Man kann auch Einstellungen ändern und speichern. Man kann den Zustand der Endschalter und der gesamten Peripherie überprüfen. Nur die Motoren und der Laser funktionieren nicht, weil sie zusätzlichen Strom benötigen]. Wenn man den Controller also wirklich neu starten wollen, muss man die Hauptstromversorgung ausschalten und auch die USB-Verbindung unterbrechen. Dann hat man einen sauberen Neustart.

Wenn man das vermeiden möchte, kann man beim USB-Kabel auch die Versorgungsspannung (VCC, die 5V Leitung, in der Regel rotes Kabel) trennt. Dann können weiter Daten übertragen werden, aber ohne Hauptstromversorgung geht auch der Mikrocontroller aus.

[Update April 2022] Es scheint eine neue Version des Mainboards zu geben, XY DLC V1.1. Hier ist das offenbar bereits geändert worden, und der Mikrocontroller wird ganz abgeschaltet, wenn der Hauptschalter gedrückt wird. Cool!

Firmware Update beim ESP32 (S10 + S30 Laser)

Hinweis

Die Firmware für den S10 ist jetzt erhältlich, es kann hier heruntergeladen werden: Download-Link.

Update: Für die S30-Serie gibt es jetzt auch eine offizielle Firmware-Version: Download-Link.
(Die Einstellungen werden wie üblich zurückgesetzt, also vorher speichern)

Die neuen Laser haben nicht wie die anderen Laser einen ATmega-Mikrokontroller auf dem Mainboard, sondern einen ESP32 Chip. Das ist für die meisten Nutzer nicht relevant, aber der ESP stellt eine andere (neuere) Generation von Chip dar. Unter anderem unterstützt er WLAN, das aber aktuell noch nicht aktiviert ist. Ich gehe davon aus, dass diese Funktionalität noch nachgerüstet wird. Beim S30 kann die Bluetooth-Funktion bereits per Firmware-Update aktiviert werden! Der Chip ist deutlich leistungsfähiger als die alte Generation und kann daher auch bei höheren Geschwindigkeiten arbeiten. Da zurzeit bei fast allen Firmwares für die ESP32-Chips allerdings nur eine Portierung des alten grbl-Codes genutzt wird, halten sich die Verbesserungen aktuell noch sehr in Grenzen.

Für das Update wird ein separates Tool benötigt, dass ich bislang nur für Windows-Systeme gesehen habe. Hier ist der Download-Link. Wer einen Mac hat, muss auf eine Virtualisierung wie Parallels oder einen Windows-Rechner zurückgreifen. In der folgenden Bilderserie ist der Upload erklärt. Falls Firmware-Einstellungen verändert wurden, vorher ein Backup machen!

Beachten:

  • Am besten NUR das USB-Kabel anschließen, das Netzteil NICHT anschließen bzw. den kleinen Schalter auf AUS lassen. Der Controller wird über das USB-Kabel mit Strom versorgt und kann eventuell nicht richtig resettet werden, wenn der externe Strom an ist. Je nach Board ist das unterschiedlich, beim S30 muss das Netzteil AN sein.
  • Nach dem Flashen sind alle Einstellungen auf Werkseinstellungen zurückgesetzt. Daher auch in diesem Fall vorher ein Backup der Einstellungen machen! (Z.B. mit LaserGRBL, wie oben beschrieben, das funktioniert auch für die ESP32)
  • Nach dem erfolgreichen Flashen einmal das USB-Kabel ziehen und wieder anstecken, damit der Controller neu startet (daher auch kein weiteres Stromkabel anschließen, dann startet er nicht neu).
  • Jetzt sollte sich der Laser wie gewohnt wieder verbinden lassen.

Firmware Settings (S6-S30)

Wenn man eine Einstellung ändern will, geht das über die Konsole, in dem man den Parameter, gefolgt von einem Gleichheitszeichen und dem entsprechenden Wert, eingibt und anschließend Enter drückt. Der Controller sollte mit OK antworten. Mann kann sich alle aktuellen Parameter ausgeben lassen, in dem man „$$“ eingibt und enter drückt.

Beispiel des Setzens des Parameters $131

LightBurn und LaserGRBL besitzen auch grafische Dialoge, um diese Einstellungen zu ändern (“Machine Settings” in LightBurn und “grbl Configuration” in LaserGRBL).

In der folgenden Tabelle sind die von mir empfohlenen Einstellungen für die S6/S9-Laser aufgeführt. In der „Standard“-Spalte sind die Werte aufgeführt, die in der grbl-Firmware standardmäßig eingestellt sind. Die „S6/S9“-Spalte zeigt die empfohlenen / erforderlichen Einstellungen für S6/S9. Die dritte Spalte listet Änderungen auf, die erforderlich sind, wenn man die Homing-Funktionalität aktiviert. Wenn in einer Spalte kein Wert angegeben ist, wird der Standardwert verwendet!

#StandardwertÄnderungen S6 / S9Änderungen HomingS30 (Pro Max)ErklärungKommentar
$010Step pulse, microseconds
$125Step idle delay, milliseconds
$20Step port invert, mask
$304Direction port invert, maskHier können die Motoren der Achsen umgedreht werden, falls nötig (z.B. wenn man den ganzen Rahmen drehen muss)
$40Step enable invert, boolean
$500/1 je nach Schalter1Limit pins invert, booleanManche Endschalter haben invertiertes Verhalten, das kann man hier ausgleichen.
$60Probe pin invert, boolean
$1010/1Status report, maskJa nach Konfiguration der Koordinatensysteme, s. Artikel zu Endschaltern
$110.010Junction deviation, mm
$120.002Arc tolerance, mm
$130Report inches, boolean
$20011Soft limits, boolean
$2100Hard limits, boolean
$221011Homing cycle, boolean
$23000-7 je nach Position der Schalter7Homing dir invert, masksiehe Anleitung zum Homing
$2425.00075.000200Homing feed, mm/min
$25500.0001000.0001500Homing seek, mm/min
$26250Homing debounce, milliseconds
$271.0001.0001.000Homing pull-off, mmRückfahrt in den Workspace nach Erreichen der Homeposition
$301000Max spindle speed, RPM
$310Min spindle speed, RPM
$320111Laser mode, boolean
$100250.00080.00080.00080X steps/mmKann nach Bedarf noch genauer kalibriert werden
$101250.00080.00080.00080Y steps/mms.o.
$102250.000Z steps/mm
$110500.0005000.0005000.0006000X Max rate, mm/minOft ist hier auch 6000 eingetragen. Ich will noch eine Messung zum echten maximal erreichbaren Wert machen.
$111500.0005000.0005000.0006000Y Max rate, mm/min
$112500.000Z Max rate, mm/min
$12010.000250.000250.000500X Acceleration, mm/sec^2Oft ist hier 1000 eingetragen. Das ist aus meiner Sicht deutlich zu hoch. 500 geht aber auch in der Regel noch.
$12110.000250.000250.000500Y Acceleration, mm/sec^2s.o.
$12210.000Z Acceleration, mm/sec^2
$130200.000410.000410.000385
374 (Pro Max)
X Max travel, mmKann nach Gegebenheiten variieren
$131200.000400.000400.00380
362 (Pro Max)
Y Max travel, mms.o.
$132200.000Z Max travel, mm
Werte für die grbl Einstellungen. In den Spalten nur die geänderten Werte, die relevant sind.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.