Just a quick clip of milling down some round stock. This particular part was for the robot quadruped.

CNC picture

Over the span of about 3 months in the summer of 2022, I decided to make my own desktop CNC mill. The goal was to make a mill capable of milling any plastic, aluminum, or wood thrown at it, along with the capacity to tackle ferrous metals or harder non-ferrous metals if needed. It also needed to cheap and be portable enough to and from college. The mill takes inspiration from multiple sources, but the design is entirely my own.

Design - Spindle

This machine was designed starting with the spindle. I began by determining the necessary cutting parameters and worked backward from there. In my opinion, the most critical features of a spindle for a hobby machine are power consumption, torque/speed, and tooling size.

One of the major constraints when choosing a spindle is its total power draw. A standard U.S. outlet has a 15A breaker, and it’s generally recommended to use no more than 80% of that capacity continuously, which limits the spindle to drawing about 12A at 120V from a standard outlet. This puts the ideal spindle power range at around 1-1.5 kW.

Regarding torque and speed, hobby spindles have much lower torque compared to professional machines, particularly at low speeds where the torque/speed curve drops off significantly. Unfortunately, when I was researching spindles, there wasn’t much variation in the torque/speed curves of hobby spindles under 1.5 kW. Most options limit machining to higher speeds, above 10,000 RPM, which is fine for aluminum and non-ferrous work. However, steel presents a challenge for this spindle, as it tends to produce needles rather than chips.

In terms of tooling, the limited torque of hobby spindles restricts the use of larger tools. While bigger tools are preferable for their rigidity and the availability of additional tool types (like indexable endmills), the spindle’s torque suggests using smaller tools in the 6mm range. The spindle runs at up to 20,000 RPM, is water-cooled, and uses ER-11 tooling. It met all my specifications and stayed within budget. Although the bearings are likely knockoffs, the spindle performs well. In the future, this part will probably be upgraded, as it offers the most room for improvement. However, upgrading to even a low-end professional spindle would be quite costly.

Design – Motion Components

CNC picture

The motion components of the CNC are twofold: linear rails and ball screws. Linear rails rigidly constrain the movement of an axis to a single direction, while ball screws, similar to lead screws, circulate ball bearings to reduce sliding friction (hooray for rolling friction!), minimize backlash, and decrease wear.

Starting with the linear rail choice, the ideal rail is extremely rigid and straight. Several types of linear slides/rails are available, but the two most common in CNCs (both DIY and professional) are true linear rails, also known as profile rails or linear guideways, and round rails. True linear rails function by circulating balls along a ground raceway, similar to a radial ball bearing, except the balls recirculate along a linear path instead of circularly around the bearing races. Linear rails allow the rail to be bolted down at multiple points along the direction of motion.

Round rails function similarly but run along a round shaft. These rails are either only secured at the ends or have a flange for a semi-rigid connection along their length. True linear rails are far superior in rigidity to round rails. Although round rails are found in some machines due to their lower cost, true linear rails are much better. Any company offering “round noodle rails” is essentially stealing money (see the Bantam CNC for reference).

Focusing on true linear rails, there are still many different sizes, ranging from tiny MGN12 rails used in 3D printers to massive rails that resemble train tracks. Without diving too deeply into the tradeoffs between cost, rigidity, and size, HGW15 rails strike a good balance across these metrics. The highest-quality options, like HIWIN rails, are prohibitively expensive. Alternative sources for knockoff rails include Alibaba, AliExpress, and Amazon. While these rails are of lower quality, they are more than sufficient for my limited applications and experience. Shoutout to the PrintNC community for finding semi-reputable suppliers for motion components—I ordered from the same suppliers they recommended.

The ball screws are SFU1605. Ball screws are one of the best choices for building a rigid and accurate CNC machine. They outperform lead screws, belts, and rack-and-pinion designs in terms of wear, backlash, and friction. The only major downside is their higher cost, which I mitigated by using knockoff rolled ball screws. Ball screws can be manufactured in two main ways: precision-ground (which is exceedingly expensive, costing thousands of dollars per screw) or rolled. Rolled screws are less accurate but more durable and much cheaper due to easier manufacturing. I used rolled screws from a supplier on Alibaba, as recommended by the PrintNC community.

SFU1605 ball screws are 16mm in diameter with a 5mm pitch. I chose a higher diameter screw to increase rigidity and reduce the risk of runout at high RPM (commonly known as screw whipping). In retrospect, a 12mm diameter screw would likely have sufficed, but the only engineering downside of the 16mm diameter is a small increase in system inertia. The 5mm pitch was selected because it was the smallest readily available, offering higher precision. These two motion components work together to create a rigid and accurate machine.

Design – Frame

CNC picture

Note: The CAD for this project was on a laptop that got completely bricked. This is a screenshot I had lying around, as the most recent backup was older than this image.

Two key factors: rigidity and damping. Most industrial CNC machines use cast iron due to its excellent properties in both categories. Unfortunately, I don’t have access to a casting facility or the funds to order a cast base for my small CNC machine. Other industrial options include granite or epoxy granite, both of which offer high damping while maintaining rigidity. However, these materials tend to produce extremely heavy machines. Since one of my requirements was to move the machine between home and Cornell, I had to find another solution. My approach was to prioritize rigidity and use steel tubing and plating. While this solution sacrifices damping, rigidity is more important than damping for a machine of this size. This tradeoff is fairly common in DIY CNC builds.

Once I chose the construction material, I designed the frame with three main elements: steel tubes, steel plates, and steel bars. The steel tubes serve as the primary structural components, the plates connect the tubes where necessary, and the steel bars provide a flat surface for mounting the linear rails. The steel bars are a superior mounting surface compared to the tubing, as the tubing is not very flat due to the weld seam. Overall, the frame was designed with a focus on rigidity and manufacturability. I conducted some FEA on the frame (unfortunately, the images and results were lost when my laptop was bricked).

Design – Controls

The main electrical control was done using an AXBB-E CNC motion controller. This motion controller allows for synchronous stepper movements from g-code. I thought about using an old computer or a retrofitted raspberry pi with linuxcnc for this purpose, but this controller seems to be a great option.

I used stepper motors for driving the axis because they provide precise motion control with good torque output at a low price. These particular steppers are open-loop steppers. I did not see the need to pay for closed-loop steppers because I did not intend to crash the machine and lose steps a lot (I would do that a couple times). There are also inductive limit switches that detect the limits of each machine axis. These should prevent any axis from crashing or running off the rails. All of the critical controls wiring are placed in a custom electronics box that I made out of some aluminum from high school robotics.

CNC picture

CNC picture

Construction

I won’t spend too much time discussing how this machine was built, but it required a drill press, bandsaw, jigsaw, a car, a variety of other tools, and a significant amount of time and effort. I drilled hundreds of holes in steel tubes and plates.

Tramming was a major challenge for this machine and one of the least-thought-out aspects. Ideally, I would have incorporated built-in screw-jack adjustments for tramming. This process took several days and involved moving the axes with a dial indicator.

I do not have the metrology equipment to quantify the straightness or flatness of the inexpensive linear rails, but I can roughly assess the straightness of each axis relative to the frame using a dial indicator while moving the axes back and forth. The Y-axis is within 5 thou across its full travel, assuming that the milled plate I ordered was straight along that axis. The X-axis is within 8 thou across its travel, and the Z-axis is within 6 thou. The mill was trammed using the straightest portions of travel at the center of the table, while the most misaligned sections were at the edges of the travel.

The biggest challenge for me is determining the squareness of the machine, where there is significant room for improvement. Verifying the accuracy and squareness of the machine is difficult without additional metrology equipment.

Results/Lessons

CNC picture

This machine can absolutely rip through material. I’ve seen people run Haas machines much slower than I can push this one. I’ve learned a lot about machine design and machining through this experience. The machine is fun to use but definitely takes some getting used to.

One of the major issues with running this machine is the noise. Due to relatively low damping, the entire frame rings while milling, and the incredibly high spindle speed contributes to the problem. The high-pitched noise is extremely annoying compared to the lower-frequency sounds that larger mills sometimes produce. Additionally, the small tooling presents challenges. Small end mills break easily, and end mills with many flutes have very thin cores, making them even more prone to breakage. As a result, I tend to use end mills with one or two flutes. These end mills, especially the single-flute variety, are more unbalanced and generate even more noise.

Despite the noise issues, the parts produced by this machine are fairly dimensionally accurate. Using the machine is relatively straightforward. My process involves designing a part in Autodesk Inventor, programming the CAM in Fusion 360, and using UCCNC control software to drive the machine. I am very happy with this machine; it has seen a lot of use in several of my projects, notably in the extensive work for the robot quadruped project.

Finally, I learned that NOTHING IS STRAIGHT, NOTHING IS FLAT, NOTHING IS SQUARE!

A timelapse video of milling actuator housings for the robot quapruped project.

9/10 would build again. Would buy the plates laser cut.