The MicroSlice V1 | a Tiny Arduino Laser Cutter




Introduction: The MicroSlice V1 | a Tiny Arduino Laser Cutter

About: A passionate make of things. I spend my time developing new ideas and looking for ways to improve old ones!

A few years ago I saw an Instructable where Groover had used a pair of DVD-RW drives to make a pocket laser engraver. Inspired by the idea, driven by the recent purchase of a full-sized 50 watt CO2 laser cutter, and roused by the launch of the Microcontroller contest I took the decision to have a crack at making my own mini laser engraver.

I have called the project the MicroSlice.

What are the features of the MicroSlice?

  • The MicroSlice has a work area of 50mm x 50mm (2" x 2"). The V2 is now 100mm x 100mm (4" x 4").
  • It can cut paper and engrave wood & plastic.
  • Open Hardware.
  • Uses the Arduino UNO R3.
  • All the software used by the MicroSlice, including the graphics program, is Open Source, and free to use!
  • There is a 300mw 635nm Red Laser Diode, like you'd find inside a DVD-RW drive, which does the cutting & engraving.
  • It comes as a kit to build at home, at a Hackspace, or with your local Maker group.
  • There are 97 Laser-Cut parts in the kit!
  • It will work with your Raspberry Pi.

The MicroSlice won the Grand Prize in the 2013 RadioShack Microcontroller Contest!

Massive thanks to everyone who voted, and of course to Radioshack for the super prizes :)

The MicroSlice V2.6 is now available here |

Please help support my work here on Instructables and on Thingiverse

by using the following affiliate links when making purchases. Thanks :) | | |

Love 3D printing? Love T-Shirts?

Then you need to check out!

It is loaded with a huge range of wearable Parts & Components.

Step 1: To Begin

The basis for Groover's axis was the two mini stepper motors from the DVD-RW drives. The motors drive the DVD head mechanism which either moved the laser cutting head, or the cutting table. My first starting point was to find a similar set of motors, and a reclaimed laser diode.

However I wanted a slightly different design. Where Groover has the cutting table move on the Y Axis, I wanted a fixed cutting table. To do this I took my inspiration from a gantry crane.

As the cutting table would be fixed, the cutting head must move along the Y Axis instead, but it must also accommodate the X Axis. So the whole cutting head, and the X Axis, must move along the Y Axis. Like a gantry crane moves up and down the dockside.

So I need two stepper motors with threaded shafts. The longer the shaft the larger the potential work-area for the cutting head. I'd also need a pair or runners for the Y Axis gantry to move along.

To cut a long story short I couldn't find what I wanted from the DVD-RW drives I found. The stepper motors had no threaded bolts which could move along the threaded shafts and the laser diodes were firmly pressed into their housings that I was unable to remove them from the DVD-RW without causing damage. So in the end I turned to old faithful eBay to find the parts.

1 x Arduino UNO R3
1 x X Axis Motor
1 x Y Axis Motor
1 x Dual Relay
2 x Easydriver
2 x 5v LDO
1 x 3.3V LDO
2 x Heat-Sinks
1 x 45x45x10 Fan (12v)
4 x Stop Switches
9 x Magnets
4 x Rubber Feet
5 x Thumb Screws
1 x Laser DiodeAlternative
1 x Laser Module
1 x Laser Driver
1 x Laser Lens
1 x 4mm Aluminium Tube
2 x 3mm x 150mm Steel Rod
1 x 3mm x 100mm Steel Rod
17 x M3 Microbarbs
6 x M2 Countersunk (6mm)
6 x M2 Nuts
6 x M2 Pan-head (6mm)
8 x M2 Pan-head (8mm)
4 x M3 Nylon Screws (6mm)
4 x M3 50mm Standoffs
7 x M3 Cap-Head Screw (8mm)
8 x M3 3mm Nylon Spacers
97 x Laser-cut parts!

The Microslice parts have been arranged to be laser cut out of two 3mm x 400mm x 300mm sheets of plywood or acrylic. The MicroSlice plans are attached as a zip file below.

The MicroSlice uses a 300mw 635nm Laser Diode. It will hurt you if you are not careful. Please take care when handling the laser. Do not look at the beam, do not point it at yourself or anyone else. Do not be an idiot.

Step 2: The First Steps

Where do we start? Well firstly we need to establish a datum; a point at which all other measurements are made. I'll be using the X Axis motor's range of motion, the distance between each end of the stepper motor's shaft, as our datum. I have picked this as we'll need to position the middle of the range inline with the centre of the cutting table. From there we can measure the location of the three bolts holes for the stepper motor, and we'll also be able to set a height above the cutting table.

The motor comes fixed to a backing plate which will be removed and disposed of. The gantry must have several features; it must be able to have the X Axis motor attached to it, it must provide a cross-bar to steady the slider, somewhere for the laser module, and it must also have runners for the Y Axis.

As I'll be cutting the parts from 3mm plywood I'll be using vector graphics to design the parts. There are several programs available to help you with this part. Inkscape is an Open Source vector graphics editor, it works on several platforms including Linux and the Raspberry Pi.

The gantry is to run along two 3mm x 150mm ground steel rods. There will be two sections of 4mm aluminum tube pressed inside the gantry which the rods fit down. The steel rods will take the weight of the assembly meaning that the motors only have to handle position changes and don't have to battle the weight.

There are a total of ten different revisions of the gantry, with the tenth being part of the final build. To begin I kept it simple; mount the motor, get the correct heigh above the cutting table, and make sure it was wide enough to manage the full length of the X Axis.

Each new iteration of the gantry added something new, or corrected an error, or was most often the case it did both; improve, and add to the design.

Version 1 : Added the motor, set the height & width.

Version 2 : Reduced weight with cut-outs.

Version 3 : Corrections.

Version 4 : Increased the depth of the lower cross-bar from 15mm to 30mm to increase stability. The weight of the laser module was causing the gantry to tip forward and bind on the runners.

Version 5 : Added space & boltholes for the X Axis end-stops.

Version 6 : Corrections.

Version 7 : Added space & boltholes for the Y Axis end-stops.

Version 8 : Cut-outs made to the lower cross member allowing clearance for the Y Axis stepper motor.

Version 9 : Added brackets for the cables. This was used in the first dry-run of the MicroSlice.

Version 10 : Corrections made. Final version.

Step 3: Gantry Platform

The gantry platform had to serve two main purposes; support the runners for the gantry, and mount the Y Axis motor. The design constraints were limited to the width of the gantry, and to the length of travel of the Y Axis. I wanted a lightweight platform for the gantry, I also needed to fit the cutting table.

Step 4: The Cutting Table

Everyone loves a honeycomb cutting table on their laser cutter, and I though the MicroSlice should have one.

For extra strength I used two layers of 3mm sheet glued together. There are two teeth at each end which interlock with two sockets on the Gantry Platform preventing the cutting table from moving.

I've pressed some neodymium magnets into the cutting table to help keep any paper secure while engraving / cutting. The area exposed to the laser has been covered with thick aluminium foil. This will protect the table from the laser's heat.

Step 5: Heat-Sinks

The heat-sinks for the two LDOs come from a single reclaimed BGA heat-sink.

1 | Remove the heat-sink from the old BGA.

2 | Add 2.54mm pins to the two LDOs.

3 | File down the pins on the underside of the PCB.

4 | Cut the heat-sink into strips. I measured the width of the LDOs and cut a strip along the line with the screw hole. We'll later use the screw holes to mount the LDOs to the MicroSlice.

5 | Shorten the strip to match the LDO.

6 | Clean up the edges, and remove the black from the surface where the LDO will be attached.

7 | Glue the LDOs to the heat-sinks using thermally conductive adhesive.

8 | Allow the glue to set.

You could also use thermal adhesive tape to attach the LDOs.

I have since found a source for new heat-sinks, check the parts list at the beginning of this instructable.

Step 6: The Lower Deck

The lower deck contains the electronics, and holds up the Gantry Platform.

On the bottom plate goes the Arduino and the dual relays for the fan & laser. On the upper plate sits a 5v LDO to power the fan, and a 3.3v LDO to drive the laser. In front of the LDOs are two EasyDriver motor controllers, they will manage the stepper motors.

The Arduino and the dual relays sit on 3mm M3 spacers. I found that the screw-hole near the reset switch on the Arduino was too close to the connectors to take a screw! I attached the M£ spacer with some double-sided sticky tape, both to the Arduino and the base-plate.

I'll demonstrate how it all goes together during the final assembly.

Step 7: Test Wiring

Before I commit to a final version I wanted to make sure everything worked; so I assembled all the parts, fitted the electronics and set about wiring it all together.

I have used ribbon cable and DuPont connectors for the cabling. I amde sure to label all the wires with little strips of masking tape so I wouldn't forget where all the wires go.

As I'll be using the Arduino with Grbl I can use their guide to help me correctly wire the MicroSlice.

Mid-way through the build I ran into a problem; The EasyDrivers were too close to the Arduino below. I had to move the PCB further out to make space. Rather than put it all back together again, and in anticipation of further complications I left all the electronics from the top plate free from their mountings.

The EasyDrivers need a higher voltage than the USB can provide. I'm using a 12v PSU plugged in to the DC jack on the Arduino. There is then a Vin pin-out on the board where I can take power out to the EasyDrivers and the two LDOs.

The EasyDrivers need to be configured for Microstepping. Put simply Microstepping cuts standard step into smaller steps. With the MS1 & MS2 pins on the EasyDriver connected to the on-board 5v supply we can set Microstepping to 8. This means instead of a lowly 20 steps a revolution we now get 160. For more details on the EasyDriver visit

Step 8: The Final Build

I put some masking tape over the wood to cut down on laser burn and flaring. It does mean that I have to spend a few extra minutes peeling it all off after it has been cut.

I have used PVA glue, and held it together with clamps where I can. The Gantry Frame has to be done pretty much all at once before the glue drys so it can be laid flat to stop it distorting.

I screw some 50mm M3 bolts through the lower plate and used them as guides to assemble the uprights. It also keeps everything square while the glue drys.

The cutting table is covered with some thick aluminium foil. The magnets are pressed in, a strip of masking tape is stuck over the area where there will be no foil. The aluminium is then pressed onto the table and a knife cuts off the excess.

Step 9: The Wiring Loom

Keep the wires short, make sure there are no short circuits.

I've picked a 12v fan and will powered it with the 5v LDO. We want a large slow-moving volume of air rather than a fast low-volume. Keeping the wind-speed low helps things stay on the cutting table.

I followed the Connecting Grbl section on the Grbl Wiki to wire up the MicroSlice. The fan relay was connected to the Coolant pin (A3), and the laser diode relay to the Spindle On / Off pin (12).

Step 10: Software & Setup

The MicroSlice uses Grbl v0.8 for motion control. Grbl converts G-Code into commands that the EasyDriver stepper motor controllers understand. We need another program to send the G-Code to Grbl, for this I'll be using Zapmaker's Grbl Controller v3.0.

Before you can begin you will need the Arduino IDE, available from the Arduino website.

Make sure your Laser Diode is not connected to the power lines while you are configuring your MicroSlice. The Laser will power on & off during the setup & configuration process if it is connected. Only connect the Laser Diode when you are ready to cut or engrave.

Grbl's wiki shows you how to flash the pre-compiled Grbl hex file onto your Arduino.

For those of you who have a Raspberry Pi, as I do, you'll be pleased to know that you can control the MicroSlice using your Pi! Zapmaker has a step-by-step guide to install Grbl Controller on a Raspberry Pi.

We'll need to generate some G-Code. The best way to do this is to use Inkscape combined with a laser engraver plug-in. An Open Source vector graphics editor, with capabilities similar to Illustrator, CorelDraw, or Xara X, using the W3C standard Scalable Vector Graphics (SVG) file format. I've been using the same plug-in Groover made for his engraver, he has done a short video detailing its use.

Before we can use our new G-Code we'll need to configure Grbl to use the stepper motors and end-stops.

You can use either the Arduino IDE Serial Terminal (CTRL + Shift + M) to send commands to Grbl. Sending $$ to Grbl displays the configuration settings (yours might look differently);

$0=755.906 (x, step/mm)
$1=755.906 (y, step/mm)
$2=755.906 (z, step/mm)
$3=30 (step pulse, usec)
$4=500.000 (default feed, mm/min)
$5=500.000 (default seek, mm/min)
$6=28 (step port invert mask, int:00011100)
$7=25 (step idle delay, msec)
$8=50.000 (acceleration, mm/sec^2)
$9=0.050 (junction deviation, mm)
$10=0.100 (arc, mm/segment)
$11=25 (n-arc correction, int)
$12=3 (n-decimals, int)
$13=0 (report inches, bool)
$14=1 (auto start, bool)
$15=0 (invert step enable, bool)
$16=0 (hard limits, bool)
$17=0 (homing cycle, bool)
$18=0 (homing dir invert mask, int:00000000)
$19=25.000 (homing feed, mm/min)
$20=250.000 (homing seek, mm/min)
$21=100 (homing debounce, msec)
$22=1.000 (homing pull-off, mm)

The settings we are interested in are $0 & $1. These two setting configure the A & Y Axis. We'll need to calculate the number of steps to move the cutting head 1mm in either direction.

We calculate it thus;

Number of Steps = Number of steps per rotation x Microsteps / Thread Pitch

20 Steps-a-Turn (18 Degrees a step) x 8 Microsteps (MS1 & MS2 Connected to +5v on the EasyDrivers) / 3mm Thread pitch (3mm of travel per rotation).

(20 x 8) / 3 = 53.333333333

So type $0=53.333 and $1=53.333 into the terminal to setup the axis. You will need to do a soft reset for the changes to take effect ($X).

Or you can use Zapmaker's Grbl Controller to adjust Grbl. You can access the Grbl Settings via the advanced tab. You'll still need a soft reset after clicking apply.

You should also set;

$4=200 This sets the default speed the cutting head moves at while working.

$5=200 This sets the default speed the cutting head moves at while moving between jobs.

$16=1 This enables the end-stops.

$17=1 This enables homing ($H), mine locks up when I try to run the homing cycle. To enable this function you will need to edit the source code for Grbl and recompile the .hex file. Instructions showing how to do this are at the bottom of this Step.

$18=69 This will make the cutter zero in the lower left of the cutting table when the $H homing command is executed. For an in-depth explanation of this function see the Grbl Wiki.



$22=2.000 This sets the distance the Axis moves away form the end-stops after the homing cycle.

There are in-depth explanations for each of Grbl's settings on the Grbl Wiki.

Check your configuration is correct by typing $$ into the terminal. You should see something like this;

$0=53.333 (x, step/mm)
$1=53.333 (y, step/mm)
$2=53.330 (z, step/mm)
$3=10 (step pulse, usec)
$4=200.000 (default feed, mm/min)
$5=200.000 (default seek, mm/min)
$6=28 (step port invert mask, int:00011100)
$7=50 (step idle delay, msec)
$8=100.000 (acceleration, mm/sec^2)
$9=0.050 (junction deviation, mm)
$10=0.100 (arc, mm/segment)
$11=25 (n-arc correction, int)
$12=3 (n-decimals, int)
$13=0 (report inches, bool)
$14=1 (auto start, bool)
$15=0 (invert step enable, bool)
$16=1 (hard limits, bool)
$17=1 (homing cycle, bool)
$18=69 (homing dir invert mask, int:00000000)
$19=200.000 (homing feed, mm/min)
$20=200.000 (homing seek, mm/min)
$21=100 (homing debounce, msec)
$22=2.000 (homing pull-off, mm)

The final step is to focus the laser. I loaded a small test sample, in this case it was an X, and let the sequence run.

You can power the Laser Diode On & Off using the tick box labelled Spindle On on Zapmaker's Grbl Controller.

The first time there was nothing there, but are a few turns of the lens I managed to get a mark on some paper. After that all it needed was a bit of fine tuning and the laser was correctly focused on the cutting table.

I made some 3mm spacers to go under the lase module to lift it up for when I wanted to engrave some 3mm plywood. Doing so meant I didn't have to refocus the lens each time I wanted to swap materials.

Editing The Source Code.

During testing I found that Grbl would hang on the $H (homing) command. I suspected this was a problem with the Z Axis as the MicroSlice does not have one.

To fix the probem we must remove the Z Axis options from the Homing Cycle. The commands are contained within the config.h file in the source code.

1 | Download the source code from Grbl (link).

2 | Unpack the archive.

3 | Open config.h in your favourite text editor.

4 | Locate the following code

#define HOMING_SEARCH_CYCLE_0 (1< #define HOMING_SEARCH_CYCLE_1 ((1<

5 | Replace the code with

// #define HOMING_SEARCH_CYCLE_0 (1<

#define HOMING_SEARCH_CYCLE_0 ((1<

6 | Locate the following code


7 | Replace the code with


6 | Save

7 |Recompile the grbl.hex file. I used my Raspberry Pi to recompile the hex. In case things go wrong I have included the modified hex file for you below. You'll need to flash your Arduino with the new hex.

If everything has worked, and all the settings are configured correctly you should be able to run the homing cycle ($H) and see the MicroSlice zero itself and then you should be ready to go create!

Microcontroller Contest

Grand Prize in the
Microcontroller Contest

2 People Made This Project!


  • Make it Glow Contest

    Make it Glow Contest
  • Game Design: Student Design Challenge

    Game Design: Student Design Challenge
  • Clocks Contest

    Clocks Contest



Question 3 years ago

is there anywhere I can buy the laser cut parts for this?


5 years ago

could you give drawing parts for cutting on laser cutter this stanochek?


6 years ago

okay,,i have a ps3 sled (kem-410aca) it is the same to use steps 53.33?


6 years ago

hi,im building this same components,,it is normal that stepper motor get too hot @ 12v1A supply?


Reply 6 years ago

it depends, you would have to look at the data sheets for that stepper motor, they are designed to run at one voltage only, and as long as the power supply has enough amps as its output the motor should work, devices take whatever amps they need and leave the rest that they don't need

Shafwan  Anwer
Shafwan Anwer

6 years ago

hey. help me please.dont know how to connect the electronics. please help soon

Shafwan  Anwer
Shafwan Anwer

6 years ago

Hey are you using any extra parts other than in the list.


6 years ago

Nice build! I made a laser cutter using a Raspberry Pi and EasyDriver motor controllers, but mine is larger, so it can cut nearly a full sheet of paper. It can even engrave chocolate! Check it out on my YouTube channel:


Reply 6 years ago

Hi I am newbie and I am trying to cut XPS foam using hot wire. It is coming out with rough edges as good as my steady hands. Rasberri Pi with two drives seams to be a good one for my need. DO you have instructions posted some where?


Reply 6 years ago

Welcome to the great world of building things! While I don't have an Instructable on building my laser cutter, I have an extensive collection of website posts documenting my build. They are very detailed and should be helpful. Here is the link:

Good luck!


6 years ago

hey everyone. I've had a Microslice V1 kit I have had lying around for ages. The gantry system is mostly built and I've got all the components needed to finish it, I just don't possess the time or patience to finish it off! It's on eBay if anyone is interested , just look for item number 252300821428. I bought everything I could from the littlebox website, mainly the gantry and some of the electronics so I hope you don't think I'm trying to capitalise on their hard work! I'm hoping someone can finish it off and make use out of it rather than gather dust in my garage!


6 years ago

You are too gud my friend


7 years ago

can Arduino Mega 2560 used instead of Arduino UNO?


7 years ago on Step 10

will this work on Arduino Mega? just to know, I have one around so...


Reply 7 years ago

Hi iolivare

this was my same question will this work on arduino mega 2560 ? Did you get answer for that question? plz do mail me to kumarvp113@gmail. Com


7 years ago

Hi guys. did anyone made this project with large size, can anyone help me regarding this. thanks


7 years ago

Is it enough of DVD-RW diode to cut wood?


Reply 7 years ago

It will cut very very thin balsa wood.


Reply 7 years ago

Have you made laser cutter that are good enough to cut 4mm plywood? This is what I am looking for, but as far as I see there are no such thing for under 200eur.


7 years ago on Introduction

so.. you need a laser cutter to make a laser cutter. :D

the code and the idea are very useful anyway, i might make one with a non-lasercut frame.