Você está na página 1de 16

Project Name: Robotic Hand

Group name: To Infinity & Beyond


Group Members:
1.
2.
3.
4.
5.
6.

Mahmudur Rahman-12.01.05.001
Fahia Munna-12.01.05.002
Kazi Afsana-12.01.05.003
Marwa Nabi-12.01.05.005
Ishtiaq hossian-12.01.05.013
Nazmus Sakib-12.01.05.016

Robotic Hand
Abstract:
A robotic arm is a robotic manipulator, usually programmable, with similar functions to a human
arm .Servo motor is used for joint rotation. It has about same number of degree of freedom as in
human arm. Humans pick things up without thinking about the steps involved. In order for a
robot or a robotic arm to pick up or move something, someone has to tell it to perform several
actions in a particular order from moving the arm, to rotating the wrist to opening and closing
the hand or fingers. .So, we can control each joint through computer interface.

Equipments:
1.
2.
3.
4.

Servo Motor MG995R-5Pcs.


Servo Motor MG996R-1Pcs.
Arduino
Connecting Cable

5. Power Supply
6. Veroboard
7. Bolts and Screws
8. Partex Baseboard
9. Acrylic Plastic Board
10. Horn

Images of some parts:


1.Servo Motor MG995R:

2.Servo Motor MG996R:

3.Arduino:

Block Diagram:

Power Supply:
Each servo can potentially draw up to 1.8A under full load, so we have used a power supply
capable of at least 4A at 4.8V and 5A at 6V. The highest current would be when the robot is
stretched horizontally and is lifting a weight (it may peak up to 10A momentarily).

Servo Motor wiring and plugs:


The Servo Motors come with three wires or leads. Two of these wires are to provide ground and
positive supply to the servo DC motor. The third wire is for the control signal. These wires of a
servo motor are colour coded. The red wire is the DC supply lead and must be connected to a DC
voltage supply in the range of 4.8 V to 6V. The black wire is to provide ground. The colour for
the third wire (to provide control signal) varies for different manufacturers. It can be yellow (in
case of Hitec), white (in case of Futaba), brown etc.

Servo Control:
A servo motor mainly consists of a DC motor, gear system, a position sensor which is mostly a
potentiometer, and control electronics. The DC motor is connected with a gear mechanism which
provides feedback to a position sensor which is mostly a potentiometer. From the gear box, the
output of the motor is delivered via servo spline to the servo arm. The potentiometer changes
position corresponding to the current position of the motor. So the change in resistance produces
an equivalent change in voltage from the potentiometer. A pulse width
modulated signal is fed through the control wire. The pulse width is converted into an equivalent
voltage that is compared with that of signal from the potentiometer in an error amplifier.
The servo motor can be moved to a desired angular position by sending PWM (pulse width
modulated) signals on the control wire. The servo understands the language of pulse position
modulation. A pulse of width varying from 1 millisecond to 2 milliseconds in a repeated time
frame is sent to the servo for around 50 times in a second. The width of the pulse determines the
angular position.
For example, a pulse of 1 millisecond moves the servo towards 0, while a 2 milliseconds wide
pulse would take it to 180. The pulse width for in between angular positions can be interpolated
accordingly. Thus a pulse of width 1.5 milliseconds will shift the servo to 90.
It must be noted that these values are only the approximations. The actual behavior of the servos
differs based on their manufacturer.
A sequence of such pulses (50 in one second) is required to be passed to the servo to sustain a
particular angular position. When the servo receives a pulse, it can retain the corresponding
angular position for next 20 milliseconds. So a pulse in every 20 millisecond time frame must be
fed to the servo.

Programming of robotic hand:


#include <Servo.h>
Servo myservo;
Servo g1;

// ground servo

Servo g2;

// ground servo

Servo kat; // lower elbow


Servo sam; // upper elbow
Servo grip ; // claw

void setup()
{
myservo.attach(9); //9
g1.attach(3);
g2.attach(5); //5
kat.attach(6); //6
sam.attach(10); //10
grip.attach(11);

pinMode(13, OUTPUT);
Serial.begin(9600);
Serial.print(" Start " );
}
void loop ()
{
static int val = 0;
if( Serial.available())
{

cmd = Serial.read();
if( cmd == 'd')
{

g1.detach();
g2.detach();

myservo.detach();
sam.detach();
kat.detach();
grip.detach();
Serial.println( " detached" );

else if( cmd == 'a')


{

myservo.attach(9);
g1.attach(3);
g2.attach(5);
kat.attach(6);
sam.attach(10);
grip.attach(11);
Serial.println(" attached " );

else if( cmd == 'q')


{
myservo.detach();
Serial.println(" myservo detached ");

else if ( cmd == 'w')


{
g1.detach();
g2.detach();
Serial.println(" ground detached ");

else if( cmd == 'e')


{
kat.detach();
Serial.println(" kat detached ");

}
else if ( cmd == 'r')
{
sam.detach();
Serial.println(" sam detached ");

else if ( cmd == 't')


{
grip.detach();
Serial.println(" grip detached ");

else if( cmd == 'y')


{
myservo.attach(9);
Serial.println(" myservo attached ");

}
else if( cmd == 'u')
{
g1.attach(3);
g2.attach(5);
Serial.println(" ground attached ");

else if ( cmd == 'i')


{
kat.attach(6);
Serial.println(" kat attached ");

else if( cmd == 'o')


{
sam.attach(10);
Serial.println(" sam attached ");

else if ( cmd == 'p')


{
grip.attach(11);
Serial.println(" grip attached ");

else if(cmd == 'z')


{
val = 0;
Serial.println(" reset val" );

else
{
switch(cmd) {
case '0'...'9':

val = val * 10 + cmd - '0';


break;
case 'f':
wr("m" , val);

val = 0;
break;
case 'g':
wr("gnd" , val);
val = 0;
break;
case 'h':
wr("k" , val);
val = 0;
break;
case 'j':
wr("s" , val);
val = 0;
break;

case 'k':
wr("g" , val);
val = 0;
break;
case 'c' :

for(pos = 0; pos < 180; pos += 1)


{
myservo.write(pos);
delay(15);
}
for(pos = 180; pos>=1; pos-=1)
{

myservo.write(pos);
delay(15 }

Break; } }

Torque calculations of Joints:


The point of doing torque calculations is for motor selection. We must make sure that the motor
we choose can not only support the weight of the robot arm, but also what the robot arm will
carry .The first step is to label your FBD, with the robot arm stretched out to its maximum length.
Torque calculated here is torque at rest robotic arm(not in motion) .So rating of torque in servo
motor is greater than calculated value.

Degree of freedom:
The degree of freedom, or DOF, is a very important term to understand. Each degree of freedom
is a joint on the arm, a place where it can bend or rotate or translate. You can typically identify
the number of degrees of freedom by the number of actuators on the robot arm. Now this is very
important - when fabricating a robotic arm we want as few degrees of freedom allowed for our
application. Because each degree requires a motor, often an encoder, and exponentially
complicated algorithms and this result in increased cost

Project Images:

Trouble Shooting:
1. In our robotic hand the 1st and 2nd elbow take a heavy load. Due to the heavy load, those
motors connected to the elbows draw large number of currents. But highest current
rating of the motors are 0.9A.So when we first attempted to run the hand, the motors
were damaged. Then we had to change the motors.
2. The rotating gear got jammed several times. So, the base was not rotating then.
3. While attatching the claw with the servo motor we have suffered a lot .The gear of the
claw gets jammed several times & then we had to attatch it several times.After attatching
the claw we got our biggest problem,our hand cant move after attatching the claw
especially the servo motor of the elbow got burnt several times.Then we replaced several

servo moto(16 kgcm ).but there was no improvement .At last we got our solution after
decreasing the distance between claw & wrist.It means our load was too high but it was
not so high that the servo can not work.The reason is still unknown.
4. At first we used acrylic iron board to make the hands. But that was too heavy. So then we
have used acrylic plastic board to make the hand.
5. zero degree angles for the elbow and wrist would cause the arm to try to reach a
position it is mechanically incapable of reaching. Therefore when configuring the arm,
we uses two different angles (such as 90 degrees and 180 degrees) and the associated
servo pulses to develop a linear equation relating the servo pulse to the angle.

Applications:
1. The robotic arm can be designed to perform any desired task such as welding, gripping,
spinning etc., depending on the application.
2. The robot arms can be autonomous or controlled manually and can be used to perform a
variety of tasks with great accuracy. The robotic arm can be fixed or mobile (i.e.
wheeled) and can be designed for industrial or home applications. Robotic hands often
have built-in pressure sensors that tell the computer how hard the robot is gripping a
particular object. This keeps the robot from dropping or breaking whatever it's carrying.

Future Work:
1. Increasing the degrees of freedom of the robotic arm by implanting more servos motors.
2. Implementing the inverse kinematics technique in robotic arm.
3. Equipping the robotic arm with tactile sensors, proximity sensors.
4. Developing the graphical user interface for making the arm more user friendly and
developing a web interface so that arm could be controlled in remote place by your Web browser.

Acknowledgement:
We could like to thank our honourable teacher Hasib Md.Abid bin farid, Associate Professor,
Dept. of EEE, Ahsanullah University of Science and Technology, for his exemplary guidance,
monitoring and constant encouragement throughout the course of this project.

Reference:

1.
http://www.facebook.com/l.php?u=http%3A%2F%2Fwww.robotshop.com%2Fblog%2Fen%2Fr
obot-arm-torque-tutorial-7152&h=OAQHcXCVF
2.http://www.facebook.com/l.php?u=http%3A%2F%2Fwww.societyofrobots.com%2Factuators_
servos.shtml&h=4AQHFLTWL
3. http://www.facebook.com/l.php?u=http%3A%2F%2Farduino.cc%2F&h=OAQHcXCVF
4.http://www.facebook.com/l.php?u=http%3A%2F%2Fscience.howstuffworks.com%2Frobot2.h
tm&h=OAQHcXCVF
5.Wikipedia
6.Youtube Tutorial

Você também pode gostar