Skip to content
Snippets Groups Projects
Computer-controlled Machining.md 14.6 KiB
Newer Older
Mitalee Parikh's avatar
Mitalee Parikh committed
#Computer controlled machining
Mitalee Parikh's avatar
Mitalee Parikh committed

Mitalee Parikh's avatar
Mitalee Parikh committed
This week is about making something big using a CNC milling/routing machine. I want to explore the possibilities of CNC machining - drill, pocket, dog-bones, nesting, etc. I tried to make a versatile furniture piece so that I can use different joints and experiment with them.  

![](./images/ccm/table.jpg)  
Mitalee Parikh's avatar
Mitalee Parikh committed

Mitalee Parikh's avatar
Mitalee Parikh committed
### Page Summary
1. Introduction
2. Design  
3. Nesting
4. CAM
Mitalee Parikh's avatar
Mitalee Parikh committed
5. Test settings
6. Machining
7. Assembly
8. References
9. Design Files
Mitalee Parikh's avatar
Mitalee Parikh committed
---

1. Introduction
---
Mitalee Parikh's avatar
Mitalee Parikh committed
Material available for use is a veneer plywood of size 2440 x 1220 x 17 mm.  
Mitalee Parikh's avatar
Mitalee Parikh committed
On checking with a vernier caliper, thickness varies between 16.9mm and 17.1mm. So I'll use an average of 17mm thickness for my design.  
I wanted to make a desk with adjustable height so after some viewing some references, I decided to make trestle legs for a desk setup.  
Mitalee Parikh's avatar
Mitalee Parikh committed
![](./images/ccm/finnvard.jpeg)   
I started by making a 3D version of IKEA's FINVVARD to understand how it works.  
Mitalee Parikh's avatar
Mitalee Parikh committed
![](./images/ccm/basic.jpg)  

Mitalee Parikh's avatar
Mitalee Parikh committed
Since, I didn't have access to the lab during this week, I did the CAM part according to tools used in FabLabBCN.  
Mitalee Parikh's avatar
Mitalee Parikh committed
Later when I used FabLab SP, I did it again using Vcarve Pro.  
Mitalee Parikh's avatar
Mitalee Parikh committed
2. Design
---
Mitalee Parikh's avatar
Mitalee Parikh committed
I learnt about some details from the [50 Digital Joints poster](https://makezine.com/2014/12/04/50-digital-wood-joints-poster/). For the group assignment, I made a joint using both profiling and pocketing.
![](./images/ccm/1.png)  
Mitalee Parikh's avatar
Mitalee Parikh committed
I also made some versions of the finger tennons, lapped finger tennons, throughhole finger tennons to design the trestle.
Mitalee Parikh's avatar
Mitalee Parikh committed
![](./images/ccm/2.png)  
![](./images/ccm/3.png)    
Mitalee Parikh's avatar
Mitalee Parikh committed

Here is how the final legs look. I need to make 2 of these and put any flat board on top to make a tabletop.
![](./images/ccm/final.jpg)  

Mitalee Parikh's avatar
Mitalee Parikh committed
Here it is in 3D.  
Mitalee Parikh's avatar
Mitalee Parikh committed
<div class="sketchfab-embed-wrapper"> <iframe title="Trestlelegs 15mm" frameborder="0" allowfullscreen mozallowfullscreen="true" webkitallowfullscreen="true" allow="autoplay; fullscreen; xr-spatial-tracking" xr-spatial-tracking execution-while-out-of-viewport execution-while-not-rendered web-share src="https://sketchfab.com/models/d3bdb40771c04b519edc3b9295fd026b/embed"> </iframe> <p style="font-size: 13px; font-weight: normal; margin: 5px; color: #4A4A4A;"></div>
Mitalee Parikh's avatar
Mitalee Parikh committed
3. Nesting
---
Mitalee Parikh's avatar
Mitalee Parikh committed
Next, I lay everything flat on the XY plane and did a make 2D. For nesting I used an online service called [nestandcut.com](https://nestandcut.com/) to nest all parts in twice the quantity on a sheet of 1220x1220x15 mm. (Half a sheet). I uploaded a dxf file that I export from Rhino and imported the nested dxf back.  
Mitalee Parikh's avatar
Mitalee Parikh committed
![](./images/ccm/nest.jpg)  

Mitalee Parikh's avatar
Mitalee Parikh committed
I made some changes manually to fit it all in the available sheet. Like I put two parts insode the big board and nest it within to make more space for the missing parts. Here is what that looks like:  
Mitalee Parikh's avatar
Mitalee Parikh committed

![](./images/ccm/nested.jpg)  

Mitalee Parikh's avatar
Mitalee Parikh committed
<div class="sketchfab-embed-wrapper">
<iframe title="Trestlelegs 17mm Parts" width="600" height="450" frameborder="0" allowfullscreen mozallowfullscreen="true" webkitallowfullscreen="true" allow="autoplay; fullscreen; xr-spatial-tracking" xr-spatial-tracking execution-while-out-of-viewport execution-while-not-rendered web-share src="https://sketchfab.com/models/18fa9069d1d9437d8119f77e63d15e40/embed"> </iframe> <p style="font-size: 13px; font-weight: normal; margin: 5px; color: #4A4A4A;">
</div>  
Mitalee Parikh's avatar
Mitalee Parikh committed
4. CAM
---
### RhinoCAM
Mitalee Parikh's avatar
Mitalee Parikh committed
Next, I shifted to the Windows partition of my computer and installed [RhinoCAM.](https://mecsoft.com/rhinocam/) I opened the RhinoCAM machining browser plug-in in Rhino6. First I set it to MILL. In the program tab, I set up the material stock - 1220x1220x15.5 mm, the machine details - 3 axis , post - shopbot.

I set the origin at the left bottom corner and the Z at the top of the material stock.

![](./images/ccm/setup.jpg)  

Mitalee Parikh's avatar
Mitalee Parikh committed
Next I set the tool - Flatmill 6mm, refering to the class notes and some previous documentations:   
*   Saved the tool as Flatmill 6mm  
*   Holder dia = 50  
*   Holder length = 45  
*   Shank dia = 6mm  
*   Tool dia = 6mm  
*   Shoulder length = 30mm  
Mitalee Parikh's avatar
Mitalee Parikh committed
*   Flute length = 30mm  

Mitalee Parikh's avatar
Mitalee Parikh committed
**Feed and speeds:**   
Mitalee Parikh's avatar
Mitalee Parikh committed
*   Speeds: 12000 rpm  
*   Plunge: 2000 rpm  
*   Approach: 2000 rpm  
*   Engage: 2000 rpm  
*   Cut: 2000 rpm  
*   Retract: 2000 rpm  
Mitalee Parikh's avatar
Mitalee Parikh committed
*   Departure: 2000 rpm  

Mitalee Parikh's avatar
Mitalee Parikh committed
Next, in 2-axis functions there is a list of actions you can perform. For my design I needed engraving, profiling and pocketing.
Mitalee Parikh's avatar
Mitalee Parikh committed
#### Engraving
I set 5 points in the rhino file to engrave markings for screws to be drilled with a hand drill in the correct places![](./images/ccm/engraving.jpg)  
Mitalee Parikh's avatar
Mitalee Parikh committed
#### Pocketing
Mitalee Parikh's avatar
Mitalee Parikh committed
The insides of some parts that needed to be cleared were cut first. 2 parts needed pocketing at different heights, So after making adjustments in 2 different layers I changed the cut depth for both. 15mm for all parts except 2 where it was 10mm.  
![](./images/ccm/fullpocketing.jpg)   
Mitalee Parikh's avatar
Mitalee Parikh committed
**Settings:**  
Mitalee Parikh's avatar
Mitalee Parikh committed
*   Cut pattern: Offset  
*   Cut direction: Conventional (Up cut) - standard for plywood  
*   Start point: inside  
*   Rough depth: 12  
*   Finish depth: 3  
Mitalee Parikh's avatar
Mitalee Parikh committed
#### Profiling
Mitalee Parikh's avatar
Mitalee Parikh committed
To cut the outside profiles of the parts, I set the profiling for 2.5 axis. I also made another profiling - inside for 2 curves that needed to be cut on the inside.
Mitalee Parikh's avatar
Mitalee Parikh committed
![](./images/ccm/outerprofiling.jpg)  
Mitalee Parikh's avatar
Mitalee Parikh committed
Settings same as pocketing, set toolpath OUTSIDE the curves
Mitalee Parikh's avatar
Mitalee Parikh committed
#### Simulation
![](./images/ccm/simlulation1.jpg)  
Mitalee Parikh's avatar
Mitalee Parikh committed
Then I ran a simulation and found some errors in the settings.   
Mitalee Parikh's avatar
Mitalee Parikh committed
1.  The cutting height did not match the level of the stock. It was cutting in the air. I adjusted this by going back to the material panel and changing the stock thickness to 15mm. (It was 300 by mistake)  
2.  The tool path just ran once over all profiles and went in 15mm in one pass. I changed this by making the cut depth 15mm in roughing and finishing at 12mm and 3mm respectively.  
Mitalee Parikh's avatar
Mitalee Parikh committed
3.  Some parts were creating double paths - so I deselected them from one layer and generated toolpaths again.  
Mitalee Parikh's avatar
Mitalee Parikh committed
After running another simulation, it seemed fine.
![](./images/ccm/simlulation2.jpg)  
Mitalee Parikh's avatar
Mitalee Parikh committed
I didn't get a chance to actually cut using the RhinoCAM gcode. You can find the design files at the end of this page.  
Mitalee Parikh's avatar
Mitalee Parikh committed
### Vcarve Pro  
Mitalee Parikh's avatar
Mitalee Parikh committed
The standard workflow at FabLab SP was to import the dxf in Vcarve Pro and generate the gcode.  
I used the full version of [Vcarve Pro 11](https://www.vectric.com/products/vcarve-pro) at the lab.
Mitalee Parikh's avatar
Mitalee Parikh committed
![](./images/ccm/1.open.png)  
Mitalee Parikh's avatar
Mitalee Parikh committed

Mitalee Parikh's avatar
Mitalee Parikh committed
First step is to start a new file specifying the size. In my case Width 2440mm, Length 1220mm and Material thickness 17mm.  
![](./images/ccm/5.nest.png)  
Mitalee Parikh's avatar
Mitalee Parikh committed

Mitalee Parikh's avatar
Mitalee Parikh committed
Using the rulers on the side, optionally set margin guides. I do this with an offset of 20mm inside the edge of the material. This 20mm space is for screwing the material on to the base before cutting.  
Next, import the dxf.  
Mitalee Parikh's avatar
Mitalee Parikh committed
![](./images/ccm/3.import.png)  

Mitalee Parikh's avatar
Mitalee Parikh committed
Make sure all the curve are closed. If not, you can join them (J) from the menu bar.  
Mitalee Parikh's avatar
Mitalee Parikh committed
![](./images/ccm/4.joinvectors.png)  

Mitalee Parikh's avatar
Mitalee Parikh committed
Vcarve actualy has in-built nesting capabilities, this is very convenient.  
To save more space, I try nesting with 45deg and enable part mirroring. This changes the grain of material for the same parts, but since I'm experimenting and learning, I go ahead with this.  
Mitalee Parikh's avatar
Mitalee Parikh committed
![](./images/ccm/6.nesting.png)  

Mitalee Parikh's avatar
Mitalee Parikh committed
Next, recheck and set up the material dimensions. Also, select material top surface as origin. And left bottom corner as XY datum. In the toolpath tab on the right >>
Mitalee Parikh's avatar
Mitalee Parikh committed

Mitalee Parikh's avatar
Mitalee Parikh committed
**Tool path Settings:**  
Cutting Start Depth: 0 mm
Cut Depth: 17.5mm (I keep this more then the material thickness, to foolproof cutting through in case of uneven bed level or material inconsistency)  
Tool: 6mm endmill
Machine vectors: On the OUTSIDE (Vcarve automatically cuts inside curves on the inside)  
I'm using a 6mm flat compression endmill made of T carbide. So from the database, I select the correct bit and change the settings a little.   
Mitalee Parikh's avatar
Mitalee Parikh committed
Tool diameter = 6 mm  
No of flutes = 2  
Spindle Speed = 12000 pm  
Feed rate = 5000 mm/min  
Plunge rate = 600 mm/min  
Mitalee Parikh's avatar
Mitalee Parikh committed
Pass depth = 6 mm (=tool diameter, good practice)  
Mitalee Parikh's avatar
Mitalee Parikh committed
![](./images/ccm/7.tool.png)  

Next, adding tabs so that the cut parts do not fly out. I set the tab size to Length 12mm and depth 3mm to make it easy to cut later on. Again Vcarve has a convenient automatic tab generator. This can be customised using no of tabs, distance between tabs or even done manually by clicking on the lines. I found setting tabs by distance 200mm gave optimal results, with a slight extra effort to move around some tabs.  
![](./images/ccm/9.addtabs.png)  

After manually checking for all tabs, set machine vectors to outside, so that the kerf is outside the actual curve.
![](./images/ccm/10.edittabs.png)  
Single click to add a tab, double click to remove, and drag to move an existing one.  
Mitalee Parikh's avatar
Mitalee Parikh committed
The software automatically places the inside nested curve toolpath inside without making a different layer for it.  
Mitalee Parikh's avatar
Mitalee Parikh committed

Mitalee Parikh's avatar
Mitalee Parikh committed
Add a ramp.  
I added a 15mm ramp so that the tool doesn't plunge directly into the material.  
Mitalee Parikh's avatar
Mitalee Parikh committed
![](./images/ccm/8.toolpathsettings.png)  

Mitalee Parikh's avatar
Mitalee Parikh committed
On 'calculate' I got a warning popup saying the cutting depth exceeds the material thickness. I bypass this warning as the deeper cutting dimensions allows to cut the material without burr and accomodate the difference in material flatness and thickness. Also if there is any variation in the bed levelling. It will basically cut through 0.5mm through the waste sheet.
Mitalee Parikh's avatar
Mitalee Parikh committed
![](./images/ccm/11.warning.png)  

Mitalee Parikh's avatar
Mitalee Parikh committed
The file is almost ready. Last step is to simulate the cutting and check if it works properly. This is important before actually cutting.  You can control the speed of the simulation and check the toolpaths in detail.
Mitalee Parikh's avatar
Mitalee Parikh committed
![](./images/ccm/13.3dtoolpath.png)  

Mitalee Parikh's avatar
Mitalee Parikh committed
Save a .tap format (gcode) file in mm and send it to the computer of the CNC machine. There are multiple options of saving different profiles in one or multiple files.  
Mitalee Parikh's avatar
Mitalee Parikh committed
![](./images/ccm/15.save.png)  

Mitalee Parikh's avatar
Mitalee Parikh committed
You can click the clock symbol on the tool path taskbar and by setting scale and feed, simulate the time it will take for cutting that particular profile. This is not super accurate, but helps in approximating the actual time exclusing the material setup and cleaning later on. I later found this was way off.  
Mitalee Parikh's avatar
Mitalee Parikh committed
![](./images/ccm/14.time.png)  

Mitalee Parikh's avatar
Mitalee Parikh committed
5. Test settings
---
Mitalee Parikh's avatar
Mitalee Parikh committed
Using a 17mm ply, I made the pockets 10mm deep and then made a slotted joint.  
The wood I used for this was very soft, so it cut very clean in the milling machine, but cleaning it with a file was very difficult.  
![](./images/ccm/G1.JPG)  

On fixing the pieces togther, they weren't as clean as I imagined, and not as accurate.  
![](./images/ccm/G2.JPG)   
Mitalee Parikh's avatar
Mitalee Parikh committed
![](./images/ccm/Gjoint1.png)  
![](./images/ccm/Gjoint2.png)  

6. Machining
Mitalee Parikh's avatar
Mitalee Parikh committed
---
Mitalee Parikh's avatar
Mitalee Parikh committed
First mount the sheet on to the bed of the machine. Align properly with the waste board.
Mitalee Parikh's avatar
Mitalee Parikh committed
Using a power drill, drill in screws to fix the sheet. Do this within 20mm from the edges of the sheet, so the tool doesn't interfere with the screws. Also use countersunk screws so that the cap height remains flush with the material surface.  
![](./images/ccm/screw.png)  
Mitalee Parikh's avatar
Mitalee Parikh committed

Set X, Y origin at the left bottom of the sheet.  
Mitalee Parikh's avatar
Mitalee Parikh committed
![](./images/ccm/xy.png)  
Mitalee Parikh's avatar
Mitalee Parikh committed

Open NC-pro on the computer that is connected to the machine and check origin. I do not change X and Y as they are set already as default. To set Z origin, I use a tool sensor. By temp moving XY to 150,75, put the probe below the tool and set 'tool Measure'. This basically sets the Z at the top of the material.  
Mitalee Parikh's avatar
Mitalee Parikh committed
![](./images/ccm/z.png)  

Next, start the dust collector.
![](./images/ccm/dustcollector.png)  
Mitalee Parikh's avatar
Mitalee Parikh committed

Mitalee Parikh's avatar
Mitalee Parikh committed
On the remote, press 'start' and 'OK'.  
Mitalee Parikh's avatar
Mitalee Parikh committed
![](./images/ccm/remote.png)  
Mitalee Parikh's avatar
Mitalee Parikh committed

Mitalee Parikh's avatar
Mitalee Parikh committed
The spindle will start. The machine in the lab has a spindle regulator connected directly to it. So it doesn't use the setting from the gcode created in Vcarve.  
Mitalee Parikh's avatar
Mitalee Parikh committed
Cutting should now start. My file took approximately 2 hours to finish. It is very shrill and loud, so it is important to wear ear protection.  
Mitalee Parikh's avatar
Mitalee Parikh committed
The plunging created some burn marks in the holes.
![](./images/ccm/plunging.png)  

Mitalee Parikh's avatar
Mitalee Parikh committed
I noticed that the toolpath doesn't optimise paths by distance. Unlike in a lasercutter it cuts across the sheet in random(?) order.  
Mitalee Parikh's avatar
Mitalee Parikh committed
![](./images/ccm/random.png)  
Mitalee Parikh's avatar
Mitalee Parikh committed

Mitalee Parikh's avatar
Mitalee Parikh committed
After cutting is done, I unscrew the board from the base.
![](./images/ccm/fin.png)  
Mitalee Parikh's avatar
Mitalee Parikh committed

Mitalee Parikh's avatar
Mitalee Parikh committed
I vacuum all the remaining dust that the dust collector missed and on inspecting the cuts, realise that the material didn't cut through.
![](./images/ccm/oops.png)  

With Steven's help, I chiseled off all the tags from the pieces and found some pieces had to be cut again because they hadn't cut through with enough detail.  
Mitalee Parikh's avatar
Mitalee Parikh committed
![](./images/ccm/16.redo.png)  
Mitalee Parikh's avatar
Mitalee Parikh committed
7. Assembly
Mitalee Parikh's avatar
Mitalee Parikh committed
---
Mitalee Parikh's avatar
Mitalee Parikh committed
The machined parts have very rough edges, so I first used a burring tool to cut off chips.
Mitalee Parikh's avatar
Mitalee Parikh committed
![](./images/ccm/burr.png)  

Mitalee Parikh's avatar
Mitalee Parikh committed
I use a file to clean joint details.  
Mitalee Parikh's avatar
Mitalee Parikh committed
![](./images/ccm/file.png)  

And a hacksaw to cut off remains of tabs.  
![](./images/ccm/hacksaw.png)

Mitalee Parikh's avatar
Mitalee Parikh committed
There were still chipped off corners, so I used an orbital sander with a grit 1000 to sand off all surfaces.  
![](./images/ccm/orbit.png)   
Mitalee Parikh's avatar
Mitalee Parikh committed

Difference between sanded and unsanded parts:  
![](./images/ccm/sanded.png)  

This took up a lot more time than I anticipated, but the difference was apparent in the finished product.
So this is important to do before assembly. I wonder if in the future I can make setting to omit sanding parts altogether.  
Sanded and unsanded details:  
Mitalee Parikh's avatar
Mitalee Parikh committed
![](./images/ccm/difference.png)  
Mitalee Parikh's avatar
Mitalee Parikh committed

Mitalee Parikh's avatar
Mitalee Parikh committed
I started assembling all parts together. Here are some pictures of details.  
Mitalee Parikh's avatar
Mitalee Parikh committed
![](./images/ccm/joint1.png)  
![](./images/ccm/joint2.png)  
![](./images/ccm/joint3.png)  
Mitalee Parikh's avatar
Mitalee Parikh committed
![](./images/ccm/joint4.png)   
![](./images/ccm/joint5.png)  

Here's one finished part:   
![](./images/ccm/onepart.jpg)  

Here it is besides an actual IKEA Finnvard:  
![](./images/ccm/ba.jpg)  

Here are two of them:  
![](./images/ccm/two.jpg)  

And now by changing the height, its ready to use as a desk:  
![](./images/ccm/two.jpg)  
Mitalee Parikh's avatar
Mitalee Parikh committed

Mitalee Parikh's avatar
Mitalee Parikh committed
I has to recut these pieces as they were designed for 15mm thickness and not 17mm:  
![](./images/ccm/redo.jpg)  
Mitalee Parikh's avatar
Mitalee Parikh committed

8. References
Mitalee Parikh's avatar
Mitalee Parikh committed
---
Mitalee Parikh's avatar
Mitalee Parikh committed
[IKEA Finnvard trestle](https://www.ikea.com/us/en/p/finnvard-trestle-with-shelf-birch-30345717/)  
[This CNC wood joinery post](https://mkmra2.blogspot.com/2014/08/cnc-cut-wood-joinery.html)  
[50 Digital Joints](https://makezine.com/2014/12/04/50-digital-wood-joints-poster/)  
[Digital Fabrication for Designers blog](http://mkmra2.blogspot.com/2014/08/cnc-cut-wood-joinery.html)  
Mitalee Parikh's avatar
Mitalee Parikh committed
9. Design Files
Mitalee Parikh's avatar
Mitalee Parikh committed
---
Mitalee Parikh's avatar
Mitalee Parikh committed
**For 15mm version using RhinoCAM:**  
[Rhino 3D](./images/ccm/trestlelegs_15mm.3dm.zip)  
[DXF](./images/ccm/trestlelegs_15mm.dxf.zip)  
[Parts stl](./images/ccm/parts.stl.zip)  
[Full stl](./images/ccm/trestlelegs_15mm.stl.zip)  

**For 17mm version using Vcarve Pro:**  
[Rhino 3D](docs/images/ccm/trestlelegs_17mm.3dm.zip)  
[DXF](./images/ccm/trestlelegs_17mm.dxf.zip)  
[Parts stl](./images/ccm/trestlelegs_17mm_parts.stl.zip)  
[Vcarve]()  
[gcode mm (.tap)]()