Manufacturing and Assembly¶
Introduction¶
This documentation outlines our journey in constructing a CNC machine, a tool designed to redefine artistic expression. By automating part of the artistic processes, artists gain unparalleled control over material manipulation, fostering creativity and precision in their work. With a focus on innovation and accessibility, this project seeks to empower artists of all backgrounds to explore new realms of creativity.
Design Phase¶
Using Fusion 360, we meticulously crafted each component to ensure optimal functionality. Our design journey began with an existing design by Nikodem Bartnik, which can be found on Instructables. We selected this design as our foundation due to its robustness and versatility. However, to meet our specific requirements, we made significant modifications:
-
Component Modifications:
- Changed several components to improve durability and performance, for example the motor mounts where edited to have thicker walls and a wider face to increase strength.
- Adjusted the dimensions of the machine, making it larger in the X and Y axes to accommodate bigger workpieces.
-
Z Carriage Redesign:
- Redesigned the Z carriage to accommodate a silicone extruder instead of the original Dremel tool. This involved creating a custom mount and ensuring proper alignment and stability.
-
Exporting for 3D Printing:
- After finalizing the design, each component was exported in STL format.
- These STL files were then imported into Cura slicer for slicing and subsequent 3D printing.
Iterative design iterations allowed us to refine our concepts, striking a balance between form and function. Considerations such as material properties, assembly methods, and compatibility with off-the-shelf components were paramount in the design process. Our modifications ensured that the CNC machine would be suitable for creating 3D textured art with a silicone caulking extruder.
Ordering Components¶
We embarked on a thorough selection process, evaluating components based on criteria such as compatibility, quality, and cost-effectiveness. Extensive research and consultation with suppliers ensured that each component met our stringent requirements. By prioritizing reliability and performance, we aimed to lay a solid foundation for the CNC machine’s construction.
3D Printing¶
First, each part was exported as an STL file, and then imported to Cura slicer to slice the part. The utilizing the Ultimaker S5 3D printers, we translated our digital designs into tangible parts. Careful consideration was given to printing parameters such as layer height, infill density, and print orientation to achieve optimal strength and surface finish. Post-processing techniques including support removal, sanding, and smoothing further refined each printed component to meet our exacting standards.
Assembly¶
With meticulous attention to detail, we started with the assembly process. Each component was carefully integrated and assembled, with a focus on alignment and fitment. Through methodical assembly techniques and quality control measures, we aimed to create a CNC machine that would deliver consistent performance and reliability.
We started with pressing the bearings using a vise, making sure that they are seated correctly.
Then we attached the lead screw nuts to each of the axes.
Frame Assembly¶
The assembly of the frame represented a critical phase in the construction process, requiring careful consideration of structural integrity and stability. The 2020 aluminum extrusions were cut, tapped, and assembled. Attention to detail and adherence to design specifications were vital to ensure the frame’s ability to withstand the operation. Also, the leads screws and the chrome rods were measured and cut to size using the angle grinder.
Extruder Design and Assembly¶
The design and assembly of the extruder were approached with a focus on precision and reliability. We considered various design options for the extruder, iterating through multiple prototypes to ensure smooth material deposition and consistent performance. Below are the four ideas we explored:
Design Idea | Description | Pros | Cons |
---|---|---|---|
Rack and Pinion | Used a rack and pinion mechanism to push silicone out from the tube. | Simple design, easy to implement | Limited control over extrusion speed |
Lead Screw with Rotating Nut | Used a lead screw with a rotating nut actuated by a belt and stepper motor. | Precise control, consistent extrusion | Complex assembly, higher friction |
Lead Screw with Conversion Block | Converted rotating motion into translational motion using a lead screw and block | Improved precision and control | More components, increased complexity |
Lead Screw with Lead Screw Nut (Chosen Design) | Attached a lead screw nut to an outer sleeve (PVC tube) to create a linear actuator. | High precision, smooth operation, reliable | Requires precise alignment and assembly |
Chosen Design¶
We selected the fourth design: a lead screw with a lead screw nut attached to an outer sleeve, creating a version of a linear actuator driven by a stepper motor. This design was chosen for its high precision, smooth operation, and reliability.
Modeling in Fusion 360¶
The chosen design was meticulously modeled in Fusion 360. The process involved: - Designing the lead screw and lead screw nut to fit precisely within a PVC tube. - Creating a custom mount to securely attach the stepper motor. - Designing and printing a coupling piece to join the lead screw nut to the PVC pipe. - Ensuring the entire assembly allowed for smooth translational motion with minimal friction.
Enhancements and Adjustments¶
- Lubrication: After initial testing, lubrication was added to the lead screw to facilitate smoother movement.
- Friction Enhancement: Sandpaper was applied to the end of the sleeve (tube) to increase friction between it and the silicone tube, preventing the tube from rotating with the lead screw.
Iterative prototyping and testing allowed us to refine the design, ensuring smooth material deposition and consistent performance.
Electronics Setup¶
The electronics setup involved the careful integration of various components, including stepper motors, drivers, and control boards. A thorough understanding of electronics principles and best practices guided the setup process, with a focus on safety and efficiency.
Components and Their Purposes¶
Component | Purpose |
---|---|
12V Power Supply | Provides the necessary power for all the electronic components, ensuring consistent and reliable operation. |
Arduino Mega | Acts as the main controller for the CNC machine, running the firmware and sending commands to the stepper drivers. |
CNC Shield for Arduino | Connects to the Arduino Mega, facilitating the connection of stepper drivers and providing a streamlined setup for controlling the motors. |
A4988 Stepper Drivers | Control the stepper motors by regulating the current and managing the step signals, allowing precise control of motor movement. |
Stepper Motors | Drive the movement of the CNC machine’s axes, translating electrical pulses into mechanical motion. |
Setup Process¶
-
Power Supply:
- Installed a 12V power supply to power the Arduino Mega and the stepper drivers.
-
Arduino Mega and CNC Shield:
- Mounted the CNC shield onto the Arduino Mega. The CNC shield provided a convenient way to connect the stepper drivers and motors to the Arduino.
-
Stepper Drivers:
- Installed A4988 stepper drivers onto the CNC shield. Adjusted the current limit on each driver to match the stepper motors’ requirements.
-
Stepper Motors:
- Connected the stepper motors to the CNC shield through the stepper drivers. Ensured that the wiring matched the correct pin configuration for proper operation.
Wiring Diagram¶
To ensure a smooth and error-free setup, we followed a detailed wiring diagram. The connections were made as follows: - Power Supply to Arduino Mega and CNC Shield: Connected the 12V power supply to the power input terminals on the CNC shield. - Stepper Drivers to CNC Shield: Plugged the A4988 drivers into the designated slots on the CNC shield. - Stepper Motors to Drivers: Connected the stepper motors to the output terminals on the A4988 drivers.
Final Adjustments¶
- Carefully checked all connections to ensure they were secure and correctly aligned.
- Adjusted the potentiometers on the stepper drivers to set the correct current limit for the motors.
- Tested each motor individually to verify proper operation and make any necessary adjustments.
Software Configuration¶
Introduction to Marlin Firmware¶
Marlin is an open-source firmware for the RepRap family of 3D printers. It is highly customizable and widely used for its reliability and versatility. For our CNC machine, Marlin was chosen due to its robust features and extensive community support.
Editing Marlin Firmware using Arduino IDE¶
To configure Marlin for our CNC machine, we used the Arduino IDE. The following steps outline the key modifications made:
-
Axis Configuration:
- Configured the X, Y, and Z axes to match the dimensions and movement parameters of our CNC machine.
- Calculated and set the steps per millimeter for each axis to ensure precise movement.
-
Temperature Sensor Override:
- Since our CNC machine does not use a traditional hot end, we had to bypass the temperature checks in Marlin.
- This was done by setting one of the temperature sensors to a fixed value, allowing the firmware to operate without needing to reach a target temperature.
Installation and Uploading¶
-
Installation:
- Installed the Arduino IDE and the necessary libraries to work with Marlin firmware.
- Downloaded the latest version of Marlin from the official repository.
-
Uploading to Arduino Mega:
- Connected the Arduino Mega 2560 to the computer via USB.
- Selected the appropriate board and port in the Arduino IDE.
- Compiled and uploaded the customized Marlin firmware to the Arduino Mega.
Steps per Millimeter Calculation¶
The steps per millimeter for each axis were calculated based on the lead screw pitch and the stepper motor specifications. The formula used was:
Steps per mm = (Motor Steps per Revolution × Microstepping) / Lead Screw Pitch
Config Files¶
To access the Marlin configuration files used for this project, follow this link.
Summary¶
By configuring Marlin firmware, we ensured that our CNC machine operates smoothly and efficiently. The customization process allowed us to tailor the software to meet the specific needs of our machine, overcoming challenges such as the temperature sensor override to achieve successful extrusion.
Integration and Testing¶
Integration of components was conducted systematically, with each subsystem tested individually before final assembly. Comprehensive testing protocols were employed to evaluate functionality, performance, and reliability under various operating conditions. Any issues or discrepancies identified during testing were addressed promptly to ensure the CNC machine met the desired specifications.
Systematic Integration¶
-
Subsystem Testing:
- Electronics: Each electronic component, including the Arduino Mega, CNC shield, A4988 drivers, and stepper motors, was tested individually to ensure proper functionality.
- Mechanical Components: The frame, lead screws, and linear guides were assembled and tested for alignment and smooth movement.
- Extruder: The extruder was tested separately to verify the precision of silicone deposition.
-
Initial Integration:
- Assembled the electronics with the mechanical frame. Ensured all connections were secure and components were aligned correctly.
- Mounted the extruder onto the Z-axis and tested its movement along the X, Y, and Z axes to confirm smooth operation.
Comprehensive Testing Protocols¶
-
Movement and Calibration:
- Axis Movement: Verified the movement of each axis (X, Y, Z) by sending manual commands via the control software.
- Calibration: Calibrated the steps per millimeter for each axis to ensure accurate positioning. Adjusted motor steps, acceleration, and feed rates as needed.
- Home Position: Tested the homing function to ensure the machine accurately returned to its home position.
-
Extruder Testing:
- Material Flow: Tested the extruder to ensure consistent and smooth flow of silicone. Adjusted extrusion speed and retraction settings for optimal performance.
- Temperature Override: Overcame the lack of a real hot end by setting one of the temperature sensors to a fixed value, allowing the extruder to operate without temperature control.
-
Software Configuration:
- Marlin Firmware: Installed and configured Marlin firmware on the Arduino Mega using the Arduino IDE. Adjusted configuration files to match the CNC machine’s specifications.
- Configuration Steps: Set up the firmware to control the machine, including motor steps, endstops, and extruder parameters. Uploaded the firmware to the Arduino Mega.
- Marlin Files: The Marlin configuration files used can be accessed here.
Final Adjustments and Problem Solving¶
-
Addressing Issues:
- Mechanical Adjustments: Made fine adjustments to the mechanical components to resolve any alignment issues or friction points.
- Electrical Troubleshooting: Ensured all electrical connections were secure and free of interference. Resolved any issues with stepper driver current limits and motor wiring.
-
Lubrication and Friction Enhancement:
- Added lubrication to the lead screws to facilitate smoother movement.
- Applied sandpaper to the end of the extruder sleeve to increase friction between it and the silicone tube, preventing rotation.
Through methodical integration and rigorous testing, we ensured that the CNC machine met all desired specifications and was ready for artistic exploration.
Interfacing with Pronterface¶
Installation and Setup¶
To interface with our CNC machine, we utilized Pronterface Print Run, a versatile control software commonly used in 3D printing and CNC applications. Here’s how we set it up:
-
Downloading Pronterface:
- We downloaded Pronterface from its official website or repository, ensuring compatibility with our operating system.
-
Connecting to the Machine:
- Using the Arduino USB cable, we connected the Arduino Mega to our computer.
- Opened Pronterface and selected the correct serial port and baud rate to establish communication with the CNC machine.
-
Controlling the Machine:
- Once connected, Pronterface provided a user-friendly interface to manually control the CNC machine.
- We utilized Pronterface to home the axes (X, Y, and Z) using the G28 command, ensuring precise alignment and calibration.
-
Uploading G-Code:
- Pronterface allowed us to upload G-code files generated for specific designs.
- By selecting the appropriate file and initiating the print, Pronterface sent commands to the CNC machine to execute the programmed movements and extrusions.
Generating G-Code¶
Custom G-Code Generation Process¶
For generating G-code tailored to our CNC machine’s capabilities, we mainly had several methods in mind, due to time constraints we opted to use chatgpt to generate some simple gcode to test the machine:
-
Python Scripting:
- Initially, we considered writing a Python script to automate G-code generation.
- This script would define movement commands and extrusion parameters based on user input or predefined patterns.
-
Grasshopper and Rhino Integration:
- Another option was utilizing Grasshopper and Rhino, powerful design software often used in architecture and digital fabrication.
- These tools could generate complex G-code based on parametric designs and mathematical algorithms.
-
ChatGPT for Simple G-Code Generation:
- Due to time constraints and the need for quick testing, we opted to leverage ChatGPT to generate basic G-code sequences.
- Using prompts tailored to our CNC machine’s capabilities, ChatGPT generated G-code instructions to move the extruder in 2 cm increments and extrude a specified amount of silicone.
-
Testing and Implementation:
- Generated G-code sequences were tested using Pronterface to verify compatibility with our CNC machine.
- We ensured that the G-code accurately translated into desired movements and material deposition, validating our machine’s functionality.
These sections provide a comprehensive overview of how we interfaced with Pronterface and generated custom G-code to operationalize our CNC machine effectively.
Future Improvements¶
While our CNC machine project has achieved its initial goals, there are several areas where future improvements could enhance its functionality and performance:
-
Enhanced Extruder Design:
- Further refinement of the extruder mechanism to optimize material flow and deposition accuracy.
- Exploring alternative extrusion methods or materials to expand the machine’s capabilities.
-
Expandable Workspace:
- Design modifications to increase the CNC machine’s workspace, allowing for larger workpieces or multi-part production.
-
Software Integration:
- Developing custom software interfaces or plugins to streamline design-to-production workflows.
- Integration with CAD/CAM software for seamless G-code generation and machine control.
-
Material Compatibility:
- Researching and testing additional materials compatible with the CNC machine, broadening its applications in various artistic and industrial domains.
-
User Interface and Accessibility:
- Improving the user interface of control software to enhance usability and accessibility for artists and creators.
- Implementing user-friendly features such as pre-set profiles and intuitive control panels.
These potential improvements aim to further elevate the CNC machine’s capabilities, usability, and versatility, paving the way for continued exploration and creativity in digital fabrication.
Conclusion¶
In conclusion, this documentation encapsulates the culmination of our efforts in creating a CNC machine tailored for artistic expression. Through meticulous design, construction, and testing, we have created a versatile tool that empowers artists to push the boundaries of creativity and innovation. With a commitment to excellence and continuous improvement, we look forward to seeing the impact of this project on the artistic community and beyond.