All things CNC (spindle/router based, subtractive fabrication).
If it’s generic (e.g. G-Code related, 2D or 3D design) then please add it to the appropriate wiki post.
Small CNC Machines
Small CNC machines can be very capable, but need some special consideration compared to larger machines.
In particular, they lack rigidity, moving power, and spindle speed/power.
In a nutshell when the machine is working correctly, the end of the cutting bit is:
- Where it should be (not displaced due to flex/slop in the frame; not pushing so hard it’s bending)
- Cutting the right way (climb vs conventional cutting) for your machine setup
- Cutting, not rubbing - chips need to be sliced off, they’re the key means for transporting heat away! (Overheated bits don’t cut, dull faster, and increase the loads on the machine immensely!)
Make sure the cutting area is always clear of any debris. Recutting chips is bad news!
Ensure you’re using an appropriate spindle and movement speeds. Going too slow can be as bad as going too fast!
Smaller machines sometimes do better with smaller cut depths/widths with faster feedrates compared to what might be recommended for bigger machines. A good feeds & speeds calculator will let you play and see what combinations will create workable chip-removal-rates.
I recommend looking at CNC Cookbooks G-Wizard: it has reduced my failure rates and improved the final surface quality.
- CNCCookbook Blog - lots of informative articles about CNC, covers beginner to advanced.
- CNCCookbook - Stop Breaking Cutters on Small Machines! - excellent article with lots of tips for small CNC machines.
Courses and Tutorials
- Instructables CNC Class - good intro, very AutoDesk product focused
- Destiny Tool’s Speeds & Feeds Primer
- Autodesk Fusion 360 CAM Help pages
- Guerrilla guide to CNC machining, mold making, and resin casting- “Home manufacturing tutorial for robot builders, model makers, and other hobbyists”
- Speeds & Feeds 101
Feeds & Speeds Calculators
- CNC Cookbook GWizard Feeds Calculator - free trial, paid calculator. Uses a heuristic that takes into account material, end-mill, operation, machine power, machine rigidity, end-mill rigidity, speed vs quality, chip removal rate, etc… . All presented in a straight forward UI that gives simple sliders for the major variables. Clear estimates of how these parameters fit within the expected capabilities (rigidity, power) of your CNC. Julian found that it noticeably improved cut reliability & quality on a small ShapeOko.
Here is a slightly different version- with motion planning and motion control separated into their own steps.
Many low-end devices- eg Arduino + GRBL shield, TinyG, UC100, Mach3 + parallel port, LinuxCNC + parallel port, etc- use a GCode sender to be the UI, and provide both the GCode interpreter and motion controller.
This limits the maximum step rates, and can introduce jitter (axis moving slightly out of sync.)
For less powerful CPUs (eg Arduino based), there are further limitations:
- the G-Code interpreter may be limited, have bugs, and can only process a few instructions at a time
- motion control may be limited to only being able to use velocity and acceleration
Advanced motion controllers look ahead at many GCode instructions to be able to calculate velocity, acceleration, jerk (change in acceleration) and even higher order derivatives of the motion curve to make sure the machine is always within it’s capabilities. Future requirements may even “ripple back” to earlier motions and cause adjustments.
So advanced CNC controllers have the UI and motion planning done on a more powerful PC.
Once the motions are planned (enough in advance) they can be queued to a dedicated motion controller that is responsible for generating all the motor step + direction pulses at high-speed with precise timing (accurate frequency and low jitter.)
Note: klipper is an interesting project: it uses an Arduino as just a motion controller and shifts the GCode interpreter and motion planning
PC as UI, GCode Interpreter, Motion Planner, and Motion Controller
This will focus on LinuxCNC and MachineKit. Mach3/Mach4 are similar, but are for Windows.
Note: all of these tools seem to have a common history tracing from NIST and EMC.
Some of MachineKit’s documentation is a little more up-to-date, and often applies equally to LinuxCNC- for example setting processor affinity, etc.
In all cases, this setup uses a parallel port for control.
You need a “real” parallel port, not one connected via USB. By it’s shared nature USB can add random delays in the output being updated. As well, it may not allow the pins to be setup as both inputs and outputs.
EPP mode is desirable.
LinuxCNC has a page with recommendations for what to look for.
You may have luck finding something on Amazon by searching for “LinuxCNC”. One such card is this. Some of the reviews mention using it successfully with LinuxCNC.
Even better if you can find an older PC/motherboard with a parallel port.
Also look at the software’s requirements carefully: they usually recommend an older, not hyper-threaded CPU, running an OLD version of Debian/Ubuntu.
This is because Intel CPUs, and Linux, are not really designed for real-time operations! Especially newer desktop CPUs, which are designed for THROUGHPUT of calculations, NOT precise timing.
(Note- this is great if it’s to be the UI + motion planner, with motion control being done on a dedicated device.)
The same goes for the Linux kernel; there are some (closer to) real-time patches which no longer work with newer kernel.
In practice, the older kernel + patches result in lower jitter than the newer variants.
Some references for improving (decreasing) jitter:
- LinuxCNC starting point for real time - start with disabling hyper threading…
- LinuxCNC fixing SMI induced issues
- LinuxCNC SMP improvements - dedicating cores and other tricks to try and improve things for multicore machines.
- long thread on LinuxCNC forum
- MachineKit bug re latency
- CNCRouter Shop - division of AXYZ, a Canadian CNC manufacturer
- Quality Saw & Knife, Vancouver - supplier, make custom bits, do sharpening
Some materials (e.g. vinyl) need to be cut with a knife, not a spinning bit.
However the motion for cutting has it’s own complexities- the knife ‘follows’ the tool holder, like a trailer.
Special cutting paths are needed to compensate for this.
- cutting script for CamBam - make sure to read all pages; there are updates to the script later on
- more/updates on the CamBam script
- 3D printable drag-knife
- Excellent design for the cost of a beer - NOTE: Julian paid for the plans but has yet to make it…
- construction foam is good for learning/prototyping, but avoid excessive RPM (“Golf ball of hard goo”)
- higher density EPS/XPS would be good to try- eg Formular 1000, which is used in roads, engineering, etc.
- polyurethane foams are often used for high-quality machining: eg Renshape
- next to no tool wear
- self lubricating
- can provide high detail levels
- can be reclaimed
- can be used to mold some plastic resins directly
- Hack-a-Day article
- list of recipes, comments, and links
Types of CNC
- Software to generate g-code paths: https://www.jedicut.com