Published: Dec 2023
This desktop CNC machine has a working space of 500x350x75 mm and is designed for hobbyists, with the ability to cut a range of materials such as wood, nylon and aluminum.
Some of the features of the design are highlighted below:
Synchronous Belt Drive system (X & Y axis) to minimize costs while maintaining accuracy
Lead Screw Drive system (Z-axis) providing accurate vertical movement
Linear rails for XYZ ways to enhance stability and accuracy
Uses a 36V SMPS, to power 4 stepper motors + 4 stepper motor controllers
Problem Statement: Engineering students need an inexpensive, at-home CNC machine to prototype with metal parts because typical CNC machines are large and extremely expensive to work with.
Functional Criteria (high-level)
Must be able to work with a range of materials (aluminum, wood and plastic)
Must have an auto-calibration function
Must be able to work with conventional CNC file formats (G-code)
Must be able to operate milling head in a three-axis configuration
Must run off an Arduino control system
Must run off a regular household outlet
Non-Functional Criteria (high-level)
An intuitive user interface to control the machine
Adaptable to any milling motor/drive (outsourced)
The entire machine must be 1 physical unit (contained within itself)
The structure must be able to maintain vibrations
Constraints (high-level)
The entire CNC machine must cost less than $800
Must be able to reach less than or equal to 5 thou accuracy
Must include an emergency stop button
Out of Scope (high-level)
Auto tool-changing capabilities
Design of custom CNC software for Arduino
Standalone CNC controller and program initiation
The following section provides a walkthrough of each sub-system of the machine, and the design choices behind such design. I have tried to link all my resources/research that helped me learn and make such design choices for the design.
The desktop CNC machine requires a strong foundation to support all other components while also providing stability, rigidity and vibration damping. Due to the cost requirements of this machine and its end-user, the most viable option was chosen as T-Slotted Aluminum Extrusions.
T-Slotted Aluminum extrusions provide the following benefits:
Modularity (for future expansion of the machine without major design modifications)
Ease of assembly
Cost-Effective
Readily available
The dimensions of the base frame define the overall usable workspace for any workpiece as well as design requirements for the linear motion components (ex. travel). I decided on the following dimensions of the base (XY plane) aluminum extrusions due to their availability and costs:
X-axis: 600 mm
Y-axis: 400 mm
The T-slotted aluminum extrusions used for this design are linked below (All extrusions follow the European-standard aluminum profile and are made from 6063-T5 aluminum):
80x20 mm, 600 mm Length (for X way)
40x20 mm, 500 mm Length (for Y way)
40x20 mm, 400 mm Length (for Y axis)
The base (XY plane) aluminum extrusions are connected with open gusset brackets, designed for 20mm double rails to provide extra rigidity (Part No: 5537T663 from McMaster-Carr).
A CNC machine uses a gantry system to move the milling head in multiple dimensions. The physical motion axes of a CNC machine are typically referred to as its Ways and provide a path for the components to physically follow. For my system, I defined the movement of the milling head to be in a three-axis configuration (XYZ movement).
For my machine, all (3) ways use linear guide rails + ball bearing carriages for its movement. I decided to use linear rails as they exhibit the following benefits over other options I ideated:
Improved precision & accuracy - for reliable positioning of the gantry system)
Smooth & Low-Friction Movement - Rails achieve low friction through the use of hardened steel and precision ground surfaces, along with an optimized rail design/profile. The carriages use ball bearings that minimize contact surface area
Higher Load Capacity
Low-Profile Design
Based on the frame's requirements that I had set out, the linear rail lengths are listed below:
X-axis: 600 mm
Y-axis: 400 mm
Z-axis: 200 mm
X-Way
The linear rail design for the X-way is pictured below. It utilizes a HIWIN-made rail and carriage combination, with (1) HGR15 guide rail and (2) HGH15CA carriage block on either side. This combination allows for a maximum static moment of 100 Nm around the carriage's Z-axis that is well above the calculated loads to ensure a large safety margin (all loads were approximated by hand and verified in SolidWorks).
Y-Way
The Y-way utilizes (1) HIWIN HGR15 400 mm guide rail and (2) HGH15CA carriage blocks mounted on (2) 500 mm long aluminum extrusions that are set 95 mm apart.
Z-Way
The Z-way utilizes 2 pairs of (1) HIWIN MGNR12 200 mm guide rails and (2) accompanying MGN12HZ carriage blocks to move the spindle head vertically.
The Y-way and Z-way are pictured to the right:
Typically, linear rails purchased through McMcaster-Carr or any other supplier regardless of length can be very costly. That is why the decision was made to use linear guide rails from different suppliers to minimize costs while maintaining precision and load requirements. Other design options that I explored for the ways of the CNC system include:
Support rails + Mounted linear ball bearings
Ball bearings + Box tubing
Rollers for T-slot extrusions
The axis drive systems used within a CNC milling machine are responsible for the powered movement of the spindle head along the machine's ways.
There are many ways to design the axis drive system of a CNC milling machine. Typical full-size CNC milling machines utilize ball screws which can handle higher loads while maintaining high accuracy and efficiency, without suffering from common problems such as backlash (Backlash: play or clearance between mating components that involve gears, screws, or other components with interlocking teeth or threads). Although ball screws can be very expensive and even for my machine, it was something that would have put me well out of budget.
I made the following design choices regarding the axis drives for the 3 axes. All 3 axes utilize stepper motors.
X-axis: Timing Belt
Y-axis: Timing Belt
Z-axis: Lead Screw
Calculations for determining appropriate stepper motor and belt system specifications were done:
Determining stepper motor requirements:
I did extensive research into CNC machine speeds (Speeds and feeds, surface speed, feed rate, etc) to identify spindle movement speeds for various materials, and to set requirements for distance and movement time. After setting such parameters, I took the following simplified steps to determine the appropriate motor required:
Calculation of the maximum sustained motor speed (taking into account prospective belt pitch + pulses/revolution from the controller) assuming a standard ramp time
Calculation of the adjusted sustained motor speed to take into account any impulses from the system, as well as a specified ramp time.
Calculation of the peak torque required from the system using the adjusting speed and the calculated inertia(s) of the loads on the respective axes (calculated using SolidWorks Gear ratios were factored into torque calculations where required
There are many guides/videos I used to identify the appropriate motor selection process, which can be found all over the internet.
Determining Belt system specifications: I found that the best guides for belt system design and selection tend to be whitepapers offered by distributors (ex. MISUMI) or manufacturers of belt components. Many steps go into the belt system selection process, so I have linked a few of the following papers I used:
X-axis Drive Design
Belt
S5M Timing Belt (Trapezoidal tooth profile)
5 mm pitch, 10 mm width
Circumferential length/Teeth #: 1350/270
Stepper Motor
Frame Size: NEMA 23
Holding Torque: 1.9 Nm
Operating Voltage/Current: 36V/2.8A
Pulley
S5M High Torque Pulley
2000-series aluminum
16 teeth, 25.46 mm PCD
Y-axis Drive Design
The Y-axis drive system utilizes 2 belt systems. The first system is a reduction gearbox that multiplies torque and this system is linked to the second system that has a 1:1 gear ratio to move the carriage. Since the larger pulley from the gearbox sits on the same shaft as the pulley from the 2nd system, they share the same speed/torque.
First system: Reduction gearbox with 1.25 gear ratio
Belt
S5M Timing Belt (Trapezoidal tooth profile)
5 mm pitch, 10 mm width
Circumferential length/Teeth #: 225/45
Stepper Motor
Frame Size: NEMA 23
Holding Torque: 1.9 Nm
Operating Voltage/Current: 36V/2.8A
Second system: 1:1 gear ratio
Belt
S5M Timing Belt (Curvilinear tooth profile)
5 mm pitch, 10 mm width
Circumferential length/Teeth #: 1165/233
Pulley
S5M High Torque Pulley
16 teeth, 25.45 PCD
Z-axis Drive Design
The Z-axis Drive system uses a 1:1 gear ratio with the following specifications:
Belt (for power transmission)
GT2 Timing Belt (Curvilinear tooth profile)
2 mm pitch, 6 mm width
Circumferential length/Teeth #: 164/82
Stepper Motor
Frame Size: NEMA 23
Holding Torque: 1.26 Nm
Operating Voltage/Current: 36V/2.8A
Lead Screw
8 mm diameter
250 mm length
2 mm pitch, 4 starts, 8 mm lead (ACME Thread)
Anti-backlash block
The following parts are designed to be 3D printed for the desktop CNC machine.
The electrical system of the CNC machine is designed off a 36V architecture, supplied through a 36V 15A SMPS. A simplified high-level wiring diagram of the electrical system is as follows:
A rough layout of the Shield design for the Arduino Uno Rev3 is drawn below. It features a switching regulator for stepping down the voltage from the SMPS, as well as terminal blocks for easy connection between stepper motors and peripherals to the board.
The following image is a schematic of the Arduino shield that I am currently developing. It features a switching buck regulator and screw terminals for ease of installation of wires from the motor controllers, directly to the Arduino through multiple headers for the Arduino Uno Rev3. This is still a work in progress as I incorporate limit switches and their necessary hardware debounding components.
The following section outlines any online resources that I referenced throughout the design process of my desktop CNC machine.
Guides/Design Guides
Speeds & Feeds for CNC machines: https://blanch.org/belts-vs-screws-in-cnc-design/
Belt Drive Design
Lead Screw Design
Stepper Motor Design/Selection
References to Existing Desktop CNC machine designs