RoboEtch
Visitenkarten kann man, wenn man will auch aus Aluminium machen. Wie geht das? Eloxierte Rohlinge bestellen, gravieren -fertig?
Nein! Wenn die Vorder- und Rückseite graviert werden sollen, heisst das zwei Arbeitsgänge pro Karte, bei sagen wir mal vielen Karten, gibt das doppelt so viele Arbeitsgänge. Und wenn man aber eine Industriellen CoBot zur Hand hat dann…
Robotergestützte Gravur von Visitenkarten aus Aluminium
Projektübersicht & Motivation
Aus der tiefen Faszination für Robotik heraus ergab sich die Gelegenheit, ein Ausstellungs- und Vorführmodell eines sechsachsigen Industrie-Roboterarms vom Typ Universal Robots UR5e zu erwerben. Nach ersten spielerischen Versuchen um mich mit der Bedienung des Roboterarms vertraut zu machen beginnt hier die erste “industrielle” Fertigungsaufgabe: Dem vollautomatisierten, beidseitigen Gravieren von Aluminium-Visitenkarten mittels eines Galvanometer-gesteuerten Faserlasers.
Die primäre Herausforderung: Der Faserlaser verfügte weder über eine dokumentierte, quelloffene API noch über externe digitale Steuerschnittstellen. Um ein zeitintensives, manuelles Neuladen von Laser G-Code für Vorder- und Rückseite zu vermeiden, musste ich ein System entwickeln, welches beide Seiten synchron in einem einzigen Laservorgang graviert und die Beschickung an den Roboter delegiert.
Setup
Roboterarm Universal Robots UR5e mit integriertem Kraft-Moment-Sensor
Manipulator (3D-Druck) mit 4 Vakuum Saugnäpfen
Adapterflansch (3D-Druck) für die Standardaufnahme an der 6.Achse
Unterdruckschlauch 6mm Quick-Fit
Teach-Pendant (Toch-Display zur Steuerung und Programmierung)
Integrierte I/O-Box (
Drehteller
Pneumatischer Schwenkantrieb (Schwenkfügel-Antrieb) mit justierbaren Endanschlägen
Halterung zur Montage in die Lochrasterplatte (3D-Druck)
Drehteller zweiseitig mit jeweils zwei Vertiefungen für Forder- und Rückseite
Induktiver Näherungssensor zur verifizierung des Erreichens der Endpositionen (Nach dem ersten zersplitterten Drehteller und zu forscher Optimierung der Zykluszeiten… Grins!)
Laser Gravierer xTool F1 (Galvanometer gesteuerter Laser)
Zusatz-Auslöser zum externen Starten des Laser-Vorgangs
Kartenstapel
Kartenschacht (3D-Druck)
Ablageschacht (3D-Druck)
Technik
Robotersteuerung
Vakuumpumpe
Druckluftanschluss
Solenoid-2/5-Wege 4-Fach-Ventilblock
Drehteller
2-Wege-Zylinder “Startknopfdrücker”
Exhaust-Air (Nach realisation, dass einfaches Zuschalten von Atmosphärendruck keinen zuverlässigen Kartenabwurf erzeugt)
Solenoid-1-Wege-Ventil zur Vakuum Steuerung
Vakuum-Sensor mit digitalem Ausgang und Schwellenwertdefinition
Basis
Werkzeugwagen aus Edelstahl
Lochrasterplatte 50×50mm mit M-8-Innengewinde aus Multiplex
Adapterplatte für Roboter-Basis aus Multiplex
Steuerung
Virtuelle Umgebung
Sichere Zonen
Virtuelle Begrenzungen
Koordinatensysteme für die verschiedenen Baugruppen
Exakte Koordinaten im Bezugssystem
Sicherheits-Einstellungen
Crash-Empfindlichkeit
Not Halt
Beschleunigung
usw.
Programm-Code
Genereller Ablauf
Funktionsblöcke für repetitive Sequenzen
Init-Phase
Exit-Phase
Geschwindigkeiten
Beschleunigung
Background Thread für Vakuumüberwachung
Software
Autodesk Fusion 360 (CAD Modellierungssoftware)
Prusa Slicer (3D-Druck vorbereitung)
xTool Studio (Laser Dienstprogramm)
Design / Prototyping / Fallstricke
Manipulator auf Adapterflansch
Manipulator
Den Manipulator mit den 4 Saugnäpfen habe ich (wie alle Teile) in Autodesk Fusion 360 designt. Die Modellierung der Internen Kavitäten für die Luftwege waren leicht und schnell mit Sweeping entlang einer 3D-Skizze erstellt. Das Innengewinde für das Fitting für den 6mm Quick-Fit-Schlauch mit dem internen Gewinde-Generator schnell erstellt. Die Pilzförmigen Basen für die 4 Saugnäpfe auf den ersten Versuch passend. Jedoch ist ein 3D-Druck durch die inhärente Mikroporosität nicht Gasdicht. Das hat dann dazu geführt, dass ich in den Slicer Einstellungen in Prusa Slicer mehrere Iterationen gebraucht habe, um die Anzahl der Perimeter und den Extrusionsfaktor so anzupassen, dass der Druck annähernd Gasdicht geworden ist. Das geplante kurzzeitige fluten der internen Luftleitungen mit hochviskosem Zyan-Acrylat (Sekundenkleber flüssig) war somit nicht mehr nötig.
Vereinzelung / Kartenschacht
Mein erster entwurf für die Kartenseparation war eine art Schlitten oder eine Schublade, welche durch eine Vertiefung in Kartenform, die Vereinzelung handhaben sollte. Die Karten haben eine sehr glatte Oberfläche, welche beim Versuch der Vereinzelung mit einer starken Adhäsion (Van-der-Waals-Kräfte) und einem Mikrovakuum (zwischen den planaren Oberflächen - braucht Zeit und Kraft um sich abzubauen) der Separation widerstehen. Leider war es ein totaler Fehlschlag, bei dem ca. 2-3 Karten mitfuhren und den schlitten blockierten, so dass ich das Konzept kurzerhand verwarf.
Da ich jedoch bereits einen Kartenschacht als Ablagestapel entworfen und gedruckt habe, muss es doch möglich sein, ohne weitere Hilfsmittel, also rein mit der Roboterkinematik ein Separation zu erreichen. Also habe ich mehrere schnelle Zyklen von Wackel-/Drehbewegungen um die Kartenmitte herum implementiert, welche die Karten zuverlässig separieren. Die Raue Oberfläche des 3D-Gedruckten Schachtes unterstützt die Separation insbesonders.
Drehteller
Da die Karten synchron beidseitig Graviert werden (Karte n auf Vorderseite, Karte n-1 auf der Rückseite) muss der Drehteller 2 Rotationssymmetrische Teile haben, welche jeweils zwei Vertiefungen für die Karten haben. Da die Karten jedoch einseitig angesaugt werden, was immer die Vorderseite ist, muss im Ablagefach 2 respektive 2’ ein Ausschnitt sein, um die Karten mit der Rückseite nach oben ablegen zu können. Nach initialem Modellieren des bereits vorhanden Adaprerflansches war es ein leichtes, ein Teil zu Konstruieren, welches sich mit Einschmelz-Gewindehülsen und M3 Schrauben aneinander und mit den jeweils zwei von unten kommenden Schrauben am Flansch zu befestigen.
Die Drehgeschwindigkeit des Pneumatischen Schwenkantriebes mit verstellbaren Endanschlägen habe ich mit ausgangsseitigen direktionalen Drosseln gedämpft, um Slip-n-Stick Verhalten zu reduzieren und das wegschleudern der Karten als mörderische Geschosse durch den ganzen Raum zu unterbinden. Den Systemdruck reguliere ich über ein Druckreduzierventil.
Laser-Gravierer Ansteuerung
Da der Laser kein digitales Startsignal verarbeiten konnte, wurde die Ansteuerung mechanisch gelöst: Ein pneumatischer Kurznhubzylinder ist über dem physischen Startknopf des Lasers montiert. Meldet der induktive Sensor das Einrasten des Drehtellers, löst die Robotersteuerung ein Magnetventil aus, und der Zylinder triggert den Laserprozess.
Da auch kein digitales "Fertig"-Signal vom Laser kommt, läuft die Taktung aktuell über ein empirisch ermitteltes Zeitfenster. Für die finale Ausbaustufe ist jedoch bereits das nächste Feature geplant: Das Abgreifen der Schaltspannung des internen Abluftlüfters des Lasers, welcher exakt mit dem Gravurvorgang startet und stoppt, um ein Closed-Loop-Rückmeldesignal zu generieren.
Integration
Vertrauen ist gut - Kontrolle ist besser!
Da ich feststellen musste, dass es unvorhergesehene Ereignisse gibt, Vakuumpumpe vergessen einzuschalten, Luftdruck abfall, Werkzeug liegen gelassen musste ich die relevanten Prozessschritte systematisch verifizieren.
Der Drehteller rotiert um 180°. Da reine Zeitsabhängigkeit der Rotation durch Luftdruckschwankungen oder mechanische Blockaden (z. B. im Weg liegendes Werkzeug) im Entwicklungsprozess zu Ausschuss führten (Drehteller abgebrochen), habe ich einen induktiven Näherungssensor nachgerüstet. Dieser detektiert eine Justierschraube an den Endanschlägen der Drehplatte und gibt das Erreichen der Zielposition über einen digitalen Eingang (DI) der Robotersteuerung frei. Erst wenn dieses Signal anliegt, startet der Prozess des Karten-Handlings und der neuerlichen Beschickung.
Der Erhalt des Vakuums ist ein Indikator für verschiedene Failure-Modes. Also habe ich einen Digitalen Vakuumsensor mit einstellbarem Schwellenwert nachgerüstet. Der Wert wird über einen Background-Thread in der Steuerung überwacht, welcher in den phasen, wo ein Unterdruck aufgebaut oder gehalten werden soll eine initiale respektive kontinuierliche Abfrage durchgeführt, welche die Exekution des Programms im Fehlerfall augenblicklich stoppt.
Detektion von mechanischem Versagen
Vakuumpumpe defekt
Leitungsdefekt
Materialermüdung
Elektrischer Defekt
Detektion von fehlender Karte (Verliert den Unterdruck nach Ansaugen und Wegfahrbewegung)
Detektion von menschlichem Versagen - Ooops!
Vakuumpumpe nicht eingeschaltet / angeschlossen
Karten vergessen abzuzählen
Kamera zu nahe hingehalten
Ablauf
Init
Während der Laser auf der einen Seite des Tellers arbeitet, fährt der Roboter in Warteposition.
Sobald die Drehplatte nach dem Laservorgang zurückschwenkt, saugt der Roboter die beidseitig gravierte Karte an und bewegt die in den Ablagestapel. In Folge saugt er die einseitig gravierte Karte an, wendet sie im Raum und legt sie durch einen Ausschnitt im Drehteller umgedreht (Rückseite nach oben) in Fach B ab.
Das Problem der elastischen Rückfederung (Springback)
Beim Ablegen der gewendeten Karte passierte es anfangs regelmäßig, dass die Karte durch materialspezifischen Verzug (Flexing) elastisch nach oben federte, sobald das Vakuum abgestellt wurde. Ein reines Belüften der Leitung unter Atmosphärendruck war viel zu träge.
Die Lösung brachte die Integration eines Druckluft-Überdruckimpulses: Über ein feinfühlig eingestelltes Durchflussreduzierventil (Drosselventil) wird im Moment des Lösens ein minimaler, dosierter Druckluftstoß auf die Saugnäpfe gegeben. Durch die exakte softwareseitige Abstimmung von Vakuum-Unterbrechung und Abwurf-Timing wird die Karte nun kontrolliert in das Fach gedrückt, ohne dass sie springt oder sich verschiebt.
5. Pipeline-Management: Steady-State, Init & Exit
Befinden sich alle Karten im Durchlauf, arbeitet das System im hocheffizienten Steady-State: Bei jedem Zyklus wird eine fertige Karte in den Auswurfschacht gestapelt, eine teilgravierte Karte gewendet und ein neuer Rohling eingezogen.
Die größte logische Denkarbeit im Programmcode floss in das Pipeline-Management (Anfangs- und Schlusssequenz):
Die Init-Phase: Beim ersten Start des Systems ist der Drehteller leer. Der Roboter darf nicht versuchen, eine nicht vorhandene Karte zu wenden oder zu greifen, da der fehlende Unterdruck sonst sofort einen Not-Halt auslösen würde. Die Beladungssequenz muss daher schrittweise aufgebaut werden.
Die Exit-Phase: Ist der Kartenschacht leer (detektiert über den UR5e-Nullpunkt-Tiefenanschlag), schaltet das System in eine sequenzielle Entleerung. Die verbleibenden Karten auf dem Drehteller werden sauber zu Ende graviert und ausgeworfen, ohne dass neue Karten nachgeholt werden.
Es kann eine voreingestellte anzahl Karten definiert werden.
Learnings & Kompetenzgewinn
Roboterprogrammierung & Sensorik: Nutzung von Kraft-Momenten-Sensorik zur adaptiven Bauteilsuchfahrt sowie Implementierung asynchroner Hintergrund-Threads zur Sicherheitsüberwachung.
Pneumatik & Fluidtechnik: Beherrschung von Unterdrucksystemen, Object-Pooling im Luftstrom (Abwurfsicherung via Drosselventilen) und EMV-sicherer Sensorintegration.
Kreative Problemlösung: Entwicklung mechanischer und elektrischer Schnittstellen ("Hardware-Hacking") für geschlossene Fremdsysteme ohne offene Software-Schnittstellen.