Week 10
Mechanical & machinedesign
Group Assignment Sand drawing CNC
Mechanical & machinedesign: Sand drawing CNC
Meet our team!
Group Assignment
- - design a machine that includes mechanism+actuation+automation+application
- - build the mechanical parts and operate it manually
- - document the group project and your individual contribution
- - actuate and automate your machine
What did we do on this week?
This week, we were assigned a team to design, build, assemble, and program a CNC. This task was a challenge for all of us since we didn't know each other before. We had to learn to work as a team with colleagues who weren't even from our degree programs. The goal of building this CNC was to employ the skills acquired in previous weeks and apply them to a team project. Our team chose to make a CNC that draws in sand as a decorative piece initially. As the project progressed, we came up with ideas to potentially create molds with the sand and produce pieces using some other technique in the future.
Sketching our ideasDuring the brainstorming session in our first team meeting, the idea of making a CNC that draws in sand emerged because one of our team members had seen a video on TikTok where they made these images in beach sand. When we proposed it to the team, everyone voted in favor of making it. Next, we see the first sketch of the project where we marked the dimensions, materials, structure.
The idea was simple in our minds; there would be 2 axes, X and Y. These two axes would perform the drawing in the sand using a magnet at the tip of the tool, dragging a stainless steel ball, creating the drawing in the sand. Initially, the structure was intended to be built with 20x20 aluminum profiles, but we encountered the economic limitations of the team and the university so we decided to make the structure out of 15 mm MDF. The materials considered were smooth rods, plain bearings, and PLA for 3D printing, but we would later discover that we needed more things.
- Materials and tools -
Here is the main materials and tools we used for build our CNC.
Quantity | Description material |
---|---|
1 | Arduino UNO and CNC shield for Arduino. |
2 | A4988 Drivers |
2 | NEMA 17 Stepper Motors |
4 | Linear Bearings |
2 | 2 Belt Pulleys for Nema Stepper Motors |
2 | Timing Belts. |
4 | Linear shafts 8 mm Diameter, 40 mm large |
1 | 3 mm MDF board, 120 x 240 mm |
1 | 15 mm MDF board, 120 x 240 mm |
1 | PLA roll. |
4 | 20x20x200mm aluminum profiles |
1 | Box of M4 screws |
1 | Magnet |
1 | Stainless steel ball. |
400 gr | Sand. |
- Team task distribution -
For this test, a Starrett gauge was used for measuring the concentricity of the spindle/cutting tool, first with the spindle off, then turned on. This measuring gauge has a range of 0.01mm and after the tests, no variation was found.
Team mate | Work assigned |
---|---|
Ximena Mendieta | Supervision of the 3D design/td> |
correction of the dimensions of the parts | |
assembly of the CNC. | |
Alejandro Alvarez | machinedesign |
3d printing | |
Project managment | |
Assembly | Luis Islas | G code |
David Gonzalez | 3D print |
assembly of prototypes | |
final assembly | |
Fernanda Capetillo | machinedesign Supervision |
Final assembly | |
Rodrigo Gomez | Design of the lower structure pieces |
group web page | |
laser and router cutting of pieces | Valeria Barroso | Electronics production |
G code programming | |
Andrea Rodriguez | Grbl controller |
Vector transformation | |
- machinedesign -
To create our machine we decided to use a cartesian mechanism where the system would be only used in a planar dimension (XY) and would have a two step motor for the Y axis and a Single motor for the X axis. To create the design we research for different commercially available machines that already use this style of kinematics like the UltiMaker 3D printer where the printing head moves along the XY axis
To create our system we would three pieces that will carry the stepper motors, two of them set on two corners that will drive the Y axis (so this pieces will need to be parallel and mirrored one from another) and another piece that will be placed on the steel-rod and move along the Y axis but control the X axis.
For this, the mirrored corner motor support will have a pocket to have a Nema-17 stepper motor and be fixed to the aluminum extrusion as well as having a insertion place for the Y-axis rod.
At the opposite corner, we need a corner to fix a belt pulley where the belt will return to the stepper motor and an insertion place for the Y-axis rod as well.
Another critical part of the mechanism is the X-axis system where another Nema motor is needed. How ever, this motor will be moving along the Y-axis, therefore the motor needs to be mounted on the rod with a linear ball bearing and have the space for a Nema 17, two rods for the X-axis and a space to lock and create tension for the dented belt.
On the opposite side, there will be another part where those two rods will be inserted, another essential criteria is to have the belt pulley as well as the linear ball bearing mechanism.
For our magnet we had a part segment where the belt is fixed to add tension to the mechanism, two sets of lineal ball bearing and a shaft to get the magnet on the proper height to be able to drive the ball on the sand.
As these parts will be 3D printed, there were multiple sets of rules that were taken into account:
- No greater than a 60° slope.
- Add rounding to corners where stress could be concentrated.
- No bridges greater than 20 mm.
- No walls with less than 1.6 mm thickness.
- Design all parts to be support free.
The CNC had the assembly made to make sure that all parts are well aligned. This will be a critical to ensure that at the moment to have the physical assembly all parts will fit and the mechanism will work.
Render
This is a virtual render of our project selecting materials
- 3D impression, router, laser cut. -
Here we left you the previous Configuration of the software UltiMaker Cura for printing 3D pieces.
- Poor Bed Adhesion: This occurs during the first layer. The print did not adhere properly to the print bed, leading to warping or detachment. It was caused by improper bed leveling and insufficient bed temperature.
- Warping: This happened due to escalating some pieces at 100% and others at 102% due to the contraction of the material, causing them to contract unevenly and distort the shape of the object. It can be mitigated by using a heat gun carefully or it will deform the edges like shown in the pictures, also using adhesion aids like rafts or brims so they don't contract more than needed.
- Fractures: As discovered, 3D printing materials are not equally suited to bearing loads. Brittle materials like PLA are more likely to fracture under pressure compared to tougher materials. In the end, PET G was chosen because it was believed this material has higher impact resistance and may prevent breakage.
Router
Our team decided to use different materials for the construction of our CNC because we had a limited budget. We utilized various materials for different parts of the structure. For the base of the CNC, we used 15mm MDF, which we will cut with the router. In this activity, we used Asia Robotica; you can see the features and general instructions at the following link: Group Assignment. In this base, we made a recess inside for the entry of 20x20 mm profiles and made the holes where the M4 screws are located.
Video of cutting on router
Laser cut
As we previously mentioned, we used different materials, and to create the box that would hold the sand, we planned to make it out of 2mm acrylic, but we were unable to find the material and had to end up making it out of 3mm MDF. For this piece, we used the laser cutting process.
Parmeters
The parameters we used for the laser cutting are the following. It's important to calibrate it beforehand so that we don't have too much kerf and our pieces can assemble correctly. However, we had to use glue.
Here are the progress of cutting in laser.
- Step motors -
- With the Arduino programmed and equipped with the shield, the next critical phase in our project involves extensive testing of the motors.
- This process is facilitated by the use of Universal Gcode Sender, an open-source software platform known for its comprehensive suite of features designed to communicate with sophisticated CNC controllers.
- To start the testing procedure, the initial step involves establishing a connection between our Arduino and the computer through the Universal Gcode Sender interface.
- We proceed to load our pre-written g-code. Selecting the COM7 port is crucial, as it is the channel through which the Arduino communicates with the PC.
- We ensure that the grbl firmware is selected, which is essential for interpreting the g-code and translating it into precise motor movements.
- Upon clicking the 'connect' button, the software attempts to establish a link with the Arduino. A successful connection signifies that we are ready to proceed to the motor testing phase.
- We can now directly interact with the CNC machine through specific commands, such as entering the "y" or "x" commands into the Universal Gcode Sender, prompting the corresponding motors to activate.
- Observing the motors move in response to our commands offers tangible proof of our project's progress and functionality.
- This testing phase is not just a demonstration of our machine's operational capabilities; it's also an essential step in troubleshooting and refining the system.
- Through careful observation and adjustment, we can identify any potential issues with the motor's response, alignment, or speed.
- This phase of our project is about bridging the gap between theoretical design and practical application, moving us closer to realizing our vision of a fully functional CNC machine.
- It's a testament to the synergy between software and hardware, and a pivotal step in our journey from concept to creation.
- Programming and G-Code -
Inkscape
In the Inkscape program, we click on the "File" menu and change the document size to match the dimensions of the sand bed so that we can work with the final measurements.
Step 2: (Images 2, 3, and 4) We paste the image we want to be drawn in the sand. Then, under "Trace," we select "Trace Bitmap" to open its menu. From there, we change the threshold to 0.6.
Step 3: (Images 5 and 6) We update the preview and click "Apply". We then drag the trace we just made to remove the previous one.
Step 4: (Images 7 and 8) With the new image, we can now generate our G-code. We select the image and under "Trace," we click "Object to Path" and then "Dynamic Offset".
Step 5: (Images 9, 10, and 11) Now, using the Extensions tool, we go to Gcodetools and click on "Tool Library". A menu will open; we ensure that the tool types are set to default and click "Apply". From the opened menu, we change the diameter to 2.0.
Step 6: (Images 12 and 13) From the Extensions tool, we go to Gcodetools and select "Orientation Points". In that menu, we make sure it's in mode 2 and click "Apply".
Step 7: (Images 14, 15, 16, and 17) Using the Extensions tool, we enter Gcodetools and select "Path to Gcode". From that menu, we go to preferences and write the name of our file, ensuring it ends in (.ngc). In the directory section, we write where we want to save our document and then click "Apply".