Introduction: Alphanumeric Laser Projector With Arduino
The idea was to make a small, cheap and highly portable (battery operated) alpha numeric high power laser projector. This would be a device you can use to project a message on distant targets. It didn't turn out to be worth the effort and cost involving lasers in doing kickstarter project, including obtaining laser product certification was too much... but it was fun as DIY. Most of the hardware was brought to life using basic test and measurement equipment that I had at home except for the oscilloscope that I had to borrow. For most cases, some hand tools, low speed oscilloscope, power supply and DMMs is all you need to make it happen.. and a soldering iron. Projector displays a scrolling message at some distant target. Depending on the chosen laser power, and/or projected image size, the message can even be written on the low hanging clouds at night.. well theoretically at least. Why alpha numeric?Laser projectors that are popular in clubs or laser shows use galvos (galvonometer as actuator rather than measuring) or fast two mirrors scanning devices. Mirror X galvo and mirror Y galvo corresponding to X and Y scans. This allows the scanner to draw any 2D image on the screen. Problem with galvos they are very labor intensive to build and require complex control. Off the shelf galvos are typically large and very expensive for simple portable projector. Also, fast galvos are power hungry devices which become prohibitive when operating from the handheld battery. I thought of it as an overkill if you are only projecting alpha numeric symbols on the screen - a simple tweet or text message. If that's all you need to display, a simpler approach can be used. Rotating fixed mirrors aligned each at slightly different angle relative to projected surface can create horizontal image on the screen that is enough to display numbers or letters. You don't need as much power to run the motor as you need to run two galvos and cost a lot less.
Obvious drawback with scanning mirrors approach is the low vertical resolution since it is defined by number of discrete mirrors. But again, for alpha numeric projections high resolution is not critical. The other not so obvious is the total reflected power of a beam. Intensity of the drawn image produced by spinning mirrors will be the same regardless if the image is a single dot or a solid rectangle. The mirrors are rotating at a constant speed and laser is pulsed at the right moment. Unlike galvos, laser beam has to "wait" until rotating mirrors get to the right angle to get to the right spot to flash again. This wait period acts as a sort of duty cycle of the laser which in turn limits the intensity of the reflected image. In contrast, galvos force the beam to trace and retrace only lighted portion of the image without wasting time scanning through areas of the projection not relevant to the image. If the image is small (e.g. single dot) all the laser power is concentrated on that dot. As the image increases in size the intensity decreases proportionally (assuming laser power does not change). With scanning mirrors the intensity of the dot will still be a fraction of the total beam power as defined by the duty cycle (duration of laser switched ON to draw a dot divided by the time it take to make a single revolution). So the perceived brightness of a single or array of dots will be the same to the viewer. To be more technically correct, laser projection is not raster type image, there's no "pixels" or dots but rather they are tiny light vectors since the controlling mirror constantly moves the beam so theoretically you can't really have a perfect dot (a pixel). But I'll call them pixels from now on anyway they are more familiar.
Step 1: Mechanical Design
Spinning mirror drum spins at least at 25 rps or 1500 rpm (25 frames per second). Lower than that will produce visible flickering. This is typical motor type you find in CD, hard disk drives, floppy drives (if you still have them). Ideally it should be low voltage motor. Brushless motors last a a lot longer, run quieter but not as straight forward to control as brushed DC type. It doesn't need a lot of torque (like RC type). The one I had came from old floppy disk drive, however brushless motors from CD/DVD drives are much better choice.
Spinning Mirrors Drum home-made Design
Scanning laser beam is produced by 12 spinning mirrors. The design of this piece is largely exercise in geometry and patience.
I was not planning to use focusing optics in order to keep this simple, it was supposed to be small portable device. Without focusing optics, few constraints need to be defined before building it. They are the size of the projected image, distance where it'll be projected and intensity of the image (that has to do with image size and laser power). If the goal is to project a short message at a very long distance then laser scan angle must be very narrow, image size small (possibly one or two words long) in order to concentrate maximum power on the target, since intensity is proportional to the projected area. For this case, I chose image length to be about 12ft at a distance of across the room.Each mirror on the drum is offset just enough to produce horizontal scan line just below the previous one during the spin. The end result is set of horizontal lines on the screen that define the height of the image (or height of the alphanumeric symbol). The easiest way I thought of doing this is by aligning the mirrors along the perimeter of the base of the drum and having some way to adjust the alignment angle. The screw with the nut glued to the drum is one idea, but instead of a threaded screw, locking position by friction would work just as fine.
Ideal mirrors to use are the front surface type (reflecting coating are on the top surface of the glass rather than behind the glass like most mirrors). This allows minimal distortion and power loss in the reflected beam. Semiconductor lasers are limited in power so every effort in reducing the beam power loss counts.Front surface mirrors sold in hobby shops or ebay. They are typically used for DIY kaleidoscopes. Thin mirrors can be cut using regular glass cutter.
Plastic base to hold the mirrors was something I picked up at home depot. This a paint cap for large containers. The diameter was just right ~ 2 in and was also perfect to fit over the floppy disk drive motor's rotor. The lip at the bottom is used to position the mirrors. However, it's only later that I realized that I should have paid more attention to this step when I determined how difficult it can get to balance the drum even at low speeds (more on this later). Ideally, this should be precise piece of machined plastic but for DIY this will do. This is place to put your 3D printer to work if you got one!
Each of the mirror in the assembly will need to be positioned at a specific offset angle relative to the previous mirror to create projected line just below the previous one. Silicone sealant works great to secure only the base and few points on the sides of the mirror. Silicone when cured is rigid enough to keep the mirrors in place but flexible enough to do the fine adjustment for the angle. Using alignment screws, web camera and TV I adjusted each mirror alignment angle to produce 12 vertical points at 0.5" spacing at ~10ft distance. The final step was using 2 hour cure epoxy to attach mirrors to the drum and secure the alignment crews. I had to adjust and secure two mirrors at a time to make this task manageable. It turned out good. The gaps between the mirrors were due to my not so precise cuts on all mirrors. I didn't bother to redo this, since they served as channels to pour the glue and secure the mirrors.
Step 2: Testing the Projection and Mirrors Alignment and Balancing
After installing the drum and spinning the motor. I secured green laser to shine into the mirrors to check for the alignment of the horizontal lines with drum spinning. I noticed the distance between scanned lines drifts sporadically as RPM is varied, something was introducing alignment error for mirrors at RPMs above ~10 rev/sec.
At first I suspected that the epoxy was not rigid enough and stretches causing deformation and distortion of parallel lines. But that idea was too far fetched... What introduces this distortion are the vibrations/resonances of the unbalanced paint-cap, home made, epoxy glued drum. The drum needed some fine balance tuning.
Balancing the drum
It's hard to balance the drum full of epoxy in all directions but I found in my case most of the vibration were side to side... or seemed so. The easiest way to adjust for it is to add a metallic washer to the top of the drum and use strong neodymium magnets as weights. This worked perfectly.
Step 3: Laser Selection and Heat Dissipation
Laser Selection and Heat Dissipation
Laser Power vs Intensity
Everyone knows, the more power the better. If your laser can burn a whole through concrete just respect the eyes (if not yours) then those of others. The mirrors will scan laser beam in many directions that can easily find its way to the nearest eye. Technically speaking, the continuous power of the laser will never be focused in a single spot in this device since laser will be pulsed all the time. So the average power incident on the projected surface will be less than rated power of the laser. Depending on that pulse rate, the power can be estimated by:
Peak power*duty cycle = average power
Duty cycle determined by the size of the image. The larger the image the longer laser has to wait to re-ignite the same pixel. So intensity (power/image area) of the image is directly proportional to that. I had to de-focus the laser beam just a little in order give our beam some radius, this will reduce the intensity a little as well.
Laser light frequency selection
Ideal laser wavelength to use for laser shows is around 532 nm. This is a green beam. The human eye has variable sensitivity to color spectrum of the light with green being most sensitive.
Unfortunately semiconductor lasers with this wavelength are not produced as of today. The green beam laser diode on the market use IR pump diodes and some frequency conversion crystals to generate green laser beam. I couldn't find small, reliable and affordable green lasers at the higher than 50-100mW power except for some questionable sellers on ebay located overseas. Most of their green laser diodes are home made assembly using hot glue and pair of pliers. The laser diode I chose was Nichia NDB7875. This is 435-455nm (blue) laser. Here's the datasheet: PDF file Although theoretically you'd need more laser power in that wavelength to perceive the same brightness as green - it's compromise.
This diode is capable of 1.6W of stable optical output power. I've heard people run it at its absolute maximum rating per datasheet to 2W or even 2.1W. The risk of damaging the laser running at its absolute max rating with no margin is high. Ambient temperature variation, current spikes, inadequate heat sinking can all shorten the life of the diode or even destroy it. But if you can afford to replace it.. often.. why not... Since this is just a DIY I wanted to push it to the edge, running it at about 1.8-2W. At this output power, diode will dissipate close to 5-6W of heat. However this is continuous power. In reality laser will be pulsed and will dissipate only some fraction of that based on the duty cycle. Specified operating temperature for this diode is only 0-50C for reliable output. Although I didn't have any temperature monitoring or control like most lasers do I wanted to keep the laser under 50C at room temp without oversize heatsink. The 9mm case of this diode which is slightly larger than standard 5.6mm will transfer heat a little better. Worst case, if the space is limited to accommodate the right size heatsink, one idea to keep the laser temperature under 50C is to have software dynamically vary the duration of the pause (dark screen) between scrolled messages or even sentences. A sort of duty cycle control. For this you'd need some temperature feedback.
As the diode heats up, its forward voltage drop will be reduced and dissipated power will be less. But when dealing with such tight temperature range this effect probably is not going to help much. So without temperature feedback, the goal of the heatsink is to be large enough dissipate continuous 6W and keep the laser diode die temperature under 50C but allow the laser self heat to keep it above it's minimum operating temperature. Ambient operating temperature must be established first.
For DIY prototype, getting something working first comes before reliability. So temp stabilization and control was left on the laundry list. Also I didn't go as far as machining new heatsink, instead went with heatsinks that are sold at ebay for 9mm lasers.
Beam divergence Collimating lens quality is important. There can be all kind of aberrations that will not look pretty with cheap lens and worst of all there's beam optical power loss. Also lens must be able to withstand the laser power without melting (if the laser power is high). I picked Single Element 405-G-2 lens that can be found on ebay. Although I wasn't too happy with it, there are claims that it is the most efficient in transferring laser power compared to others. There are a lot of discussions on that on laser forums on type of lens to use: http://laserpointerforums.com/f49/405-g2-lens-que... Ebay has great source of other accessories for lasers like mounting brackets and heatsinks for both 4.5mm and 9 mm laser diodes.
Three circuits needed to be designed outside of Arduino controller: motor driver, motor speed/position detection and laser modulation driver. There's also a boost converter and a couple of linear regulators to stabilize the voltage for the laser diode and motor and allow it to operate from 3.3V Lithium battery.