If you missed part 2, please find it here.
Generating g-code in FreeMILL
In part 2 we created the drawing in OpenSCAD and generated STL-files for each quarter. Now It’s time to generate some g-code so we can start milling soon. 🙂
If you (like me) downloaded FreeMILL from MecSofts homepage you’ll have noticed that FreeMILL is actually a plug-in in the VisualCADCAM demo. This is exactly the way it’s supposed to be!
When you start the VisualCADCAM demo you’ll get two splash screens. The first one disappears when you click ‘Ok’. In the second splash screen simply select FreeMILL and click ‘Ok’ to open VisualCADCAM in FreeMILL mode.
VisualCADCAM splash screen
VisualCADCAM then opens the help window and the main window shown below. It has the FreeMILL wizard opened to the left – this is what we will be using.
VisualCADCAM main window with the FreeMILL wizard to the left
First we have to open one of the STL-files that we created in OpenSCAD. Do this by clicking File -> Open and select your STL-file. VisualCADCAM will ask you if you want to save the current file – if you just opened VisualCADCAM you can safely answer ‘No’ because the initial file is empty. In the photo below I’ve opened the 3rd quarter STL-file:
VisualCADCAM with STL-file loaded
Now it’s time to put the FreeMILL wizard to work. The wizard contains 7 steps which we will complete one at a time.
1) Set cutting direction
Just leave it as it is (World Z selected). I’ve never changed it and to be honest: I have no idea why I ever should!
2) Create Part Bounds Stock
I set ‘X Off’ to 10 mm and ‘Y Off’ to 10 mm and leave ‘Z+ Off’ to be 0. I do this to prevent FreeMILL from getting the idea of trying to do something fancy on the edges. I’ve seen this in a few cases and it spells trouble for my project.
Step 2: Create Part Bounds Stock
3) Set Work Zero
Now, this is important! Viewed from above the ShapeOko 2 is working in a Cartesian coordinate system in the x, y plane. In our case we’re going to cut the quarter of the Dominion turntable where both x and y have negative values (the 3rd quarter), so we select ‘Set to part box’, ‘Highest Z’ and ‘North East’ like in the photo below. This will cause FreeMILL to create g-code with negative x and y values since everything will be calculated from that point.
Step 3: Set Work Zero
For the 1st quarter STL-file I will select ‘South West’, for the 2nd quarter STL-file I will select ‘North West’ and for the 4th quarter STL-file I will select ‘South East’. In other words: I will always select the corner that represents the center of the Dominion turntable as my work zero and leave the cutting direction as it is!
4) Create Cutting Tool
In the first run we’ll be using a roughing tool path so we’ll be using a flat cutter. Select the flat cutter icon and set the diameter, flute length and the tool length. In my case I’ll use a 3,2 mm diameter cutter tool with flute length 15 mm and tool length 20 mm. Holder length and holder diameter I leave as is.
Step 4: Create Cutting Tool
5) Set Cutting Feeds and Speeds
Again, these values depends our what CNC-machine you are going to use. In my case (ShapeOko 2 with a Kress FME 800 spindle) I set the following speeds: Spindle speed 30000 RPM, Cut Feed (Cf) 1000 mm/min, Engage Feed 500 mm/min and Retract Feed (Rf) 500 mm/min. After some trial and error I’ve found these feeds and speeds to be a good choice for the ShapeOko 2.
Step 5: Set Cutting Feeds and Speeds
6) Create Machining Operation
Since we are creating a roughing operation I select a step distance of 2,8 mm so I get a little overlap (my tool is 3,2 mm i diameter). Then select the cut direction to ‘Along X’ and press ‘Generate’. FreeMILL will then generate the tool path and display it as blue lines in the window.
Step 6: Create Machining Operation
If you press ‘Simulate and select ‘Display cut model’ you’ll see what the model will look like after we cut it. The jagged edges are caused by the fact that we’ve used a flat cutter and a step distance of 2,8 mm.
Simulated cut model
7) Post-Process Operation
This is where we will generate the actual g-code that we’re going to use. VisualCADCAM comes with a lot of post-processors for a large variety of CNC-machines. To generate g-code that the ShapeOko 2 understand (or actually the Arduino and the g-Shield), please select ‘WinCNC_MM’ as your post-processor. If you’re using a different kind of CNC-machine you might have to select a different post-processor.
Step 7: Post-Processing Operation
When you press ‘Post’ you’ll be asked for a file name (saving the file will take some time). I tend to use file names like ‘Dominion_C_3.2_FLAT_2.8_STEP_X.nc’ but feel free to find your own system to identify the correct files later on. When FreeMILL has saved the g-code in a file, it will open that file in notepad for you to inspect the g-code.
More steps to complete…
We then repeat steps 6 and 7 (leaving the choices in steps 1 to 5 as before) to create a roughing operation in the y-direction by selecting ‘Along Y’ in step 6 (same step distance, etc.) and generate a tool path in the y-direction.
Furthermore, we repeat steps 4, 5, 6 and 7 again (leaving the choices in steps 1 to 3 as before) in both directions but in step 4 we create another tool: A ball mill (in my case 3,2 mm diameter, 15 mm flute length and 20 mm tool length) with the appropriate dimensions.
Step 4: Creating a ball mill tool
Step 5 will be the same as before but in step 6 we select a ‘Step Distance’ of 0,4 mm for both the x and the y-direction.
Step 6: Step distance of 0,4 mm in both directions
Now we have created 4 g-code files: two files with a flat tool and a step distance of 2,8 mm (one in each direction) and two files with a ball nose tool and a step distance of 0,4 mm (one in each direction). We now have the g-code files we need for cutting the 3rd quarter of the Dominion turntable. 🙂