Inexpensive Multipurpose Parametric CNC Base

We've taken a simple CNC base and are writing a python code that can generate CAD drawings based on your needs. ~$100 build.

Similar projects worth following
John and I (Eric) built a low cost (~$100) small CNC base. The original design was based on other open source designs. In using it we iterated on the design several times converging to a simple base that is easy to assemble. We wanted to create a base that we could use for several projects (PCB cutter, 3D printer, extruder, small laser cutter). This variety requires that design can be adaptable, different fittings and sizes are required. From this I came up with the idea to create a code that could output the require CAD drawings and gcode required to cut out the CNC parts based on a series of inputs. For example:

* Is a CNC required to build it, or not.
* Threaded rod or belt driven.
* Varying sizes based on motion required.
* What size NEMA motors are being used

I am in the process of creating a demo python code that can take these inputs, and based on our design, output a dxf file with the necessary parts. Also, we have identified a low cost electronics control system.

This project started simply as a need. We needed a simple low cost CNC platform for general use. I really prefer to have standalone machines. While I could switch out the bits and platform on my handmade CNC router, I would prefer to have a small machine that is always setup for PCB routing. From this stemmed the idea to use this base for other standalone machines, such as a pink-n-place, or a 3D printer. Having a cheap platform would allow us to realize this possibility.

Pulling from other open source designs, we laid out the drawings for version 1. From there we iterated, changing small things like the way the bearings attach to the base. We added features, like groove to line up parts. Cut outs around the motor to make servicing easier, and so on. This lead us to the latest version.

In addition to the mechanics, again, pulling from other sources, we identified a simple electronics framework to use with the low-cost platform. We've laid out a arduino based g-code interpreter (grbl) with pololu drivers. This gives us functionality using already functioning open-source software. In order to reduce cost, we've laid out an single PCB with arduino and stepper drivers. (CNC shields are also an option).

Here we get a functional small scale CNC for under $100 in parts.

Later I tried to adapt our design for use as a 3D printer. With 3D printing you are looking for other charateristics in your CNC base, than with a mill. In a mill we want ridigity, speed is nice, but not critical. In a 3D printer rigidity is important, but no significant forces are being applied to the extruder head. The mass of the head should be kept down so that speeds can increase. Also, low cost threaded rod drive systems may not provide the speeds required.

Furthermore, the CNC we had laid out was just quite not big enough. While we could individually tweek each design for its needs, that is time consuming. What if we instead wrote a script that would auto generate the CAD drawings for the design requirements. Key dimensions could be input. Continuing this thought, other parameters like, threaded rod or belt driven could be flagged, or NEMA motor size, therby changing the motor mountings or other dimensions. 

While the time to create a code like this would be of the same order as just tweeking a few designs that we need, the savings going forwards, as well as the usefulness to the community would be far greater. And that is ,after all, the great power of the internet and why I can leverage other open projects to get to here quickly.

The electronics design is independent of the mechanics, but it is added here to show the full interconnectedness of the project. If required, other control systems can be used.

  • 1 × Plywood
  • 1 × misc bolts, screws
  • 1 × Arduino
  • 3 × Motor Controllers
  • 1 × Python software

  • CNC Control Electronics

    Eric Jacob08/20/2014 at 16:50 0 comments

    Schematic and Board Layout. I will link the actual EagleCAD files soon.

  • CNC Base Iterations

    Eric Jacob08/20/2014 at 16:48 0 comments

    To help illustrate the idea, we have produced a few drawings varying parameters. 

  • Control Electronics

    Eric Jacob08/20/2014 at 15:54 0 comments

    There are several options for transmitting/interpreting the gcode and controlling the stepper motors. The cheapest (but still quick and easy) way is to use pololu stepper motor controllers with an arduino board. This is sufficient for the smaller stepper motors (under 2A). 

    Some kind individuals have written grbl, You can just use the Arduino IDE iterface to upload the code to the arduino. Then you'll want to use the universal gcode sender to upload your gcode to the arduino. It all works great. 

    You are a little limited with the interface. If you want more control I would suggest moving to an actual CNC controller and Mach3. Of course this will cost more.

  • DXF Generation Code

    Eric Jacob08/20/2014 at 14:43 0 comments

    dxf files can be a little tricky. In order to get around this I am going to use the python dxfwrite library.

    Python is free, so anyone will be able to use it. This library will allow us to create this code rather quickly as the dimensioning is progressing quickly. Initially we will focus on geometry, other features will be added as we go.

    After the python code is complete we can look at creating a standalone generator (so you don't have to mess around getting python running if you don't want to) or making a web based application.

    For now we intend to have the code create a dxf file. Gcode would be generated elsewhere as it is dependent upon your machine size and bit size. This is a secondary task that we will look into after the dxf generator is complete.

  • Parameterization

    Eric Jacob08/20/2014 at 14:35 0 comments

    Right now the parameterized code is in the works. Here is an example of how the drawings are broken down into variables. These terms will then be defined in the code allowing for rapid generation of a new CNC base given the dimensions, motor size, bearing size, etc that we need.

    Some of the dimensions will be dependent upon others.

  • Version 2.0 of the CNC

    Eric Jacob08/17/2014 at 16:23 0 comments

    Here are some images of version 2.0 of the CNC. (I skipped version 1 as we have already surpassed it)

    On the front you can see the platform and carriage. We've integrated multiple pre-drilled holes for easy mounting of spindles or clamps.

    The image of the back shows the linear slides. Here we have elected to use precision rods with bronze bushings. Grooves are cut into the plywood and the bearings snap into place. Glue can be used to further secure the stage. Allowing the stages to snap into place make assembly and alignment much easier.

    You can see a motor mounted on the bottom. On of the base plates was milled out of the back plate producing an access window for easier maintenance.

    If you look closely on the upper right of the image you can see that we have notched the back plate. This makes everything line up nicely. Some of these features would not be used in the non-CNC version as they would be difficult to produce.

    This is the second version. The first version was based on the Mantis and we have made improvements beyond that. ( This is version 2. We keep a running list of improvements/features/enhancements that we would like to add and integrate them the next time we need a CNC base. 

    Now the mechanics are working pretty well, our next effort is to parameterize the CNC base so that we can quickly make any size machine.

View all 6 project logs

  • 1
    Step 1

    We will be adding a step by step construction guide as we go. Right now we have done a lot by changing the design in order to make assembly a breeze. We are making these for our own use, so we want them to assemble quickly too.

    Currently the procedure is simple. The bearings go onto the precision rods and the rods are inserted (they fit tight) into the opposite walls (back-front, or side-side). With the grooves that we've added, the 4 sides lock together. Pre-drilled holes secure the sides.

    The bearings are designed to lock into the baseplate and carriage for assembly. Glue can be added later, once the system is aligned.

    Currently we are using stainless steel M8 threaded rod. All of this is flexible given the design. We have been experimenting using low temperature thermoplastic to quickly create the nuts to drive on the threaded rod. This works pretty well, but it is hard to be consistent. We are now looking at tapping delrin rod as a low cost alternative.

    There are access ports on the back and bottom for easy maintenance and assembly. Also, we have cut ports near the motor mounts to allow for easier access to the motor-threaded rod connection.

View all instructions

Enjoy this project?



MrRedBeard wrote 06/23/2016 at 22:03 point

Which NEMA motor did you go with?

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates