A compact desktop CNC machine combining mechanical design,
electronics, software control, and digital fabrication
I contributed to the 3D modeling of the CNC machine in Autodesk Inventor and prepared all technical drawings. I supported the assembly process and contributed to the development of the control code using GRBL firmware. I also guided key decisions based on experience with the tools, materials, and machines used in the fabrication lab. My focus was on translating the design concept into precise digital models and ensuring electronic control systems worked seamlessly with the mechanical structure.
I contributed to the design of the parts and continuously adapted the models based on real component measurements. I supported the entire manufacturing and assembly process, especially in the fabrication of metal components and laser-cut acrylic parts. I performed extensive physical testing, ensured proper fitting of all components, and debugged assembly issues. I also prepared all presentation materials, including slides, videos, and comprehensive documentation. My focus was on bridging the gap between digital design and physical reality.
This Gantt chart shows the week-long timeline of our CNC machine project, from initial research through final testing and documentation.
Color Legend: Research CAD Work Fabrication Assembly & Testing Documentation
At the beginning of the week, we decided to develop a minimalist CNC machine because it combines mechanical design, electronics, software control, and digital fabrication in one integrated system.
Our main inspiration came from small desktop CNC machines and from a YouTube playlist by Prof. Garcia (CNC FΓ‘cil de hacer en Casa), where he explains the process of building a CNC machine step by step. These videos helped us understand the basic structure, the movement system, the assembly sequence, and the workflow from design to G-code execution.
Based on this research, we adapted the idea to the materials and components available in our lab. We focused on creating a compact CNC machine capable of moving in the X, Y, and Z axes, using lead screws, linear bearings, stepper motors, an Arduino Uno with GRBL, and a CNC Shield with A4988 drivers. This planning stage helped us define the machine structure, select the required components, and organize the fabrication process before starting the assembly.
The first stage of the project was to design the main structure of the CNC machine in Autodesk Inventor. Before modeling the full machine, we started with an initial sketch to understand the general shape, the position of the axes, and the space that each component would need.
After defining the first idea, we created the main parts of the CNC machine in Inventor. Each component was modeled separately, including the base, the side supports, the moving bed, the motor supports, and the plates for the X, Y, and Z axes. This helped us understand the dimensions of each piece before assembling the complete machine.
Then, all the parts were placed into an Inventor assembly file. This allowed us to visualize the complete CNC structure and check how the mechanical elements would work together. Through the assembly, we could identify the position of the motors, lead screws, shafts, couplings, bearings, acrylic plates, and aluminum profiles.
One advantage of using Inventor was that we could generate the 2D profiles needed for fabrication. From the 3D model, we selected the flat faces of the structural pieces and exported them as DXF files. These files were later used to laser cut the acrylic components.
Described Problems and How the Team Solved Them
One of the most important lessons during the CNC machine project was learning that digital design and physical reality don't always align perfectly. This section documents the specific problems we encountered when transitioning from 3D virtual models to real fabricated components, and how we solved each issue.
The Problem: Our original Inventor model specified certain distances between mounting holes for the NEMA stepper motors. However, when we received the actual motors and tried to assemble them, the holes in our fabricated metal plates did not align with the motor's mounting holes.
Technical Details: The original design showed incorrect hole spacing. The actual motor had different mounting hole positions than what we calculated in CAD.
Original design showing measurement error in motor hole spacing - Ancho (Width) 23.30 mm, Largo (Length) 17.72 mm were incorrect
Solution: We redesigned the motor mounting plates with corrected dimensions to match the actual physical motors. This required re-cutting the front and back plates using transparent acrylic instead of the originally planned metal. The corrected dimensions ensure perfect alignment with the actual stepper motor specifications.
Corrected design with accurate motor mounting dimensions - 43.5 mm and 22 mm spacing matches actual motor holes
The Problem: The flexible couplings that connect the stepper motors to the lead screws require precise spacing and alignment. Our initial design did not account for the exact thickness and offset of the couplings, resulting in misalignment between the motor shaft and the lead screw.
Solution: We manually drilled and adjusted holes in several mounting plates to achieve proper alignment. The acrylic plates we switched to proved more flexible for iterative corrections compared to metal. We tested alignment repeatedly and made fine adjustments until the couplings rotated concentrically with the lead screws.
Testing and adjusting cut acrylic components for proper alignment - hands-on validation of digital designs
The Problem: The linear ball bearings that guide the shafts require exact positioning to ensure smooth, straight movement. Our CAD model estimated these positions, but once we assembled the real components, some bearings were slightly misaligned, causing binding and resistance when moving the axes manually.
Solution: We used shims and spacers to adjust bearing positions. In some cases, we manually opened existing holes or adjusted mounting surfaces to achieve proper alignment. These physical corrections were documented and fed back into the digital model for future iterations.
After implementing these corrections, the machine achieved:
Conclusion: The transition from virtual CAD design to physical fabrication revealed that engineering is as much art as it is science. Tolerances, real-world manufacturing variability, and the unpredictability of physical assembly require flexibility, iterative problem-solving, and a willingness to adapt the design based on physical reality. This experience reinforced the importance of prototyping, testing, and continuous feedback loops in the design-to-manufacturing process.
Image created with ChatGPT
The central carriage holds the tool and controls the working movement. The X-axis moves the carriage from left to right, while the Z-axis moves the tool up and down to approach or separate from the work surface. This allows the machine to position the tool correctly before engraving, drawing, or cutting.
The lower bed moves the material forward and backward. During the first assembly stages, we manually tested this axis by rotating the rods through the couplings installed in the acrylic bed. This helped us verify that the movement was smooth and aligned before powering the system.
After the manual verification, the machine was also controlled using OpenBuilds CONTROL. From the laptop, we were able to jog the axes, move the bed and the motorized system, and establish the work origin before running a G-code job. This allowed us to test the machine digitally and confirm that the mechanical and electronic systems were working together.
For this machine, we followed a digital workflow that connected the design process, G-code generation, machine control software, electronics, and the physical movement of the CNC machine. This workflow demonstrates how a digital design is transformed into a physical machined result.
1. Design in Aspire
First, we created the vector design in Aspire. The design used for this test was the text "UP". In Aspire, we prepared the drawing and generated the machining toolpaths according to the material and the type of operation we wanted to perform. After finishing the toolpath setup, the project was exported as a G-code file with the .ngc extension.
2. Loading G-code into OpenBuilds CONTROL
The .ngc file was then opened in OpenBuilds CONTROL, a free machine-control platform available at software.openbuilds.com. This software allowed us to connect the laptop to the CNC controller, load and execute the G-code file, manually move the machine axes, and set the work origin before starting the job. This was important because we needed to position the tool correctly and define the zero points for the X, Y, and Z axes.
3. G-code Transmission to Arduino
OpenBuilds CONTROL sent the G-code from the laptop to the Arduino Uno through a USB connection. The Arduino Uno was running GRBL firmware, which is designed to interpret G-code commands and convert them into motion-control instructions for CNC machines.
4. Signal Processing and Motor Control
The Arduino Uno does not directly power the motors. Instead, it sends low-power 5V logic signals, such as STEP and DIR signals. These signals indicate when each motor should move and in which direction. The Arduino was connected to a CNC Shield, which works as an interface between the Arduino and the motor drivers. The CNC Shield helps organize the connections for each axis and distributes the control signals to the corresponding stepper drivers.
5. Motor Driver and Power Supply
For motor control, we used A4988 stepper motor drivers. These drivers receive the 5V control signals from the Arduino and use an external 12V power supply to drive the stepper motors. This means that the Arduino is not converting 5V into 12V. Instead, the A4988 drivers use the 5V logic signals to switch and regulate the external 12V motor power. They also control the current delivered to each motor, allowing the CNC machine to move accurately step by step.
6. Physical Execution
Finally, the CNC machine executed the programmed movements and engraved the "UP" design onto the material. Through this workflow, a digital design was transformed into a physical machined result.
After completing the 3D model, we started the mechanical fabrication process by checking the real components and preparing the materials for assembly. This process combined multiple manufacturing techniques including measurement, CAD verification, CAM preparation, CNC metal cutting, plasma drilling, and laser cutting.
At this stage, we compared the digital design with the physical parts, such as the aluminum profiles, motors, shafts, couplings, screws, and support pieces.
First, we measured the aluminum profiles and marked the required dimensions. This step was important because the frame needed to match the dimensions of the Inventor model and support the movement system correctly.
Before machining the metal parts, we reviewed the design in Inventor and checked the geometry of the pieces that had to be manufactured. This helped us verify the shape, dimensions, and position of the holes before sending the parts to fabrication.
For the metal fabrication process, we used CAM (Computer-Aided Manufacturing) software to prepare the cutting paths. We tested and reviewed the geometry in programs such as EdgeCAM and Libellula before machining, which allowed us to check the toolpath and generate the necessary G-code instructions for the CNC metal-cutting machine.
The first step of metal fabrication was to use a CNC metal cutting machine (Mitamura) that uses laser cutting technology combined with high-pressure water jet or plasma. This machine reads the G-code generated from our CAM software and creates precise cuts in metal plates.
Process Details:
After the initial laser cuts, the metal parts needed precision holes for motor mounting, shaft supports, and fasteners. We used a plasma drilling machine (LAGUN) to create these holes with extreme precision.
Plasma Drilling Process:
For the structural aluminum and steel beams, we used a precision metal saw to cut them to exact lengths. This step required careful measurement and multiple pieces to be cut to the same dimension for frame consistency.
After all cutting operations, we used a metal router machine to polish and finish the metal surfaces. This removed sharp edges, burrs, and improved the overall finish of the components, making them safe to handle and suitable for precision assembly.
In addition to the metal parts, we fabricated support components using 3D printing. These pieces were useful for prototype adjustments, motor mounts, and specific mechanical adaptations during the prototype stage. 3D printing allowed us to quickly iterate on designs and test different configurations before committing to permanent metal solutions.
Overall Impact: This comprehensive fabrication process combined measurement, CAD verification, CAM preparation, CNC laser metal cutting, plasma drilling, mechanical sawing, polishing, and 3D printing. This integrated approach helped us adapt the digital design to real manufacturing constraints and create a structurally sound CNC machine. The combination of industrial machines and precision tools allowed us to produce components that met exact specifications while maintaining cost-effectiveness and functional reliability.
Before integrating the stepper motors and electronic control system, we tested the CNC machine manually by rotating the lead screws through the flexible couplings. This step was crucial to verify that all mechanical components were aligned properly, that the axes moved smoothly, and that there were no binding issues or misalignments.
This manual testing confirmed that the mechanical design was sound and that the machine was ready for electronic control and motor integration. The smooth operation during manual testing indicated that all tolerances were correct and that the assembly process had been executed properly.
In our first test, the CNC machine successfully drilled multiple holes in a material and drew precise lines. This demonstrated that the basic mechanical movement and control system were functioning correctly.
We added a pen to the tool holder so the machine could draw instead of drill or cut. This demonstrated the versatility of the CNC system for different applications - the same machine that drilled holes could now create precise drawings with multiple colors and complex patterns.
Instead of using the original drill bit on the motor, we replaced it with a wood engraving milling bit. This change allowed the tool to carve the surface of the wood more firmly and with better control.
However, because wood offers greater resistance than softer materials, we had to increase the power supplied to the motor. To achieve this, we tested the system using a 12V battery and later a 24V battery, which provided enough strength for the milling bit to engrave the wood effectively.
This video summarizes the complete CNC machine project, showcasing the design process, fabrication methods, assembly, and final testing results.
A future version of the machine could include customizable and interchangeable tool heads for different purposes, such as painting, cutting, and engraving. This would make the machine more versatile and allow it to perform more than one type of operation.
The machine could include a clamping system inside the acrylic box to hold the material securely during operation. This would reduce movement, vibration, and misalignment while the machine is working.
The 3D-printed part that supports the Y-axis could be replaced with a metal component, similar to the other axes. This would improve rigidity and help the Y-axis move in a straighter and more stable path.
Distance sensors or a small camera could be added to detect the surface of the object before machining. With this information, the machine could automatically calculate the work origin and reduce the manual setup time.
Image created with ChatGPT based on design explanations
Β© Fablab Ulima 2026 | Design: Tooplate