Benutzbare Laserfläche fast A3 (etwa 42cm x 26cm).
Steuerplatine „Smoothieboard“: https://smoothieware.org/smoothieboard
Hinweis: Zur Vorbereitung auf die Einweisung könnt ihr euch auf euerem Rechner „Inkscape“ installieren und einen Flaschenring als SVG Zeichnen. Wichtig dabei ist, dass ihr die Farben trennt nach Linien, die ihr schneiden wollt (z.B. blau) und Linien, Text und Flächen die ihr nur „gravieren“ oder „markieren“ wollt (z.B. grün) Flaschenring: Durchmesser innen 40mm, außen 70mm.
Um zu testen, ob ein unregelmäßig auftretendes Problem mit der Steuerung am Smoothieboard oder den Motoren liegt, wurde die Ansteuerung mit der GRBL Software auf einem Arduino ausprobiert. Dazu wurde ein Adapterboard gelötet, welches auf einen Arduino UNO gesteckt werden kann und die gleichen Stecker (Molex KK 2,54 mm) wie das Smoothieboard bietet, so dass ein Wechsel schnell möglich ist.
Der Arduino UNO wird per USB an den Computer angeschlossen und kann mit GRBL kompatibler Software wie OpenBuildsControl angesteuert werden.
Das Board enthält den mit BEST bezeichneten Debouncing Schaltkreis mit Optokopplern aus dem GRBL Wiki. Die Limit Switches werden über eine Externe 5V Stromversorgung betrieben um für eine optimale Isolierung zu sorgen. Die Switches sind „Normally closed“, d. h. wenn die Switches nicht aktiviert sind, ist der Stromkreis geschlossen. Werden die Schalter aktiviert (oder es gibt ein Problem mit den Verbindungskabeln) ist der Stromkreis unterbrochen und das Hardlimit wird getriggered.
Aktuell ist GRBL v1.1h installiert. In der config.h wurden vor dem Kompilieren zwei Optionen angepasst:
// NOTE: The following are two examples to setup homing for 2-axis machines. #define HOMING_CYCLE_0 ((1<<X_AXIS)|(1<<Y_AXIS)) // NOT COMPATIBLE WITH COREXY: Homes both X-Y in one cycle.
Auf dem Adapterboard ist der Pin für die Z-Achse permanent geöffnet (auf GND gezogen), daher darf im Homing Zyklus nicht auf das Schließen des nicht vorhandenen Z-Limit-Switches gewartet werden.
// Used by variable spindle output only. This forces the PWM output to a minimum duty cycle when enabled. // The PWM pin will still read 0V when the spindle is disabled. Most users will not need this option, but // it may be useful in certain scenarios. This minimum PWM settings coincides with the spindle rpm minimum // setting, like rpm max to max PWM. This is handy if you need a larger voltage difference between 0V disabled // and the voltage set by the minimum PWM for minimum rpm. This difference is 0.02V per PWM value. So, when // minimum PWM is at 1, only 0.02 volts separate enabled and disabled. At PWM 5, this would be 0.1V. Keep // in mind that you will begin to lose PWM resolution with increased minimum PWM values, since you have less // and less range over the total 255 PWM levels to signal different spindle speeds. // NOTE: Compute duty cycle at the minimum PWM by this equation: (% duty cycle)=(SPINDLE_PWM_MIN_VALUE/255)*100 #define SPINDLE_PWM_MIN_VALUE 75 // Default disabled. Uncomment to enable. Must be greater than zero. Integer (1-255).
In GCode wird die Laser Stärke durch setzen der Spindle Geschwindigkeit mit S0
bis S1000
gesetzt. (Der Maximalwert wird in Parameter $30
gesetzt) Da der aktuell verbaute Laser erst bei ca 30% der Ansteuerungsspannung eine sichtbare Verbrennung erzeugt, wurde diese Option auf 30% ⋅ 255 ≈ 75 gesetzt, so dass bei Stärke S10
bereits eine leichte Linie zu sehen ist. Dies ist wahrscheinlich Materialabhängig (getestet auf Finnpappe) und muss für einen neuen Laser erneut angepasst werden.
Die GRBL Parameter können zur Laufzeit gesetzt werden (z. B. über die OpenBuildsControl Software) und werden im EPROM des Arduino gespeichert. Auch beim flashen einer neuen Firmware bleiben die Parameter erhalten.
$0=10 ; Step pulse time, microseconds $1=255 ; Step idle delay, milliseconds $2=0 ; Step pulse invert, mask $3=0 ; Step direction invert, mask $4=1 ; Invert step enable pin, boolean $5=1 ; Invert limit pins, boolean/mask $6=0 ; Invert probe pin, boolean $10=1 ; Status report options, mask $11=0.020 ; Junction deviation, millimeters $12=0.020 ; Arc tolerance, millimeters $13=0 ; Report in inches, boolean $20=1 ; Soft limits enable, boolean $21=1 ; Hard limits enable, boolean $22=1 ; Homing cycle enable, boolean (Grbl) / mask (GrblHAL) $23=1 ; Homing direction invert, mask $24=50.000 ; Homing locate feed rate, mm/min $25=3000.000 ; Homing search seek rate, mm/min $26=250 ; Homing switch debounce delay, milliseconds $27=5.000 ; Homing switch pull-off distance, millimeters $30=1000 ; Maximum spindle speed, RPM $31=0 ; Minimum spindle speed, RPM $32=1 ; Laser-mode enable, boolean $100=45.369 ; X-axis steps per millimeter $101=45.369 ; Y-axis steps per millimeter $102=57.143 ; Z-axis steps per millimeter $110=3000.000 ; X-axis maximum rate, mm/min $111=3000.000 ; Y-axis maximum rate, mm/min $112=5000.000 ; Z-axis maximum rate, mm/min $120=200.000 ; X-axis acceleration, mm/sec^2 $121=200.000 ; Y-axis acceleration, mm/sec^2 $122=500.000 ; Z-axis acceleration, mm/sec^2 $130=450.000 ; X-axis maximum travel, millimeters $131=250.000 ; Y-axis maximum travel, millimeters $132=5000.000 ; Z-axis maximum travel, millimeters $I=custom
Detaillierte Dokumentation findet sich im GRBL Wiki
$4=1
- Step enable invert, boolean; Dies bezieht sich auf den ENA Pin an den Motoren$5=1
- Limit pins invert, boolean; Konfiguration für Normally Closed Switches (siehe oben)$20=1
- Softlimits sind aktiviert, d. h. nach einem Homing weiß das GRBL Board wo es sich befindet und blockt von selbst Bewegungen, welche außerhalb des befahrbaren Bereiches liegen$21=1
- Hardlimits sind aktiviert, d. h. wenn einer der Limit-Switches aktiviert wird, wird die Bewegung unterbrochen. Dies ist nur für den Notfall gedacht und sollte durch die aktivierten Softlimits nie eintreten.$23=1
- Homing dir invert, mask; Normalerweise befinden sich die Limit Switches in positiver Bewegungsrichtung, an diesem Lasercutter ist der Switch an der X-Achse aber am Nullpunkt der X-Achse, weshalb diese Achse als invertiert angegeben werden muss$32=1
- Laser-mode enable, boolean; Setzt GRBL Firmware in den Laser Modus (default ist CNC Modus)$100=45.369
und $101=45.369
; Kalibriert die Schritteweite der Motoren. Diese Werte wurden aus der Konfiguration des Smoothieboards übernommen und mit einem Lineal grob verifiziert.$130=450.000
- X-axis maximum travel, millimeters$131=250.000
- Y-axis maximum travel, millimeters; Diese beiden Werte geben die benutzbare Arbeitsfläche an und werden für die Softlimits verwendet.
Nach dem Homing setzt GRBL das Machine Coordinate System neu. Dabei wird die in $130
und $131
angegebene Arbeitsfläche Berücksichtigt. Der Koordinatenursprung (0, 0) des Machine Coordinate Systems liegt dann in der rechten, oberen Ecke. D. h. die gesamte Arbeitsfläche liegt im negativen Bereich (3. Quadrant). Da Software wie Lightburn oder OpenBuildsControl mit Positiven Koordinaten und einem Koordinatenursprung in der linken, unteren Ecke arbeiten möchte, kann das Work Coordinate System entsprechend gesetzt werden. Dies muss einmalig über den Befehl G10 L2 P1 X-450 Y-250
gemacht werden und wird ab dann wie die Parameter auch im EPROM gespeichert. Fortan wird nach dem Homing das Work Coordinate System relativ zum Machine Coordinate System korrekt gesetzt. Weiterführende Erklärung in der Lightburn Dokumentation
Hinweis: Durch die Softlimits können Punkte auf den Koordinatenachsen (z. B. (0, 0)) nicht angesteuert werden, sondern nur bis kurz davor. Die zu lasernden Zeichnungen müssen also einen kleinen Abstand zu den Achsen lassen (5 mm sind praktisch, damit auch die Hardlimits nicht ausversehen getriggered werden).
Hinweis 2: Durch Abziehen des 5mm-Offsets sollten sich die Koordinaten entsprechend korrigieren lassen, d.h. der Befehl lautet dann 'G10 L2 P1 X-445 Y-255'' (zu testen), und sollte nach dem Homing dann automatisch X=0mm, Y=250mm anzeigen waehrend er in der oberen linken Ecke steht. Es verbleiben dann 445mm Verfahrweg nach rechts. Und 250mm nach unten. Mit genauem Nachmessen lassen sich diese Werte aber noch auf die naechsten runden Werte nach oben oder unten anpassen.
Moegliche Quellen: