CNC controllers are computer numerically controlled (CNC) devices that control machines and processes. The CNC Controller or CNC Control is the package of electronics and software that take input either from g-code or the CNC control panel and converts it to the signals the CNC machine’s motors need to move the CNC axes
Types of CNC Controllers¶
Industrial OEM CNC Controllers:
- Pros: Industrial OEM CNC Controllers are the ones used on Industrial CNC Machines like Haas. They’re the very hind end of the market.
- Cons: These are not very common for DIY projects due to their expense. Not only is the controller itself expensive and fairly hard to come by.
CNC Retrofit Controllers: Just a small step down from Industrial OEM Controllers are CNC Retrofit Controllers like Centroid.
- Pros: These controllers are marketed for converting manual machines to CNC, for example, a Bridgeport manual milling machine. They’re also sold as a way to update obsolete controls on industrial CNC Machines to bring the more up-to-date features and performance.
- Cons: They’re still not cheap, but they’re starting to fall into the range of what a DIY CNC’er might afford.
PC Based CNC Controllers There are three main players in this market
- Mach 3 & Mach 4
- Microcontrollers: USB, Arduino, Rasperry Pi, TinyG, & More
All three have good reputations with varying trade-offs of features, functionality, price, and ease of use.
Details of PC based Controller¶
1. Mach 3 & Mach 4¶
According to our 2017 Survey, Mach 3 is the most popular CNC Controller at the low-end, with 47% market share
- Converts a standard PC to a fully featured, 6-axis CNC controller
- Allows direct import of DXF, BMP, JPG, and HPGL files through LazyCam
- Visual Gcode display
- Generates Gcode via LazyCam or Wizards
- Fully customizable interface
- Customizable M-Codes and Macros using VB script
- Spindle Speed control
- Multiple relay control
- Manual pulse generation
- Video display of machine
- Touch screen ability
- Full screen eligibility
- Cost = $0
- Configure any motor driver
- Customizable interface and VB scripts
- Mach3 uses a parallel-port transfer protocol which isn’t compatible with most computers today
The “father” of all low-end CNC software LinuxCNC is Open Source software, which means you can actually obtain the latest source code should you wish to understand or modify it. It also means that a much larger audience, including companies like Tormach, can contribute to LinuxCNC. Also need to check this LinuxCNC Supported Hardware before choosing the controller.
- As numerous persons have worked on this software, it offers a huge flexibility. It may, however, be confusing for some beginning CNC milling or looking for a compact software without unnecessary options;
- The community of LinuxCNC offers a lot of help to newcomer and is almost always able to solve issues.
- The features and possibilities of LinuxCNC are almost endless, but the learning curve is also important.
- The software may seem overwhelming at first; As a real-time application, it runs on parallel transfer and doesn’t support a USB-parallel adapter, which is hard to use on modern computers;
- It’s quite complicated to adapt the user interface to your needs.
Pros over Mac 3 & 4:
- Linuxcnc is the motion controller running in realtime on the computer. This is 99% good. (sometimes it is an issue finding a computer that runs realtime well) This allows you to have control of the real time subsystem. (and doesn’t require expensive external motion controllers)
- If you build your own machine with LinuxCNC then you can alter and modify it any time you want to, without being tied to a manufacturer for upgrades.
Flashcut CNC is an American software developed as an integrated CAD, CAM and CNC control solution. It is Windows-based and runs with its own integrated hardware.
Even while FlashCut comes only as the sixth most used CNC control software with less than 2% of market shares, it still is a reference for the robustness of its solution and is more oriented towards professional users than hobbyists.
- It comes with its own hardware which turns out to be quite stable.
- The transfer protocol FlashCut CNC uses is USB.
- It runs only on Windows, so no possibility to develop a standalone system based on a Raspberry Pi.
- As PlanetCNC, the solution is more expensive than hobbyist solutions, but there’s a reason for it.
Microcontrollers: USB, Arduino, Rasperry Pi, TinyG, & More¶
CNC Microcontrollers are a relatively new development made possible by continued advances in miniaturization and software. The idea is to put everything you need on one small circuit board, or perhaps a microcontroller board with a daughterboard commonly called a “Shield”. a quick list of all the most popular CNC Microcontrollers:
GRBL + USG¶
It is actually an open source software that allows microcontrollers like Arduino to receive G-code from a computer, through USB transfer.
- Arduino is a well-known microcontroller and it’s quite easy for DIYers to build a homemade CNC with the GRBL system;
- It’s the easiest setup for small machines and first-time home made CNC’s;
- Software is free and hardware is cheap;
- You can choose your favourite software to generate G-code.
- Grbl is very easy to get up and running and can be considered the cheapest option, but it only supports 3 axes by default.
Arduino cannot handle huge works and complex milling actions;
This setup can quickly become the bottleneck of your system.
The TinyG codebase was forked from grbl in 2010 and has been going its own way ever since. TinyG claims to do some things better or differently.
- grbl is an XYZ 3 axis controller (i.e. a cartesian robot). TinyG is a 6 axis controller that runs XYZ and also ABC rotational axes.
- In grbl the velocity profile during acceleration and deceleration looks like a pure trapezoid in time. For example the move starts at zero velocity, then velocity ramps in a straight line to the target velocity, then decelerates in a straight line back to zero. In TinyG the velocity profile is an S curve that ramps to the target velocity during acceleration and in reverse during the deceleration phase. The means that you can run to motors harder in transition and hence operate at faster accelerations and decelerations. It also means there are fewer machine resonances excited (that cause chatter and other problems) as the jerk term is controlled. Jerk is a measure of the impact a machine is hit with during a velocity change. See: TinyG driving an Ultimaker and driving a Shapeoko. The machines are not fastened to the table and don’t jump around because of the jerk control.
The electronics that control a CNC are basically composed like this:
- Each axis is controlled by one or two motors;
- Each motor gets its instructions from a driver;
- A central breakout board sends instructions to the different drivers, based on the information it gets from a control software;
- A control software, which is directly connected to the controller with a transfer protocol (usually USB or Parallel DB25). Except on industrial CNC machines, the control software is usually running on an external device like a computer.
CNC Breakout Boards¶
Thee CNC Breakout Board has two functions:
- i.e. Translate the signals used to run a CNC machine to and from the signals a PC expects and
- Isolate the PC Motherboard from electrical problems that would otherwise fry the Motherboard.
There are two types of Breakout boards:
- Parallel Breakout board
- Motion Control Boards
Parallel Breakout board¶
Parallel CNC Breakout Boards connect to your PC’s parallel port and convert those signals to screw terminals which you may then use in point-to-point wiring to connect up the rest of your system. These are the most commonly used type of breakout board. They’re simple, and relatively inexpensive
There are limitations on its performance, particularly when used with Windows software, such as with Mach 3. You will be limited in how quickly you can send and receive the signals from the board, which may in turn limit the performance of your CNC.
The second limitation is that of compatibility. PC manufacturers are gradually phasing out parallel ports altogether in favor of USB, and in the meantime, they are sharply controlling the power consumption of these interfaces. As a result, many later model PC’s use 3.3 volt signals instead of 5 volts.
Lastly, parallel ports have relatively few I/O channels. Boards typically support 11 or fewer outputs and only 5 inputs. As one can imagine, these go quickly, especially if they are trying to connect an elaborate control panel to their machine. For this reason, either have a choice to “keep it simple”, or will need to add one or more additional boards to get the job done.
For most low end applications, this is not a problem. For better performance, we need to use a Motion Controller .
Motion Control Boards¶
The Motion Control board is a piece of dedicated hardware whose sole purpose is converting motions to driver control signals. It can’t really be interrupted because it doesn’t do anything else, which is great in terms of providing smoother and higher speed motion. The role of a Motion Controller is to accept higher level commands and generate the pulses. The result is much higher performance at a slightly higher cost.
Choosing guide for CNC Motion Contoller Board:
- It is vital for the machine’s stable functioning to get a controller with enough input and output signals. It will help maintain the flow, but it will also increase the durability of the machine
- To control the axis number used simultaneously, calculate and compute, you need a controller with enough processing power.
- A controller with about 1000 block looks ahead functions will be great to calculate with higher speeds and accuracy.
- The controller will be able to supply power to the IO port if it’s the best one. A higher voltage supply is what makes a difference. With a high voltage supply, the controller will let you work efficiently and without any disruptions.
- Another important consideration is making sure that the motion controller has enough outputs to control your various peripherals. The most basic PnP will have 1 output; usually a nozzle vacuum solenoid. More complex machines may have additional solenoids for exhaust and blow off, switches for pumps and lights, solenoids for feeders, etc.
- Recommended control separate peripheral and USB power supply connections is more than a blessing
Based on lots and lots of different builds, many people recommend a Smoothie based board for most machines. Smoothie is an Open Source motion controller firmware that runs on a variety of affordable, all in one boards. It’s easy to configure, well documented and works great with OpenPnP. Some Smoothie based boards that are known to work with OpenPnP, and which you can buy online are:
- Smoothieboard: The original. Buying this board helps support the creators of Smoothie. Available with up to 5 stepper drivers and 6 MOSFET outputs.
Cohesion3D Remix: Created by an OpenPnP forum member, this board is designed with PnP in mind and has up to 6 stepper drivers and 6 MOSFET outputs. This board is great for larger, more complex machines.
Azteeg Panucatt Devices sells a series of Smoothie based boards called Azteeg. There is a review here.
- Re-Arm: Panucatt Devices also sells the Re-Arm, which is a Smoothie based board in the form factor of an Arduino Mega. This allows it to be used with existing RAMPS 1.4 boards which are common in the 3D printer world. \ Note that MKS Smoothie clones are not recommended. See this FAQ for more information on why.
Best reviewed Other CNC controller boards¶
1. Best Mach3/Mach4 CNC Controller¶
- the Ethernet SmoothStepper (ESS) is a high-performance, 6 axis external motion controller for Mach3 and Mach4. It is capable of producing pulses at very high frequencies and with extremely low jitter compared to the Parallel Port driver and microcontroller based solutions
- Motor control capability up to 6 Motors (Step and Direction, Quadrature, or CW/CCW) and max frequency upto 4 Mhz.
- The Ethernet SmoothStepper (ESS) requires an external 5 V power supply to operate. The ESS has a typical current draw of 0.3 A (when Ethernet communications are active) but can consume up to 0.5 A. We strongly recommend at least a 1.0 A supply. The ESS is intended to connect to your equipment via a “parallel port breakout board”. This is a board that has one or more connectors that have a parallel port interface. For a Spindle that is controlled by a 0V to 10V Analog signal, you will need a Break Out Board that can convert a PWM, Step/Dir, CW/CCW or Quadrature signals into a 0V to 10V analog signal (and also provide one or two relays to control the VFD.
Recommended paralled BOB for ESS:
One of the best breakout boards for using with the ethernet SmoothStepper is the C25XP - Smooth Stepper Integrated Board from CNC4PC, a Florida-based manufacturer. C25XP breakout board can be bought either as a separate breakout board or with ESS integrated to it.
2. Best LinuxCNC Controller¶
The best motion controller for running a LinuxCNC based CNC machine is the Mesa 7I76E controller board.
It is beneficial to have a separate ethernet controller card like Mesa 7I76E instead of just using your PC as the controller for several reasons:
- An ethernet based card like Mesa 7I76E eliminates the need for having a computer with a parallel port and you can run it off even a laptop.
It transfers the bulk of the heavy lifting off your computer to the card like the hardware step generation and encoding.
Inputs can switch 5 to 32 volts, output can switch 5 to 28 volts.
- The card allows connecting encoders like a spindle encoder, which can give you feedback and alert you in case of issues.
- Gives you significantly more i/o pins compared to the parallel port.
- Isolates your computer from the circuit of the CNC.
3. Best Raspberry Pi CNC Controller¶
The drive systems of CNC machines, 3D printers, and other automated tools traditionally have at least four components in the chain. There is the computer which sends G-code commands, a controller board which interprets those commands and turns them into stepper signals, drivers that power the stepper motors, and the stepper motors themselves. Each of those parts costs money, so making any one of them unnecessary is a good thing — which is exactly what Raspigcd does.
The Raspberry Pi G-CODE Interpreter removes the need for the controller board by bypassing the control board and sending stepper motor signals directly to the stepper drivers. It runs on both the Raspberry Pi 2 and 3, which then connect to the stepper drivers through the GPIO pins. That eliminates the need for an intermediary device like an Arduino or purpose-built control board. Aside from saving money, using Raspigcd also affords you the opportunity to create an interface for your 3D printer or CNC mill that runs completely on the Raspberry Pi
- The Buildbotics is a 4-axis CNC controller and both the hardware and software are open-source.
- The decision to make the controller open-source will help ensure that the development of this controller doesn’t stagnate like many other proprietary controllers.
- You don’t need a dedicated computer to run this controller.
4. Best GRBL CNC Controllers¶
These seven are some of the best GRBL CNC controllers that have been enumerated for better guidance of an Arduino user. These controllers are mostly used by DIY enthusiasts when they are building their own custom DIY CNC machine.
Masso CNC Controller¶
Masso also enables you to handle compatibility issues with ease than other controllers. With Masso as a CNC controller, you no longer have to worry about frequent crashing of the PC hard drives, virus and file corruption. Also the Masso G3 is many times faster than its previous version Masso generation 2 controller since the new version has better performance and also seamless spindle control and many other functions.
- One of the core areas where Masso triumphs over others is that it comes with lighting fast startup times
- It usually takes less than 10 seconds to boot. In other words, you are all set to commence with your G-Code in no time
- With Masso, you eliminate the cost of hardware systems. There is no need of any UPS or hardware
- You can use this controller in environments that are heavily polluted
- No cooling fans required. It comes equipped with its own cooling system
- You can resume the machine right after power failure
- Masso has detailed documentation on their website for wiring instructions for all popular VFD spindles.
- It is worth noting here that the Masso G3 controller has only two Y axes. This is the reason that you have to order the 4-axis version so that the controller can work properly with the machine. Always remember that the this controller doesn’t come with stepper drivers. Hence, you need to get two stepper drivers and connect to the Y-axis.
- Also, note that you need to get separate stepper drivers for the X and Z axis also. Thus, for many people out there, getting a 4-axis Masso CNC controller is a practical choice. With a 4-axis controller, you would be able to slave the Y axis to A-axis. Furthermore, would have the option to wire up the 4-axis Masso directly to the controller.
- Masso G3 has control software for three types of CNC machines, CNC mills, CNC lathes, and CNC plasma cutter.
- The hardware is the same (Masso G3) for all three types of CNCs, but the software is different.
- It needs a power supply that can deliver 12 and 24 VDC voltage with a minimum 1.5A output.
Some other Masso models can be found here.
Best PlanetCNC Controller-Best CNC Controller¶
- PlanetCNC has – to some opinion - the easiest to use interface that allow a quick taking in hands. It also has a handy G-code manipulation window that allows maximum flexibility. The user interface can also be customized.
- PlanetCNC control system is quite popular among the hobby CNC crowd who love it for its ease-of-use and value for money
- All the needed features a CNC milling machine needs are offered, without unnecessary options making the use of the machine more complicated. It goes straight to the point.
- They make two controller boards, Mk3/4 (4-axis) and Mk3 (9-axis).
- Of these, the 4-axis Mk3/4 is more popular among hobbyists.
- As a CNC plasma controller, the Mk3/4 is preferred over GRBL, Mach, and LinuxCNC by many people
- With 3 digital inputs and 4 digital outputs onboard, the Mk3/4 is a breakout board and controller rolled into one.
- If you wish to connect a stepper driver that connects with a DB25 cable, like the Gecko stepper driver, you need to get the DB25 adapter sold by PlanetCNC.
Choosing guide for CNC Contoller Board¶
It is vital for the machine’s stable functioning to get a controller with enough input and output signals. It will help maintain the flow, but it will also increase the durability of the machine.
To control the axis number used simultaneously, calculate and compute, you need a controller with enough processing power.
A controller with about 1000 block look-ahead functions will be great to calculate with higher speeds and accuracy.
It is vital to consider whether the controller has higher tolerance and durability rate or not. The construction of the controller matters the most for its durable life span. The controller can be of two constriction types, mechanical or electrical. Well, mechanical is always supported because the built is reliable. At the same time, the electrical use may lower the value and capabilities of the controller.
The controller will be able to supply power to the IO port if it’s the best one. A higher voltage supply is what makes a difference. With a high voltage supply, the controller will let you work efficiently and without any disruptions.
when you work with 5 axis CNC machines, you need some extra features for your controller. Some of them are emergency stops, limits, and tool setup.
Recommended control separate peripheral and USB power supply connections is more than a blessing.
- For lasers type systems you can easily get by with a 5V BOB.
- For a Spindle that is controlled by a 0V to 10V Analog signal, you will need a Break Out Board that can convert a PWM, Step/Dir, CW/CCW or Quadrature signals into a 0V to 10V analog signal (and also provide one or two relays to control the VFD).
- With routers and spindles, you can get by with a 5V BOB, but you need to make sure your spindle is grounded properly and that you keep the 5V wires away from the power cables.
- There can be noise issues with VFDs and spindles, and you may want to consider shielded wires or a 24V BOB.
- With plasma systems you really want a 24V BOB with isolation to provide noise immunity.
- 5V output with max 3A
- 24V output max 0.5A for control e.g. the JASD driver
- external emergency stop for board shutdown
- Hardware Installation Guide
It is recommended that the ESS use a 5V power supply separate from that of the PMDX-126 (and the ESS should not power the PMDX-126). The internal power supply in the PMDX-126 cannot run any other accessories if you power the ESS from it.
Status sensor inputs work with mechanical switches, NPN sensors, 5 volt logic signals, and 24 volt powered PNP sensors or PLC outputs
- For mechanical switches and NPN sensors the inputs work by pulling the input to ground and no external resistor is needed
- For logic signals the inputs can be driven by 5 volt CMOS or TTL signals
- For PNP sensors the input is pulled up to 24 volts by the sensor and *no external resistor is needed
- Overall Specifications
- Typically, it is a 26-pin header that is identical to the connector on the ESS, or a DB25 just like the parallel port of a computer. A cable with a DB-25 connector on one end will NOT be able to carry 5V power to/from your BOB, since pin 26 is not present on the DB-25 end of the cable.
- To connect the power to pin 26, you must place the appropriate jumper on the SmoothStepper. Here are the links on how to jumper the ESS
- Hardware installation guideline
If you are going to use your SmoothStepper to power the BOB, you will need to do the following:
- Make sure that the power supply can source enough current to satisfy the SmoothStepper’s and BOB’s requirements, with a clean 5V. Each individual 5V jumper pin 26 is rated to carry up to 1.8 A to a Break Out Board, but all 3 combined are limited to the same 1.8 A. If you do this, make sure that your power supply feeding the ESS is able to supply that amperage plus at least 0.5 A for the ESS, and maintain a stable 5.0 V.
24v Low Amperage Operation¶
When using a DRV8825 board in a 24V system, microsteps can be lost in 1/32 mode if driving a stepper with VREF <0.8v (ie a 1.5A stepper). To prevent this, connect a fine patch wire between pin 19 (DECAY) on the DRV8825 (which is N/C on the stepper driver board) to the /FAULT pin on the carrier. This will supply logic power to DECAY, and put the DRV8825 in Fast Decay mode, appropriate for 24V low amperage systems.
Some Points to avoid Troubleshooting¶
- In case of Motors
- Look at your Mach3 or Mach4 configuration and make sure that the Port and Pin number which you specified for the DIR Signal is enabled and matches the pin you are actually wiring to. This Dir wire should go out to your Motor Driver’s DIR+ terminal. The DIR- terminal should be wired to a GND terminal on your BOB.
- Make sure that you have not accidentally swapped your Step and Dir wires, if you did your motors will not move. Make sure your DIR- and STEP- terminals are connected to GND and not +5V on your BOB.
- Make sure that you have power turned on to your Motor Drivers. If power is applied, you should not be able to spin the motor shafts by hand. If you can spin the motor shafts by hand, power is not turned on or there is a problem with the wiring between the motor and the motor driver.
- Look to see if your BOB requires a Charge Pump signal or an Enable signal for the motors to activate. Without it, step pulses will not be sent to your motor drivers.
- The ENA +/- or ENABLE +/- terminals should not need to be wired for your Motor Driver to operate. These should really be called DISABLE terminals. If you do wire the ENA terminals up to your BOB and activate that output it will disable the motor driver. Deactivating the output will allow the Motor Driver to operate.
In case of Power Supply:
- If the voltage from the power supply drops below 4.5 V or goes above 5.5 V (5.0 V +/- 10%) at any point, YOU WILL HAVE PROBLEMS. You really want to try and use a power supply that will stay between 4.75 V and 5.25 V (5.0 V +/- 5%
- If your Step Down power supply does not provide isolation, then you will be tying your ESS ground to your motor driver ground, which will introduce lots of noise to your ESS. This nose will likely cause many problems in your system.