a little place I like to call home.

HeeksCNC and GRBL

Sep. 26, 2014

After getting my milling machine up and running, finding software to do CAM work was difficult. Everything that I found was either way more expensive for me or didn't support running on Linux. If there was a decent free CAM software out there that I could run on Windows I probably would, but everything that I found was very limited to what you can do. I wanted something where I had more control over how the milling went and was looking to do more 3d stuff than 2.5d. This eventually led me to HeeksCNC and after a few weeks (I don't get enough time to mess with this stuff) of messing with it, I felt a need to customize it.

After messing with HeeksCNC and getting my workflow done, I started to feel pretty productive, but there was some edge cases that I could improve on to reduce my overall workflow.

First setting everything to inches. I've seen a couple forum posts where people were having problems with this. First you need to change HeeksCAD to run in inches, then you need to change HeeksCNC to run in inches. To change HeeksCNC to use inches you need to adjust your machine preferences.

After that I import my STEP file and adjust it so the top of the part is at Z = 0, I select my object then translate it down (or up based on how you modelled it).

I've been milling with the setup for a couple months now, but have ran into problems. My first problem was drilling. The current machine that I use Mach3 in HeeksCNC supports GCode G83 for peck drilling, GRBL do not support this and I need to expand out the G83 to the equivalent G01 codes. I've been using an additional script to process this out, but was slow turnaround time.

I've known for some time that HeeksCNC supports adding additional machines to the project list. So one night spent the time learning about it and seeing what I could get accomplished. The way that HeeksCNC works is it will create an external Python script that has basic machine functions. Then HeeksCNC will run this Python program to create the GCode file. It's actually pretty simple process. This Python script is a DSL that then builds the GCode. The Python script loads in the machine script file, which overrides the base class for the default ISO machine. This provides different GCodes to perform different functions for a particular machine. So the DSL that HeeksCNC generates can create GCode for several different machines.
In my case I didn't have to manually expand out the GCode for my peck drilling operation, because the base class can already do that. I just need to enable my machine class file to use that when generating the drilling operation. Super awesome.

The other thing that I wanted to change is how the GCode for ending the program worked. I've been running GRBL 0.8c for quite a while now, but when running the GCode produced with the Mach3 GCode it would keep calling M02 operation to end the program. I didn't like this and wanted the ability to just turn off the spindle instead M05 so my work coordinates wouldn't get lost.

I've added my machine script to the HeeksCNC repository, but haven't submitted the PR yet. I'll need to talk with the authors and see how they want to provide that.

Here is my changes:

My next step will be to set WCS before a tool change.

Kudos to the Heeks team for creating such an awesome project.

comments powered by Disqus