Laser Parametric Curve Projector

by tbavel in Circuits > Arduino

79 Views, 0 Favorites, 0 Comments

Laser Parametric Curve Projector

Opstelling foto.jpeg
Opstelling foto2.jpeg
Captura de pantalla 2026-06-19 112713.png

Deze opstelling laat zien hoe je met twee golven, elk op een eigen as, figuren kan maken. Wanneer twee sinusoïde worden samengevoegd, waarbij er een op de y-as staat en een op de x-as, ontstaan er gesloten curves. Bij bijvoorbeeld x=cos(t) en y=sin(t) ontstaat er een cirkel. Dit is een parametrische curve. Door de functie, frequentie of het faseverschil te veranderen, heb je invloed op hoe de curve eruit gaan zien.

Zo’n parametrische curve wordt zichtbaar gemaakt door een laserstraal met spiegeltjes aan te sturen op basis van de input van een signaal op de x- en y-as. Deze spiegeltjes worden aangestuurd door elk een stappenmotor, een voor de x-as en een voor de y-as. Zo kunnen we de curve projecteren op het projectievlak.

Het idee van deze opstelling is afgeleid van de werking van oude oscilloscopen. Daar werd een elektronenbundel afgebogen door een magnetisch veld op basis van het gemeten elektrische signaal: twee platen bogen hem af in de verticale richting en twee in de horizontale richting. Deze opstelling maakt alleen geen gebruik van een elektronenbundel en elektrische veld, maar van een laser en spiegeltjes. Het idee erachter is wel hetzelfde: de x- en y-as signalen als input geven die uiteindelijk resulteren in mooie parametrische curves.

Downloads

Supplies

Benodigdheden:

  1. 3D printer
  2. Lasersnijder
  3. Knip tang
  4. Strip tang
  5. Föhn
  6. 8 Jumper cables - male to male
  7. 2 Jumper pins
  8. Stappenmotor kabels
  9. Losse bedrading
  10. Arduino UNO
  11. Schroevendraaier
  12. Inbussleutel
  13. 2 Stelschroeven - M2*5mm
  14. Bouten
  15. 8 M3*6mm
  16. 12 M4*10mm
  17. Heated inserts
  18. 2 M2*3mm
  19. 12 M4*8.1mm
  20. Usb-C oplader - 12V 3A
  21. Usb-C breakout board - COM-ZY12PDN-ST - 12V 3A mogelijk
  22. Usb-B naar Usb-A/C kabel
  23. Soldeerbout
  24. Laser - 5mW 650nm KW-1442
  25. 2 Stappenmotor - NEMA17 23mm
  26. 2 Stappendriver - HY-DIV268N - 5A - 8-42V
  27. 2 Stappenmotor 90° bracket
  28. 2 Spiegels - 0.4mm silicium
  29. Houtlijm

Ontwerpen

Opstelling.jpeg
WhatsApp Image 2026-05-06 at 12.25.25.jpeg
spiegelkoppeling.jpeg

Eerst moet je alle onderdelen die moeten worden ge-3Dprint of laser gesneden maken. Voor het 3D printen adviseren wij voor de basis en de laser klem het uit te printen met 4 wandlagen en 30% infil. De motor koppelingen adviseren wij te printen met 100% infil.

In de montagevoet heb je 4 gaten per stappenmotor nodig voor de brackets die de stappenmotoren aan de montagevoet vast zetten, en 4 voor de laser. De stappenmotor tegenover de laser moet 10 mm hoger zitten dan de andere stappenmotor. De laserhoogte moet overeen komen met de as van de stappenmotor en om de laser aan de montage vast te zetten, moet je een mountcover ontwerpen met dezelfde radius als je laser.

Voor de spiegelkoppeling is het vooral belangrijk dat de spiegels precies op de as van de stappenmotoren blijven. Een optie om dit te doen is om de koppeling cilindrisch maken met een gat waar de as van de stappenmotor moet en daar boven een balk van de dimensies van de spiegel die tot aan het midden van de cilinder komt. Er moet ook rekening mee worden gehouden dat de koppeling aan de steppenmotor vast moet. Daarom moet er een gat gemaakt worden waar een bout in moet.

De behuizing moet groter zijn dan de montagevoet en moet gaten voor de laserstraal en de bedrading hebben. Je moet dus gaten achter de stappenmotoren en laser hebben, en die moeten helemaal tot de onderkant komen. Het gat voor de laserstraal moet staan waar de spiegels zijn, zodat het na de reflectie langs het gat gaat. Om de behuizing makkelijk samen aan elkaar te bevestigen is het handig de behuizing met finger connectors te ontwerpen, wij hebben die van 20x3mm gemaakt.

Bouwen

WhatsApp Image 2026-06-10 at 11.50.10.jpeg
Behuizing_foto.jpeg
Elektrischeschakeling.jpg
WhatsApp Image 2026-06-19 at 10.57.47.jpeg
WhatsApp Image 2026-06-19 at 10.56.47.jpeg
WhatsApp Image 2026-06-19 at 10.55.47.jpeg

Wanneer alles al uitgeprint en laser gesneden is, kun je al alle onderdelen in elkaar zetten.

  1. Plaats de M4 heated inserts in de montage voet. Dit doe je door de insert op de punt van een soldeerbout te plaatsen zodat de insert een beetje kan opwarmen. Vervolgens duw de insert met de soldeerbout in het gat op de montage voet. Het PLA van de montage voet smelt een beetje om de insert heen. Als dit weer hard wordt, zit de heated insert goed vast. Dit proces volg je ook om de M2 heated inserts in de spiegelkoppeling te zetten. Het is bij alle inserts van groot belang dat ze er zo recht mogelijk in gaan. Als je dit nooit eerder gedaan hebt adviseren wij om eerst even te oefenen.
  2. Monteer de stappenmotor brackets aan de montage voet met de M4 bouten.
  3. Lijm de spiegels met een klein beetje secondelijm aan de spiegelkoppeling op het vlakke stuk van de koppeling
  4. Druk de koppelingen op de motor as, er is maar 1 manier hoe dit kan. Het kan zijn dat ze er niet makkenlijk op gaan. Als je te hard gaat drukken kan je de motor kapot maken, dus verhit de koppelingen een beetje met een föhn en druk ze er dan op.
  5. Plaats de laser in de montage voet en plaats de mountcover erop. Zet deze vast met M4 bouten. Zet de bouten om de beurt steeds een beetje vaster zodat de druk gelijk verdeeld is.
  6. Bevestig de stappenmotoren met de koppelingen er op met M3 schroeven op de 90° brackets. De aansturingspinnen moeten aan de bovenkant zitten.
  7. Pas de positie van de brackets en stappenmotoren aan totdat de laser zo goed mogelijk in het midden van de spiegels komt, zonder dat de koppelingen elkaar raken. Dit kan je doen door de stappenmotor brackets te een klein beetje los te maken en te verschuiven.
  8. Maak het elektrische circuit zoals getekend staat in de foto.
  9. Verbind alle DIR-, PUL- en EN- van beide drivers met elkaar via op maat geknipte en gestripte bedrading.
  10. Verbind een DIR-, PUL- of EN- met een male to male jumper wire met de GND op de arduino
  11. Verbind de DC- van beide drivers met elkaar via een op maat geknipte draad en doe hetzelfde met DC+.
  12. Verbind de DC+ van een driver ook met de plus van het USB-C breakout board en verbind DC- van een driver met de min van het USB-C breakout board.
  13. Verbind de stappenmotoren via de stappenmotor cables met de A+, A-, B+ en B- op hun eigen driver. Ga via de specificaties van de stappenmotoren na welke draad verbonden moet worden met welke port op de driver. De y-motor is degene die op een verhoging staat op de basis en in lijn staat met de laser, de andere motor is de x-motor. Wij raden het aan om met wat tie-wraps de draden van de stappenmotor cables aan elkaar vast te maken. Dit ziet er een stuk overzichtelijker uit.
  14. Verbind met een jumper wire de PUL+ van de driver verbonden met de y motor met port 8 op de arduino. En verbind de DIR+ van dezelfde driver met port 9 op de arduino.
  15. Doe hetzelfde met de driver die verbonden is met de x motor, maar dan moet PUL+ naar pin 12 en DIR+ naar pin 13.
  16. Zet beide drivers op Cur = 0.6A en Sub = 1/16, dit doe je door de rode schakelaars in de juiste posities te zetten. Deze posities staan in een tabel boven op de drivers.
  17. Bevestig de jumper pins met de rode en zwarte draad van de laser door ze vast de knijpen met een tang.
  18. Verbind de rode draad van de laser met de 3.3V op de arduino en verbind de zwarte draad met de GND op de arduino.
  19. De arduino UNO moet verbonden worden met een laptop via een usb-B naar usb-A/C kabel.
  20. Sluit de USB-C oplader aan op het USB-C breakout board en druk 2x op het knopje zodat het lampje groen word, dit is om hem in 12V mode te zetten. Dit kan je checken door een multimeter op de plus en min te zetten.
  21. Lijm de behuizing onderdelen aan elkaar met houtlijm.
  22. Zet de behuizining over de opstelling zodat de laser uit het gat komt en alle draden netjes uit de gaten komen.

Programeren

Screenshot_20260619_120037.png

Nu hebben we een opstelling die de laser op een muur projecteert, maar er is geen beweging en dus ook geen vormen die je kunt zien. Om vormen te kunnen zien moet je eerst de arduino programmeren zodat de stappenmotoren bewegen. Je kan de arduino code uploaden via de arduino IDE (een computer programma), zorg er voor dat de arduino verbonden is met je laptop via een kabel. Aan deze code hoef je niks aan te passen.

De python code kan je openen in een code editor als VScode. In deze code zijn er een paar variabele bovenaan die je aan kan passen. A geeft de amplitude van je projectie in graden. Wij adviseren om op 1 te beginnen en dan op te werken naar 5 als alles goed gaat. Iets meer dan dat kan wel maar dan riskeer je dat de spiegels tegen elkaar botsen. t_end geeft de periode tijd aan, voor sinusoïde is dat altijd 2pi, mocht je andere soort functies gaan gebruiken is het misschien nodig om dit aan te passen. t_cycle geeft de tijd aan waarin hij de projectie 1 keer uit voort, wij adviseren om het eerst even op 0.1 te zetten en daarna door te gaan naar 0.05. Dan word het figuur dus 20 keer per seconden getekend en ziet het er uit als 1 ding in plaats van een bewegend puntje. N is het aantal keer dat het figuur getekend wordt. De totale tijd van de projectie is dus N*t_cycle. Voor N=100 en t_cycle=0.05 wordt dat 5 seconden.

Een andere belangrijke variabele is de port. Dit geeft aan waar de arduino verbonden zit met je laptop. Dit kan je zien in de arduino IDE via tools en dan port. Dit zal voor windows waarschijnlijk its als USB0 zijn en voor Linux of Mac its als '/dev/tty___'.

Om de functies aan te passen moet je kijken naar x_func en y_func. De variabele x en y kan je aanpassen met jouw functie. Om je op weg te helpen staan er wat voorbeeld functies in het bestand 'functies.txt'. Het is belangrijk dat er altijd 0.5*A voor de functie staat, dit is voor de amplitude. Ook is het van belang dat er als variabele altijd w*t staat in plaats van t, dit is om de periode constant te houden met de aangegeven snelheid.

In de code staat ook nog uitleg in de vorm van comment. De python code op de laptop checkt steeds of de motoren een stap moeten zetten om de ingevoerde functie te plotten. Als dat zo is, dan stuurt die een signaal naar de arduino die zegt of het de x of y motor moet bewegen en in welke richting. Dit gebeurd via de USB kabel, dus je arduino moet verbonden blijven met je laptop. De arduino code ontvangt dit signaal en verteld de stappenmotor drivers dat ze de motors moeten bewegen en in welke richting.

Dan is het nu tijd om alles te checken, de arduino aan te sluiten, de USB-C oplader aan te sluiten en de python code te runnen.