This guide will show you how to turn your Anet A8 3D printer into cheap low-power DIY laser engraver – without any permanent or difficult hardware modifications (except a small mounting bracket that you mount on FAN2!
The laser is controlled and powered via the FAN1 output on the PCB using M106 and M107 gcode commands, so you will even be able to use PWM to control the “burning power” of the laser. The laser diode from the link below is not very powerful anyway, so you will most likely use it at 100% all the time.
The principle is very simple – you design your file using the vector graphics editor Inkscape, and then generate the output gcode file by using a simple Inkscape extension.
When you print the file, the gcode moves the printer’s head to a predefined Z axis height at which the laser is focused with G1 command, and then uses G1 X… Y… command to move the head, and M106/M107 to turn the laser on/off.
Because of the low power (and relatively safer) laser, the burning strength is not very high, and is very dependent on what color is the material you want to engrave. Generally, darker colors are engraved better. The hardest are white and red, because they reflect the red color the most, and as a result it’s harder for the red laser to burn them.
If you use thin paper and slow speed, it can even cut it.
However… don’t expect too much. This, above everything, is a toy you can play with 🙂
That said, you can still do pretty cool stuff with it.
What you need
- LM317T Voltage regulator – http://www.ebay.com/itm/262136736064
- TO-220 heat sink for the regulator. I used a different one that I already had, but this one should do it: http://www.ebay.com/itm/222347538867
- 200-250mW laser diode – http://www.ebay.com/itm/261965741660
- Laser driver – http://www.ebay.com/itm/181727803832
- Laser heat sink – http://www.ebay.com/itm/231683028826
- One 680ohm resistor, and one 220ohm
- A small piece of universal PCB to mount the components on it – http://www.ebay.com/itm/272368776401
- Some wire to connect the laser to the printer’s mainboard. You can use the wire from a spare endstop switch if you have some – this way you can use even it’s connector.
- A functional Anet A8 (or other 3D printer) – because you have to print two parts (enclosure and mount).
Approximate cost: $15. Pretty cool, eh?
NOTE: The LM317T regulator really needs its own heat sink. It can not be mounted on the same heat sink as the laser, because this bypasses the driver. Maybe I could have done it without the laser driver module – using only the LM317T in current regulator mode (instead of voltage regulator) to drive the laser… but I already burned one laser diode, so I didn’t want to experiment (for the moment) 😀
In order to power the laser from the FAN1 output without damaging the laser diode, we must first lower the voltage from 12V to 5V using the LM317T voltage regulator. The 5V output of the voltage regulator is then connected to the input of the laser driver, and the output of the laser driver is connected to the laser diode.
Below you can see the full schematic:
Note: the laser driver I use has a TTL control pin, but I don’t use it. It must be connected to VCC when unused.
I have designed an enclosure for the electronics, which can be mounted directly on the laser’s heat sink:
And here is how the electronics look like:
The printed parts
- Electronics enclosure – the enclosure fits on top of the laser heatsink
- Electronics enclosure cap
- Print head mount – it’s mounted between the extruder fan and the extruder heatsink.
Download the STL files from http://www.thingiverse.com/thing:2080795 and print them. All of them can be printed at 0.2mm later height, 100% infill.
The print head mount is mounted between FAN2 and the extruder heat sink as shown below:
The mount is designed so that the laser’s heat sink can fit on it (just insert it in the rectangular hold of the heat sink). It might look a bit flimsy – and it is, but it gets the job done without adding significant weight to the print head 🙂 Keep it simple. We are not making commercial laser cutter.
After you have assembled everything – printed all the parts, mounted the laser on the print head and connected it to the FAN1 output, it’s time for calibration.
Calibrating the laser
Important: Lasers are not to be used by fuckwits! That said, with the laser I use, it’s a bit harder to damage your eyes, unless you stare directly in the beam. Nevertheless, I recommend using laser protection goggles for your safety! lasers can be dangerous, and you can permanently damage your eyes if you don’t take proper precautions or are fooling around.
I use these goggles: http://www.ebay.com/itm/380831301745. They don’t seem to be very good, but they work for this particular project – I’m still not blind 😉
To calibrate the laser, there are two things that you must do.
- Find the X/Y coordinate, at which the laser dot is more or less exactly on the lower left corner of the heat bed.
To do this, turn on your printer, and home it from the menu. Then from the Fan Speed menu, turn on the fan, and set it to 100%. This will turn the laser on. It will be easier if you lower the laser’s driving current from the laser driver’s trimmer potentiometer before you start. Set the trimmer to a position, at which the laser dot is visible, but not bright. Rotating counter-clockwise decreases the current (the and thus – the intensity).
Then using the Position menu of the printer, move the Z axis to 29mm.
After that, use the X Position fast and Y Position fast to move the laser dot exactly on the bottom left corner of the heat bed. Write down these X and Y coordinates.
- Focus the laser. To do it, increase the the X/Y position a bit, so that the laser dot is clearly visible somewhere on the heat bed.
Rotate the laser’s focusing lens, until the laser dot is smallest.
Now turn off the laser from the fan speed menu, and increase the current of the laser driver from the potentiometer by rotating it clockwise. Set it to something around 70-75% of its maximum position.
After these steps, I know that my X offset is 23mm, Y offset is 35mm, and the laser is maximally focused at Z = 29mm. Yours should be similar, but might not be exact.
In the end, you end up with usable engraving area of 197mm (220-X_OFFSET) x 185mm (220-Y_OFFSET).
If you now turn the laser on and put a piece of paper on the bed, it should be able to burn it. You should even be able to cut straight lines if you move the X/Y slow!
Note: Do not set the laser driver’s trimmer to MAX – you will most likely damage your laser, or shorten it’s life.
If you want to engrave something thicker – like a piece of wood, you have to use different Z offset. Just measure the thickness and add it to the default Z offset you use. For example, if you are engraving wooden plank that is 5mm thick, add 5 to 29, and you get Z offset 34. Enter that offset later when you get to generating the gcode.
You will be using the Inkscape vector graphics program for designing the images you want to engrave. Download Inkscape and install it, but don’t start it yet.
You will also have to install my Inkscape plugins package, that I have prepared specifically for this project. They are based on J Tech Photonics and EggBot Inkscape Plugins. I have added some new features for better gcode generation, removed some unneeded parts to make them simpler to use, and packaged the plugins in one zip archive.
Download Lokster’s Laser Engraving Inkscape Plugins and extract the contents of the zip file inside your Inkscape extensions directory.
- On Linux (my choice of OS!): ~/.config/inkscape/extensions/ (it’s a hidden directory – usually ctrl+h or ctrl+. shows it, depending on the desktop you use; create the path if it does not exist)
- On Windows: in the Inkscape install directory – share\extensions e.g. C:\Program Files\Inkscape\share\extensions
- Mac OS – same as linux
Here’s how your extensions directory should look like after you extract the contents of the zip file:
Now start Inkscape. I have also prepared a template svg file for you: anet-a8-laser-engraving-template.svg to help you use the extensions. Download the file and open it with inkscape.
It will be best if you go to File -> Document Properties and set the document size to match the engraving area dimensions (in mm) we calculated above.
Now you can start designing your graphics! Do not use colors or shades of gray – it won’t matter.
Also, do not set “fill color” on any shape – it also won’t matter, because the laser traces the paths. Best set the fill color to “none”.
If you want a shape to be “solid”, you have to use the “Hatch Fill” extension. What the extension does, is to draw dense zig-zag path inside the shape, and then groups it with the shape in one object. The laser can then trace the lines, effectively creating solid color or a grid pattern, depending on the settings you use.
To do that, you have to select the object and convert it to Path first:
Next, open the “Extensions” menu -> “Lokster’s Tools”, and select “Hatch Fill…”:
It will open this window:
For the moment, you can just use the settings from the screenshot. If the “Live preview” is checked, you can preview your settings before applying them. When you are ready, click “Apply”.
Here is an example of a text before using the hatch fill, and after using it.
Before hatch fill:
After hatch fill:
The lines can be denser, can be crossed, can be at different angle, etc. – go ahead and play with the settings.
Generating the GCODE
When you are ready for generating the gcode, you MUST convert all objects to paths and then de-select everything:
Now open the extensions menu, go to “Lokster’s Tools”, and click “Laser Engraving”:
You will see this:
Use the settings from the screenshot, but enter your offset values in the X,Y and Z offsets.
Enter the directory where you want your gcode to be saved, and the filename.
If you leave “Add numeric suffix to filename” checked, a new gcode file will be saved every time you press “Apply”. It will be named output_0001.gcode, output_0002.gcode etc.
You are ready! Copy the gcode file to your SD card, insert it in the printer and try to print it!
Remember – you must disconnect FAN1, and connect the laser to the FAN1 output. You can also connect FAN1 to the FAN2 output. This way it will be blowing constantly, and will blow away any smoke coming off from the engraved surface. It will be best if you secure the engraved surface with some clips.
The “Passes” setting defines the number of times to repeat the engraving process. It can be used with harder to engrave materials or for cutting paper, although I suggest using slower speed in such cases, as it is more effective.
However, because of the way the speed is calculated by the printer’s firmware, there is certain “minimum” speed below which you can’t go, no matter what speed you put in your gcode.
To avoid this limit, go to the printer’s settings and set X/Y travel accelerations to 100 (do NOT set them to zero!). Yes – accelerations. Yes – travel 🙂 They are used in the formula, and affect the minimum allowed speed. The change can be temporary – only for the current print. No need to save it to the EEPROM.
The “Pass depth” setting defines how many mm/inch the z axis will shift down on each pass. This is useful mostly for higher power laser cutters / CNC, and you can ignore it. just set it to 0 if you use multiple passes.
- Just in case, wear laser protection goggles
- Use the engraver in well ventilated area or in unused room which you can ventilate afterwards.
If you like this project, and you want to support me & show respect, you can make a small donation via PayPay:
As with everything on the internet, you are solely responsible for any harm to you or your printer!
The content on this document is licensed under the following license: CC Attribution-Share Alike 4.0 International
As suggested by some users, it will be better to use 5V DC-DC step down regulator module, instead of the LM317T. It will be more power-efficient, won’t require a heat sink, and will fit in the existing casing I designed.