Log in
  • Building a Starter CNC Machine (Part 1)

  • Tags: openscad metalworking cnc

    This entry kicks off a series of posts that record my building of a starter CNC machine. Using OpenSCAD, I had previously explored various alternatives for size and materials. See Modelling a Starter CNC. I found that eventually settling on only one set of dimensions, materials and configurations can be surprisingly difficult, because of the many alternatives. However, the selected design appeared to embody the best trade-offs between needs, performance, budget, and my ability to build the machine given the tools that I currently possess.

    By following these posts, you might be inspired to build your own machine, as well as learn from some the pitfalls that I find along the way.

    Settling on the Design

    starter cnc machine The picture above shows the design with the dimensions that will be used.

    The base, the X axis frame is 39 x 26 inches. The Y axis, which holds the table, is about 27 x 18 inches. The Z axis, on a column to raise it above the other two axes, is about 18 inches.

    The table is 36 x 13 inches and the Z axis can reach about 95% of it. In addition, because the machine is not enclosed, if workpieces are greater than the platform size, theoretically the work can extend beyond either end or toward the front.

    The frame consists of MDF plywood for expense. However, most of the MDF frame parts are double-layered, glued and screwed together. MDF also has properties of vibration absorption, which helps for stability. The table actually consists of three layers to contribute to rigidity with steel underpinnings to help enforce that. Finally, the Z axis column is 4 1/2 inches thick with the layers glued perpendicularly to the X axis in the hope that might contribute to rigidity.

    While the frame is fairly heavy and stable, it is really there to hold the steel parts which will do the actual work.

    This section covers some aspects of the fabrication of the frame.

    The MDF Frame

    From the OpenSCAD files and a Python wrapper I generated the list and shapes of MDF pieces that would be assembled into the machine. Based on square footage, I needed a couple 4 x 8 sheets. Because of the weight of 3/4 x 4 x 8 sheets, I got the sheets cut in half at the lumber yard before taking them home.

    MDF pile

    Cutting the initial pieces

    An efficient layout of the pieces on the sheets minimizes the waste created by too many gaps. Progressing from placement of the largest to smallest pieces generally yielded the best results. In the end, due to the limitations of shapes I was forced to buy an additional half sheet in order to complete it.

    MDF pile1

    Because of my initial uncertainty about my expected accuracy of the cuts, I left space on either side of the pieces to account for mistakes. However, I could have spaced the pieces much closer together. Using a circular saw and guides, the accuracy was sufficient.

    The X Axis

    X axis design

    The X axis comprises the base of the CNC machine and is the largest portion of the frame. In this case, the X axis will enable movement of the table left and right. By moving the table, the spindle on the Z axis, while in a fixed position, can reach most places on the table.

    In the picture above, the yellow components represent sliders or bearings on the linear rails and the leadscrew nut. The Y axis frame will be attached to these components. So, the extent of the movement left and right will be constrained by where the linear sliders attach to the Y frame.

    In this rather poor picture below, you can see the the bottom of the X axis frame and what will become the table that has been glued and dried overnight. In shadow behind the bottom, the sides are being glued together. I used several clamps in a row in attempt to get consistent compression all along the length. I do not have many pictures of gluing, because it always seemed to be high-tension moments of glue hardening, yet the parts were slipping and everything was not yet clamped properly.

    gluing X axis

    My original thought on the frame was that I would double-layer the bottom and sides of the frame by gluing, then assemble the frame with screws. Once I got started on the project, however, gluing the assembled frame into a solid piece seemed a more sensible approach.

    Generally speaking, I wanted to avoid building components of the CNC machine that were heavier than I could lift. I can lift the X axis frame, the MDF portion, but I would not want to carry it very far. With the hardware installed, I doubt I would be able to carry it.

    The picture below shows the screw holes being drilled in the bottom plate as well as the layout of the holes to be drilled for the supports for the linear rails. As you can see, I used the hand attachment to the drill to pretend that I had a drill press. It works pretty well, but is somewhat untrustworthy, at least in my hands. Note that this bottom plate already consists of two layers of MDF. Drilling holes prepares the plate for gluing and screwing the sides together. MDF is a material that requires holes prior to using wood screws to avoid splitting.


    This picture shows the process of fitting the frame together prior to gluing. Fortunately, I was pretty careful with the measurements, it fit together very well.

    assembling X axis sides

    The frame in this picture is glued and ready for sanding. Because the frame will be painted, glue stains can be ignored.

    assembling X axis sides

    Painting the X Axis

    This picture shows the frame halfway into the priming process. It has a bit of primer and some sanding prior to the next coat. Because of my paranoia about humidity and moisture, I used an oil-based primer first to seal the surface. Then, I used a water-based latex paint for the final coats.

    X axis primered

    Below shows the frame partially painted with the outer coat. I used a brush to apply paint for this project. I believe next time, I might try using spray paint, because I found it difficult to get even coverage. X axis almost completed

    X Axis Frame Completed

    Below shows the MDF portion of the X axis completed. The holes for the hardware show fairly clearly in this shot. Note the holes on the right-hand side. The Z axis frame will be bolted to the X axis at this location.

    The holes do not directly correspond to the size of the hardware to be fit onto the frame.


    Because I crafted the MDF portion first, I was uncertain if some of the dimensions of the hardware might change, once I got knee deep in making the metal parts. Because it is easier to make small holes larger, rather than large holes smaller, I deliberately used small holes as placeholders.

    In retrospect, that was a bad idea, because it is much harder to size the holes properly once the frame has been glued together. Now I know.

    The Y Axis Frame

    Y axis design

    Just as the X axis enables movement of the table left and right, the Y axis enables movement forwards and backwards.

    The Y axis rides via linear sliders on the X axis linear rails. In turn, the table moves via a similar mechanism on the Y axis frame.

    While the X axis frame is basically an open-ended box, the Y axis frame has supports to hold the linear rails, but is otherwise open.

    While the table of course is an integral part of the Y axis, I am ignoring it for the moment. The final build the table will come after I have completed most of the project. Waiting is required, because the top surface of the table will be skimmed in place by the spindle on the Z axis. This process helps to ensure a flat surface with respect to the rest of the machine. While some CNC routers use their work surface in a sacrificial manner, that is not my intention.

    Assembling the Y Axis Frame

    Because the methods for building the Y axis frame are similar to the X axis, I will show just a couple highlights. This picture shows dry-fitting the parts for holding on the support beam underneath the linear rails prior to gluing.


    Here the constituent parts have been assembled to evaluate the fit. Note that nothing is really screwed together or glued. Also, no holes for the linear rails or leadscrew have been drilled, which you would see on the ends.

    yaxis assembly

    Here is the Y axis in the process of being primered.

    Just to mention, since this is a good view, a steel cross bar will extend across in the middle of the lower beams with the holes. That cross bar will attach to the leadscrew nutholder on the X axis below. The steel cross bar will be attached on either side to steel frame pieces that will be screwed into those lower beams for enhanced rigidity.

    yaxis primered

    And finally, the Y axis frame has its final coat.

    yaxis final coat

    The Z Axis Frame

    The Z axis holds the spindle and provides the vertical motion. The design provides for an extension to a fixed midpoint of the machine with respect to the X and Y motions. By using the midpoint, the X and Y movements of the table have maximum coverage. From my earlier posting, Modelling a Starter CNC, you may have read that I did not use the traditional dovetail approach. With my existing equipment, I did not believe that I would be able to machine sufficiently accurate dovetails of these dimensions. So, this design uses that same linear rail approach used on the other dimensions.


    The horizontal extension from the vertical frame can be a weak point for rigidity, so considerations are taken to counteract the issue.

    One concern would be that the spindle would tend to "nod" downwards as the vertical frame or the extension slowly succumbs to gravity. Another is that the rigidity of the extension portion would lack stability and tend to move from side to side or respond to the cutting forces when machining.

    The extension will hold steel rods embedded within the MDF extension and the steel rods will connect the Z axis column via a thick steel backplate to the spindle collar, which I will address in a later post.

    Those concerns were addressed in the design. First, the vertical frame was stiffened to 4.5 inches thick and 13 inches wide. The reason for 4.5 inches stems from the calculation of 6 layers of 3/4 inch MDF. In fact, however, when I came to make the frame I wondered if there would be greater advantage to layering from side to side rather than front to back. While I do not really know if it makes a difference, I layered from side to side. My thought is that the glued layers might be fairly strong in themselves and provide just a bit more stability. So, I do not know if it is a good idea, but that is what I did.

    From the picture above, you can see basically a column extending up with essentially an open-topped box attached to its face. The construction method involved gluing the internal layers together first, which was 13 layers, make the profile for the outer layers next as one piece, and finally glue it all together in one assembly. The horizontal bars at top and bottom were created separately and are screwed on separately. Because of the uncertainty of the size of the holes for holding the linear rails and leadscrews in place, I surmised that once glued, it might be very awkward to get the hole size correct, especially on the lower bar. So, the crossbars will only be attached by screws not glue.

    Gluing the Z Axis Frame

    Gluing the center column turned out to be somewhat of a mess, because I had trouble clamping and holding everything securely and evenly. The gluing process was iteratively gluing layers together, then gluing those layers together, until my 13 layers were complete. The concept was that the glue would dry fairly fast so building it up slowly seemed reasonable at the time. I was left with a series of layers that were not flat on their ends, and it was 10 inches wide. For the other layered pieces that were glued this was no problem, because the 1 1/2 inch edges could be easily shaved with the circular saw. With the center column, however, being 10 inches thick, it was well beyond the reach of any circular blade.

    To address that, I used my router with two walls on either side of the column, and skimmed the surface. A picture of the process below shows the setup. Fortunately, I had made the column somewhat oversize, so there was room for cutting.

    routing Z axis

    This picture shows the column cleaned up and even.


    The next step involved assembly of the sizes and ensuring that the crossbars fit appropriately. The screws were placed, everything dry-fitted and finally the screws were counter-bored in preparation for hiding them after the sides were glued on the column.


    This picture shows the process of dry-fitting on the top of the Z axis with the sides and top crossbar.


    The Z Axis Frame Assembled

    This picture shows the Z axis assembled, glued, painted and experimentally attached to the X Axis. Less visibly, you can also see tape attached to the crossbars as I start to address the question of hole sizes and placement of the hardware.

    xaxis and zaxis attached

    Note that the extension portion of the frame has not been addressed. That will wait until I finish the hardware portion of the Z axis in case any dimensions might change along the way. Waiting helps to ensure that the center of the spindle will indeed be at the center point of the machine.

    What's Next?

    The next steps revolve around machining the linear rails and the hardware to fix them into the proper positions on the frames. This will be addressed in the next post.