This is the cheapest and easiest way to make a two-dimensional laser show projector.
It uses just one pivoting mirror, powered by the focusing mechanism from a CD or other optical drive.
They said it couldn't be done, but Ljudmila's skunkworks GRL research facility delivers anyway! ;) This design was first discovered in 2006 and sucessfuly made by several beginners at the Laser Tags workshop in 2007.
I hope this Instructable, my first, will help to spread it around and let all of you make, test and improve it!
Here shown using an Arduino for control, but you could hook some other signal into it easily, from a music player, a soundcard or some other electronic circuit.
Remove these ads by
Signing UpStep 1: Gather materials and tools
Materials:
- a broken CD-ROM, DVD or other optical drive (you only need the lens focusing mechanism, so you get lots of other cool parts left over)
- a LASER pointer of your choice (those small chinese ones will do fine too)
- the smallest and thinnest mirror you can find. we used small round mirrors meant for making mosaics. (bill buxton recommended trying mylar.) you can also use the very small mirror found inside the optical assembly of a CD drive (under the lens, sitting on an angle)
- a short piece of stiff wire (cut off leg of LEDs work for this)
- some soft wire for signals
- a stable housing - some kind of plastic box. bonus if it's transparent
- signal source - I recommend an Arduino as it's easy to use and program
- cross head screwdrivers, small and very small
- soldering iron for electronics
- wire cutters
- glue gun (or other glue)
- sharp pin for making a hole
- pliers can come in handy











































Visit Our Store »
Go Pro Today »




I'm having problems identifying which cables control which axis - any tips on how to find this out? I'm debugging with setPos(x, 0) and setPos(0, y), and can manage to get a good clean vertical movement but the horizontal movement always has a small vertical movement as well.
Also, I wonder about the code line digitalWrite(8, HIGH); - doesn't one of the corresponding coils need to be ground/zero/LOW for this to work?
/* LASER TAGS - CD LENS MICRO LASERSHOW
(Copyleft) 2006 by linefeed @ Ljudmila.org GRL */
int t=0;
int inc=4;
int pause=1000;
int x,y,x0,y0,x1,y1;
int pt,phase,loopcnt;
int nshapes=6;
int shape=0;
int shapes[20]={0,4,7,9,11,20, 24};
int ptsx[50]={-250,250,250,-250, -250,250,0, -250,250, -250,250, -230, -230 ,-15, -11, 220, -17, -17, -15, 150, -250,250,-250,250 };
int ptsy[50]={-250,-250,250,250, -250,-250,250, -250,250, 250,-250, -220, 200, 200, -200, -200, -210, -210, -35, -40, -250,-250,250,250 };
//pins
// 8,9 - vertical
// 10,11-horizontal
void setup(void) {
// initialize inputs/outputs
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
digitalWrite(8,LOW);
digitalWrite(10,LOW);
}
void setPos(int x, int y) {
if (x>=0) {
digitalWrite(10,LOW);
analogWrite(11,x);
} else {
digitalWrite(11,LOW);
analogWrite(10,-x);
}
if (y>=0) {
digitalWrite(8,LOW);
analogWrite(9,y);
} else {
digitalWrite(8,HIGH);
analogWrite(9,255+y);
}
}
void loop(void) {
//next shape
if (loopcnt>100) {
shape=(shape+1)%nshapes;
loopcnt=0;
}
//tick phase
phase+=inc;
//next point
if (phase>=100) {
phase=0;
pt=pt++;
//loop points in shape
if (pt>shapes[shape+1]) {
pt=shapes[shape];
t=pt*100;
loopcnt++;
}
x0=x1;
y0=y1;
x1=ptsx[pt];
y1=ptsy[pt];
}
//current coordinate
x=((x0*(100-phase))+(x1*phase))/100;
y=((y0*(100-phase))+(y1*phase))/100;
setPos(x,y);
delayMicroseconds(pause);
}
I've extracted the coil assembly and wired it up and can see it moves side to side and up and down under the influence of the coils. It's also centre biassed, so to get full range of movement you need to pass current through the coils both ways.
I can see you've used the pivoted rod at right angles to translate this into X and Y motion, but the mass of this will limit the speed. Have you tried other ways of doing this? (My initial idea is a mirror attached at a corner using flexible silicone rubber close to the assembly, then a small rod straight up in the plane of the lens, which will rock the mirror (X axis) or tilt it (Y axis) as the lens moves.) This would be more compact then the rod design, but a lot more fiddly to make. I'll report back (and probably post an Instructable) if I make progress with it.
I was just wondering .. Isn't the lasers bad if its hit your eye ?
Any safety suggestions. (I've seen a video where a DVD burner laser burn though a balloon. I'd probably stay with the CD )
i used one recently with nice results on dark facades of metelkova and on the wall behind a dj at our local spring welcome festivities. it was packed with 8 nimh aa batteries and powering the laser pointer with the arduino's 5V. it lasted all night.
from an 8x Burner u can get 90mW from a 16x Burner u can get more than 200mW if properly cooled. Here]http://dreiling-kamen.net/hubidrei/html/dvd_laserdiode.html
is how I made it.
I found a german Site, where the same is done much easier without microcontroller and the mirror also comes from the Drive.
Sorry for my bad english
Your english is better than some of the people on this site who's first language is english.
No need to apologise, and thanks for the link.
I agree that using a DVD laser diode turned into a pointer for this would be the coolest. But that's a more difficult project in its own, and also well documented on Instructables already.
you could try using audacity to make some 2 channel custom waveform sound... it's easy to use! read manual
and for real-time control something like pure data? it's great fun playing with it, just don't be intimidated by its looks. read manual
i see you needed an amplifier, how did you hook that up?
try http://ca.babelfish.yahoo.com/ it worked well on the German project page.