Instructables
Picture of Arduino Laser Show with Full XY Control
Update! See Step 32 to find out how to use this project with a green laser!

Also - checkout the LaserTweet Instructable to make this project display data from Twitter:
http://www.instructables.com/id/LaserTweet-Twitter-Projecting-Laser-Show/

This project uses an Arduino and some cheap audio speakers to create a real laser show with full X and Y axis control.

The included source code lets you easily draw text and even simple pictures!

View the demo video to get an idea of what this project can do.


You should be able to get most components locally (besides the Arduino).

Assuming you already have an Arduino - expect to spend roughly $35 on this project.

If you can upload a program to an Arduino and solder - you can probably build this project in an afternoon.

Users who have built this project:
mattbeowulf - http://www.youtube.com/watch?v=AnIoWZpEWk8
minhenes (using "real" galvos) - http://www.youtube.com/watch?v=BmYg3O4hlMg
hydronics - http://www.youtube.com/watch?v=5Q3nJLA2t18
                   http://www.instructables.com/id/Guerilla-Laser/
benhgd - http://www.youtube.com/watch?v=K23-ThlCZEc
(Post a comment with your link - and I'll add yours to this list)
 
Remove these adsRemove these ads by Signing Up

Step 1: A Bit About Laser Shows

Picture of A Bit About Laser Shows
Most laser shows use galvonometers (the little boxes in the picture) or "galvos"  to aim their mirrors.

Galvonometers are electromechanical devices that rotate to different angles based on how much voltage they are provided.

A minimum of two galvos are used - one for "X" (horizontal) control and one for "Y" (vertical control).

The laser show's controlling electronics quickly adjusts galvo voltages, and turns the laser on and off - moving it around so quickly that it appears to create a persistent image.

Commercially available galvos can move to up to 50,000 different points each second.

Galvos tend to be expensive - so we'll be making our own out of audio speakers!

1-40 of 178Next »
hydronics2 years ago
Hey, I basically copied your instructable but put it in a portable container to make a strategic gerilla propaganda 'box'

http://www.instructables.com/id/Guerilla-Laser/

Going forward I would recommend using a stronger laser... This would allow you to hit a building or billboard at a mysterious distance... I tried to buy a stronger, $14 green laser from China but the china laser circuit did not allow cycling ON/OFF at quick rate like the cheap laser is used...(this is called blanking in the laser light show industry) You could rewrite the code to be more cursive in nature and less ON/OFF dependent... It would be fun to play with the programming in such a way and easy for a beginner... its all cartesian coordinates... that means easy!

thanks again for all the hours of dinking around....



nothinglabs (author)  hydronics2 years ago
that's awesome!!!

had similar problems trying to use a green laser too.

suspect it's possible to get it a green laser working with some tweaking - the driver circuits are a bit more involved than is intuitive... (think they tend to involve temperature feedback and such).

I want to make a laser show, too. I'm mostly interested in beam shows, not graphics shows. My considerations:
I was planning to use very small speakers, such as some 50mm 3W speakers available for as low as $3. Even though their excursion is tiny, my idea is to glue a lever to the speaker and then glue it VERY close to the mirror rotation axis, so the mirror would tilt a lot. This would also allow to have really small mirrors (reduced inertia of moving parts = great) and have the added benefit of allowing better operation on higher frequencies (small speakers respond better to higher frequencies), and I guess its performance wouldn't be bad on low frequencies since SPL is irrelevant, we only need excursion to tilt the mirror.
Also, I don't want to use an Arduino, I want to use full-fledged computer software to control the output. Eventually, I would record the audio output from the PC and play directly from a tiny mp3 player. It all would make for a very portable solution, maybe even pocketable.
Any tips on great laser animation software which works nicely with an audio DAC (I mean, with the computer's sound output)? Preferably free software with lots of beamshows available! :P

Hi elias, I am currently experimenting with using audio.. have you had any luck? I believe the setup described in the tutorial enables the system to reproduce around 60k points per second (?). Using uncompressed audio at a rate of 44100 hz I think you could sample 44100 points per second (not sure if that is correct tho...).

nothinglabs (author)  elias.alberto1 year ago
Don't have any specific advise on controlling from PC.

Sounds like a great project / please post details here as you make progress.
jlocke8 made it!3 months ago

I used your instructable and made this in 2011. I used it to project a laser show against a building to propose to my wife! Thank you so much for your project and instructions!

Like hydronics, I put it into a self contained box, and added a battery and inverter so I can truck it around. I modified the code to draw some other images and say my personal message.

Thank you nothinglabs!

2106683_orig.jpg9897632_orig.jpg
nothinglabs (author)  jlocke82 months ago
that's awesome!
pulse_wid3 months ago

I have some small galvos that I wanted to run with this code. I ran the galvos from pin 5 and 6. The x-axis mirror was bottoming out within it's range so I put in a 5.6Ω resistor to reduce the current. The diodes I put in because I thought they would protect the arduino?

The x-axis works fine but I cannot get the y-axis to move the mirror much, it barely moves and not very often. The peak volts the x-axis put out was 1.2 volts, y-axis was only .24 volts, this was over a period of over a minute. I reset the Arduino many times and got the same results. I tried reassigning the pins and switching out the galvos but the y-axis seems to prefer putting out very little power, and will not move the laser. I'm stuck with a laser show on a single axis : (

The laser seems to pulse just fine.

Any thoughts anyone?

Thanks!

laser_galvo.jpg
nothinglabs (author)  pulse_wid3 months ago

I'd try swapping the X and Y axis pins in code to see what happens.

The way the show typically renders - the Y axis tends to move a lot faster than the X axis. If your using a multimeter to measure - it may not be fast enough to see the signal.

Also - no idea if the arduino can source enough current to effectively drive the galvos (wouldn't shock me if the Y axis got toasted) Might try slowing things way down to see what happens...

ketansodhi3 months ago

Would it be possible to power it with a 19.7V, 4.7A sony laptop charger?

nothinglabs (author)  ketansodhi3 months ago

I think that should work. I'd keep an eye on how hot the TIP120's get. You can dial back the power levels in the code a bit if needed. might try to get 8ohm speakers as opposed to 4ohm.

good luck!

spewlocks4 months ago

amazing

cheshirecorn4 months ago

Wonderful

mr79197 months ago

what are x_level and y_level in the code

nothinglabs (author)  mr79197 months ago
x_level and y_level contain the current X / Y position of the laser.

hope this helps!

-Rich

TCCR2B = TCCR2B & 0b11111000 | mode; This line is giving me the error in the code and i also want to ask whether the exp_move is used to change the orientation of the speakers???

regaltaxlaw8 months ago
hi , very nice project, i have one question , can you use , and how, instead of speakers, Hard Disk motors :) for X,Y control
sharkyenergy9 months ago
hello! could you please put a description online of what the program does and how it works? i dotn work with arduino so i would like to write it on my own for pic MC, but figuring out th elogic might be lots of unnecessary extrawork.. thanks!
nothinglabs (author)  sharkyenergy9 months ago
I'd suggest fully reviewing / digesting the source code / comments. there's a lot of documentation already there and in the instructable

if you have specific questions - let me know and i"ll try to answer.

good luck!

-Rich
koruptx210 months ago
hi , very nice project, i have one question , can you use , and how, instead of speakers, Hard Disk motors :) for X,Y control
nothinglabs (author)  koruptx210 months ago
I played around with HD motors - never had any luck. I think they need some kind of feedback electronics to position accurately.

You should try it - let me know if you make any discoveries...

Have fun,

-Rich
Thats magnificent...
DanNixon1 year ago
Just noticed a little error in the setPwmFrequency method, you have "case 1024: mode = 0x7; break;" where is should be "case 1024: mode = 0x07; break;".
nothinglabs (author)  DanNixon1 year ago
yup - that's an error!

if you google it - you can see it's propagated via some commonly copy / pasted code.

good news is that particular line isn't ever called - so has no effect on the project (so I'm gonna leave it be).

-Rich
SteveNosko1 year ago
OOPS. That is TC = L/R... Time Constant = L/R.
SteveNosko1 year ago
Signed up just to comment. First, I think you have done a stellar job with this. Many guys think of speakers, try something and give up for poor performance. I got interested because of high frequency Piezo tweeters... but moved to less expensive, slower galvos (no longer available)
Many good comments and speculations. I don't know if you or others are still playing with this, but FWIW. Actually, you don't want to damp the back EMF of the speaker. Seems counter intuitive, but I explain. I use real galvos in my laser graphics and the way is to use a current drive (high impedance) instead of voltage drive (very low output impedance, like Sound amps). If you recall, the series LR circuit time constant is L divided by R = L/R. This says that a small R makes the time constant large. The current is slower to build, magnetic field slower to build and cone slower to move. Your transistors are current sources, but as said by another poster, a source/sink drive is better - in essence a "Power OpAmp". Unfortunately, driving 8 ohm speakers requires lots of current. A current drive (Google OpAmp current source) is accomplished by pitting a small resistor in series, to ground, with the coil and feeding the voltage at the top of it back into the OpAmp - yielding a voltage to current converter.
Then you sample the back EMF and use it as feedback, through a pot, so U can adjust it to get the best response. This, however, means that your power supplies (yes you'd need a + and a - supply) have to be high enough voltage to allow this back EMF to go as high as it wants to, so-to speak. The high supply voltage isn't needed to get the high current to flow, just to allow the back EMF to have the room it needs to simply exist. This is called compliance in current source Jargon. The analogy is when a voltage power supply can supply higher current spikes due to requirements of the load. For driving inductance like this (like TV Tube deflection), it turns out that the power supply voltages you choose now becomes one of the limiting factor on the speed you can get out of the 'galvos". Speed being the holy grail of laser graphics. If the back EMF is allowed to hit the power supply rails (thus clipping it), this is equivalent to 'damping' and the response actually starts to slow down and distort the image.

I also would have (I do this for another application) cut away a considerable portion of the speaker cone to allow as fast a movement as possible and reduce damping due to air movement. Don't know if this helps anyone, but FWIW. I am starting the process of putting info on my laser graphics on my web site and will be uploading a schematic for such a drive.

In addition, you should low pass filter (RC low pass) the PWM out before the audio amp.
Yes, an amp down to DC is required (which, internally, many audio amps are already), so it would be possible to turn an audio amp into a DC power OpAmp current source to do this.
Too many plates spinning to go into detail here. Motivated folks can try contacting me on my web site for more...
Cheers, Steve
DBender1 year ago
hello friend, sorry my bad english, I'm from Brazil, I have a problem in my setup, the speakers are Galvos with 12v and some are moving sluggish, what could be? thank you
nothinglabs (author)  DBender1 year ago
are you using he code as provided?

If so - thing should be moving pretty quick. I would try reverting to the code as provided if you've changed anything.

Besides that- easiest way to increase speed is to change "float exp_move =" to a smaller number.

Look at step 29 for more tweaks.
Hi guys from Nothing labs.
This is a really great project... im exited to get it going.

I am new with all this laser stuff and getting more involved every day.

I just did a spirograph and works nice but now i want to have some kind of scanner controled with an arduino.

Your project seems very easy to do and looks realy nice, but my question is if this setup would work with hard disk drives as galvos instead of speakers?

I would really apreciate your response.
Best regards,

Alejandro C. from Colombia
nothinglabs (author)  alejocorrear1 year ago
Hard drive galvos depend on having a feedback mechanism - that this project doesn't really have a method to deal with. Might be possible to make work - but would take a bunch of re-working...

Have fun!

-Rich

JensonBut1 year ago
Probably a lot easier thatn all the other ones....
Couldn't I just use a set of PC speakers, with their amplifiers? Isn't that what you have built here? I have made one before the days of Arduino magic... worked then. Gotta try this :)
Commercial amplifiers have DC blocking inputs, which is bad for this purpose.
someone should do the same instructables but use a laptop instead of arduino
What kind of laser did you use. Or how did you make it so visible?
nothinglabs (author)  hthnc-student1 year ago
standard red laser pointer.

if you want brighter - look at the notes for using the green laser pointer.
Mine works!! What a hoot! I will tweak and try to get the quality to match your vid. It works great as it is, just not quite as clear. Thanks for the instructions, a fun project.
BTW, I have not found the revisions about using diodes instead of the resistors across the speakers, have you posted this? I am interested to see if it uses less power and heats up less. I am using 10 Ohm resistors, the machine works, maybe I shouldn't mess with success? ;) How do you guys figure all this stuff out?
nothinglabs (author)  stringstretcher1 year ago
congrats on getting stuff working!

see step 17 for info on the diodes (I just added a few other references to it in the project). It will improve performance a little - in that it uses maybe 25% less power - reducing the load on the transistors (which can help drawing accuracy).

figured this out through a little theory - and lots of trial / error...

-Rich

Will do.. Thanks!
Jim
1-40 of 178Next »