After experimentation with my own CNC milling hardware, I decided to instead purchase a 3020-aluminum based CNC engraver.
This relatively-inexpensive device was sufficiently sturdy to repurpose as a mill, for low-hardness materials.
I found the hardware overall to be fairly sturdy, with stepper motors driving lead screws to move the x, y, and z axis.
Each stepper motor micro-step moves each axis 0.00254 mm (2.54 µm) -- which probably means this device was designed around Imperial standards,
because that nicely translates to 0.1 mils (1000 mils = 1 inch) per micro-step. By default, each stepper motor runs at 16x micro stepping,
with 1600 steps per axis revolution.
In practice, this device isn't nearly that accurate, but it's nice to see the limitation is not in the control hardware.
The software that came with the device required both Windows XP and a Parallel port.
Having neither, I decided to write my own using the microcontrollers I had on hand.
With those microcontrollers, I wrote the following:
Version 1: This initial software verified that I could drive the mill, at a pitifully slow speed.
Version 2: This software worked excellently -- until the Raspberry PI had software interrupts which caused stuttering.
Version 3: I tried writing code for the Parallax Propeller, which was even slower than the Netduino -- too slow to be usable.
I stopped trying to reinvent the wheel and bought an Arduino Nano and installed GRBL
Unfortunately, the Arduino Nano is significantly more sensitive to voltage transients when running the
mill spindle. I have to run the mill at a slow feedrate and spindle rate to avoid resetting the device.
However, I'm able to run at a reasonable rate, unlike the Netduinio, Parallax Propeller, or Raspberry PI.