Close

Thinking about Projection Algorithm

A project log for Laser Projector

Laser projector with 3 lasers (RGB) incident on an x-cube(dichroic) with galvanomirror

shoaib-mustafaShoaib Mustafa 08/11/2024 at 20:200 Comments

I'm pausing the experimental setup to plan the next steps:

  1. Laser Scanning Mechanism: Develop a method to control the laser, activating it only at designated points of interest.
  2. Color Mixing: Explore techniques for combining laser colors to produce RGB hues.

Initial Approach: I'll begin by researching papers on similar laser scanning mechanisms. My goal is to synchronize laser activation with the galvo mirror's feedback, ensuring precise targeting. I plan to implement functions on a microcontroller (starting with C on a computer) to draw horizontal lines by specifying certain parameters. Greater control over these functions will help me understand and refine the system.

Planned Functionality:

Objective: The function will be integrated into the galvo's horizontal scanning mechanism, allowing it to draw lines while maintaining a fixed vertical angle. After completing a horizontal scan, the system will increment vertically and repeat the process. The idea is to synchronize the horizontal scanning and line drawing mechanisms, enabling the precise rendering of an image, such as a vector or bitmap, in a line-by-line fashion.

Here is how it should look like. say we are given an image which after being processed looks like a vector image or a bitmap to make it simple.

byte customChar[] = { B01110, B10001, B10001, B01110, B10001, B10001, B10001, B01110 }

Real_Setup

All I have to do is when I know that the galvo is at the top vertical position i.e, top right (0,0) and scans horizontally towards right, it should go something like this

pixelTobePopulated()? DrawPixel(): skip();

The result should be a pattern like this: FTTTF (T for true, F for false). Initially, I'll hard-code a bitmap or vector image, adjusting it to fit the system's screen size and limits.

While researching, I found a helpful video that demonstrated a similar approach. If this works, I could explore the archives of old CRT TVs or early system source codes to understand their scanning methods.

Once I determine where the dots land, I'll focus on projecting different colors or mixtures using an RGB LED approach. However, that's a later step.

To simulate the process and test code changes in real-time, I'll use the command line as my simulation monitor, controlling the cursor like the galvo's position to replicate dot placement. This approach is reminiscent of early programming exercises, like drawing shapes on the screen.

After completing these steps, I can address issues like refresh rates, FPS, and the time delay for dots to remain in position before moving.

Lastly, I want this project to be portable so I can experiment outside the lab. This means creating a portable optical table, similar to the one in my lab, by using CNC to drill holes and threads to secure the components. Achieving proper beam alignment is challenging, and moving the project to another optical table could complicate things.

Discussions