For the last couple of weeks, I've been working on a custom laser scanner design. Basically, a laser scanner is a device that uses 2 mirrors to direct a laser beam to a specific point in space and it can, when moving fast enough, be used to draw geometric patterns onto some planar surface. The reason I'm interested in building a laser scanner is that they're a fundamental component of many CNC machines such as high-end 3d printers (based on the Selective Laser Sintering (SLS) or Stereolithography (SLA) techniques) or etching machines.
The plan is to first create a XY-scanner module that is capable of reasonable resolution (~50 micrometers = 0.05mm) within a small rectangular area (100x100mm) on a planar surface. The next step is to design an open-source laser etching module that can be used as an experimentation platform for different manufacturing techniques. The first steps could be laser etching or even cutting of very thin sheets of different materials. When this works, I imagine add-ons to this platform that enables SLS or SLA 3d printing with minimal external components.
I've completed a first prototype using stepper motors to drive the 2 mirrors. The stepper motors have a resolution of 0.9 degrees per step, resulting in 400 steps per revolution. This is nowhere near the resolution required but I wanted to experiment with how well microstepping can increase this resolution in practice. In theory, microstepping should increase the resolution by 32-128x depending on what motor driver is used. In practice however, the microsteps are not even enough to be usable. The motor can step 4-8 microsteps with reasonable linearity but every now and then a "microstep" occurs that is 2-4 times the angle of the others. Increasing the current limit makes it better, but the current required to make the movement reasonably smooth at low speeds is so great that the motor becomes extremely hot and starts to stall. I've tried with one Nema 14 motor with a rated current of 0.5A and one Nema 17 motor rated for 1.2A.
Bottom line: microstepping should really only be used to make the movement of a stepper motor smoother, not to increase its resolution.
So this leaves me with 3 options: use some kind of gearing to improve the resolution of the stepper motors, use off-the-shelf galvanometers or design custom galvanometers from scratch. I don't like option one because it seems overly complicated for the problem at hand (rotate a mirror over a [-15,15] degree range), there will be mechanical backlash in such a system, and geared stepper motors are both expensive and difficult to source. I'm not even going to consider option two because retail galvanometers are even more expensive and difficult to source.
This leaves me with option three, designing my own laser galvanometer. Since this is quite a big undertaking I will go slow and put this project on the back-burner for the time being. Time to focus on other stuff!
PS. I'm a newbie when it comes to electronics so please don't take my word for anything I say in this area.