Archive for the ‘Info’ Category

CNC Tools: FreeMILL

Wednesday, August 24th, 2011

When it comes to free and/or open source CAD/CAM tools, I have yet to run into any packages or tool chains that are particularly full featured, easy to use, and glitch free. Because of this, its a better strategy currently to learn the set of tools that are available to you, and how to work within their limitations. Today I'm going to talk about one such tool you might want to add to your CNC toolbox, FreeMILL from MecSoft.

Basically, FreeMILL can best be viewed as a nice script for taking a 3D model and creating a simple set of toolpaths for reproducing it on a standard 3-axis CNC mill. It has its limitations, and it's a little buggy, but it provides a very quick and easy way to go from a 3D model to a physical part. Plus it's free.

Get it here:

There's also a community site for it here:

First off I'll walk you through the process of generating toolpaths from a 3D model with FreeMILL. FreeMILL supports a few 3D formats, including STL, VRML, Rhino, and VisualMILL (another one of their products). I only used the STL support since it's what my source models are in and probably the most widely used format for the hobbyist user and almost all 3D packages support it.

If you're running Windows 7 or Vista, you'll want to run FreeMILL as admin (right click the lauch icon, select "Run as administrator"). You'll want to do this because the default output directory for the resulting G-code file will be the install directory, which FreeMILL won't have write access to by default.  If it crashes randomly or the preview of your model looks weird you may have to revert to a basic Windows theme and/or disable hardware rendering.  Switching to the Windows 7 Basic theme was enough to make it somewhat stable for me.

After launching FreeMILL, you'll follow a wizard step by step until you generate your final toolpaths.  The first step is to load your 3D model.  I'm using a model of a ceramic mold that someone at the space wanted fabbed. You'll get a nice preview of the part and the determined bounds of the part and you'll be given the option to specify that your part is specified in mm.  I assume the default is inches, as this seems to be the standard for models specified in imperial units.  If your part looks like it's about the right size, click next.

Now you will be asked to specify the cutting direction.  This seems to simply be a way to specify the projection that will be cut (someone correct me if I'm wrong).  If your model is already oriented correctly, just click next, otherwise use the radio buttons to orient it correctly.

Next you'll select the offset of the stock.  This is how much bigger the piece of material you'll be cutting is than the model on either side.  Since this is an offset, if you have a particular piece you want to cut a model out of, you'll have to measure the piece, look at the reported model size and do some math to get the right offset.  I simply left both offsets to zero since I was going to cut the final part out by hand.

Now we set up the parting plane.  Parting plane is a mold making term for the plane where the two halves of a mold meet up.  In FreeMILL, this simply defines the lowest the Z axis will go when tracing the 3D model.  Depending on what you want to do, you may want to simply set this plane to a depth that will get all the details you want to see in the final product as I've done here.  I'll go into some detail on the games you can play with this setting to achieve various things later.  A couple times running through the wizard I got some odd values on this page and the application immediately crashed when I tried to continue even thought the preview looked fine.  Repeating the first couple steps seemed to fix this...

Next we set up our origin.  There aren't a whole lot of options here.  You'll likely want to select top so you can easily touch off on your stock with your mill (this puts Z=0 at the surface of your material).

Next we specify our cutting tool.  Again, this is pretty straight forward, just put in the parameters of the mill you will be using.  I'm 1/4" flat endmill here but on the final part I used a 1/8" endmill with a 1 degree taper since I couldn't get all the details of the model fleshed out with the 1/4" endmill.  You'll see this later in the preview.

Next we set up the spindle and feed rates for the material you'll be cutting.  A feed rate of 40 inches per minute is fairly conservative for the machine this will be running on since we're just going to be using housing insulation foam board.

Now we get to select our stepover distance (the distance between passes) and generate our tool paths.  Tool path generation seems pretty quick and the progress of the processor is updated in the preview window as individual passes are generated.

Here's what it'll look like after the paths have been generated.  We can also simulate the toolpaths and see what the final product might look like.  You can see here that not all the details of the model will be preserved with a 1/4" endmill based on the preview.

Next we select the post processor and save our final output.  I'm using Mach3 (configured to use inches) to drive the CCCKCCNC, so I select that post processor.

When you save, a temporary file containing the G-code for the generated toolpaths will be created and opened for you.  Save this file wherever you want and you're done!

You can look at the generated toolpaths in Mach 3 if you're on Windows or with EMC2 on Linux.  Here's what the generated toolpaths look like in Mach 3:

After regenerating toolpaths for an 1/8" endmill, I loaded the G-code on the CCCKCCNC machine and milled the mold without issue.  You can see that this thing is actually pretty big (the outside edge of the mold is 22"). It's almost  too big to clamp from both sides and not have the skirt run into anything.

And here's the finished product:

Here's some close up shots:

This entire part took about 4 hours to mill with a 1/8" endmill at 40 inches per minute feed rate and a 0.07 stepover distance.

What FreeMILL doesn't do and how to get around that

The simplicity of FreeMILL is nice, but it really lacks a lot of functionality.  Here's some stuff that would be really nice to have but you can't really do:

  • More bit options, only flat and corner radius mills are supported (ball mills are a special case which are supported, but not V-bits)
  • Depth per pass and roughing passes can't be specified
  • Only X or Y parallel finishing available

A lot of these shortcomings can be worked through by generating additional passes manually.  For instance, you can't specify the maximum depth per pass, so if you've got a design that's relatively thick, the generated toolpaths will have your bit plunging all the way to the maximum Z depth of your part and then dragging through your material.  This is a problem for a lot of mills and materials, but you can get around this by setting the parting plane to different Z depths manually and generating toolpaths for deeper and deeper cuts then feeding them to your machine the the correct order.

You can use the same principal to create roughing passes with larger mills then a final detailed path with a smaller mill and smaller stepover distance.  You can create paths for X parallel finishing and then the Y parallel finishing on your final pass as well.

General Impressions

It should be no surprise that MecSoft seems to be releasing FreeMILL primarily to promote its other CAM tools.  I do appreciate that they effectively put out a demo that, while being a little light on features, actually lets you generate usable G-code.  As a free tool, it's annoying that it's buggy but it's still usable and worth the trouble.  Now the catch is that you have to provide some information to download FreeMILL, and I gladly did.  I'm not intimately familiar with their CAM offerings, but I wouldn't mind some additional information or a sales pitch and, as expected, I got an email promotion the day after I downloaded FreeMILL asking me to take a look at their CAM tools after trying out FreeMILL.  The Monday after I played around with FreeMILL I actually got a call from their sales department asking if I was interested in ordering software after using the demo (yes, I do give out my Google Voice number).

Now even if I was interested in purchasing CAM packages, and I am, I don't think that the buggy, poorly maintained (at least since 2003), feature light demo that is FreeMILL would inspire confidence in MecSoft's offerings (especially from a hobbyist's perspective, since their tools are not cheap for that demographic).  I understand that they probably don't want to or simply can't devote resources to maintaining a free utility, but they should probably put forth a little more effort if they're hoping that that same utility is going to help sell their software.

More CAM Stuff

I plan on posting some info and reviews of other CAM tools (and other useful software tools for CNC stuff), including dxf2gcode and PyCAM, but in the mean time, go check those two out if you're looking for other free CAM tools.  I've successfully used dxf2gcode to generate toolpaths that I've run on machines for very simple 2.5D jobs.  PyCAM seems like it needs a little work and didn't load the STLs I was using for the above project but it seems promising.  I'll be keeping an eye on the project and playing with it in more depth in the future.


Why I <3 OpenSCAD

Friday, March 25th, 2011

So my CNC design is coming along nicely now, and I'm really liking developing it in OpenSCAD.  I'm trying to organize everything well to make the design easy to modify and come up with a good work flow for going from designing individual components, to fitting them together into assemblies, to actually generating the toolpaths to cut out the parts on a CNC router.

One of the cool things you can do if you build full assemblies from your individual parts in OpenSCAD (or any CAD program, really) is do a quick first pass of your design and make sure everything fits together nicely.  Here's an example issue I caught when looking at my X-axis assembly:

One of the pipes that span the X-axis frame intersects the spans of the gantry.  To fix this I can open the include file for the X-axis and change a single line that defines how wide the  spans are or the  spacing of the guide rods, recompile, and end up with this:

Problem fixed!  If I extend this approach and make an assembly for each full functional unit, each axis, each tool head, etc., I can throw them all together and see how my whole final machine will look and identify problems with the design before I start cutting parts.  Moreover, others can also easily see how the hole thing fits together, make changes, and check their mods easily as well.  That's the plan at least.


Laser Vector Grid Construction and Care

Sunday, March 13th, 2011

One thing many people might not know about laser cutters is that they require a lot of regular cleaning to keep them cutting effectively.   You've got to clean the optics on a weekly basis, clean out any little bits that might have fallen through the vector grid and wipe down the depth plunger and guide rods monthly, and oil the linear guides and clean the positioning strip every couple of months.  Who'd have thought selectively vaporizing stuff was so messy?

One other thing that I have to do about every six months is degrease the vector grid (yes, you have to regularly degrease some of your laser parts).  Before I get ahead of myself, I should probably explain what I mean when I say vector grid.  The vector grid is a metal comb that you set the material you're going to be cutting through on top of.  It's designed to support the material you're cutting and allow the laser to pass through it to prevent burning the back side of the material you're cutting.  It gets dirty because you're be blowing vaporized plastic (or resin if you're cutting wood) through it when you're cutting clean through material.

The manufacturer of my laser cutter, Epilog Laser, doesn't include instructions on how to clean the vector grid in their manuals, but they do have a nice guide online here.  I use about a 1:6 ratio of Zep purple degreaser to warm water compared to Epilog's suggested 1:4, and it seems to work fine for me.  I've got a small plastic container that's only a little bigger than my laser bed that I use to soak my vector grid.   It only takes about 12 cups of water to almost fully cover my vector grid in this container, so one gallon of Zep lasts me a very long time.  You'll notice that I've got a pair of rubber gloves in my box of supplies.  You definitely want to be wearing these and probably some goggles while working with the cleaning solution because Zep contains a number of bad things that can be absorbed through the skin (mainly Sodium Hydroxide AKA lye).

After dropping the vector grid in the diluted mixture it will start foaming all on it's own.  I agitate the mixture a bit and keep the grid soaking for a little less than 5 minutes.

After soaking remove the grid and give it a good rinsing.  When done rinsing, shake it out a bit over the sink and let it air dry completely before using it again.  To give you an idea of how much stuff was pulled off the grid, the cleaning solution started off clear with a slightly purple tint and after soaking it's almost black:

And here's the grid after rinsing:

There's still some black residue on there (ABS from the car tag blanks I make) because it was really caked on and I didn't get a plastic pipe out and clean out those cells.  Be careful if you do choose to use pipe cleaners and scrub the vector grid, and just handling it in general, because it's made out of very thin aluminum an is damaged easily.

Building your own vector grid

Because certain materials get the vector grid gets very dirty, I wanted to make some spares.  I threw some 1/2" aluminum honeycomb in on one of my McMaster-Carr orders to see if it would be a usable substitute for the 1/4" cell spacing, 1/2" thick mat that came with the machine.  I was able to cut it easily with a pair of scissors and get one full bed sheet and one that was a little under an inch short from the 24"x24" sheet I ordered.

Unfortunately, it wasn't as rigid as the original vector grid and needed something to back it.  Next McMaster-Carr order, I added some heavy wire mesh to my order.  This stuff cut easily with a pair of side cutters and was easy to fit to the cutter bed.  I set the aluminum hex on top and it improved the rigidity:

It's still not as rigid as the original vector grid but I think it'll work for what I'm cutting and all I'll likely have to do to fix this is switch out the wire mesh for some stiffer perforated metal in the future.  Here's a comparison between the original grid and the new one:

The new, wider spaced grid looks pretty level and, even though it was never a huge problem, I'm hoping the wider spacing will result in fewer burn marks on the back side of the material I'm cutting than the stock grid.


I've been using the new vector grid for a bit now and I love it!  Also, I talked to the local Epilog sales rep. and he said they ask about $395 for a replacement vector grid. I think I'll stick with my $35 spare for now.


PE00001 Back Online!

Monday, November 15th, 2010

While demoing my Cupcake CNC bot a while back, the extruder succumbed to plastic build up at the interface of the PTFE and the heater barrel.  Not soon after I tore the extruder hot end apart Makerbot Industries released the second version of the heated build platform, and later teh MK5 hot end.   I snatched up both upgrades but haven't had time to retrofit my bot until last weekend.  After some rewiring, soldering, moving and remounting of various electronics, and some assembly of various mechanical bits, I had a working Makerbot once again!

I was surprised that the first print actually finished up fine.  OK, I did help it along a bit by raising the Z axis a bit while building because it was putting out way too much plastic, but it did finish a 1 hour print successfully on the first attempt.  I've been using a Paxtruder design for a while, so I've got a good idea of how to tune the filament pressure, which probably helped a bit as well.  I'm loving the new hot end so far.  I've been able to speed up my feed rate by %30 without running into any issues, and I've had good luck going raftless for the most part.  These two things combined have halved the print times of some of my prints, which is awesome.  I'm still tuning things but my initial impressions are very favorable, and it looks like the new setup will be considerably more reliable.

On a side note, one tool I found useful for dealing with the heated build platform is my Cricut spatula.  It's inexpensive, small and easy to use, good for scraping objects off the platform without getting me burned, and you can use it to smash down traces of plastic that lift of the build platform in the early stages of the print.  I'm hoping that after some tuning I won't be using it to be saving prints as much in the future.


Pilgrimage to Gateway Electronics

Sunday, October 10th, 2010

A couple weeks ago I headed out to St. Louis to attend Arch Reactor's grand opening 2.0 and meet up with some friends in the Lou.  I headed out a little early so I could hit up Gateway Electronics before the open house.  Several people had mentioned Gateway and it's awesomeness before, so I had to check it out for myself.  I picked a good day to stop in, as they were celebrating their 50th anniversary.  I was quite impressed with the wide array of stuff they offered and it was obvious that their focus was on the hobbyist market.  They've got a decent array of general components in stock and a lot of prototyping stuff, project boxes, breakout boards, perf board, PCB etching and repair supplies.  They also had a lot of old equipment including scopes, variacs, and used lab equipment, a huge collection of tubes, most in their original packaging, and a lot of surplus/pulled parts.  Unfortunately, I didn't have any projects on the table that I didn't already have the supplies for so I only ended up grabbing some components that I thought would be cool to include it some future projects.  I picked up some single digit VFD tubes cheap, some industrial keypads, a cheap project box or two, some cheap linear pots, and one giant red illuminated push button.  It's too bad there's not really any place like this in KC...