November 5, 2024
Description
Introducing the Lissajous Laser Pattern Projector – a versatile and fully programmable apparatus designed for classroom & hobbyist demonstrations and experimentation. Powered by Arduino and equipped with a 650nm red laser and rotating mirrors, this device allows users to create and explore intricate Lissajous patterns by adjusting parameters such as rotation frequency, phase, and amplitude. Whether you're an educator seeking to illustrate complex mathematical concepts, or a hobbyist passionate about experimenting with dynamic light displays, this tool offers a hands-on way to visualize and understand harmonic motion through stunning laser-generated curves.
The curves emerge when two oscillations combine at varying angles for differing frequencies and phases. They can create mesmerizing and intricate designs that look like loops, swirls, and various geometric shapes with mathematical precision.
The following videos where created with the design presented in this Printable:
Here is a link to another video:
Lissajous figures are named after the French mathematician Jules Antoine Lissajous, who studied these patterns in the 19th century. He used a device called a Lissajous Apparatus to create these figures by reflecting light off vibrating mirrors. His work provided insights into waveforms and harmonic motion, which led to these captivating patterns being named in his honor.
Mirrors in a Lissajous Figure Generator don't necessarily need to vibrate—they can just rotate. The key is in how you control the rotation.
Rotating Mirrors: If you rotate the mirrors at different speeds, you can produce Lissajous figures. The angles of rotation effectively change the phase relationship between the two oscillating axes, creating the desired patterns.
Vibrating Mirrors: Typically used in traditional setups, where the vibration at specific frequencies creates oscillations, but rotating mirrors achieve similar outcomes by manipulating phase and frequency dynamically.
Rotation can actually simplify the setup and provide more stable control over the figures, so you have the flexibility to use either method, depending on your design goals.
The patterns can be described mathematically as parametric equations. Here's the fundamental form when plotted against a two dimensional plane:
x(t)=Bsin(ωbt+δ)
y(t)=Asin(ωa(t))
where:
The relationship and ratios between these variables determine the complexity and shape of the Lissajous figure. For example, if a=1 and b=2, you'll get a figure-eight pattern. Change the ratios and you get different patterns as highlighted in the figure below:
Figure 1: Lissagous Figures as a Function of X and Y
If the rotating mirrors have a bit of a wobble, it would affect the produced patterns. The Lissajous figures would become distorted, creating more complex and skewed shapes. The basic equations, however, would remain the same. It's the practical application that would vary—imagine it like trying to draw a perfect circle with a slightly wobbly hand. The theoretical form stays the same, but the result is altered.
If your mirrors aren't perfectly aligned at 90 degrees, the slight misalignment will cause deviations in the figures, but the fundamental nature of the equations remains. The oscillations will still follow sinusoidal patterns, just not producing perfect Lissajous figures. Instead, you'll see fascinating, if somewhat irregular, modifications to the classic shapes.
The deviations would also result in a dynamic distortion of the Lissajous patterns. Instead of smooth, consistent shapes, you'd get variations and aberrations in the figures. In this circumstance, the equations again don't change, but the practical implementation of those equations—i.e., the actual light patterns—would be affected. The result would be more erratic and less predictable, adding an extra layer of complexity to the patterns.
Therefore in retrospect, the angles and precise alignment in the setup play a big role in how clean and accurate the patterns are to the ideal shape.
The construction of this sundial is relatively simple, making use of M3 & M4 hardware. A list of assembly material is provided below, along with where it's used. Also check the description associated with each file for more assembly details. All parts can be easily disassembled and reassembled to facilitate transportation.
All HW is Stainless Steel Button Head Hex Socket Head Cap Screws and Nuts, unless specified otherwise.
| Qty | Description | Where Used / Supplier |
|---|---|---|
| 1 | Arduino Nano (Every) | It doesn't need to be an Every. Any Nano will do. Amazon-Arduino |
| 1 | L298 Motor Driver Module | (see alternatives below). Amazon-L298Driver |
| or alternative Driver | (preferred). Amazon-Driver | |
| or Nano Motor Driver Shield | Amazon-NanoMotorShield | |
| 2 | 1-6V DC Hobby Motor, Type 130 | These are not ideal but they will do. Looking for a better alternative. Amazon-Motor |
| 2 | 3V DC Hobby Motor, Type 130 | This might be a better choice for motors but they haven't been tested. Amazon-Motor_v2 |
| 2 | 10K ohm Wheel Potentiometer | Any 10K pot will do. Amazon-10Kpot |
| 1 | Nano I/O Breakout Board | Optional but useful. Amazon-ExpBoard |
| 3 | SPDT Slide Switch | Any SPDT switch will do. Amazon-Switch |
| Breadboard Jumpers | Amazon-Jumpers | |
| 1 | Breadboard | Optional if you don't want to solder jumpers to your components. Amazon-Breadboard |
| 2 | 25mm dia. Mirror | Amazon-Mirror |
| 4 | M3x8 screw | For mounting motor to lower holder & worm gear. |
Auto Mode: When the auto/manual mode switch is LOW, the Arduino randomly varies the speed and direction of each motor. The code generates random speeds (0-255) and directions (0 or 1) for each motor, changing every 5 seconds. It also ramps the motor speeds up from 0 to 255 and back down to 0 over a period of 5 seconds also. During ramping, the direction of each motor is randomly chosen each time.
Manual Mode: When the auto/manual mode switch is HIGH, the speed and direction are controlled by the external potentiometers and direction control switch.
Command Line Mode: You can use the Arduino serial port to enter commands to directly control the motors at a precise speed & direction vs. using the potentiometers and switches. Up can also independently control the ramping up & down of the speeds.
The command line format is as follows: M,X,Y,Z where;
Example 1:
1,122,0,1
This would command motor 1 to go to speed 122, in a clockwise direction and to ramp up from 0 to that speed & then back down to 0.
Example 2:
2,255,1,0
This would command motor 2 to go maximum speed (255) in a counter-clockwise direction with no ramping.
The maximums speed of the motors have been scaled back in order to provide a decent pattern. Also, depending on the motors you selected, the current drawn from each motor might exceed the your power supply's capacity if allowed to go to full speed. The program therefore limits the max speed to ¼ of the motors specification.
Note: This sketch is still a work in progress. The Auto Mode needs a bit of work, as well as the Command Line Mode. Otherwise, it is fully functional.
In Manual Mode:
In Auto Mode:
Command Line Mode:
This project incorporates a Class 3R (IIIa) laser with a power output of 5mW. This laser is designed for safe use under controlled conditions.
Safety Precautions:
By using this product, you acknowledge and accept all associated risks and responsibilities.
License:
Creative Commons — Attribution — Noncommercial — Share Alike