I have been playing with Arduinos for about a year now, and I noticed that none of my projects were really utilizing the speed capabilities of the ATmega328 chips. At 16 MHz, they can do a of a lot more than blink LEDs. To improve my appreciation of their capabilities, I wanted to build a project which required very fast and precise timings. That is what motivated me to build a persistence of vision alphanumeric laser projector.
My projector uses a single laser and has only one moving part. 6 mirrors are hot glued to a spinning platform. Each mirror is at a slightly different angle, and each is responsible for 1 of the 6 lines of vertical resolution. One full rotation sweeps the laser across the target 6 times at 6 different heights. An optical sensor detects the start of a rotation and times the laser pulses to produce readable text. Due to the crudeness of construction, the mirrors are only stable within a small range of speeds. Too fast or too slow and the spinning platform wobbles. Consequently, I am forced to use PWM to throttle the speed to exactly 833 RPM. I was able to compensate to a great degree in code for the inaccurate alignment of the mirrors. For example, the mirrors are far from perfectly aligned at 1/6th rotation from each other, and most are not perpendicular to the center axis. Another small issue is the laser’s “warm up” time. If it has not been fired within the last 3 milliseconds, there will be a small delay between power on and illumination. To partially compensate for this, I fire the laser for a brief period between mirrors. I believe the cause of this warm up time is the current control circuitry built into the laser pointer. In theory, I could try bypassing that circuitry and it may fully correct the problem. For the curious, the project was built on an empty DVD player case. I am using the player’s power supply, but everything else was removed. I may eventually move the Arduino and other circuitry into the case, and interface it with the buttons on the front to allow custom strings to be programmed without a computer.
Edit: My interest in this project has continued to increase since posting this video. I have decided to continue making improvements to its design and programming. I have already rebuilt the mirror assembly with larger square cut mirrors and replaced the tiny 5volt motor with a much larger/sturdier 12volt motor. I released a version of the code. It can be viewed and downloaded at http://members.cox.net/qbikal/LaserProjector.html
Friendly YouTube user jawedkarimisgay did some research and found a similar laser projector project. For those that are interested, the link is http://heim.ifi.uio.no/haakoh/avr/
Duration : 0:6:30