Kinetische Lichtarbeit mit servogesteuerten Lasermodulen

Kinetische Lichtarbeit mit servogesteuerten Lasermodulen: 8 Schritte

Ich hatte geplant, das gesamte Stück in Autodesk Inventor zu verspotten, einschließlich Motion. Das erwies sich als unnötig ehrgeizig, war aber sehr praktisch bei der Gestaltung der festen Teile des Stücks.

Die Form der Laser-FanDie Vorderseite ist eine mathematische Kurve, die als Niere bezeichnet wird und vom Lateinischen für "Herz" steht. Inventor bietet diese großartige Funktion, mit der Sie auch in parametrischer Form eine mathematische Gleichung eingeben und eine Kurve dieser Form erstellen können. Die Nierenkurve ist in parametrisierter Form besonders einfach, so dass sich leicht eine mathematisch reine und dennoch interessante Form generieren lässt. Durch Skalieren der Y-Dimension auf das Doppelte des X "quetschte" ich die Form, um ein hohes Seitenverhältnis zu erhalten: Auch hier ist die Verwendung von Mathematik einfach. Ich lege die Nierenlappen nach unten und bilde "Po-Wangen". Wenn Sie damit nicht einverstanden sind, können wir leider keine Freunde sein.

Sobald ich die Frontplatte hatte, war es Zeit, die Servos zu positionieren. Ich verwende "9-Gramm" Mikroservos, die winzig und preiswert sind. Ich habe ein Volumenmodell im Inventor-Format gefunden, mit dessen Hilfe ich die richtigen Abmessungen erzielen konnte. Leider konnte ich nicht herausfinden, wie ich die Servos entlang der Nierenkurve automatisch ausrichten oder gleichmäßig verteilen kann. Ich habe sie nur in Augenschein genommen und vier vorsichtig von Hand positioniert und dann den Befehl Spiegeln verwendet, um sicherzustellen, dass sie symmetrisch platziert sind. (Wenn ich nicht so geschickt mit ausgefallenen Kurven umgegangen wäre, hätte ich einen Musterbefehl verwenden können, um sie automatisch auf einem Kreis zu platzieren und zu platzieren.)

Ich muss sagen, dass ich viel zu viel Zeit damit verbracht habe, ein einfaches Design zu entwerfen. Inventor scheint fehlerhaft (oder zumindest schlecht dokumentiert) zu sein, wie Bemaßungen zwischen Teilen in einer Baugruppe projiziert werden, und ich habe viel Zeit damit verbracht, Dinge neu zu erstellen, die entweder beim Ändern der Geometrie in die Luft gejagt wurden oder die ich zu Beginn im falschen Bereich konstruiert habe mit.

Schritt 2: Entwerfen der Beine

In Inventor war es unkompliziert, passende Beine herzustellen. Diese haben Laschen, die in die Schlitze in der Frontplatte passen, und werden von M2,5-Schrauben mit festgeklemmten Muttern gehalten. Im zweiten Bild oben habe ich ein Mutternmodell hinzugefügt, um die Abmessungen des Mutternschlitzes zu überprüfen. Die Beine haben auch Befestigungslöcher für die Leiterplattenhalterungen. (Die Platine ist zwischen den Beinen installiert: Sie ist in der obigen Darstellung als violette Ebene sichtbar.)

Schritt 3: Entwerfen der Laserhalterungen

Dieses Stück verwendet Laserlinienmodule, die überraschend günstig bei Ebay erhältlich sind. Ich brauchte eine Möglichkeit, um diese an den Servos zu befestigen, also habe ich Inventor verwendet, um Halterungen zu entwerfen, mit denen die Servos die Laser drehen konnten, während sie in einem Winkel in Richtung der Wand ausgerichtet waren.

Ich hatte das Glück, am Pier 9 auf die 3D-Drucker von Objet zugreifen zu können, mit denen sich verschiedene Harzarten mischen lassen. Die "Vero" -Harze sind hart, während die "Tango" -Variante weich und geschmeidig ist. Ich habe eine gummiartige Mischung auf der Oberseite des Teils verwendet, um den Laser festzuhalten, und reines hartes Vero-Harz auf der Unterseite, um Stabilität und eine gute Verbindung mit dem Servo zu gewährleisten. Ich habe nicht versucht, die Servo-Splines zu modellieren. Ich habe das Passloch rund und ungefähr so ​​groß wie die Außenseite der Keile gemacht, damit ich mich nicht auf die festen Winkel der Keile beschränken musste. Eine Schraube durch jede Halterung im Servo hält sie bündig und im richtigen Winkel.

Schritt 4: Konstruktions- und Maßprüfung

Nachdem die Frontplatte und die Beine entworfen wurden, schneide ich sie mit einem Laserschneider aus Pappe, um die Abmessungen zu überprüfen. Das Mikroservomodell war genau, sodass die Löcher und Servoschlitze genau ausgerichtet waren - immer ein gutes Gefühl! Dann schneide ich die Frontplatte und die Beine aus Acryl und montiere sie trocken, um die Passung der Laschen und die Schraubensicherung zu überprüfen. Ich habe auch ein Servo mit Laserhalterung und Laser zum Testen der Abstände getestet, überprüfen! Alles passte auf Anhieb, was die in Inventor verbrachten Stunden ein wenig vergütete.

Schritt 5: Entwurf der Steuerelektronik

Für das Gehirn des Systems verwendete ich eine Teensy 3.1-Mikrocontroller-Platine. Dies ist ein kostengünstiger und dennoch leistungsstarker ARM-Prozessor, der mit der Arduino-Toolchain, die eine Vielzahl nützlicher Bibliotheken enthält, leicht programmiert werden kann. Am wichtigsten ist, dass es bis zu 12 Servokanäle ab Werk unterstützt! Diese Art von Mikrocontroller-Code auf der Basis von Interrupts und Timer-Funktionseinheiten geschrieben zu haben und dieses Rad nicht neu erfinden zu müssen, ist ein definitiver Bonus. (Auch viele Leute schätzen heutzutage die Bequemlichkeit eines USB-Bootloaders gegenüber teurer Programmierhardware nicht ganz, aber vertrauen mir: Es ist großartig!)

Da der Teensy mit acht Lasern und acht Servos verbunden werden konnte, habe ich eine Leiterplatte entworfen, um die Anschlüsse zu vereinfachen. (Aus meiner Erfahrung sind Verbindungen die Schwachstelle in jedem Elektronikprojekt. Je mehr sie durch robuste Lötstellen ersetzt werden können, desto besser.) Ich habe EagleCAD zum Entwerfen der Leiterplatte verwendet, da ich viel Erfahrung damit habe und an deren Verwendung gewöhnt bin Macken.

Das Layout war recht einfach: Ich verwendete Darlington-Hochstromtreiber ULN2803a, um die Laser über die digitalen Teensy-Ausgänge zu steuern. Der ULN2803a verfügt über 8 Treiber, sodass ich einen IC für alle 8 Laser verwenden kann (oder wie ich dachte!) Und die Helligkeit jedes einzelnen Lasers mithilfe des PWM-Ausgangs steuern kann ( AnalogWrite ()). Ein zusätzliches Merkmal ist, dass die Laser bei einer Eingangsspannung von 3,3 V spezifiziert sind; da ich sie von 5 V treibe, senkt der doppelte Vce-Abfall über das Darlington-Paar die 5 V-Eingangsspannung auf ungefähr diesen Pegel.

Da Servos und Motortreiber viel Lärm auf den Stromschienen verursachen können, habe ich die Platine speziell dafür entwickelt. Servoleistung und Masse sind niederohmige Güsse auf das obere und untere Kupfer. Um den Teensy zu isolieren, den ich in einem separaten Spannungsregler entworfen habe, der aber nicht benötigt wurde (der Teensy hat einen internen 3,3-V-Regler, so dass er immer noch ziemlich isoliert von der 5-V-Servospannung ist.), Habe ich eine Menge Filterkapazität für die Stromversorgung hinzugefügt: jede Gruppe von 4 Servos hat einen 100uF Bypass-Kondensator; vielleicht übertrieben, aber das Board hat gut funktioniert.

Ich habe die Leiterplatte bei OSH Park, meinem Lieblingsplatinen-Service, herstellen lassen: recht günstig für kleine Mengen, hervorragende Qualitätsergebnisse mit Goldbeschichtung zum einfachen Löten und deren Markenzeichen lila Lötmaske. Ein weiterer Vorteil von OSH Park ist, dass EagleCAD-Dateien akzeptiert werden, ohne dass Gerber- und Drill-CAM-Dateien generiert werden müssen. Der Turnaround ist relativ schnell: Ich denke, diese Boards haben weniger als eine Woche gedauert.

Schritt 6: Montage der Elektronik

Sobald ich die Platine fertig hatte, war es eine einfache Sache, sie zu "stopfen" - oder so dachte ich! Es hat nur ein paar Teile und Anschlüsse, wie schwer könnte es sein? Nun, ein paar Dummköpfe haben mich ein wenig zurückgeworfen, aber sie haben nichts Katastrophales bewiesen. Es gab viele Anschlüsse, darunter acht 3-polige Servo-Header. Das obere Bild zeigt meinen Trick, um vier davon gleichzeitig zu löten: Um sie gerade und ausgerichtet zu halten, habe ich sie in ein lötfreies Protoboard gesteckt und dann die Leiterplatte umgedreht, um die Stiftleisten zu löten. Dies bedeutet, dass Sie beim Entwerfen der Leiterplatte alle Anschlüsse in einem 0,1-Zoll-Raster ausrichten müssen. In der Regel ist dies eine gute Idee, damit Sie ein Perfboard darüber stapeln können, wenn Sie Dinge hinzufügen oder überarbeiten müssen.

Mein erster Fehler war, den Teensy mit nur einem Lötkopf, der auf dem zweiten Foto zu sehen ist, auf die Platine zu löten. Dies machte die USB-Verbindung ein wenig eng und ließ nicht viel Platz, damit die Laserkabel aus der Platine herauskamen. Deshalb habe ich eine Buchsenleiste hinzugefügt, um dem Teensy mehr vertikalen Freiraum zu geben (siehe letztes Bild).

Mein letzter Blödmann war der Gedanke, ich hätte einen Vorrat an 8-Kanal-ULN2803-Treibern, als ich tatsächlich ULN2003a-Chips in der Hand hatte. Dies sind fast die gleichen ICs, außer dass der ULN2003 nur sieben Treiber anstelle der acht Treiber hat, die ich für die acht Laser benötigte. Um die wenigen Tage zu sparen, die es gedauert hätte, um die richtigen ICs zu bestellen und auszuliefern, bestand mein Hack darin, einen zusätzlichen ULN2003-Chip auf den bereits vorhandenen Chip zu kleben und den zusätzlichen Treiber mit fliegenden Kabeln an die Leiterplatte anzuschließen, wie in der Abbildung dargestellt letztes Foto. Die Makroaufnahme hier macht das Bild viel größer als es ist: Die eigentlichen Drähte sind ziemlich empfindlich! Dieser Hack könnte auch verwendet werden, um das aktuelle Laufwerk zu erhöhen, indem zwei Treiber parallel geschaltet werden.

Schritt 7: Endmontage

Die Endmontage verlief ziemlich schnell. Die Löcher für die Servomontage waren für eine M2,5-Schraube einfach zu klein, also habe ich sie mit einem M2,5-Gewinde versehen. Der Kunststoff ist nicht großartig und das Klopfen war nicht so tief, daher würde ich diesen Trick nicht empfehlen, wenn die Servos viel Drehmoment haben, aber hier hat es ganz gut funktioniert und mich davor bewahrt, mit 16 winzigen Muttern auf der Rückseite herumzuspielen.

Da die Servokabel direkt in die entsprechenden Header eingesteckt waren, bestand die mühsamste Aufgabe der Elektronik darin, die 16 Laserdrähte zu löten. Diese waren nur ein paar Zentimeter zu kurz, um die Platine zu erreichen. Anstatt 16 weitere Erweiterungen anzulöten, benutzte ich ein Stück Perfboard und eine gehackte 10-polige Buchsenleiste, die ich in meinem Stapel hatte. Dies passte perfekt, das Einlöten der Drähte in das Perfboard war einfach und die zusätzlichen zwei Zentimeter, die es mir gaben, waren perfekt, um den Laserdrähten Freiraum zu geben, ohne dass zu viel übrig blieb.

Ich stellte auch fest, dass ich genug Länge an den Servokabeln hatte, um diese unter der Platine durchzuschleifen und den Durchhang auszugleichen. Die Rückseite ist bemerkenswert aufgeräumt, da insgesamt 40 Drähte aus der Platine kommen!

Schritt 8: Codierung, Bewegung und Interaktivität

Ich ging hin und her, wie sich das Stück aktivieren würde. Ich hätte alles auf ein automatisches Muster stellen können, entweder wiederholend oder sich entwickelnd, aber ich wollte nicht, dass die Servos ständig aktiv sind; wenn sonst nichts, würde sich das Getriebegeräusch als störend herausstellen. Also habe ich beschlossen, die Servobewegung interaktiv zu machen, aber die Laser eingeschaltet zu lassen, wenn das Teil im Leerlauf war.

Das Leerlaufmuster für die Laser besteht darin, jedes symmetrische Laserpaar zusammen sinusförmig aufzuhellen und abzudunkeln; Jedes der vier Paare hat eine leicht unterschiedliche Periode (Überblendungsrate), sodass sie für ein sich ständig änderndes Muster langsam in und außer Phase gehen. (Es wiederholt sich irgendwann, aber ich garantiere Ihnen, dass Sie die Geduld verlieren werden, wenn Sie darauf warten!)

Um die Servobewegung auszulösen, habe ich verschiedene Sensortypen (Infrarot, Ultraschall) in Betracht gezogen, aber schließlich eine Taste ausgewählt, die der Benutzer drücken kann. Dies ist sowohl einvernehmlicher - das Stück wird ohne ausdrückliche Zustimmung nicht mit Ihnen interagieren - als auch offensichtlich (und auch einfach zu implementieren). Um die Bewegung zu ermöglichen, muss der Benutzer die Taste gedrückt halten. Die Bewegung dauert so lange, wie die Taste gedrückt gehalten wird. Bei jedem Drücken der Taste wird ein neues Muster generiert. Es gibt vier Lasermuster und drei Bewegungsmuster: Mit jedem Tastendruck wird das nächste Muster im Zyklus ausgewählt. Es gibt also 12 mögliche Kombinationen, die alle trainiert werden. Ich bin der Meinung, dass dies mehr Muster sind, als der durchschnittliche Betrachter erforschen möchte.

Jedes Muster sowohl für die Laserhelligkeit als auch für den Winkel basiert auf einer sinusförmigen Variation. Das Ändern der relativen Phase und der Frequenzen verleiht dem Stück eine interessante Bewegung und Symmetrie. Für die Bewegung musste ich eine Zustandsmaschine implementieren, die die Servos sanft in die Ausgangsposition zwischen den Mustern zurückbringt (wenn die Taste nicht gedrückt wird), damit sie ohne störendes Zucken reibungslos zwischen den Mustern wechseln können.

All dieser Code wurde in der Arduino-Umgebung mit geschrieben cos8 () aus der FastLED-Bibliothek für die Sinusberechnung. Dies hat unter anderem einen Eingangsbereich von 256 Einheiten, sodass ich eine ganzzahlige Mathematik verwenden kann, die nur inkrementiert wird, ohne dass ein Rollover bei der 2π-Marke erforderlich ist.

Der Arduino-Code und das Schema finden Sie auf Github unter http://github.com/headrotor/laser_fan