…using only a computer, LinuxCNC, and lots of scrap cardboard.
Every hackerspace needs a laser cutter. Unfortunately, they can be very expensive. Deals like the one Hacklab.to got don’t happen very often. However, there are factories in China turning out laser engravers and selling them on eBay for relatively cheap. We found a local distributor that appears to buy them directly from China, make sure they work, and resell them.
We received our laser in good shape. It came with a 240V blower (now junked), a 240V pump (also junked) and a 120->240 stepup transformer (now unnecessary) to power both of them. It also came with MoshiDraw 6 and a USB copy protection dongle.
It didn’t take us long to decide that MoshiDraw wasn’t going to work for us – the software and manual are badly translated and it doesn’t support vector motion (essential for cutting). The interface between MoshiDraw and the controller may be some subset of HPGL, but not in any useful way. Feeding HPGL directly from a file to the laser resulted either in nothing happening or in unpredictable, inconsistent behaviour, even when the file was produced by MoshiDraw itself.
At this point we decided to follow the route Hacklab.to took, and replace the internal driver electronics with a board that can read step and direction signals from LinuxCNC
Once that decision was made, there were two options: build a controller, or buy one off the shelf. There are dozens of commercially available stepper driver boards. They can be expensive, and most of them have more features than we need. Also, just buying a drop-in solution is no fun, so we decided to build one.
The driver is basically just a double implementation of the reference design for the Allegro A3982 plus an optocoupler to activate the laser and a connector for the end stops.
I chose the A3982 because it has a translator built-in (translates step/direction signals into the right sequence for driving a stepper), and because it’s available in SOIC which meant I could use an SOIC to DIP adapter when breadboarding the circuit and when building it on perf-board. If I were to get a PCB made, I would probably use one of the Allegro chips that supports 1/4, 1/8 or even 1/32 steps (only available in TSSOP or smaller). Be sure to read the A3982/83/84 FAQ if you decide to use the chip.
The only hard part of configuring LinuxCNC is the end-stop/home sensor settings – it takes a bit of thought and experimentation to get the right combination of approach direction, inversion of signals, identification of the signals, and so on.
We chose to use the Spindle ON signal to activate the laser because it’s the one that makes the most sense, and it should allow for PWM output when we decide to work out computer control of laser power. We initially routed that signal to parallel port pin 1, but discovered that pin to be active low – meaning that it is held high until LinuxCNC starts and takes control of the parallel port, possibly resulting in the laser being activated unintentionally.
Here are the important parameters for our laser:
Motor steps/rev: 400
X Leadscrew Pitch: 0.626 rev/in (determined empirically)
Y Leadscrew Pitch: 0.626 rev/in
Home X and Home Y signals in LinuxCNC are connected to the optical end stops on the gantry. Both signals are set to invert, and the Home Latch Direction is set to “same”.
The end result is that we have a laser that can easily cut 5mm acryclic, 1/4″ hardboard, 1/4″ poplar, and etch nicely on many materials.