Total Pageviews

Laser Show using microcontroller

Laser show for poor man
  • 2282454805_7d9c0d0842.jpg
  • 2283233610_5e2b07c4dd.jpg
  • 2283271604_7390fed3cf.jpg
  • 2282439469_2749052066.jpg
  • 2283243264_6515d62e83.jpg
Here's another useless but cool looking "must build" gadget for every romantic geek.
Let me introduce PIC microcontroller based three axis laser spirograph.



Step 1Gathering stuff

Gathering stuff
Design is quite simple and employs regular parts and components but you are free to change/modify it in way you like.

Originally I'm very lazy man so I've chosen programmed microcontroller PIC18F1220 (can be replaced with PIC18F1320) to handle routine job.

PIC implements 3 channels PWM generator.

PWM signal toggles MOSFET transistor 2N7000 (Id 200mA). Mirror actuator is connected as load to MOSFET.
As mirror actuator I used 5V 200mA CPU cooling fan. It's easy to mount mirror on its flat side.
Device accepts 5V and 12V fan with maximum current 200mA . Voltage is selected by jumper.

Green laser pointer is rated at 3V so I've made LM317-based voltage regulator with adjustable output.

Cheap 5mW green laser module:

What else will you need?
Dozen of resistors and capacitors, potentiometers, toggle switch, power jack, prototyping board, box of proper size and power supply unit.

Step 2Brain

Electronic schematic is simple and can be assembled on a prototyping board but real man always makes troubles for himself, so I've made PCB.

There are two work modes, selected by toggle switch: manual and automatic.
In manual mode operator controls each motor individually by twisting corresponding potentiometer connected to analog input of microcontroller. PIC constantly reads analog inputs and modifies PWM signal so duty value is proportional to voltage on analog input.
In automatic mode microcontroller employs pseudo-random algorithm to calculate duty value for every motor.
Current duty value is stored in internal EEPROM and used as initial data for next calculation
so microcontroller will generates sequence of nonrepetitive unique patterns for long time.

Most pointers are rated from 3V to 4.5V, so make sure you adjust output voltage before connecting laser.

Board is small, so you don't need any brackets to secure it. Pots will hold it perfectly.

Since my supplier run out of PIC18F1220, I had to use PIC18F1320 in new design.
It's pin-compatible chip with increased memory capacity, but it will NOT work with old HEX file,
so pay attention.
I keep PIC18F1220 version as separated file.

Here are some notes from the bench:
- schematic;
- BOM;
- HEX (PIC18F1320 version);
- PCB;
- PCB in AutoCAD format
- source code for CCS compiler.

Documentation zip file

To program chip, I use USB ICD2 programmer (bought it from eBay) and MPLAB IDE (free soft from

PCB contains standard Microchip ICSP port (5-pins header) for programming purpose, also chip can be programmed by any socket programmer with proper software which supports PIC18.

Controller board assembling (high res guide):

For beginners and busy people, programmed chip, PCB, whole kit, or assembled board available upon request.

Some hobbyists may prefer simplified analog PWM controller based on 556 timer.

Step 3Spirograph controller V2.

Spirograph controller V2.
  • v2-spirograph-1.jpg
  • 100_3333_l.jpg


New controller board is completely redesigned with use of SMT components.
5V switching voltage regulator eliminates needs for heatsink.  As result controller has became 1.5 times smaller and that provides possibility of making truly pocket version of spirograph.
Embedded voltage regulator for low power laser module provides power within 2 - 4V.
Controller supports 5V and 12V fans. Fan voltage can be set by wire jumpers on board.

Along with auto and manual modes of operation modified controller has ability to store your favorite patterns in internal memory with just press of a button and replay them as a slide show.
New controller can store up to 80 user defined patterns and replay them as endless sequence. Time of showing  single pattern can vary from 3 to 60 seconds. Also there's manual mode when next pattern in sequence is triggered by a user.

Descriptions of new controls.

PROG/CYCLE - selects PROGRAM (manual)  or CYCLE (auto) mode of operation.
RAND/MEM - selects subroutine to generate random pattern or reading stored patterns from internal memory.
CONT/STEP - selects CONTINUOUS or STEP mode of showing sequence of patterns.
This switch is active only in MEM mode.

Button STEP/MEM:
 - in PROG or CYCLE/RAND modes button writes current pattern in internal memory. Stored patterns can be displayed as slide show in CYCLE/CONT mode.
 - in CYCLE/MEM/STEP mode button cycles trough sequence of stored patterns.
If button is being held pressed during powering up all internal memory will be cleared.

 - in PROG mode defines speed of motor 1.
 - in CYCLE/MEM/CONT mode defines time interval ( from 3 to 60 Sec) of showing single pattern from sequence.
 - in PROG mode defines speed of motor 2.
 - in PROG mode defines speed of motor 3.

Description of operation.

There are two working modes : PROGRAM (manual)  and CYCLE (auto).
In PROGRAM mode, pattern being displayed depends on positions of potentiometers.
Current pattern can be saved in internal memory by pressing button MEM. After 80 patterns have been stored, each new pattern will substitute the oldest pattern.
To clear memory press and hold MEM button during powering up.

In CYCLE mode, unit displays endless sequence of pattern.
In CYCLE/RAND mode, patterns are randomly generated by software. Initial positions of pots determine shape of the first pattern in sequence. Current pattern can by saved in internal memory by pressing button MEM.
In CYCLE/MEM/CONT mode, unit continuously reads patterns to display from internal memory. Time interval for displaying single pattern depends on position of POT A and can vary from 3 to 60 sec.
In CYCLE/MEM/STEP mode, reading of next pattern from memory is triggered by button STEP.
All technical notes such as
- schematic;
- PCB in PDF format;
- BOM;
- HEX file for PIC18F1320;
- C source code for CCS compiler.

can be downloaded from here

Upon request I can provide assembled SMT controller, mirrors and other stuff for this project.

Step 4Attaching mirror to the motor

Attaching mirror to the motor

Acrylic mirror is very light, so double sided sticky foam tape will do job.
Piece 1/2 x 1/2 is working good.

You can use thick paper as a wedge to tilt mirror. Insert it between mirror and motor.
In my setup tilt is 2-3 degrees. It results 6' wide pattern at a distance 18'.

It's impossible to center mirror properly regarding motor shaft and even slight offset will cause
vibration and noise at high speed, so I've developed some tricks for mirror balancing.
Make sure your safety glasses still on.

WARNING!!! This method will work only for acrylic/plastic mirrors!!!

At first I've tried to shape spinning mirror with file but fan is low torque device, so even light pressure with tool forced motor to full stop.

Since idea with turning part and fixed tool has failed, I've tried opposite approach -
Dremel with 1/2" sanding drum against motionless mirror, and that's really worked.

Some advices for people who wants to follow.

Motor with mirror must be off.
Select sanding band with coarse grit.
Set Dremel to minimal speed.
Hold Dremel that axes of tool and motor shaft are parallel.
Slowly bring sanding drum to the edge of mirror and press against it. Don't put much pressure. Spinning tool will rotate mirror and file it at the same time.
Take your time, go easy and, if you have enough patience, you'll get perfect round mirror which will run smooth and quiet.

Step 5Parallel optical setup

Parallel optical setup
  • 2164589055_df24a4d213.jpg
  • 2165390158_cc444cc800.jpg
  • 2164594425_6ed025294c.jpg
Classic setup.

Motors are placed on parallel lines.

I've developed one trick. I use double sided sticky tape to attach motor to base, and after all adjustments I secure motor on place with hot glue.

Adjustment is simple.
Start motors and aim beam that it stays within mirror area at maximum deflection.

As support for pointer I use piece of wood and some hot glue. Cheap and fast.

Step 6Square optical setup

Square optical setup
  • 2273284613_db36875cdc.jpg
  • 2273285703_bc92e11a7b.jpg
  • 2274082690_7b376629cd.jpg
  • 2273288127_8f7ae48c09.jpg
Square optical setup. I like it better.

Motors form square without one side.

Using this design we can make more compact device.

Everything else is the same as previous step.

Step 7Let's build tiny house

  • 2165383168_bcb5b3691d.jpg
  • 2165383744_4bc93d0364.jpg
  • 2164590047_925eea4613.jpg
It's a good habit to keep dust away from optical staff, so our device needs hermetic enclosure.

I had Hammond 7x4x2 box lying around, so I put it in business.

Since we determined optic configuration and beam path we can mark and cut out window.
Then get square piece of transparent acrylic and glue it to its place.
Next drill one more hole for power jack, glue it, connect to board and we are done.

Step 8Well done

Well done
  • 100_1085.JPG
  • 100_1371_l.jpg
  • 2283205090_c665b77b33.jpg
  • 100_2782.jpg
Not bad, not bad, but I would add something spicy.

...Aluminum faceplate and secret military technology of heat toner transfer!!!

That makes real difference.

Now I'm happy.

Step 9Laser spirograph V2 completed

Laser spirograph V2 completed
  • V2-performance.jpg
  • V2-mounting-1.jpg
  • V2-mounting-2.jpg
  • V2-mounting-3.jpg
  • V2-completed-1.jpg
  • V2-completed-2.jpg

New version of PIC based laser spirograph.

To make device more compact I've modified design by adding one more mirror.
Now optical components occupy less area and all parts can be fitted in standard 4" x 4" x 2.5" Hammond project box. 

Aluminum faceplate and background illumination are optional. 

Show us some love, like us on Facebook:

Reference: Instructables !


Anonymous said...

Nice !

Post a Comment

Twitter Delicious Facebook Digg Stumbleupon Favorites More

Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Colgate Coupons