EDIT April 2017: I've finally built an integrated controller that combines an AVR processor running grbl 1.1 and 4 motor drivers. No more messy wiring between Arduinos and separate controllers. This saved me hours of troubleshooting when one wire would accidentally come off and stall the whole machine. The controller is available for sale on Tindie.
I made this laser engraver mostly for cutting stencils for my PCBs but its applications are limited only by your imagination and the laser power. Most PCBs today have SMD components. You can solder these by placing the solder paste with a syringe on each pad but thats time consuming and not to mention impossibly tedious. For small batch runs its just unfeasible and that means getting stencils created. The regular Kapton and Mylar ones are reasonably priced but the aluminium ones are expensive.
I thought about getting a Silhouette Cameo cutter but I finally decided against it since the cutting resolution is limited to about 0.5mm (and that too with really slow cutting and some expensive materials). The answer - a laser!! The powerful 40W CO2 lasers are really expensive and we really don't need that kinda power to cut transparency sheets or mylar and neither are the really low power 300-500mA ones. Hence I opted for a 1.6W laser which can cut through acrylic sheets as well (upto 3mm thick) with multiple passes.
Before we really dive into it, a genuine you'll-weep-if-you-don't-pay-heed-to-this warning. If curiosity about what photons look like compels you to peek into an operational laser, that is the last thing you'll ever see. Lasers can burn the corneas in your eyes and make you permanently blind (the operative words being "permanent" and "blind"). Hence safety goggles are a MUST! I'm not responsible for any damages caused to you or by you by following this build.
Another warning: Even though the end outputs are low currents and voltages, they are still powerful enough to give nasty jolts. So don't go touching live wires or stick them on your tongue to see how they taste (you'd be surprised as to how many folks do this to check batteries).
You can get your safety goggles from ebay or Amazon for as low as $8. Get the red ones for the blue wavelength diodes which this one is.
With that out of the way, lets get to it!
Step 1: The Mechanicals and Parts List
This i'ble is primarily based off Skarab's laser engraver build. Except in mine, I redesigned the Z-axis mount with manual up and down mechanism (more on why this is needed is listed later on in the build) and I used simple aluminium bars wherever I could to reduce cost. This build is divided into two major parts: the mechanicals and the electronics (including the laser drivers).
Lets start with the mechanicals.
This setup measures about 500 mm x 500 mm (roughly about 20 in x 20 in) though you can extend it to whatever dimensions you want by getting the appropriate V-slot lengths. The included sketchup files on Skarab's build are of massive help and you get a good grasp of what fits where. Thanks for that Skarab! :)
Here is what you'll need in terms of parts for the mechanicals:
- V-slot extruded aluminum rods (20 mm x 20 mm) - For the X and Y axes - 4 half meter pieces (if you plan to make the bigger one, you'll need to choose length sizes accordingly).
- Delrin mini V wheels (these come as kits with two bearings and a shim (spacer) to be placed between the bearings) - 14 pieces. You can also get slightly lower priced polycarbonate ones but I have no idea how good or bad they are.
- M5 x 10mm screws, M5 x 6mm low profile and M5 x 30mm low profile or countersunk screws (for the Delrin wheels), M3 x 10mm screws, M3 x 15mm screws and M3 and M5 sized hex nuts. Most screws and nuts usually come in packets of 25, 50 or 100.
- Carriage mounting plates (STL files of these are attached here). I got these 3D printed in plastic but if you have access to a CNC get metal mounts.
- Aluminium spacers with M5 bores about half an inch thick. I didn't find these very easily and hence I made mine using three M5 nuts stacked on top of each other.
- GT2 timing belt
- GT2 timing pulley (20 tooth)
- 2 x 3mm bearings (623ZZ or 623RS)
- A regular flat head screwdriver (because my screws had flat heads).
- A drill with bits just a hair below 3mm and 5mm. I used 2.8mm and 4.8mm. The lower sized bits are needed if you intend to thread the holes, otherwise regular 3mm and 5mm bits are good.
- A hand threading M3 and M5 tap and screw
- A drill press (though this is not needed, it was immensely handy)
- Regular and nose pliers
- Much4_y_belt_bridle x 4
- Much4_y_belt_bridle_base x 4
- Much4_x_end x 2
- Much4_cable_bridle x 10
- LaserMount_X_carriage x 1
- LaserMount_top_cover (is included in the STLs.zip but is not needed)
- LaserMount_main_mount_hexnut x 1
Step 2: Building the X Carriage
The X-axis carriage is the complex one (relatively) because it holds most of the main components including the laser.
First, you'll need to build the individual mounts for the stepper motors on either side of the X-axis carriage. These motors are for the Y-axis motion. You can do with a single motor but they tend to arch the axis and hence lose resolution.
Insert the M5 x 30mm screws in the fixed hole slots. Use three M5 nuts as spacers and then insert the delrin wheels on to them. Fix everything in place with the nylon locking nut (part of the V-wheel kit).
Now fix the other two screws in the adjustable holes. You can move these based on how smooth you want the motion on the V-slots.
The motors are easily mounted using the 4 fixed holes. I used M3 x 10mm screws for this.
Don't tighten the pulley's on the motor just yet. Once the mount is fixed to the V-slots, you'll need to feed the belt and based on its position you'll need to tighten the pulley. Build these but don't mount them on the X-axis carriage just yet.
On with the X carriage mount. The process is pretty much the same as the Y-axis mounts except here you slide the mount on the V-slot that will serve as the X-axis. I mounted the laser towards the end since I didn't want it being damaged during the build. Fix the cable carriers below the X-axis V-slot. These are also 3D printed and they slide into the V-slot. Now fix the two Y-axis mounts on either side of the X-axis locking the laser and X-axis mount.
Loosely attach the belt tensioners on the X-axis ends. Thread the belt through one end and tighten this end. Now thread the belt below the wheels and over the pulley to the other end. Slightly tug on the belt to make sure its taut and there is very little slack and now screw tight the belt tensioner on the other end. Be sure to get the pulley locks in with the tooth part of the belt. This means that the wheels slide over the smooth part.
You'll need to collect all your wires on one side of the machine. Hence be sure to thread the motor (one of the Y-axis motors and the X-axis motor) the laser and limit switches (if you've configured them, I have not) through the wire carriers underneath. I used zip ties to bind them all together.
Step 3: The Laser Mount
This is not complicated but time consuming. First you'll need to insert the bearings in the holes shown above. They need to fit in snugly and not move. You may have to lightly sand the inner side of the holes to make then fit. Don't put too much pressure if it wont fit. That will crack the mount and make it unusable.
Then insert a 4-inch M3 screw through the top bearing and then through the laser mount. The laser mount block itself has two slots for M3 nuts. these also fit snugly on the mounts. Much of this mounting is easily visible once you have the blocks with you (sorry no pictures for that). Make sure you have two M3 screws on either sides of the bearing locking the 4-inch screw in place. As you turn the screw the laser mount moves up and down accordingly. Essentially we've converted rotary motion into a linear one, much like what the steppers do.
Also use 3mm metal rods that act as supports for the laser mount and keep it straight and levelled.
Why is the manual Z-axis motion needed?
With a laser, the beam is focussed on the cutting board below. However, the material thickness offsets this focus. With really thin materials such as films and paper this does not effect much, however with slightly thicker materials this reduces the laser power transferred on to the surface. This mount allows you to move the laser up by the thickness of the material and hence ensure that the correct focus is maintained all throughout. If you are doing multiple passes to cut, say 2mm plastics, with every 3rd cut you can lower the laser by about 0.5mm till you've reached the calibrated laser focus. I've pasted a printed scale in millimeters on the side of the mount and attached a needle on the top of the laser mount to show me exactly where the laser is perfectly focused.
Step 4: The Y-axis
The Y-axis mounts are relatively less complex to build. I had some pieces of flat aluminium bars lying around and I used these to mount the Y-axis V-slots. You could also use additional V-slots sized to the same length as the X-axis V-slot to mount them.
Thread the two Y-axis V-slots through the Y-axis motor mounts. These two V-slots need to be exactly the same length.
I drilled and threaded two holes on each side of the two Y-axes. I then placed these these on top of the aluminium bars completing the frame and locking both the Y-axis motors within the frame span.
Similar to the X-axis mounts, You'll need to mount end caps on each side of the Y-axis. These also act as the belt tensioners for the Y-axis. The process for this is similar to the X-axis mounts.
This completes the frame and the mechanical build part. You should now have all the wires on one side of the frame.
Next step: The electronics.
Step 5: The Motor Drivers
Here is the parts list for the electronics:
- 4 x Nema 17 stepper motors
- 3 x A4988 driver boards
- 2-pin 2.54 pitch connectors (headers and female connectors. Use Relimate or Molex KK 254)
- 12V, 3A power supply
- 2.54mm pitch berg strips (male and female)
- 3 x 100uF/25V capacitors
- Arduino Genuino/Uno R3
Stepper motors are used for moving the axes since they can be moved with very precise resolution. There are plenty of motor drivers and I'm using the A4988 ones. They are quite cheap and they've served my purpose really well. You could mount these on a breadboard but I made a nice PCB for these (the Gerbers and schematics are attached here). These connect to the Arduino loaded with GRBL.
This link from Pololu shows exactly how to connect the A4988 to the stepper motors and how to set the current limit on them. Pay special attention to how the current limit is set. Out of the box, no reliable current limit is set on the A4988s.
In my board, there are two jumpers that allows two drivers to share the same step and direction signal for the two Y-axis motors - XY STEP and XY DIR. When set, the bottom two A4988s drive the two Y-axis motors based on the same step and direction inputs from the Arduino. One important point of note: The two Y-axis motors rotate in opposite directions since they are on either side of the X-axis. Hence one of the Y-axis motors needs to be reversed in direction. This can be done by reversing the motor coils in comparison with the other Y-axis motor.
GRBL is the software that coverts location information on the XYZ plane to machine code and translates it for the motor drivers that then drive the motors to that specific location. In our case we've used only the X-Y plane. More on how to install GRBL is described later in the build.
Step 6: The Laser Driver
This is probably the most important part of the build. Most modern diode-based lasers need to be driven using constant currents. The one I got was a Osram PLTB450B from DTR's laser shop. I chose this one because in case of an excess current these simply shut down and when the current comes back in the specified range they start lasing again. These are rated for about 2A but I would advise against driving them at that value to prolong their lifetime. The driver described here drives it at 1A constant current and is rated upto 1.4A maximum.
There are plenty of laser drivers available but they are expensive and I did not need any of the additional features. With this driver, there is no way to modulate or control the laser power which is needed when you want to engrave images with varying shades of grey.
This driver is based on ST's ST1CC40 constant current LED driver. It has many of the characteristics that are necessary for the laser too such as a soft start. The driver accepts a 12V input and outputs 1A upto 5.5V. The Gerbers and schematic for this driver is attached here.
If you are using this driver, a point of note: Do not connect both the INH headers and the MCU input. If you use the INH headers, the driver can be used as a standalone 1A constant current source. If you connect the MCU input, you'd be able to turn the laser on and off from the Arduino.
It is also advisable to get a heatsink for the laser. I bought a 51mm x 51mm heatsink with a small 12V fan in it from ebay. These are quite commonly available. The laser mount attaches to the fan heatsink as shown in the images. I did away with some of the paint inside the laser mount and used a little heatsink material between the laser module and the mount.
Step 7: Bringing It All Together
Its time to connect it all together and install the software.
You'll first need to install GRBL on Arduino. This is fairly straight forward. Download GRBL from here. Unzip the grbl-master.zip and you'll see another folder called grbl here. Add this folder as a library in Arduino. Now all you have to do is restart Arduino, select grbl from the File > Examples and hit Upload.
You can verify the upload by opening the serial monitor and you'll see the GRBL opening lines along with its version.
Setting up GRBL
Before we get started, you'll need to configure GRBL to your motor specifics and the required resolution (or micro-steps). I've set mine to 1/16 microstep (this is also listed on the Pololu page). This means that every motor resolution is divided into 3200 microsteps. Be careful when using this level of micro-stepping since higher stepping usually comes at the cost of reduced torque.
Since we've used a 20-tooth pulley and a 2mm timing belt, we need to calculate steps per mm count for GRBL. You can use this handy calculator from Reprap for this. For us this count is 80. From the serial terminal you will need to type $ and press enter to change this value for the X and Y steps/mm. You can similarly change other values. I've not touched the homing settings in mine since I'm not using it in my setup. Its a good idea to set the maximum X and Y limits the motor will travel and the acceleration values as well. I've set my acceleration values as 6000 for X and Y and left the Z untouched (since I'm not using the Z axis).
You'll also need to connect Step and Dir pins to Arduino. For the X-axis connect to Arduino D2 (step) and D5 (dir) and for Y-axis this is set to D3 and D6. Connect the laser to D11. Remember that all grounds on all boards should be connected. The Arduino is powered through the USB of the connected machine.
Inkscape is the preferred choice for converting vector graphics into Gcode and the latest version of Inkscape comes preloaded with G-codetools which is very handy. I won't go into the details of how to use these since there are awesome instructables and tutorials on these on the web.
I eventually mounted the entire setup on a plywood board cut to size which has a 1mm Aluminium sheet on it. This now acts as my cutting board. The whole thing is enclosed in a black plastic enclosure with a red translucent top as a safety cover.
Step 8: What Can It Do
Here are some images of what it can do.
I've been regularly using it to create stencils. I experimented with plenty of materials and finally settled on Vinyl. The last stencil that you see has a chip with a pin pitch of 0.65mm while the one on the plastic sheet is a QFN with a pin pitch of 0.5mm and the laser resolved this with no problems. For 0.5mm pitch though I had to use a 1mm plastic to build the stencil.
Thats it for this instructable. If you build it, I hope you have just as much fun as I did.