The controller is the heart of the machine. It creates the motion based on G-code which is created beforehand with a CAM tool from a CAD model. The task of the controller can be divided into two steps:
The two main controller variants used for PrintNC are LinuxCNC and GRBL.
LinuxCNC : A usual desktop computer (or sometimes a raspberry pi) running Linux is used as controller. The computer takes over both above described tasks. The requirements for this computer are generally low: if used with a cheap breakout board (BOB) it needs a physical parallel port (directly on mainboard or via PCIe, no USB or serial Port adapter) so typically rather old machines are used. In this case the signals for the steppers are created in software so the machine must run very tight without interruptions from the system. An alternative to the simple breakout Board is the line of Mesa Boards, which are connected via ethernet to the Linux PC. In this case the time critical step generation is taken away from the Linux PC to the MESA Board, so tighter timings can be achieved while allowing for larger delays on the linux PC. Whether a pc is suitable for use with a simple BOB can be determined in advance with a software test
GRBL: The GCode is sent live from a PC (via a G-code Sender) to a Microcontroller like an Arduino which is running GRBL. This Controller generates the stepper signals for controlling the Motors. Because this board is not running a whole operating system there are no interrupts creating timing issues.