I thought I’d start a new thread to write up my adventures with my CNC mill. At the moment I’m teaching myself about the software toolchain to use for a variety of milling tasks, and going through several workflows to try and get things right.
Also, the machine is by no means finished, and there are plenty of things that I would like to finish off on it.
Really, there are 3 different workflows (with different toolchains) that I will be doing on my machine:
- 2.5D, which refers to milling a flat surface with varying height.
- 3D, which refers to (of course) milling a fully 3D object. You could argue that 2.5D is 3D, but it is good to distinguish between these two workflows as 2.5D can simplify the generated g-code.
- PCB milling.
The main gist of a workflow is Computer Aided Design (CAD) -> Computer Aided Manufacturing (CAM, the software that converts your design into g-code for the machine) -> Simulation -> Control.
For each workflow I am using the following toolchain:
Inkscape (saved as .dxf) -> CamBam (to generate g-code) -> OpenSCAM (for simulation) -> GCode Sender.
FreeCad (saved as .stl) -> HeeksCNC -> OpenSCAM -> GCode Sender.
KiCad (export gerbers) -> pcbtogcode command line tool -> OpenSCAM -> ChiliPeppr (which allows z-probing)
I’ll be working through these workflows as they slowly increase in complexity.The next posts will document the adventures in 2.5D.
Recently I upgraded to GRBL 0.9g, which includes a number of fixes over the stable 0.8c. A few new algorithms, it’s faster, and it allows you to set separate acceleration settings for your axes. This is very useful when you have different microstepping values; which is typical, where you will usually have x16 on XY and x2 on Z.
Upgrading is tricky as the firmware settings for GRBL have changed (there are now more options, and some require you to set binary masks which have changed in format), and they need to be tweaked.
Here’s a short video of my machine moving around in mid air. I zeroed the machine 30mm above the workpiece to try and get a feel for how it’s operating.
Things you have to look out for are the axes being flipped, it doing silly things, etc - unfortunately the X axis in this case was, but I did not realise. I got ahead of myself and tried to cut a gear design that did not come out right (an issue with the generated g-code somewhere). I then went a bit simpler and designed a simple plate with my username carved into it.
This came out with mirrored letters - a simple fix, by changing GRBLs $3 parameter, the direction invert mask - a binary representation of which axes to ‘flip’ as found on the GRBL github.
I’m about to set my machine up to try again
Nice, can’t wait to see if you can bring any information to our cnc
Having flipped the x bit ($3=1) and a very quick sand to get rid of the ‘fuzzies’:
And the final test piece for today. This was a somewhat complicated design compared to just the text.
The earlier attempt did not go well - I think this was due to my choice of post-processor in CamBam; GRBL seems to like the ‘Default’ post-processor best, and I had “LinuxCNC” selected. This try went without a hitch, and after much experimentation in between I think I have the 2.5D workflow finally sorted.
So today I finally finished milling my ‘control panel’ - this was done out of 3mm thick aluminium. I kind of dove into the deep end on this one, and had a few issues along the way.
3mm does not sound like an awful lot, but it is a very thick plate indeed in real life.
The end result of milling first:
I don’t seem to be able to upload photos, so here’s a link:
I’m pretty pleased There are a few funky bits, almost exclusively in the small engravings (everything but the big eShapeoko text). This was due to the text in my design being too small for my smallest (1/16") endmill. I chose to use a diamond engraving bit, and lesson learned - never bother with that again.
I will be touching these up by hand with my dremel at some point.
Here’s an action shot:
The giant amount of mess that you see is the aluminium chips suspended in the cutting fluid I used. Cutting fluid is really, really useful - it keeps the milling bit from getting too hot, and helps to eject the chips out of the way.
I also learned that using MDF as a substrate is a bad idea when using liquids. There is a slight bit on the left edge in the top image you can see, where the MDF swelled, resulting in the bit not cutting the correct depth.
I was very ambitious with most of my feeds and speeds for this. I cut at 1mm depth at 80mm/min. The Shapeoko wiki suggests depths of 0.2mm at 120mm/min. I think the cutting fluid really helped with this.
All in all it took about 3 hours to run - I divided the gcode into sections - the first was engraving the text with the diamond bit, the second was then swapping to my end mill and engraving the larger text and outline boxes, and the third section was cutting out the holes and the panel outline.
On this note I’m very impressed with the world coordinate system usage of GRBL. Before mounting the panel into the machine, I used a centre punch to mark my ‘origin’ that I could use to reference the tools to and zero the machine after tool changes or stopping for the day and coming back.
The next thing to do is to finish sanding and cleaning the piece. I’ll then prime the engravings, and paint them with enamel, and will clearcoat the whole thing. Then mounting switches and we shall see what this looks like!
Nice control panel.
What are you using as the spindle driver? Looks like a Dremel style tool on steroids!
It’s a Makita woodworking router: link
It’s 1 1/4 hp, it’s a bit insanely awesome. Loud though (if you remember my adventures with getting stage curtains, that was an attempt to soundproof my garage/workshop a bit).
So, I’m a mug.
I painted the panel with metal primer, and then layered on Humbrol enamel paints in various colours for the different icons and text. I also clearcoated the rear of the panel.
Being keen to get this thing working, I waited 24 hours and started to sand the top surface (to remove the excess paint and give it a nice brushed aluminium finish).
Sadly I think I went wrong two ways, being unfamiliar with model paints (or to be honest, painting in general):
- I put far too thick layers in the engravings. Enamel needs access to oxygen, and the trick is to paint in thin layers and build it up.
- I did not shake the paints as ridiculously thoroughly as they need to be (some forum post suggesting 5 mins of shaking per pot, I gave it a good 30s at most)
The sanding caused the somewhat gooey paint to trap dust and wrinkle. It looked okay, but I was concerned about lacquering over it.
So, in to a bath of brush cleaner it goes and time to start again.
I’m melting! Meeeeltiiiing!
The paint slowly dissolved away. It was quite pretty actually, but you can see here what it is I’m trying to achieve.
Interestingly the lacquered side was completely resilient to the brush cleaner bath. It shrugged off the chemicals and came out just as it was before. I’m pretty happy with that though, as it means once I get it right and clearcoat the whole thing, it’ll be pretty damn durable.
I am currently thinking of hacking together some sort of vibratory paint shaker for the miniature pots. I used to work in Homebase, and if anyone has ever got paint mixed there before they’ve likely seen the full-can-sized shakers they use. Just as a fun aside
Hey that’s really cool I didn’t know you would need cutting fluid, is that
because of the depth/thickness. What will you use as a base/bed now instead
Thanks The cutting fluid is mostly for cooling. My spindle only goes down to 8,000RPM, no lower. This can have the tendency to melt the aluminium onto the end mill if it gets too hot, so it’s useful to cool the bit down.
However I did notice a definite improvement over a few different factors when milling with the cutting fluid.
- It reduces vibrations; I spend a lot of time listening to the noise the mill makes when cutting as a useful diagnostic, it sounded better with the cutting fluid
- It helps to eject the chips out of the cut, you can wash them out. I found too many chips around the bit caused a few issues, like juddering.
- It helps to keep the ejected chips in one, albeit messy, puddle - rather than all over the machine/shop.
I think I’d likely seal the MDF first, use marine grade plywood, or just be more careful about where I spray the fluid next time. I have seen people use very wide Misumi extrusions as their bed, which would be ideal (but too costly for me at the mo).
So as I am patiently adding enamel layers as thinly and slowly as possible, I have been finishing my PCB shield design.
I’ve been using KiCad which is a lot better than I initially realised - a lot of the useful tools are hidden away, rather than visible to a newbie like myself.
I would appreciate feedback on how terrible (or perhaps not-so terrible) my schematic layout is. I’ve not done this for a long time, so hopefully it’s come out somewhat legible.
The purpose of the shield is to breakout all of the buttons, switches and LEDs I will be using on the control panel to a ribbon cable. The ribbon cable will go to the panel and the relay board, and will hopefully make wire management a lot easier.
Still some changes to make, namely resistor values for LEDs I’ve not decided on.
I’ve uploaded a PDF plot here - if anyone is interested I can also attach the KiCad project.
Anyone’s feedback would be most welcome!
No updates - I’ve you’ve seen me at the hackspace, you’ll know that I have been very slowly layering on the enamel paint.
Yesterday I did the final layer, and am waiting for it to dry. I also (after discussing with mrdino) decided that placing the whole thing in the oven at a low temp (~50 degrees C) for a while.
Here’s a photo of it baking:
Tonight, if everything is satisfactorily dry, I’ll sand and lacquer it