Laserprojektor – Arduino

Ich besitze ja bereits zwei teurere Laserprojektoren mit echten Galvos zum schnellen Ablenken des Laserstrahls. Auch den „einfachsten Laserprojektor der Welt“ habe ich mit zwei kleinen Motoren und schief aufgeklebten Spiegeln umgesetzt. Jetzt fehlte noch eine möglichst simple Umsetzung mit Arduino.

Wichtige Anmerkung: Meine nackte Zehe müssen sich Ästheten wegdenken 😉

Vor gut 20 Jahren habe ich bereits einen Laserprojektor mit Computersteuerung gebastelt. Die Galvos hatte ich damals auch selbst gebaut, sie bestehen aus einer Achse, an denen ich zwei kleine Scheibenmagnete angebracht habe. Außen am Gehäuse befindet sich ein dritter Magnet, welcher die Achse immer wieder in die Nullposition zurückzieht. Ober- und unterhalb der Achse sind zwei Spulen angeordnet, durch welche zur gezielten Ablenkung eine gesteuerte Stromstärke fließt. Der ganze Aufbau, welcher eine parallele Schnittstelle am PC und uralte Software benötigte ist nicht mehr zeitgemäß. Also habe ich in den vergangenen Tagen versucht, ihn durch eine Arduino-Ansteuerung zu adaptieren. Zunächst einmal meine Theorie der Ansteuerung:

Daran erkennt man wieder einmal, dass Schulwissen (konkret die vektorielle Geradengleichung) nicht immer völlig umsonst ist 😉

Die simple Laseransteuerung mittels Mosfet:

Zur Ansteuerung der Galvos versuchte ich es zunächst mit folgender Schaltung:

Als erstes Testobjekt diente ein Parallelogramm (schon wieder Mathematik…). Damit sich die Elektronik so simpel wie möglich gestaltet verwende ich keine symmetrische (sowohl positive wie negative Spannung) Ansteuerung der Galvos, sondern nur eine asymmetrische mit erlaubten Spannungen von 0 bis 5 V. Diese kann der Arduino nämlich mittels eines pseudo-analogen Ausgangs sehr einfach bereitstellen. Dazu wird das Arduino-PWM-Signal einfach in einen Tiefpassfilter gebildet aus R = 2.2 kΩ und C = 100 nF geschickt. Dadurch erhält man eine steuerbare analoge Spannung eben von 0 – 5V. Die x- und y-Koordinaten werden dann 1:1 als Spannung an die beiden Galvos geschickt. Daher müssen sich die x- und y-Koordinaten ebenfalls im Intervall [0, 5] befinden!

Das Arduino-Signal für die x-Achse:

Das Arduino-Signal für die y-Achse:

Das y-Signal direkt am Galvo abgegriffen:

Wie man leicht erkennen kann, stimmen Arduino-Signal und Galvospannung nicht überein. Der Transistor benötigt zum Einen eine gewisse Schwellspannung (engl. threshold) und zum Anderen gerät er dann schnell in Sättigung. Also musste eine andere Ansteuerung für die Galvos her. Ich entschied mich für eine einstellbare/steuerbare Konstantstromquelle mit Operationsverstärker:

Wählt man als Shuntwiderstand im Emitterpfad des Transistors etwa 5 Ohm, so entspricht 1 V am Steuereingang 0.2 A bzw. 5V eben 1 A. Das würde recht gut passen.

Der Testaufbau diesmal im „Wohnzimmer“:

Die gesamte Elektronik hat auf eine Eurolochplatine mit 160 x 100 mm Platz. Ich bin ein extremer Verfechter von Lochplatinen und THT-Bauteilen. Während andere zumindest 1 Woche auf ihre Bestellung bei PCBWay oder JLCPCB warten, habe ich innerhalb von 1 Stunde die Testschaltung gelötet und kann sie gleich testen. Da ich aber mit Änderungen rechnen muss, löte ich bestimmte kritische Bauteile (z.B. Kondensator und Widerstand des Tiefpassfilters, Vorwiderstand des Lasers usw.) nicht fest ein, sondern stecke sie in verlötete Buchsen. So bin ich maximal flexibel…

Parallel zu den beiden fest verbauten 6.8 Ohm-Shuntwiderständen habe ich je einen 10 Ω Leistungswiderstand geschalten. So komme ich auf einen Gesamtwiderstand von 4.05 Ω. Somit ergeben 4.05 V Steuerspannung eine Stromstärke von genau 1 A.

Jetzt sieht das Signal schon viel besser aus und der Strom/die Spannung durch die/über den Galvos folgt nun genau dem Arduino-Signal:

Einzig das Rauschen ist relativ groß:

First light:

Jetzt ging ich einen Schritt weiter und programmierte einen lachenden Smiley bestehend aus 21 Punkten:

Naja, das Ergebnis war nicht gerade berauschend:

Ich änderte daher das Polygon ein wenig ab:

Jetzt erkannte man zumindest schon einmal grob den Smiley 😉

Die x-/y-Steuersignale waren jetzt natürlich schon um einiges komplexer als noch beim Parallelogramm:

Das Lasersignal zeigte wie erwartet einige Sprünge auf 0 V (= ausgeschalteter Laser):

Nach ein wenig Feinjustage erhielt ich folgende Bilder:

Maximale Geschwindigkeit (delay = 0):

Hier lacht zumindest der Smiley…

Langsamerer Scan (delay = 2–3 ms):

Viel mehr konnte ich aus den Selbstbaugalvos leider nicht rausholen. Bin aber nicht wirklich unzufrieden mit den Ergebnissen. Und anhand des sehr simplen Arduino-Programms können auch Schüler das Prinzip der Vektorgrafik sehr gut durchblicken. Und darum geht es mir auch hauptsächlich. Wer eine perfekte Lasershow haben möchte als undurchschaubare black box, der muss ohnehin zu 30k-Galvos und darüber greifen. Der finalisierte Aufbau auf einer Holzplatte:

Dieses Mal mache ich es anders: Wer den Schaltplan & Arduino-code haben möchte, der spende mir 5 Euro für einen Kaffee auf mein paypal-Konto. Dann schicke ich die Dateien an die Emailadresse des Spenders.

Ich mache dies deshalb, weil die freiwilligen Spenden auf mein Paypal-Konto im Jahr wenn es hoch geht vielleicht 30 Euro betragen. Und dies, obwohl meine Homepage pro Jahr rund 250 000 clicks verzeichnet und ich eine riesige Menge an Informationen kostenlos anbiete. Ich habe einmal nachgerechnet: In den letzten 20 Jahren habe ich in Summe bestimmt 18 000 Stunden in meine Projekte gesteckt. Alleine an Material stecken bestimmt 15 000 Euro in meinen Aufbauten und dies, obwohl ich so günstig wie möglich einkaufe. Aber die Menschen scheinen dies nicht ansatzweise zu honorieren. Anstatt mir einmal 5 Euro zu überweisen (über die ich mich dann riesig freue und ich sie als Wertschätzung meines Einsatzes sehe) kaufen sie sich vermutlich lieber um 1500 Euro das allerneueste Iphone oder einen anderen unnötigen Schnickschnack. Gratis im Internet angebotene, hochqualitative Information hat scheinbar für die Allermeisten keinerlei Wert. Und wenn irgendein Influencer ein Top-Schundprodukt anpreist, wird es natürlich von Tausenden gleich gekauft, auch wenn es dabei nur einen einzigen Gewinner gibt und das Produkt zumeist wertlos ist. Diese Entwicklung kotzt mich regelrecht an…


Ich habe ja auch einen Lissajous-Laserprojektor mittels zweier Lautsprecher gebastelt. Diesen probierte ich auch mit der Arduino-Ansteuerung aus. Leider erwiesen sich die Ergebnisse als sehr ernüchternd. Auf der Leinwand war so gut wie nichts vom Smiley zu erkennen. Aber auch das ist eine wertvolle Erkenntnis…


Vor ebenfalls gut 25 Jahren gab es noch keine preiswerten Galvos für Lasershows zu kaufen. Damals sahen sich etliche nach preiswerten Alternativen um. Im deutschen Laserforum https://www.laserfreak.net/forum/  stieß ich damals auf ein tolles Bastlerprojekt. Anstelle der Galvos wurden kleine Schrittmotoren der Type MOT-1 von Epson/Sanyo verwendet. Diese konnten zwar bei weitem nicht mit kommerziellen Produkten mithalten, hatten aber ihren Charme und waren sehr günstig. Diese Motoren gibt es aber schon lange nicht mehr zu kaufen. Daher schaue ich mich gerade nach Alternativen um. Der Schrittwinkel der MOT-1 Motoren betrug 18° und der Strangwiderstand 160 Ohm. Auf aliexpress habe ich deshalb Schrittmotoren mit ebenfalls 18°-steps gekauft:

Die Steuerung erfolgt so: Auf eine der beiden Schrittmotorwicklungen legt man eine konstante Gegenspannung von z.B. 5 V an. An die andere Wicklung kommt das Steuersignal. Der Schrittmotor bleibt dann innerhalb eines einzelnen Schritts stehen und bewegt sich in diesem ohne ihn zu überspringen je nach Höhe der Steuerspannung hin und her. Mal schauen, ob ich das mit den gekauften Modellen auch hinbekomme. Ich werde hier berichten…

Während ich auf die aliexpress-Lieferung warte, habe ich inzwischen in meinem absoluten Lieblingsgeschäft (https://www.neuhold-elektronik.at/) 2 Schrittmotoren mit 7.5° Schrittweite gekauft:

Das Zahnrad habe ich dann auf einer Seite mit meinem Dremel und einer Trennscheibe leicht abgeschliffen, damit ich einen kleinen Spiegel ohne Probleme festkleben kann. Dazu verwende ich eigentlich immer 2-Komponentenkleber:

Auf die Rückseite der Schrittmotoren habe ich übereinander zwei M6-Muttern geklebt und dann eine kurze M6-Gewindestange darin fixiert. Damit kann ich dann die beiden Motoren sehr einfach und flexibel montieren:

Für das Stativ eignen sich sog. Verstellwinkel wunderbar. Die gibt es für rund 1.5 Euro pro Stück z.B. bei Hellweg (https://www.hellweg.de/a/connex-hv-verstellwinkel-80-x-65-x-20-419347 ):

In meiner Küche sieht es wieder einmal aus wie in einer Werkstatt… 😉

Der fertige Schrittmotoren-Scanner:

An eine der beiden Wicklungen des Schrittmotors kommt eine fixe Spannung von z.B. 4 bis 5 Volt, die andere wird mit dem Arduino-Treiber verbunden:

Erste Tests mit einem Smiley:

Also verglichen mit meinen Selbstbaugalvos sind die Ergebnisse mit den Schrittmotoren sogar schlechter. Ich werde es aber noch mit den deutlich kleineren aliexpress-Schrittmotoren mit 18° Schrittwinkel probieren in der Hoffnung, dass diese flinker sind…