As an automation engineer, I tend to automate my daily boring tasks, And my daily tasks includes making food and drinks generally, and that's what I hope to build the robot arm for, so it can be able to do these process in my behalf.
The main feature that can used to perform these tasks is the "catch and release" mechanism, and it is best performed by the arm robots.
For the CAD process I used Autodesk Fusion 360, I then had some guidelines while working in this project because it was expected to have huge number of files, some of them are listed below in the following points:
Input.
- Mechanisms: Inspired from surfing the internet.
- Measurements: Inspired from a low-fidelity prototype.
Expected Output.
- A group of DXF and STL files.
The process in the middle.
- Created my first sketch.
- Started my sketch with basic reference to the center point so it can be easily fully defined later.
- Checked that the sketch is matching my design measurements -that was taken from a low fidelity prototype-.
- Used many constraints like parallels and perpendiculars in the process to keep my whole sketch referenced to the center point that I started each sketch from and defined in the beginning.
- After finishing rechecked the measurements and the fully defined concept.
- Extruded my sketches into components.
- Assembled all the components together using joints.
- When checked they are all fine, exported each sketch into DXF files.
- Then exported the 3D components into STL files.
Base:
- The base width was created to hold the Arduino Uno board, power supply and the circuit breadboard.
- The base height was created to hold the motor on its hanging position without touching any of the components touching fixed in the base ground.
- One of the base sides was built with openings to both Arduino board socket and the main power supply socket.
- The base roof was built with a fitting holes for the motor to be fixed in, as well as holes for the wires to pass through.
Arm Link:
- It is used as a link between the vertical and horizontal motions of the arm robot.
- It is connected to the base motor from one side, and contains motor that controls the motion of the first arm extension.
- It's base and height is considered the first arm extension motor with the minimal capacity because it is needed to be light and has small volume to get the maximum motion ability.
First Arm Extension.
- It is built to give an extension to the arm.
- It is used to receive motion from the arm link, and have the motor for the second arm extension motion.
Second Arm Extension:
- It is built the same way as the first arm extension.
- The only difference is that this extension is used to hold the gripper on the roof.
Gripper Mechanism:
- The gripper mechanism uses the "Pinion and Rack" mechanism, it was inspired from this instructables link: https://www.instructables.com/How-to-Make-3D-Printed-Parallel-Gripper-With-RC-Se/
- So then started the search on the better way to able this mechanism, this video helped me a lot in this part: https://www.youtube.com/watch?v=OcO8QwWau3Y
Full Assembly:
- Finally all this parts was assembled together in one final part.
So Laser Cutter and 3D Printer was used in my project, the 3D printer was used to create the rack and pinion mechanism in the gripper part, while the Laser Cutter was used in making the whole body.
Ulrimaker Cura
Input.
- Receive STL file produced from Fusion 360.
Expected Output.
- A ready to be printed by 3D Printer G-Code file.
The process in the middle.
- Check that the project is set to the right printer and right printing material.
- Drag the STL File to the program.
- After importing you check and set the scale.
- Then you lay the model on the best position that will need the least external support possible.
- Make sure that the model is laid on bed in the same position we chose.
- Change the position so that our model is not centered above the two center screws.
- Then set the model printing parameters:
(1) Profiles: 0.3 mm.
(2) Infill: 20%.
(3) Support: None.
(4) Adhesion: None.
- Then we save to disk, so that we have our final g-code File.
3D Printer
Turn on the printer and then insert the SD card.
Start printer Preheat through printer's controls.
After preheating is done, we chose Unload Filament from the printer's controls.
Then we remove the filament.
Choose Load Filament from the printer's controls.
And be in this phase until the color of the new filament appears to be able to proceed from this step.
Then we clean the bed before start running the printer.
Then choose the file we want to run from the SD card and press run.
We monitor the first couple of layers so that we can contain any faults of the run in the beginning.
Let the printer finish and then we extract the model from the printer bed.
Wait until the printer temperature goes down.
Turn off the printer.
LaserWork
Input.
- Receive DXF files produced from Fusion 360.
Expected Output.
- A ready to be cut by laser cutter RLD files.
The process in the middle.
- Import DXF File.
- After importing you check the scale, press the lock before scaling for uniform scaling.
- And basiclly I had only one layer job, and the status was set to:
(1) Mode: Cut.
(2) Power: 65.
(3) Speed: 30.
- Then we save our file, so that we have our RLD File.
Laser Cutter
Turn on both the switches of the machine, and insert the memory flash to the PC.
Import you model, make your final checks based on the lab's cheat sheet and then reposition your model in its right place.
Press Download , choose a name easy to remember and check the message of success.
Check the nozzle focus is right by using the focus block.
Return the nozzle to its starting point using the stick in the side of the machine, and then set it as origin by pressing the Origin button in the machine.
Maintain the working wood peace using tap so that the log have the same altitude.
Choose from Files the name of the file we previously named and then check the working frame by pressing Track Frame option.
If everything is set, press Run and then close the hatch.
Let the machine do its work, and we it is done, we extract our model and log from inside the machine.
Turn off the laser cutter.
Tinkercad application was used for the circuit design and simulation.
Tinkercad
Used to simulate electrical circuits and components, so you can calibrate your circuit calculations and needs before even going to the hardware steps.
Tools and Materials Used
Arduino Uno Board
Bluetooth Module
4 Servo Motors (MG995)
Power Supply (SMPS 5v/5A)
Breadboard
Jumpers and Wires
USAGE
- Power Supply: for providing power source.
- Servo Motors: as output components in the circuit.
- Bluetooth Module: used to receive signal and perform as input component.
Wiring
- To control the wiring while the motion is happening, there was symmetric holes between each link and the other to allow the motion while not pulling the wires hard as shown in the pictures.
The power source used in this project is a SMPS Power Supply 5V/5A and it was used in order to be able to supply high ampere to the 4 servo together if they all was on motion in the same moment as each motor's current at maximum load is 1200 mA, so 4 motors draw about 4.8A, and that makes this power supply perfect for this project's needs.
First line is used to call the servo motor library.
The second block of code is creating instance of the servo library for the 4 servos we will be using.
The third block of code is initiating the values for all the variables that will be used later.
The fourth block of code, which is the setup function, is used to start the serial on 9600 and connect the servo instances to act on signals of the Arduino pins given to each.
The fifth block of code which is the first line and first if condition in the loop function, those are used to handle the default case of behavior for the device when no input is coming from the Bluetooth module, while maintaining the current position.
The sixth block of code, is the 8 remaining if conditions in the loop function, and they are for handling receiving inputs from the Bluetooth module and how to react accordingly.
To overcome the limitation in the number of input conditions given by the Arduino Bluetooth App, I had to create my own app using MIT App Inventor
The first block of code is to initialize a variable we will use later in the code.
the second and third blocks are used to get the paired elements with the used mobile phone, so we can pick Robot Amr's Bluetooth module and connect with.
The next 8 blocks are used to anticipate the user input in the mobile screen and send them via Bluetooth to the robot.
So our workflow was divided in the sequence of the following points:
Test each component individually, in my case the 4 servo motors, the power supply, the Arduino and the bluetooth module.
The second step was testing how things are connected together, so I mimiced how they will be used in the project, the whole 4 servos working together, getting powered by the power supply and signal from the Arduino board.
Then came the point were all of those was tested by receiving signal from the Bluetooth module.
Then starting build part by part and check the functionality with each part, first I started with testing the base build and the servo motor mounted in. we first test the functionality of the joint and then do the test again after the mounting.
5. The next integration testing was after connecting the first arm link, and below is a video of the testing process at this point.
6. The next integration testing was after connecting the second arm link.
7. The final part was in mounting the gripper in the Robotic arm, below is the final product demo.
When starting to build, I was somehow confused on how to build the joints without compromising the center mass of the body, so I took the advice of Mohamed Adel in this part, and he did advice me to use the current design.
Also in the mounting process, had help from Mohamed Tarek and Ayman Mohamed to have a sight on any future design faults.
The project was moving smoothly and forward, until the circuit starts to smoke, back then I went through the wires multiple times to check, works a few times , but then back to smoking.
Had help from Michael Henry, Amany and Ibrahim to debug the issue further, what we noticed that the wires used to connect the power supply to the circuit can't bear high current, so we changed the wires into a stronger ones.
Going further this issue appeared again, had the help from 3askar on this one, discovered the reason was one motor faulty and was draining more Ampere than that was needed. once changed and making sure the wiring are correct, everything is running fine since then.