I've had great success with my inexpensive AnyCubic 3D printer that I got on Amazon Prime day, so I finally decided to get myself a low cost (under $200) CNC mill. I wanted to get something that would allow me to drill holes with reasonable accuracy and also mill PCBs. I settled on the SainSmart Genmitsu CNC 3018-PRO. It has an XYZ working area of 300x180x45mm which is sufficient for most things that I do. It uses GRBL rather than Mach3 control firmware but I think that should be sufficient for a beginner like me. One reason for the low cost is this is an assemble it yourself kit. Good news is that even with 3 trays of parts the assembly only takes about an hour or so.
Here's the box full of parts:
The Arduino based Controller PCB:
- 3 driver boards and connectors on the right for the X/Y/Z stepper motors
- Spindle motor driver and connector on the left
- There are also connectors and circuitry for an optional laser module and display
The front view of the assembled unit:
The rear view of the assembled unit (need to finish the wire management):
GRBL Control software (Candle)
The kit comes with a mini CD with software, drivers, and test jobs. My first application is to cut some proto PCBs to fit on top of MKR 1300 boards that I am using for my LoRaXes project, so I just need the ability to make linear cuts. This is my first real experience with CNC and I'll need to figure out a tool flow that works for me. I intend to use Openscad for CAD since I use that with my 3D printer and it exports DXF and SVG formats in addition to STL. I need to figure out what to use for CAM (the equivalent to a slicer for 3D printing) to generate the GRBL GCode for the router. The kit comes with a GRBL control program (Candle) that allows you to import and edit GCode and to visualize and control the CNC job.
For this simple job I just manually entered the GCode directly into the program. Here is the the GCode:
(GCode for simple linear cut along Y axis) (X=Y=Z=0 is set to surface of PCB at beginning of cut) G90 (Use Absolute Coordinates) G1 Z5 F500 (Move Z to 5mm with Feedrate 500mm/min) G1 X0 Y0 (Home X and Y with Feedrate 500mm/min) M03 S1000 (Start spindle CW with Speed 1000rpm) G1 Y-1.0 (Move to Y -1mm with Feedrate 500mm/min) G1 Z-0.7 F100 (Move Z to -0.7mm with Feedrate 100mm/min) G1 Y31.0 (Move Y to 31mm with Feedrate 100mm/min) G1 Z5 F500 (Move Z to 5mm with Feedrate 500mm/min) M05 (Stop spindle) G1 X0 Y0 (Home X and Y with Feedrate 500mm/min) M30 (Terminate program)
I manually increase the cutting depth (line 10) for each cutting pass. I don't think there is a "looping" construct in GCode so I'll just need to add multiple passes once I get the spindle speed and feedrate figured out for the PCB material and tool that I am using. I copied and edited code from one of the sample jobs that was included. I'll need to determine what the spindle speed setting is actually doing since the spec indicates 3 speeds: Spindle: 775 motor, 12V, 3000 RPM; 24V, 7000 RPM; 36V, 9000 RPM. I don't know if the controller has a continuously variable voltage that would allow you to interpolate/extrapolate speeds (the line I copied had 1000 RPM).
Two things that I wish that they had provided with this kit - a decent set of clamps and some sample end mills. I couldn't figure out how to use the "clamps" that they provided and the only routing bits they provided were "V" cutters that are suited for engraving in wood. I couldn't figure out what type of clamp to use with the small PCB, so I 3D printed a fixture to hold it and to provide the "waste board" structure under it. Luckily I had also salvaged some short 0.8mm end mills from somewhere in my past life.
Short video of first milling attempt