GRBL, EMC2, and Mach3…oh my!
Posted on by Edward
Posted in: Uncategorized. Tags: .
When you start down a road that you haven’t traveled before, it’s hard to know what you need and what you don’t need. What’s important and what’s not important. So when there are choices, as a newcomer, it’s difficult to know what is the *right* choice. With this particular project, we’ve tried to take away as many of those initial choices as we could yet still leave the project flexible for all types of users.
One of the choices is to run the machine with an arduino (grbl) or with a PC based implementation such as Mach3 or EMC2. I’ll try my best to give a brief rundown on EMC2, as it is what I have been using *almost* exclusively for several months. I have little experience with Mach3, so I’ll leave that to another user.
First, we’ll cover some basic concepts:
To run a ‘job’ on a CNC machine you need to do a couple of things.
1.) Draw something in a vector format (CAD, inkscape, Sketchup, etc).
2.) CAM what you drew in #1 (cam means to generate the gcode)
3.) Send the Gcode to the machine
4.) Interpret the gcode into step pulses
The difference with grbl vs EMC2: At the most basic level, EMC2 does both sending/interpreting.
- With grbl, you would use something like gcodesender to stream the gcode text file to the arduino. grbl then would interpret the gcode commands and convert them into pulses which are sent to the stepper drivers. And the job is run on your machine.
- With EMC2 – you load the gcode file into the interface (usually called AXIS). The gcode is interpreted into a toolpath and shown to you on the screen. This effectively gives you a preview of what EMC2 thinks your gcode is going to produce. When you’re happy with the preview, you click run. After clicking run, the gcode is interpreted into pulses and send over the DB25 cable to your controller (stepper drivers). And the job is run on your machine.
Got it? OK, good. So what’s the difference after this point?
- There is a slight difference in the way that gcode is interpreted between EMC2 and grbl. (i.e. EMC2 is more robust with a larger set of understood commands).
- I also think that given the same job, EMC2 will run it faster than grbl due to the limitations of the 328p.
In my opinion both of those differences are minute. EMC2 offers a better interface and better (truer) CNC experience than grbl. But, it’s debatable as to whether that matters at all. GRBL was designed to be a no frills CNC controller capable of fitting on an arduino. It’s simple by design. Whereas EMC2 is huge and monolithic in it’s quest ot be all encompassing to all CNC operations (lathes, 6 axis machines, big machines, small machines, etc. A pretty accurate anology would be: Microsoft Word vs Notepad. Where EMC2 would be Word and GRBL would be notepad. They are both word processors, and both very good at what they do, but one has A LOT more features than the other. Some of those features are handy, some are simply unnecessary for all but the super niche users.
Are you missing anything by not jumping straight into EMC2 or Mach3? It’s tough to tell because everyone’s situation and expectations are different. My general suggestion to everyone is get your machine running with grbl. Get used to running jobs, get used to the machine in general and the workflow that accompanies it. Once you have that stuff down, if you feel like venturing out, go for it! The most difficult part of using EMC2 is procuring a PC with a parallel port. If you already have that, or have access to that, then in my opinion it’s a great choice to use EMC2.
3 Responses to GRBL, EMC2, and Mach3…oh my!
Miguel Sanchez says:
I have been building several 3D printers last year, somehow I jumped into the CNC world later. Having a solid background in computing and electronics, it was easy to adapt Reprap electronics to be used as a CNC controller. The advantage over grbl is that, though firmware like Marlin is based on grbl and so it has very good signal timing, Marlin does include LCD display and SD card support, so you can make your system stand alone (no PC needed).
On the other hand, both Sanguinololu and Mega (+RAMPS board) do have more memory than Arduino UNO, so there is room for growth too.
You can see a milling test: https://vimeo.com/44813748
BTW, I am waiting for my ShapeOko to be added to our home set of tools
July 14, 2012 at 7:35 am
H says:
hey i am trying to build a 3d printer as cheaply as possible i am studying engineering at btec level at the moment so i have a fair grasp of tech stuff. while describing EMC you’ve put: “After clicking run, the gcode is interpreted into pulses” is this the actual pulses required to run the steppers or is this the step/dir comands ????? also is emc a firmware for my arduino or is is a piece of software to be run on my PC?? thanks any help would be much appriciated
September 8, 2012 at 11:21 am
Pete says:
GRBL, EMC2 and Mach3 are all basically GCode to Pulse interpreters. EMC2 and Mach3 have most of the features of a commercial CNC control (tool data, offsets, tool radius compensation and such) and run on your PC and interface to steppers through a step/Direction interface. GRBL doesn’t have any of these features so you would have to pre-process the CNC file for things like tool radius compensation. (Not a big deal, I have run CNC plasma cutters that worked this way)
November 2, 2012 at 10:55 am