Yet another laser cutter

When my EPSON 830U decided not to work for me anymore (printing heads clogged) I thought I could make some use of the still working mechanics of the printer. It's based on a couple of stepper motors for both axis of motion (print head and paper feed).

So I replaced the original power supply and drive electronics for an arduino board and an stepper motor driver from Adafruit industries. Now I could move the printhead anywhere on a page. Next step was to add a laser on the printhead and to control it using a PWM output from arduino (so laser power could be modulated from the computer).

Though it only cut thin back color cardboard, it has may uses. I wrote a C program for arduino to control the stepper motors and laser. It receives data from the computer and interfaces with the old printer guts.

Data format is very simple: each line contains a sequence of integer numbers separated by blank space. Each pair of numbers represents one XY coordinate. Line ends with a CR (0x0d) character (that also shuts down the laser to stop cutting). First coordinate of a line sets the starting point (before reaching that location the laser is off).

I wrote some software running on my iMac that reads a Inkscape SVG file (only straight lines are supported though, use Flatten Bezier on curves to get a sequence of straight line segments) and translates it to the desired data format for arduino and it shows a preview on the screen. Data is sent through a USB port to the arduino. iMac code was written using Processing language (Java-based) so it can run on Windows or Linux too.

If you have an old EPSON printer, you may want to give it a second thought before putting it to the trash.

Video was shot by taping an iPod to the printer's head. That's why it looks laser is static and only cardboard moves.

Update: After I published the above version of software, I kept working on the next one. Now flow control works ok and the Processing code shows a red dot over the drawing while cutting. One click is needed to start cutting once the SVG file is shown and some minor changes make the code a bit better (SVG parsing code is very lame and failure prone, only straight lines are understood). SVG filename is still hardcoded in the Processing file.


Temo said…
Hmmm... Sounds very interesting. I wounder if i can get some G-code to work on this and then have MasterCAM do the program for me.

Then i combine it with some PaperCraft (pepakura) and I will end up with all the cut piece of my Master Chief, IromMan, and the guys from Borderlands costumes!!!

HAHAHAHAHHA !!!! i am a GENIUS!!... well if i can get the G-code to arduino to work or something.
Miguel Sánchez said…
we'll actually g-code interpreter for arduino is available from RepRap project. I decided to create my own format just because I'm lazy and I was not familiar enough with g-code, but I could have adapted that.
Jared said…
How did you wire the laser to arduino? Do you have schematics? Thanks.
Anonymous said…
Hi Jared:

I've used a MOSFET on a PWM output and 3.9ohm resistor to limit the current over the laser led. Of course the resistor value depends on the max current the laser led can handle and the voltage of the power supply.

mosfet_drain--->resistor---led---- +supply

I used an N-channel mosfet IRF630.
What did you use for the laser? There are no details in the post.
Anonymous said…
I used a one watt infrared laser. Lots of info are available at

Popular posts from this blog

VFD control with Arduino using RS485 link

4xiDraw: Another pen plotter

One Arduino controlling two brushless DC motors