Cheap Dual Mirror Laser Projector

[Stanley] wanted to make a laser projector but all he could find online were one’s using expensive galvanometer scanners. So instead he came up with his own solution that is to be admired for its simplicity and its adaptation of what he could find.

At its heart is an Arduino Uno and an Adafruit Motor Shield v2. The green laser is turned on and off by the Arduino through a transistor. But the part that makes this really a fun machine to watch at work are the two stepper motors and two mirrors that reflect the laser in the X and Y directions. The mirrors are rectangles cut from a hard disk platter, which if you’ve ever seen one, is very reflective. The servos tilt the mirrors at high speed, fast enough to make the resulting projection on the wall appear almost a solid shape, depending on the image.

He’s even written a Windows application (in C#) for remotely controlling the projector through bluetooth. From its interface you can select from around sixteen predefined shapes, including a what looks like a cat head, a heart, a person and various geometric objects and line configurations.

There is a sort of curving of the lines wherever the image consists of two lines forming an angle, as if the steppers are having trouble with momentum, but that’s probably to be expected given that they’re steppers controlling relatively large mirrors. Or maybe it’s due to twist in the connection between motor shaft and mirror? Check out the video after the break and let us know what you think.

The video’s in three parts: looking at the laser beams in action as you’d see them on a dance floor, then watching the projected images while looking at an insert of the Windows application, and then watching the steppers and mirror doing their rapid movements.

As for the expensive galvanometer scanners we mentioned above, check out this impressive laser projector that uses them. Another method is to use a spinning wheel with mirrors set to different angles, like this one that draws a marquee using a pill box as the wheel. And how about one with no mirrors at all, instead attaching the laser directly to servo motors, though that one does take longer to draw.


36 thoughts on “Cheap Dual Mirror Laser Projector

  1. This is fantastic! I’ve been wanting to make something like this as well.

    I do have a very simple suggestion which should help with the ringing in the mirrors… don’t make them any bigger then they need to be. For instance, the surface of the bottom mirror is largely unused… only a narrow sliver of it ever sees the laser. Looks like you could easily cut it in half (or make it even smaller than that if you moved the laser back or extended the stepper shaft out). Naturally, the mirror on top would have to be a trapezoid if you optimized it. Simply, run it through its extremes and cut off the parts of the mirror that aren’t used. Good luck!

  2. Yes the mirrors are way too big. You also want the active reflective surface to be as close to the motor shaft as possible to avoid problems with flexion. This would also probably be a better project for a Parallax Propeller system, since you can generate the servo control pulses from one of the eight cogs without interrupt interference. You could probably make a self-contained unit that draws a fairly elaborate show off a SD card.

    1. I think you meant flexing :)

      But you’re right, the mirrors are almost certainly twisting along the long axis and the laser is also off centre on the bottom mirror which isn’t helping.

      If I remember the optical stuff from physics correctly (it’s been a few years), the width (current long axis) of bottom mirror should be no more than twice the beam diameter and mounted ‘right on’ the stepper shaft. Length depends on the maximum deflection required but with the laser ‘on centre’, should be no more than 3~4 times the beam diameter.

      The top mirror is where things get a bit hairy. The length (current long axis) will depend on the maximum deflection from the bottom mirror and the spacing between the mirrors. The width should be about 3~4 times the beam diameter.

      Despite that, it still pretty impressive.

  3. Very impressive build from mostly junk box parts. I like the calibration method.

    Momentum is an issue as mentioned and smaller mirrors would help but momentum is not as big an issue as the cogging and inductance of the steppers. You really wont overcome these issues unless you use low inductance steppers and very complex analog drive circuitry and all of that isn’t going to run fast enough on a Arduino Uno.

  4. Spinning mirrors instead of oscillating will remove problems with stopping and starting the mirror motion. Three sided mirrors are often used in situations like this. Time between laser pulses would be one third the time for one revolution. then your problem is just syncing the mirror.

    1. Spinning mirrors are used in ‘raster output’ units. They can’t be used in a ‘vector output’ unit like this. Although, with the appropriate mirror design and control hardware, it is possible to build a unit which does both.

    1. I’ve been looking at these, with SLA-printer-lust consuming my soul. A few problems though:

      1. $100 (by the time it’s shipped to where I live) is just a little to much to risk on the chance that I’ll get something working. $50 and I’d have ordered one last week.

      2. The interface on them is some arcane lighting industry thing. Great, no doubt, for lighting. Not so good for interfacing to a Raspberry Pi. And your chances of getting any information about modifying that interface out of the manufacturer are pretty minimal, methinks.

      3. Are they any good? Hard to say. Something that’s good enough for a light show might well not be good enough for a 3D printer. You can also buy pretty similar units on aliexpress for $600 that are intended for laser markers/engravers. Is the $500 markup just because it’s intended for a different market? Or is it because they’re actually quite a lot better at doing what you want them to do?

      For others looking for ideas on cheap galvos, it’s worth digging up the video Peachy made on how to assemble their printer. They use a bit of laser-cut plastic, some elastic string, a few small magnets and two off-the-shelf coils to assemble a 2-axis galvo that you can assemble with a pair of scissors and some superglue. However, it’s controlled open-loop, and I think that shows in the quality of their prints. For a $100 device, it produces some amazing stuff, but it’s nowhere near what a $1,000 device can do in terms of print quality.

      1. I was also thinking about the Peachy printer galvos, perhaps it could be made closed loop by partially reflecting the beam onto a 4-quadrant photodiode? if only a good samaritan would offer prizes in a contest for the cheapest decent galvos

      2. Addressing your points…

        #1 – that’s what eBay and PayPal buyer protection are for. Also while you only purchase on eBay from reputable established cellar with a good feedback rating, 98% or better. I’ve been buying and selling on eBay for almost 20 years now, and today it is probably the safest e-commerce website in the world to purchase from.

        #2 – you’re talking about the ILDA (International Laser Display Association) standard, which is used in Turn-Key laser projectors that are ready to be used in lighting installations. The raw OEM scanners just need need power and an offset (+-) signal to drive them.

        #3 – Are they good? It depends on what you define as “good” closed loop galvos like the ones linked above from Ebay are rated in how quickly they can retrace a test pattern. They are rated in PPS (points per second). Cheap galvos might trace 20,000 PPS, Where as higher end galvos will do 40,000 PPS or more.

        Laser light show applications are actually pretty demanding for galvos, because it requires the image to rapidly be retraced accurately to fool the eyes persistence of vision. The slower you scan a pattern, the more accurate the retrace will be, but the more the image will “flicker” to the eye. With that said, I doubt that galvos are going to be the ideal solution for 3D printing, because they are analog devices, and prone to noise and oscillation.

      3. This “arcane lighting industry thing” (ILDA) is a very simple analog interface in the audio frequency range, something like +/-5 or 10V, often deferentially. A very cheap possibility is to convert a USB audio card by removing the AC coupling capacitors and adding an operational amp to amplify the voltage. You can, of course use any other DAC with the Raspberry Pi. But audio drivers are not that bad, because they deliver a steady stream of samples. You do not want any “clicks” in your laser beam path.
        These galvos operate in a closed loop fashion, the mirrors are normally something like 0,5cm² and 0,5 to 0,8mm thin to reduce the weight (inertia) as much as possible. This is really the key to laser show speed.
        If you use a stepper deflection you should never let the beams get into the eyes of anybody as they are very slow moving and can deposit too much energy onto the retina.
        The second reason is: Without a closed loop system which uses position sensors you can not be sure that your beam is actually moving. The movement has to be monitored for an eye-safe laser show.

        The industrial (engraver) galvos are normally stronger but slower. This is because you want to use bigger mirrors for bigger beam diameters to use more power. And they are more precise than for laser show applications.

        1. Just an idea, for safety. Would it be a good idea to put a little bit of something that blocks the beam, right in front of the 0, 0 position of the laser? So if the laser’s not moving, and is stuck dead centre, it would be absorbed. Since if a galvo stops, it’s likely to stop at dead centre.

          I’m thinking of the projector box, and having a little something at the 0, 0 position in it’s aperture. Not sure of exact details, and getting it small enough would be a challenge, but if it’s just big enough, it shouldn’t cause an annoying gap in the projected image.

      4. The interface is just a standard analog interface which is used everywhere in the motion control industry. There are all sorts of cards out there that will provide that signal.

        The form1 and others are probably using the chinese galvos, they certainly are not using ones from general scanning or Cambridge at that price point.

        I had not seen those chinese head units for $500, those look pretty cool. I wonder how much the software to control them costs. And $500 including the flat field lens is pretty great.

  5. I don’t know about anyone else, but clicking that link takes me to the advertising page for some hosting service in… something foreign. I can order beer and say thankyou in quite a range of languages, but that one’s new to me. Google suggests Slovak. Anyway, not the page you were after.

    As others have commented, this is initially pretty exciting as a way of making a laser-guided SLA printer. The main problem is the ringing, which is going to make for some pretty weird prints. Some have suggested rotating instead of scanning mirrors, but they’ve missed the fact this is a vector device. Both mirrors need to scan back and forth. Reducing the size of the mirrors will certainly help. And for a 3D printer speed is not such a big concern – you can slow it down somewhat, which will probably help. The whole thing need to be slowed down, just use (angular) acceleration limits and some trajectory planning to smoothly approach and leave corners. You could even modulate the laser output to keep the exposure constant.

    Feasible? Not sure. But at that rate, I think the only option is to try it out…

    1. you could get better results if you use a high pass filter, since the coils of the stepper are low pass. for good results, you have to find out experimentally, the best specs of the filter. For eperimenting you can use a state variable filter.

  6. How did he manage to cut the hard disk platters???

    When I took a hard drive apart for the motors in my Vive Lighthouse alternative ( I saw the platter and had the same idea. On trying to cut the little blighters though it just shattered in to thousands of sub-mm shards which, literally, went everywhere in a 3-4m radius! I’ve ordered some polished stainless steel plate to replace it.

    1. Hi Lee.

      First I tried to use a metal cutting saw but it was a nightmare. I have succeeded with a metal cutting press, which is probably the best tool you can use for this purpose. Additionally it gives you nice and smooth edges.

      Regarding your bad experience, as svofski already mentioned, I was lucky that my platter was from aluminium and not hardened glass. Otherwise the same thing would happen to me.

  7. Times ago there was a projekt, they used smaller steppers called MOT1 from seiko epson. Since they are small, the momentum is even smaller.This runs with D/A converters at PC Printerport. I used the Software popelscan. It worked.

  8. Just open up a flatbed scanner or a fax machine. Their folded optical path uses first surface mirrors and they are in thin strips the width of a page. Easy to simply break of a piece for any tiny mirror app.

  9. I have tried using dental mirrors as first surface mirrors. A box of 20 x one inch diameter is about $10 on ebay, example here.. (, make sure they are first surface mirrors as some can be normal glass mirrors. They are supplied as replacement mirror heads for a dental handle, so it already has a mounting rod to attach motor. The surface finish is not as good as a hdd platter, but good enough since only a small area of the mirror is utilised. Slightly more mass that you might want but it would be possible to pull the mirror out of its stainless steel cover.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.