Besonders bei Nutzern aus dem 3D-Druck-Bereich kommt häufig die Frage auf, warum die z-Achse bei den Lasern nicht motorisiert / automatisiert ist. Schnelle Antwort vorweg: man braucht es nicht wirklich, manuell geht es meiner Erfahrung nach fast schneller. Da es aber eine schöne Spielerei ist, die auch vollständig sowohl vom Mainboard als auch von der Firmware unterstützt wird, ist hier eine Anleitung, wie man das dennoch umsetzen kann.
Benötigte Hardware
Grundsätzlich kann man sich die komplette Mechanik natürlich selbst bauen und mit dem 3D Drucker erstellen. Dazu hatte ich weder die Muße noch die Zeit, daher habe ich ein fertiges Modul genommen. So eins wie dieses hier: AliExpress-Link. Zusätzlich benötigte ich noch einen Motor und eine Kupplung für die Gewindestange.
An dem oben genannten Design fand ich sehr attraktiv, dass der x-Achsen-Motor direkt integriert werden kann und dadurch nicht zu viel zusätzliches Gewicht vorn an die Halterung des Laser-Moduls gebracht wird. So ist das Gewicht einigermaßen gut ausgeglichen. Die vordere Halteplatte passte nicht ganz perfekt zum S9-Modul, ich musste an den Rändern ca. 2 mm Material abnehmen und etwas besser platzierte Löcher bohren. Für beides habe ich den Laser genommen. Ich habe die entsprechenden Maße gezeichnet und das Haltemodul dann mit dem Laser zurecht und die Löcher ausgeschnitten.
Als Motor habe ich einen Nema 14 Motor genutzt (Amazon-Link). Ich wollte dort so viel Gewicht wie möglich sparen. Ein Nema 9 Motor war leider zu schwach für die Mechanik. Die Halterung habe ich 3D-gedruckt. Da ich nicht viel an der originalen Halterung ändern (Bohren etc.) wollte, ist sie vom Design her mit Sicherheit nicht die beste, erfüllt aber ihren Zweck. Um Motor und Gewindestange verbinden zu können, benötigte ich noch eine Wellenkupplung mit 5 mm und 8 mm Öffnungen (AliExpress-Link). Damit man den Motor parallel zu den anderen beiden Achsen betreiben kann, benötigt man noch ein Schrittmotor-Treiber-Modul (ich habe ein A4988-Modul genommen).
Damit ich einen Referenzpunkt für die Höheneinstellung habe, wurde ein Endschalter am oberen Ende der z-Achse angebracht. Ich habe bewusst das obere Ende genommen, da es aus meiner Sicht Sinn ergibt, nach oben, also vom Werkstück weg zu referenzieren. Ansonsten könnte man nur ein Homing durchführen, wenn der Arbeitsraum komplett leer ist. So wird der Laser immer aus dem Weg gefahren, bevor die anderen Achsen referenziert werden. Unten benötige ich keinen Endschalter, da ich den Verfahrweg ausgemessen und in der Firmware hinterlegt habe, sodass der Laser nie über das Maximum herausfahren kann (Soft Limits aktiviert).
Zu guter Letzt benötigt man einen Sensor zum Ertasten der Werkstück-Oberfläche. Dazu habe ich einen weiteren Endschalter genutzt und den Metallbügel entfernt, sodass nur noch der kleine Taster übrig bleibt. Dieser Sensor („Probe“) wird gebraucht, um beim Erreichen des Materials zu stoppen.
Welche Mechanik genau genutzt wird, ist letztlich egal. Wichtig sind nur:
- Schrittmotor zum Antreiben der z-Achse
- Endschalter zum Referenzieren der z-Achse nach oben
- Endschalter / Taster als „Probe“ zum Ertasten der Oberfläche nach unten
Die Teile, die ich mit dem 3D-Drucker erstellt habe, können hier heruntergeladen werden.
Anschluss der Hardware
Der Anschluss sollte recht einfach vonstattengehen. Es werden drei Ports auf dem Mainboard benötigt:
In meinem Fall habe ich für die Probe nur einen einfachen Schalter genommen, ohne Entprellschaltung wie in der Abbildung, weil der einfacher zu montieren war. Für einen solchen Schalter müssen nur zwei Pins angeschlossen werden: C an GND und NO an S. (C, NO (normally open) und NC (normally closed) stehen in der Regel direkt auf dem Schalter über den Pins). Der Signal-Eingang auf dem Board ist normalerweise durch einen Pullup-Widerstand auf 5V gezogen und muss durch den Schalter auf Ground gezogen werden.
Ansteuerung
Die Ansteuerung ist an sich relativ selbsterklärend, da sie auch nicht anders funktioniert als bei den anderen Achsen. Das einzig Besondere ist das automatische Ertasten der Oberfläche.
Firmware
Die Firmware muss es erlauben, ein Homing der z-Achse durchzuführen. Wenn meine Firmware (siehe dieser Artikel) genutzt wird, ist das schon eingebaut. Ansonsten muss in der Regel ein Update durchgeführt werden. Meine Firmware ist so eingestellt, dass die z-Achse nicht automatisch referenziert wird (sonst würde das Prozedere ohne z-Achse immer fehlschlagen), man kann sie aber manuell starten. Das passiert mit dem Kommando „$HZ“ („$H“ steht für Homing und wenn man eine einzelne Achse homen will, kann man sie anhängen).
Vorher sollte man aber alle anderen Einstellungen prüfen: da es (in meinem Fall) ein anderer Motor und natürlich über die Spindel eine andere Übersetzung der Bewegung ist, müssen die Parameter entsprechend eingestellt werden. Insbesondere sind das:
- $3 = Direction port invert (Anpassung der Fahrtrichtung)
- $23 = Homing direction invert (Anpassung der Fahrtrichtung beim Referenzieren)
- $102 = steps / mm (Schritte pro Millimeter)
- $112 = max rate mm / min (Maximale Geschwindigkeit)
- $122 = max acceleration mm / s² (Maximale Beschleunigung)
- $132 = max travel (Maximale Bewegungsreichweite)
Hier sind meine Einstellungen, die können aber variieren. Sollte sich der Laser beim Homing oder bei der normalen Bewegung in die falsche Richtung bewegen, müssen die entsprechenden Knöpfe aktiviert werden. Gleich am Anfang sollte man herausfinden, wie viele Schritte für einen Millimeter Verfahrweg benötigt werden. Dazu kann man den Befehl geben, 10 mm zu fahren und man misst, wie viel er sich tatsächlich bewegt hat. Entsprechend muss der Wert angepasst werden. Sehr einfach geht das auch mit dem „Achsen-Kalibrierungs-Assistenten“ von LightBurn (zu finden in den Machine Settings). Wenn man das herausgefunden hat, sollte man den Verfahrweg genau ausmessen und dann ebenfalls eintragen.
Meine Firmware-Einstellungen
Hier sind meine Einstellungen des gesamten Lasers, die können aber individuell variieren! Unter anderem hat dieser Laser die Pulleys und Motoren aus diesem Artikel verbaut, daher sind die Steps / mm für die x- und y-Achse anders als normal.
$0=10 (Step pulse time)
$1=25 (Step idle delay)
$2=0 (Step pulse invert)
$3=0 (Step direction invert)
$4=0 (Invert step enable pin)
$5=1 (Invert limit pins)
$6=0 (Invert probe pin)
$10=1 (Status report options)
$11=0.010 (Junction deviation)
$12=0.002 (Arc tolerance)
$13=0 (Report in inches)
$20=1 (Soft limits enable)
$21=0 (Hard limits enable)
$22=1 (Homing cycle enable)
$23=3 (Homing direction invert)
$24=75.000 (Homing locate feed rate)
$25=1000.000 (Homing search seek rate)
$26=250 (Homing switch debounce delay)
$27=1.000 (Homing switch pull-off distance)
$30=1000(Maximum spindle speed)
$31=0 (Minimum spindle speed)
$32=1 (Laser-mode enable)
$100=200.000 (X-axis travel resolution)
$101=200.000 (Y-axis travel resolution)
$102=800.000 (Z-axis travel resolution)
$110=5000.000 (X-axis maximum rate)
$111=5000.000 (Y-axis maximum rate)
$112=500.000 (Z-axis maximum rate)
$120=250.000 (X-axis acceleration)
$121=250.000 (Y-axis acceleration)
$122=100.000 (Z-axis acceleration)
$130=400.000 (X-axis maximum travel)
$131=400.000 (Y-axis maximum travel)
$132=63.000 (Z-axis maximum travel)
Software
Ich habe die Funktionalität bis jetzt nur mit LightBurn getestet, daher ist diese Anleitung auch vorerst nur hierfür. Ergänzungen für LaserGRBL nehme ich gerne entgegen. Zunächst muss die z-Achse aktiviert werden. Zusätzlich empfehle ich den Haken für „nur relative z-Bewegungen“ zu aktivieren, das macht die Nutzung später nach der Höheneinstellung viel einfacher.
Dadurch erhält man zwei neue Pfeile im Move-Fenster, sowie in den Layer-Einstellungen:
Mit diesen Buttons lässt sich der Kopf nun hoch- und herunterfahren (und jetzt kann man entsprechend auch die Parameter wie oben beschrieben austesten und anpassen).
Automatische Fokussierung
Das ist wohl die interessanteste Funktion, die jetzt ermöglicht wird (neben den neuen Funktionen im Layer). Das geht nicht ganz out-of-the-box, ist aber im Grunde auch nicht weiter schwierig. Ich fand es am einfachsten, dafür ein Makro in LightBurn zu erstellen. Damit ist es am Ende auch nur noch ein Klick.
Kern des Ganzen ist das Kommando G38 (Probing) in grbl bzw. g-code (Erklärung siehe hier). Mit dem Kommando fährt die z-Achse an das Werkstück heran, bis der Probe-Schalter auslöst und bleibt dann stehen. Es gibt dabei mehrere Optionen, ich bevorzuge G38.3, da es keinen Fehler wirft, wenn es fehlschlägt und die Firmware damit nicht in den Alarm-Modus versetzt. Das Kommando, dass ich abschließend benutze, ist:
G38.3 Z-63 F200
G38.3 ist der Befehl zur Werkzeuglängenmessung. Z-63 gibt an, dass von der aktuellen Position (sollte 0 sein nach dem Homing) 63 mm nach unten gesucht werden soll. 63 mm ist das längste, was meine z-Achse erlaubt. F200 gibt die Geschwindigkeit in mm/min an. Die beiden letzten Parameter muss man den eigenen Gegebenheiten nach anpassen.
Danach ist weiß man, an welcher Stelle das Werkstück ist. Allerdings sollte man den Schalter so montiert haben, dass man etwas tiefer gefahren ist, als der eigentliche Fokuspunkt des Lasers. Wenn man nämlich jetzt so starten würde, würde der Schalter die ganze Zeit über das Werkstück kratzen. Daher sollte man so viel Distanz kalkulieren, dass man entsprechend zurückfahren kann. In meinem Fall ist der Schalter (quasi zufällig) so angebracht, dass er bei 17,2 mm Fokusdistanz auslöst. Das heißt, im Anschluss muss der Kopf noch 2,8 mm zurück nach oben gefahren werden, um die Distanz von 20 mm zu erreichen. Das geht mit dem Kommando:
G91 G1 Z2.8 F200
Hierbei setzt G91 die nachfolgende Bewegung in relative Koordinaten, das heißt vom aktuellen Punkt aus. G1 gibt eine Linearbewegung an, die mit Z2.8 2,8 mm in z-Richtung ausgeführt wird, mit der Geschwindigkeit F200 = 200 mm/min. Diese beiden Befehle habe ich in einem Makro gespeichert, wo sie direkt hintereinander ausgeführt werden. Dazu kann man mit einem Rechtsklick auf eine der Makro-Tasten in LightBurn ein neues Makro erstellen und benennen.
Ich habe mir wie im Screenshot ersichtlich auch noch ein Makro zum Homen der z-Achse erstellt, dass nur die Zeile „$HZ“ enthält. Das könnte man auch in das andere Makro übernehmen, dann hat man sichergestellt, dass der Kopf vor dem Fokussieren ganz oben ist.
Automatisches Nachregeln pro Layer
Wie man im LightBurn-Screenshot oben sehen kann, hat man nun auch zwei neue Optionen in den Layer-Einstellungen. „Z Offset“ und „Z Step per Pass“. Die Erklärung findet sich in der LightBurn-Dokumentation. Man kann damit entweder einen Fokus-Versatz für das ganze Projekt einstellen, oder bei mehreren Durchgängen für jeden Durchgang die Tiefe nachregeln. Das ist etwa interessant bei dicken Materialien, dort kann man beispielsweise jeden Durchgang um 0,5 oder 1 mm tiefer gehen, um den Fokus immer optimal auf der Schnitttiefe zu haben. Hier ist es meiner Meinung nach besonders wichtig, dass in den Device-Settings „Relative Z Moves“ eingeschaltet ist. Sonst bekommt man schnell unerwünschte z-Bewegungen.
Ergebnis
Hier sind zwei Videos, die das Homing und das Fokussieren zeigen.
Bildergalerie
Hier sind noch ein paar Bilder der verschiedenen Aus- und Aufbaustufen, zum besseren Verständnis.
Hier ist noch ein Design von John, der das Ganze für die S30-Reihe umgesetzt hat. Die Halteplatte gibt es als LB-Datei hier zum Download.