Arduino Laser Engraver

I started this project because I wanted to make something that had mechanical, electrical and software components. After looking around on Instructables, I figured that an Arduino based laser engraver would be an interesting machine to make, and that the machine itself could make interesting things. Laser diodes have also advanced quite a lot in the last few years, allowing reasonably powerful DIY laser engravers to be made without the hassles of laser tubes.

This machine can engrave wood and cut paper. I haven't tried other materials yet because there is no fume extraction capability - plastics generally create toxic gases when burnt.

SAFETY WARNING - Please be safe when using lasers. The laser used in this machine can cause permanent eyesight damage, and probably even blindness. When working with powerful lasers (>5mW), always wear a pair of laser safety glasses designed to block your laser's wavelength.

For a quick overview of the guts of the machine, have a look at the video below
(Note: The machine runs slightly faster now, and also has a different laser heatsink to the one in the video)

For pictures of engravings, skip to the end, or visit my website's gallery:

A spreadsheet containing the parts list is below.

Also, for any Aussies unsure about the laser import laws, I've attached the current rules (at Dec 2013) below. Laser diodes and laser modules (such as the one in this machine) are legal, however laser pointers are prohibited.
This is a pdf version of the following webpage:
Remove these adsRemove these ads by Signing Up

Step 1: Frame Design

Picture of Frame Design
Before starting construction, I made a CAD model of the machine to make sure that everything would fit, and to figure out the dimensions of the parts. Some screenshots of the machine's CAD model are above.

The y-axis is on the bottom of the machine, and provides a moving base for the engraved piece. The x-axis is on the top, and moves the laser assembly (the laser isn't shown in the model).
imont4 months ago
Hi, can you explain me the steeps to print raster images, please.
getburnt (author)  imont4 months ago
Hi, if you are planning to use the software on step 8, here is a more detailed overview of the procedure:

First, you will need the Processing IDE installed on your computer (link is on step 8). Currently, I am using version 2.0.1 32-bit, with the Serial library. (Serial doesn't work with the 64-bit version at the moment)

From Step 8, download and extract "CNC Image" to a folder on your computer (eg C:\CNC Image Program). There should be three files in the folder

Prepare a 24-bit bitmap file. Find a picture, convert it to black and white only (eg use GIMP / Photoshop to dither it to a 1-bit image) then save it as a 24-bit bitmap.

Run the "CNC Image Program.exe" program
In the program's text box, enter the full path to your bitmap file. There is a sample bitmap (arduino.bmp) included with the program that you can try first. The path would be something like "C:\CNC Image Program\arduino.bmp" (depending on where you put the folder)
Click "OK" and after a while, the image should be displayed by the program. The file "cncinstructions.txt" should have been created in the folder (eg C:\CNC Image Program\cncinstructions.txt)
(If you need to run the program again, clear all .txt files in the folder)

From Step 8, download and extract "" to somewhere on your computer (eg C:\). Run the file "textfilestreamer2.pde". The Processing IDE should start, and ask you if it can move the file into a folder. Click yes/ok, and the .pde file will be in a new folder (eg C:\textfilestreamer2\texfilestreamer2.pde)
In the folder, create a new folder called "data" (eg C:\textfilestreamer2\data) Copy the generated file, cncinstructions.txt, into the data folder

From Step 8, download and extract "" to somewhere on your computer (eg C:\). Open the .ino file and upload it to your arduino. Also, the Arduino needs to be configured to use COM3

After all these steps, all you need to do is click run in the processing sketch. It will open a serial connection to the arduino, and begin sending instructions. The arduino will interpret the commands and move the motors / control the laser.

Tried to run "CNC Image Program.exe" program, keep getting 'not a valid Win32 application', my system is winxp 32

getburnt (author)  atlantisarn26 days ago

I've just uploaded a version that has been compiled for Windows XP. Give this one a try (it's also on Step 8) - let me know if it still doesn't work

Thanks, it works

Now, I'm trying to figure out how to get laser work, you used pin 12 or pin13 to control laser pulse?

getburnt (author)  atlantisarn25 days ago

The Arduino sketch in Step 8 uses pin 51 (I used an Arduino Mega for the raster engraving). You can change it to any pin you want, by configuring the variable "LASER".

works great

I'm using salvaged stepper motors, pretty sure they are less 200steps per rotation, and they have different steps, so I need to increase scalefactor separately for both of them and delays as well?

for now, I have a result of flattened image

I set two different scale factor for x and y motors, the result is much better.

I burned the image on a piece of black paper, will try the wood later

awesome works, by the way


engraving on wood

getburnt (author)  atlantisarn23 days ago

looks great!

DBender2 months ago

Hello friend, I changed the resolution to 2 and the image was distorted, changed to 4 and also was bad ... you know tell me why? the laser is always on? Arduino which pin should I connect the laser? thank you

getburnt (author)  DBender2 months ago

The distortion is probably because of a timing problem.

If the Processing sketch is sending new instructions to the Arduino before the motors have completed their previous instructions, the image will be distorted. Try setting larger delay values in the Processing sketch. Once you have delays that work, you can gradually reduce them until you get to the fastest speed for your machine.

The laser is pin 51 (I used an Arduino Mega). You'll need to change this if you aren't using a Mega

DBender2 months ago

Friend, I took a look here, I think the problem is that my machine uses belts and not zone, so the motor moves the laser more than one zone ... how can I change the software zone for belt?

getburnt (author)  DBender2 months ago

In the Arduino sketch, you can change the value of the "scalefactor" variable. It is currently set at 8 (8 motor steps per pixel). You can change the value to suit your machine.

Also, if you change it, you may need to change the value of the delays in the Arduino sketch and the Processing sketch. The delays in the Processing sketch should always be a little bit bigger than the corresponding delays in the Arduino sketch.

DBender2 months ago

Olá amigo, Em primeiro lugar, obrigado por seu apoio e ajuda.

Fiz algumas correções e agora os motores se mover, mas ele se move não só em um sentido, o que poderia ser? estabelecer limites passo? ou erro?

They move only one direction until hitting the limit of the machine.


DBender2 months ago

Hello friend, I'm trying to make it work, I did everything correctly, apparently the program sends data to the arduino, the RX LED blink but the motors do not move ... what can be? thank you

DBender DBender2 months ago

EASYDRIVER used motor driver

getburnt (author)  DBender2 months ago

This could be caused by a number of different things. Here's what I would check first:

  • is there a common ground connection for all components? (arduino, stepper drivers, power supply)
  • is there an enable pin on the stepper driver that has to be pulled high or low?
  • is there enough power supplied to the motor driver?
  • are the step / direction inputs on the driver connected correctly?

While you are troubleshooting, remember that you can manually drive the motors using the Arduino Serial Monitor. Just type in the relevant numbers to send instructions to the motor driver. eg "11111" should make the X motor move the equivalent of 5 pixels. It is easier to experiment using the Serial Monitor, than by sending a full picture to your laser engraver.

Hope this helps!

DBender2 months ago

Hello friend, I have the following error appearing in processing:

The file "cncinstructions.txt" is missing or inaccessible, make sure the URL is valid or the file has been que added to your sketch and is readable.

Exception in thread "Animation Thread" java.lang.NullPointerException

at sketch_140131a.setup ( 43)

at processing.core.PApplet.handleDraw ( 2117)

at processing.core.PGraphicsJava2D.requestDraw ( 193)

at ( 2020)

at ( 662)

What could it be? Thank you friend.

getburnt (author)  DBender2 months ago

Hi, this error is probably because the file "cncinstructions.txt" hasn't been copied into the correct folder yet ("data" folder). Have a look at my reply to imont's comment below for further details.

rmayne4 months ago
Any chance the thing will cut through aluminum? I'm looking to build an Arduino cutter myself but I work with metals a lot
dnorbury rmayne4 months ago
I have a 120 watt Epilog laser and there is no way it will cut aluminum, or any other metal for that matter. I would agree that you probably need some sort of plasma cutter for this.
Approach a local laser cutting company and advise them of your amateur status coupled with your genuine interest in the subject, take photos and examples with you. Also suggest there are others like you and they could possibly fit these jobs in between others generating a SECOND SOURCE OF INCOME! If you are computer savvy suggest you could knock them up a internet page for free.
You will be surprised! people love genuine people
getburnt (author)  rmayne4 months ago
My laser's a bit too weak for metals, and even the 100W laser tubes probably can't do it. A CNC plasma cutter would probably be the best solution! There are some examples on Youtube, such as
Darkish getburnt4 months ago
Here's a source I've found some time ago:

Not sure how accurate it is, however.
bob1.6184 months ago
The third pin on those laser diodes is an optical feedback pin, which lets you set the appropriate input power. If you don't use it, you risk destroying the diode with thermal runaway if you drive it near the rated output, or so I've heard. You can build a simple feedback supply for a few bucks more than the one shown above. Look here for ideas:
getburnt (author)  bob1.6184 months ago
Thanks for the info!
When I upgrade the laser diode to a more powerful one, I'll look into using that third pin in a new laser driver circuit. I don't want to end up with very expensive LEDs :P
mkinoma4 months ago
Can you provide more detail about your results when you tried the NEMA 17 motors?

Would you be able to use smaller/faster/cheaper motors at least for the X axis if you were only moving a 45˚ mirror and had the laser and heatsink affixed to the side?
getburnt (author)  mkinoma4 months ago
I haven't tried NEMA 17 motors in this machine, but they are probably adequate to move the axes at lower speeds. Many 3D printers use NEMA 17 motors without any issues.

When I tried NEMA 17 motors previously (in something else), I didn't have proper stepper drivers - I used a ULN2003 chip to manually switch coils on/off through an Arduino. This was a relatively low performance way to make the motors move, so I probably didn't get the most out of those motors.

Also, I chose NEMA 23 motors because they are a bit more versatile. Stepper motors lose most of their torque at higher speeds, so stronger motors usually have a wider range of usable speeds (when a load is applied).
regpye4 months ago
I am in Australia and I have tried a couple of times to import laser diodes that are over 5mW and had then seized by Customs. The last time I was given a warning and told that my details are now held on file. How did you manage to get the laser diode into Australia?
getburnt (author)  regpye4 months ago
At the end of the Intro page, I've added a link to the current restrictions (according to Australian Customs). Fully assembled portable lasers are prohibited (laser pointers and pens).

"Laser modules, laser diodes and laser lighting" (and stinkbombs!) can be legally imported. So if you were to order the same laser diode/module as the one in this instructable, Customs wouldn't be allowed to seize it, because it isn't a laser pointer. If they did consider it to be a weapon, then they would have to class every single Blu-Ray player in the country as a weapon!

Also, if someone in Australia did import a high power laser module, and used it to create a laser pointer, then that would be illegal. I think to be considered a laser pointer, it must be portable / handheld and battery powered. My machine isn't exactly handheld (it weighs more than it looks) and can't run on batteries, so I think I'm safe :)
notselrach4 months ago
 What components do I need to modify my cnc machine to do this laser etching. Does this laser simply run on-off (which would fit my needs as I want to burn a logo on a wooden drum head), or is there a way to interface my software (mach3) with the controller?
getburnt (author)  notselrach4 months ago
Yes, the laser just turns on and off based on the input voltage to the laser driver circuit. If that pin is at 5V, the laser switches on, and if its 0V, the laser switches off. The brightness of the laser is not controlled digitally.
The simplest solution is probably to find out how your machine sends the control signals to turn the spindle on and off. If its just a simple 0V/5V signal, you can use that to turn the laser on and off. Then if you embed the M03 and M05 commands in your instruction file, it will turn the laser on and off as required. Also, if the logic is reversed (5V off / 0V on), you can use a PNP transistor instead of NPN in the laser driver circuit.
rblprd4 months ago
Any chance this range would etch titanium? Don't need to cut most stuff, just need to etch bits.
getburnt (author)  rblprd4 months ago
It can't do anything to bare metals - unfortunately its not powerful enough. It might be possible to apply something like "TherMark" ( and then engrave on it. However, this has been designed for CO2 laser cutters, which output infra-red wavelengths of light. I don't know if that stuff works with the visible blue light from my machine.
jiajunwang4 months ago
Great project! But since the process does not involve contact (hence no force), it seems a bit unnecessary to use stepper motors as powerful as yours.
rany4 months ago
Thank you for sharing with us Very nicely done ... fantabolus :) i have the materials, i will commence soon>>>>
andrew_h4 months ago
How did you go getting the laser 1.5W modules into Australia or did you buy them locally somehow? I've got a chinese CNC machine that i've been thinking about adding a laser engraver to for ages - This would be an easy mod...
getburnt (author)  andrew_h4 months ago
Yeah, I had the same concerns before I bough the lasers from the US. When I checked the Customs restrictions, my understanding was that only fully assembled portable lasers (eg those flashlight / torch types) are illegal. It should be legal to import the laser modules that I've used because they can't actually work until you add extra electronics.
If you're unsure, you could also check with the seller to see if they've encountered any problems delivering to Australia.
recwap4 months ago
nice work! one day maybe will build my own laser cutter :)

Get More Out of Instructables

Already have an Account?


PDF Downloads
As a Pro member, you will gain access to download any Instructable in the PDF format. You also have the ability to customize your PDF download.

Upgrade to Pro today!