



























Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Los mejores documentos en venta realizados por estudiantes que han terminado sus estudios
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Descubre las mejores universidades de tu país según los usuarios de Docsity
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Brazo robotico planos y diseño, idioma ingles
Tipo: Esquemas y mapas conceptuales
1 / 35
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!
instructables
by Aarav G Hi, in this Instructable, you will learn how to build a Robotic Arm that can learn to do any taskRobotic Arm that can learn to do any task and can be taught any task. It has two joysticks and also features a colorful 2.4" TFT display which acts as both a touch control panel and also a display to visualise what's going on. The robotic arm can either be operated directly through the Manual Mode or the robotic arm can be taught newThe robotic arm can either be operated directly through the Manual Mode or the robotic arm can be taught new tasks through the Automated Mode and then the robot then goes over those tasks forever in a loop, until youtasks through the Automated Mode and then the robot then goes over those tasks forever in a loop, until you stop it :)stop it :) The robotic arm has three Degrees of Freedom (DOF)three Degrees of Freedom (DOF) and also a cute little grippercute little gripper , including which, there are a total of four servo motors that we will be using in this project. I have used the MG90SMG90S metal gear servo motors for better performance and quality! I have used an Arduino MegaArduino Mega for the Robotic Arm as it has a huge number of I/O pins which I quite needed because with the display, it is impossible to plug in any other I/O devices to the Arduino UNO board and as a result, I chose the Arduino Mega board. I also designed a custom PCBdesigned a custom PCB for the project to prevent a mess of wires. This is a really good project for learning about the various processes carried out by any robot and in particular, this is This is a really good project for learning about the various processes carried out by any robot and in particular, this is a great demonstration of the capabilities of the Arduino board at a higher and more complex level! a great demonstration of the capabilities of the Arduino board at a higher and more complex level! Sounds Interesting? Let's dive right into the I'ble. Subscribe to my channel for updates! https://youtu.be/m7aQCT_xI4s
The image you see on the left is a picture of the control panel of a 2-year-old iteration of this Robotic Arm2-year-old iteration of this Robotic Arm. It never worked properly but yes, I did make it, so I felt it would be worth putting in some past details of the project. 1.1 Problems I Faced with the V1.0 :1.1 Problems I Faced with the V1.0 : The /rst problem that I faced was a frequent jittering of the SG90 plastic gearsfrequent jittering of the SG90 plastic gears that I had previously used in my arm. The arm would frequently start vibrating and sometimes violently shaking as the motors were highly incapable of managing the weight of the arm (which I later realised). Another problem was with the control panel and that was that the 16 x 2 alphanumeric display was not good enough for my application. It had very less viewing space and could not display all the required information. The button panel also was bad because I had used a salvaged button panel from an old laptop which did not work that great. I know that it was not a well-planned project back thennot a well-planned project back then but I have made many changes and have got a considerable satisfying result now considerable satisfying result now! 1.2 What Has Changed :1.2 What Has Changed :
The robotic arm has two modes: Manual Mode; Automated ModeThe robotic arm has two modes: Manual Mode; Automated Mode In the manual modeIn the manual mode , the arm can directly be controlled using the two joysticks present on the control panel. In the automated modeIn the automated mode , you have two suboptions - you can either recordrecord a sequence of actions of a task that you want the robotic arm to perform or you can playplay an already recorded sequence. When you hit the record button you can manoeuvre the arm using the joysticksusing the joysticks and save checkpoints or savepointssavepoints which the arm will later repeat when it is in the play mode. The navigationnavigation will take place through the TFT touch displayTFT touch display and I have made a neat looking responsive GUIresponsive GUI for the smooth functioning of the robotic arm!
These are the components, tools and software you will require for this project: 3.1 Components Required:3.1 Components Required: Arduino Mega 2 x Joystick Module 2.4" TFT Touchscreen Display 4 x MG90S Metal Gear Servo Motors Jumper Wires Male and Female Header Pins (for PCB) 2 x LEDs - Any Color (for PCB) 3.2 Tools (Optional):3.2 Tools (Optional): Soldering Iron Wire Cutter and Stripper Tweezers Screwdriver 3.3 Software:3.3 Software: Arduino IDE Autodesk Tinkercad (or) any other 3D CAD software Autodesk Eagle (or) any other schematic and PCB CAD software
Now, we come to the part where we build the arm itself. 4.1 Why the EEZYbotARM?4.1 Why the EEZYbotARM?
In this project, we are solely concerned with the functioning and the logic behind the functioning of the armsolely concerned with the functioning and the logic behind the functioning of the arm! Our aim is to get the robotic arm to learn tasks and then repeat them, in a human-like manner! The shape and design of the arm do not really matter much so to save a bit of time on this part, I just decided to go with an already available open-open- source robotic arm, the EEZYbotARM.source robotic arm, the EEZYbotARM. It has a pretty decent design and is perfect for our projectperfect for our project. 4.2 Building the Arm:4.2 Building the Arm: The .stl :les of the EEZYbotARM.stl :les of the EEZYbotARM are available on Thingiverse and there is also a detailed Instructable for building thedetailed Instructable for building the armarm!! These are pretty good resources to get the arm printed and assemble it! After building the arm, proceed to the next step! After building the arm, proceed to the next step!
There is no big schematic involved in our project as we just need to connect the servos, the joysticks, and the display to the Arduino Mega board. 5.1 Why Custom PCB:5.1 Why Custom PCB: The display can be directly plugged in but the other two cannot. Also, Arduino originally has only 2 to 3 GND and VCChas only 2 to 3 GND and VCC ports and with multiple I/O devices being usedports and with multiple I/O devices being used in our project, designing a custom PCB saved a huge mess of wires and makes the project a lot easier to build and a lot better on the look! 5.2 How Custom PCB:5.2 How Custom PCB: So, I designed a PCB indesigned a PCB in EagleEagle and then uploaded the Gerber :les toGerber :les to JLCPCBJLCPCB. They oDer $2/5pcs 2Layer & $5/5pcs 4Layer PCBs: https://jlcpcb.com. The PCBs arrived at my place in around 5 days which is pretty amazing and the quality of the PCB was also fabulous. 5.3 Which Custom PCB:5.3 Which Custom PCB: I ordered white PCBs as this costed nothing extraordered white PCBs as this costed nothing extra and I felt that this is a pretty neat change to make by deviating from the common green PCBs that we always use. The PCB has a place where all the servo motors will be directly plugged in and also a place where the jumper wire ribbon coming from the joysticks can be directly plugged in. The PCB has been designed to be an Arduino Mega Shielddesigned to be an Arduino Mega Shield and can be directly plugged onto the Arduino Mega board using some bottom male header pins and connects to the I/O devices using the male header pins on the top. I have alsoalso added two LEDsadded two LEDs where one is the power LED and one is a simple output LED that can be controlled as per the need (the PCB will be inside the main control panel box so it does not really matter much). 5.4 Custom PCB Conclusions:5.4 Custom PCB Conclusions: It is not a mandate to design the PCB in this projectnot a mandate to design the PCB in this project and the wires can be directly connected which might be /ne for most people. I just wanted to go a level higherwanted to go a level higher and came up with all of this. You can directly connect the motors, the joystick and the display to the Arduino Mega too! Though it might take more wires, a little more time and comparatively more eDort, it is possible!
This is the part where we need to design and print the control panel box of our robotic arm. 6.1 The Design:6.1 The Design: I designed the control panel box in TinkercadTinkercad which is an amazing 3D CAD softwarewhich is an amazing 3D CAD software and is always my preferred choice! If you saw the image from the History and Revolution part in my instructable you might have seen how the control panel needs to be. The control panel has a cutout for the displaycutout for the display and two round cutouts for the joystickstwo round cutouts for the joysticks. It also has a place at the extreme front where the robotic arm will be placed. For some reason, I was feeling very artistic that day, when I designed this, so you can clearly see what that resulted in! 6.2 Printing the Control Panel:6.2 Printing the Control Panel: After designing the control panel, I downloaded the .stl :les and then uploaded them to.stl :les and then uploaded them to IAmRapidIAmRapid and got an instant quote which was quite aDordable! Then I ordered the parts and they were delivered to my doorstep within 2 days (indelivered to my doorstep within 2 days (in India)India). As you can see in the above images, the quality of the prints is pretty satisfying. After designing and printing the control panel box, let's move on further! After designing and printing the control panel box, let's move on further!
Now we need to place the components of our project into the Control Panel Box. 7.1 Placing the Joystick Module:7.1 Placing the Joystick Module: I haven't used two individual joysticks and used a single module with two of them instead. I have made an elevated pedestal with four screw holes in the enclosure. We just need to screw the joystick module using fours screws onto the pedestals with holes! 7.2 Placing the Arduino Mega + Custom Shield PCB Attached:7.2 Placing the Arduino Mega + Custom Shield PCB Attached: I have made two cutouts for the two ports of the Arduino Mega. The robotic arm will be powered using a DC adapter so one port is for that and the other is the USB port to upload to and change the code on the Arduino Mega! Also attach the custom PCB shield, if you have made one, onto the Arduino board! 7.3 Attaching the Display to the Top Lid:7.3 Attaching the Display to the Top Lid: Now, we need to attach the display to the bottom of the top lid. You can use anything to do that. I have used some hot glue for the same :) 7.4 Placing the Robotic Arm at the Front:7.4 Placing the Robotic Arm at the Front: I have made a small impression in the shape of the base of the robotic arm at the front of the control panel where there is an extended base plate coming out from the control panel box and is attached to the box. We need to place the robotic arm on that impression. After completing all these, move on to the next step! After completing all these, move on to the next step!
Now, we need to wire the components that we earlier placed in our control panel. This can be done in a few very easy steps. As I have designed the custom PCB, this step was fairly easier for me as I just had to plug in the components such as the joystick modules and motors into their respective ports on the PCB. There are three components that we need to connect to the PCB: The Servo Motors (Robotic Arm) The Joystick Modules The Touch Display If you choose not to go with the PCB, then follow the instructions below for connecting the various components (listed above) to the PCB (Arduino Mega Shield). Joystick:Joystick: X1: A8 of Arduino Mega Y1: A9 of Arduino Mega X2: A10 of Arduino Mega Y2: A11 of Arduino Mega GND: GND of Arduino Mega VCC: +5V of Arduino Mega
Now comes the most essential part of the project- writing the code for the robotic arm to actually work! I have attached the code below for you to use/refer to at any point in time. The code spanned a few thousand lines and would become too complex to comprehend if you just went through it. So, I have added comments, wherever necessary, to provide adequate context and help you in understanding the code way better. After completing the step, move ahead! Code for the Robotic Arm:Code for the Robotic Arm: //////////////////////////////////////////////////////// // Arduino Robotic Arm // // By Aarav Garg - Tech Nuttiez // //////////////////////////////////////////////////////// #include <Servo.h> #include <Adafruit_GFX.h> #include <MCUFRIEND_kbv.h> #include <TouchScreen.h> #include <Fonts/FreeSansBold12pt7b.h>
#include <Fonts/FreeSansBold18pt7b.h> //pressure for tft touch display #define MINPRESSURE 200 #define MAXPRESSURE 1000 //page variable String page; //clicked state boolean cs1 = false; boolean cs2 = false; boolean cs3 = false; boolean cs4 = false; boolean cs5 = false; //saved sequence number int ssn = 0; //init tft object MCUFRIEND_kbv tft; //define the servos Servo s1; Servo s2; Servo s3; Servo s4; //joy pins #define j1x A #define j1y A #define j2x A #define j2y A //joy values int x_out = 0; int y_out = 0; int x_out2 = 0; int y_out2 = 0; //define variable for values of the button int button1Pressed = 0; boolean button2Pressed = false; boolean mode = false; //define int variable array for saved position of the servos int servo1PosSave[]={90,90,90,90,90}; int servo2PosSave[]={90,90,90,90,90}; int servo3PosSave[]={90,90,90,90,90}; int servo4PosSave[]={90,90,90,90,90}; //tft callibration data const int XP = 6, XM = A2, YP = A1, YM = 7; //240x320 ID = 0x const int TS_LEFT = 142, TS_RT = 892, TS_TOP = 937, TS_BOT = 187; //init touchscreen object TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300); //init tft display gui buttons Adafruit_GFX_Button manual_btn, auto_btn, backmanual_btn, backauto_btn, backrecord_btn, backplay_btn, record_btn, play_btn, save_btn; int pixel_x, pixel_y; Automated Robotic Arm That Learns | Ft. Tinkercad, Arduino Mega, EEZYbotARM: Page 20 //Touch_getXY() updates global vars