Failed Engineer: Motion control boards and G-code translators

Sunday 16 August 2020

Motion control boards and G-code translators

Before I discuss the motion control boards and G-code translators, I would just like to mention some names, just for the sake of making you aware of the options that exist. LinuxCNC, Arduino, BeagleBone, UCCNC, PoKeys, AcronCNC, Mach4, TurboCNC, MASSO, PMDX, PICO Systems, Smooth steppers - (ESS - Ethernet smooth stepper and USS - USB smooth stepper) etc, are some of the solutions that you can go with. The names that we have mentioned include G-code translators as well as motion control boards. It makes sense to mention them together since they are interdependent. The choice of motion control board will dictate the G-code translator that you can go with, likewise if you have made up your mind about a particular G-code translator, you can only with a particular motion control boards. This is because of compatibility, and it is for this reason, we should know about a motion control board's compatibility with a particular G-code translators. In addition, we should know which product can get us started easily and make an inexpensive choice. Let's discuss these one by one and demystify them little bit.

LinuxCNC is only a software i.e a G-code translator and there's a lot of Chinese breakout boards and other hardware that would work with it if you go with LinuxCNC. If you require more flexibility and greater capability with reliability, you can go with a MESA control board options. You can find more about all type of hardware in addition to motion control boards supported by LinuxCNC from here. Unlike LinuxCNC which is Linux based translator, MACH3 and MACH4 are windows based and these are also translators only and you can find a lot of associated hardware that would work with these softwares. For example, USS, ESS are two motion control boards which would work with MACH3 and MACH4 and both are products of Warp9 Tech design, you can find difference between the USS and ESS boards and their specific features using this linkPMDX-424PMDX-414PoKeys57CNC are other such motion control boards that would work with MACH3 and MACH4. All these boards have specific features and limitations, so you should check them before finalizing any of the option.

Motion control board / Breakout boardG - Code translator compatibility
USS (USB Smooth Stepper)MACH3
ESS (Ethernet Smooth Stepper)MACH3 and MACH4
MASSO G3MASSO G3
PMDX-424
PMDX-414
PMDX-416
MACH4
PMDX-122LinuxCNC and MACH 3
PMDX-126LinuxCNC and MACH 3
AcornCNCAcornCNC
PoKeys57CNCMACH3 and MACH4
C-10 bidirectional CNC boardLinuxCNC and MACH3
C-82 dual port multi-function boardMACH3 and MACH4
AXBB-E Ethernet Motion ControllerUCNC, MACH3, MACH4
UC400ETH ethernet motion controllerUCNC, MACH3, MACH4
UC300ETH ethernet motion controllerUCNC, MACH3, MACH4
CNC USB controller Mk3TNG V2 by Planet CNC
CNC USB controller Mk3/4TNG V2 by Planet CNC

In my opinion, mechanical engineers who have little or no experience in coding should steer clear of Arduino or any other development board for that matter. Arduino can be really flexible and powerful due to the reason that it can be programmed the way you want and it offers large number of input and output digital and analog pins. Arduino makes use of GRBL to make machine movement which is basically an alternative to G and M code that you employ in conventional machines, GRBL itself is fairly easy to understand and works much like G and M code, however, the microcontroller, since it needs to be programmed for things like what's smallest step of the motor, if you have used gearing, lead screw pitch etc. it can become little intimidating if you factor in other complexities that come along with a CNC machine itself etc. So you may end up troubleshooting and find yourself in the dark on this path if you are not string in programming. It is for this reason, I would not recommend this for people who are not willing to get their hand dirty or feel that they can't wrap their head around code. Still if you wish to go for a development board, the arduino is perhaps the best option at the moment with much greater community support and DIY videos than any other development board. These boards are perhaps best suited for 3D printing.There's one fundamental difference between some of these boards, and based on how these boards do trajectory planning, they are either one or the other. Products like AcronCNC, MASSO, PMDX-410, PMDX-424, PoKeys57CNC etc. have some sort of onboard motion control chip or buffer which are basically pulse engines that takes the load off from the computer which is basically running your operating system, and they work independently from the computer to avoid lag since it is critical. This is unlike LinuxCNC which uses the real-time kernel and uses parallel port for connection between computer and motion control board which is essentially DAC board allowing the computer to send pulse signals to stepper / servo drivers.  Smooth Stepper, PMDX, PICO Systems etc. on the other hand offer motion control boards that work with LinuxCNC, MACH3, MACH4, there's no associated software with these as such, and depending on the board you choose, you can go with LinuxCNC, MACH3 or MACH4.AcronCNCMASSO etc, are complete solutions i.e. they offer hardware bundled with complimentary G code translators. The difference between the the two is that AcronCNC will still require a computer for running windows while MASSO is a stand alone product i.e. it does not even require a computer and you just need to attach a screen using VGA connector.    

MACH as well as LinuxCNC are two motion control softwares that are very widely used. These can be use for machining or any other CNC machine that you may wish to make. Between the two, LinuxCNC is even better if you prefer something that's available for free. LinuxCNC is slightly more complex than MACH though. 

The hardware required for each of these solution that you may wish to go with i.e. the DAC card or the microcontroller board, stepper drivers etc. would be different in each of these, and may have limited interchangeability. For example, a controller board meant for Mach3 may work with LinuxCNC, however a controller board meant for Mach4 would not work for LinuxCNC since Mach4 relies on USB for communication while Mach3 and LinuxCNC rely on parallel port.