Kurzanleitung
Um mit dem Arduino einen Plotter zu steuern, sind folgende Schritte notwendig:
Windows USB Treiber
Verbinde den Arduino mit dem PC, unter Windows 10 wird der benötigte Treiber automatisch installiert, wenn nicht: die günstigen Arduino Nachbauten benutzen häufig den CH340 USB Chip. Siehe hier für weitere Information https://www.google.de/search?q=arduino+ch340.
Grbl Firmware
Download und starte "GRBL-Plotter_Setup.exe " von GRBL-Plotter. Starte das Program XLoader.exe im Verzeichnis "GRBL-Plotter\Firmware\_XLoader". Wähle die gewünschte Firmware (Hex file), die richtige Arduino Version (Device) und den richtigen COM-Port, dann starte das Upload. Mit den gezeigten Einstellungen hat das Hochladen 18 Sekunden gedauert.
- grbl_v1.1h.20190825.hex ist die neueste reguläre grbl firmware für Arduino uno und nano, von https://github.com/gnea/grbl
- grbl_v1.1f_Servo.hex wie oben, aber mit Spindle-PWM angepasst an die RC-Servo Spezifikation (1ms - 2ms), von https://github.com/cprezzi/grbl-servo
- grbl_v1.1f_Servo_switch_dir_step.hex wie oben, aber mit Spindle-PWM angepasst an die RC-Servo Spezifikation (1ms - 2ms) und step/dir Pins vertauscht für die Nutzung des CNC Shield V4 für Arduino nano (siehe unten), from https://github.com/cprezzi/grbl-servo
- grbl-Mega-5X-v1.1l.20190605.hex 5 Achsen Version nur für Arduino Mega2560, von https://github.com/fra589/grbl-Mega-5X
Nach dem erfolgreichen Hochladen muss der XLoader beendet werden.
Erste Verbindung
Installiere GRBL-Plotter durch das Ausführen von 'setup.exe' aus dem entpackten Ordner. Starte GRBL-Plotter und wähle den richtigen COM-Port aus. Nach der erfolgreichen Verbindung sendet grbl eine Startmeldung "Grbl 1.1h ['$' for help]".
Nun sind auch die Bedienelemente im Program freigeschaltet und die Motoren können angesteuert werden.
Konfiguration von grbl
Nach dem Senden von "$$" wird die grbl Konfiguration angezeigt, welche an die maschine angepasst werden muss. Siehe grbl-Wiki für weitere Informationen. Der Screenshoot zeigt die initialen Einstellungen nach der Installation von grbl.
Die Haupteinstellungen sind $3, $10x, $11x (x=0,1 oder 2 je nach Achse) um die Schrittmotoren in die richtige Richtung drehen zu lassen. Die richtigen Richtungen sind:
- +X = nach rechts
- +Y = nach hinten
- +Z = nach oben
Achtung: ein zu großer Wert für $10x (steps/mm) und $11x (max. speed) verursacht Probleme.
Das Product aus $10x und $11x sollte kleiner als 1800000 sein um Pin-Frequenzen über 30 kHz zu vermeiden.
Z.B. $100=250, $110 = 7200 ist grenzwertig.
Weitere Informationen hier: quick-guide-to-setting-up-your-machine-for-the-first-time
Ein alternatives Einstellformular öffnet sich via $$ Befehl, oder 'Maschine' Menüpunkt.
Spindel-PWM und Einsatz eines Servos:
Die Pulsweitenmodulation (PWM) zur Drehzahlsteuerung eines Motors oder Leistungssteuerung eines Laser wird über eine spezielle Pinfunktion (Hardware PWM) im ATmega328 (der Microcontroller des Arduino Uno / nano) an Pin 11 (PB3, OC2A) erzeugt. D.h. der Pin zur Ausgabe der PWM kann nicht gewechselt werden.
- Standardmäßig ist die PWM-Frequenz auf 1 kHz eingestellt. Das Tastverhältnis kann zwischen 0 % und 100 % eingestellt werden, um eine Steuerspannung von 0 V bis 5 V für die Spindel oder den Laser zu erhalten.
- Modellbauservos benötigen in der Regel ein PWM-Signal von 50 Hz mit einer Pulsweite von 1 ms bis 2 ms. Das Tastverhältnis liegt dann nur noch im Bereich von 5% bis 10% - nicht geeignet um eine Spindel oder einen Laser zu steuern.
- Workaround: Mit einem 'Adapter' kann das benötigte Signal aus einem an/aus oder Spindle-PWM Signal erzeugt werden, siehe Plotter-ServoControl
Reguläres grbl: "Standardmäßig beträgt die PWM-Frequenz der Spindel 1 kHz, was die empfohlene PWM-Frequenz für die meisten aktuellen Grbl-kompatiblen Lasersysteme ist. Wenn eine andere Frequenz erforderlich ist, kann diese durch Bearbeiten der Datei cpu_map.h geändert werden."
Quelle: https://github.com/gnea/grbl/wiki/Grbl-v1.1-Laser-Mode#laser-mode-operation
Angepasste grbl: "Dies ist eine spezielle Version mit Servounterstützung (umschaltbar in config.h) Die PWM-Frequenz ist auf 61Hz (Prescaler 1/1024) eingestellt. Der Pulsweitenbereich beträgt 0,5 - 2,5 ms".
Hinweis: Intern reicht der PWM-Bereich von 7 (0,5 ms Pulsbreite) bis 38 (2,5 ms Pulsbreite), was zu 32 möglichen verschiedenen Servopositionen führt (wahrscheinlich weniger, da der reguläre Bereich von 1 ms bis 2 ms reicht).
Quelle: https://github.com/cprezzi/grbl-servo
Gebräuchliche Hardware
Die folgenden Informationen beziehen sich auf billige (gefälschte?) Boards, die bei ebay erhältlich sind für 12€ bis 15€ (einschließlich Shield, Arduino, A4988 Treiber und USB-Kabel).
Das CNC-Shield V3 für Arduino Uno wurde für grbl 0.9 entwickelt. Aufgrund einer Änderung der Pinbelegung in der grbl-Version 1.1 (Pins 11 und 12 sind vertauscht) ist das Spindel-Pwm-Signal auf dem Z+-Pin zu finden. Siehe Schaltplan hier.
Meine Empfehlung:
- Benutze die original grbl Version 1.1 Konfiguration (kein Vertauschen der Pins in config.h / cpu_map.h)
- Steure den Fräsmotor/Laser/Servo über den CNC-Shield-Pin 'Z-Endstop', wird kein PWM Signal benötigt, dann einfach 100% pwm senden (normalerweise S1000)
- Verbine den Z Endschalter mit dem CNC-Shield-Pin 'Spindle Enable'
Das CNC-Shield V4 für Arduino nano zeigt ein falsches Layout für die Micro-Step-Jumper. Siehe Anleitung hier. Auch Step- und Dir-Signale sind vertauscht, was eine angepasste grbl-Version nötig macht. Ich habe dieses Board in meinem klappbaren Plotter verwendet. Die angepasste grbl Firmware ist im GRBL-Plotter setup zu finden (grbl_v1.1f_Servo_switch_dir_step.hex).
Nutzung eines alten PCs
Windows XP: die normale Setupdatei ('GRBL-Plotter_Setup.exe') funktioniert nicht (das Setup wurde mit Inno-Setup erstellt, welches minimal nur noch Windows Vista unterstützt), stattdessen entpacke 'GRBL-Plotter_1xxx_release.zip' und starte 'GRBL-Plotter.exe'.
Anzeichen für einen langsamen Computer: häufiges Auftreten von grbl Fehlern, wie z.B.
- error:20 Unsupported or invalid g-code command found in block.
- error:24 More than one g-code command that requires axis words found in block.
- error:2 Missing the expected G-code word value or numeric value format is not valid.
Wenn der PC langsam ist (alter PC mit Windows XP) sollten die gezeigten Einstellungen verwendet werden:
Es sollte auch die Datenmenge beim grafikimport reduziert werden, z.B. benötigen Plotter keine Schrittauflösung von 0.001 mm: