I am kind of lazy, so I built this with "easiest" way -- keeping laser stationary, this reduce some complexity. This is perfect way to learn GRBL and CNC control.
Some important notes: the CNC Shield sold in (or bought from) China are of V3 version, it is not compatible with latest GRBL v1.1, so the spindle should be connected to Z+.
Arduino Uno + CNC Shield V3 + GRBL v1.1. Note, with CNC Shield V3 and GRBL v1.1 (starting from v0.9), Spindle EN is PWM signal and is wired to Z+ on the board.
DRV8279, both X and Y axis are set to 1/32 microstepping mode to smooth out motion
GRBL v1.1 Setup:
$100=213.333 $101=213.333, download link: Releases · gnea/grbl · GitHub
Generic 500mW laser module with PWM input. Note, maximum of GRBL S (set spindle speed) command is 1000, so S400 is 400/1000=40% power.
Two mechanical parts from old CD/DVD player are used. Of course, you can buy the CD/DVD player themselves. Most of the motor used in these is 18 degree motor (20 steps per revolution) and the pitch of the lead screw is 3mm. Therefore, for GRBL $100 and $101 parameter at 1/32 microstepping mode, it is (20 * 32) / 3 = 213.33 steps/mm