You are on page 1of 11

ROBOTIC ARM

TEAM MEMBERS:
1.
2.
3.

RITESH KUMAR
SUGAM ANAND
RITESH GAUTAM

Description
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

Overview

Degree of Freedom:4
Payload Capacity(Fully Extended) : 150gm
Maximum Reach(Fully Extended) : 35cm
Rated speed(Adjustable) : 0-0.3 m/s
Joint speed(Adjustable) : 0-60 rpm
Hardware interface : USB
Control Software : computer interface(GUI)
Shoulder Base Spin : 180
Shoulder Pitch : 180
Elbow Pitch : 180
Wrist Pitch : 180
Gripper Opening(Max) : 8cm

Sailent features / innovations


1. The arm has five servos which are controlled through the use of only one
microcontroller atmega 16.

2. The arm could grab things approximately in a hemisphere of 50cm and is


robust made completely with an aluminium sheet of 2.5mm.
3. The arm is very user friendly because of the computer interface developed by
us, even layman could operate it.
4. The could lift objects upto weight of 200 gm.
5. Enabling the base rotation without the help of any gears or ball bearing, also
using only low torque servo motors and three castor wheels for rotating the whole
body.
6. Developing the graphical user interface using only the opencv highgui functions,
Instead of previously used matlab.
7. Keeping the design of robotic arm gripper simple, as well as implementing the
gripping mechanism without using gears and with one servo motors.

What are Servo Motors?


Servo refers to an error sensing feedback control which is used to correct the performance
of a system. Servo or RC Servo Motors are DC motors equipped with a servo mechanism
for precise control of angular position. The RC servo motors usually have a rotation limit
from 90 to 180. But servos do not rotate continually. Their rotation is restricted in between
the fixed angles.

Where are Servos used?


The Servos are used for precision positioning. They are used in robotic arms and legs,
sensor scanners and in RC toys like RC helicopter, airplanes and cars.

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.
Futaba provides a J-type plug with an extra flange for proper connection of the servo. Hitec
has an S-type connector. A Futaba connector can be used with a Hitec servo by clipping of
the extra flange. Also a Hitec connector can be used with a Futaba servo just by filing off the
extra width so that it fits in well.

Hitec splines have 24 teeth while Futaba splines are of 25 teeth. Therefore splines
made for one servo type cannot be used with another. Spline is the place where a
servo arm is connected. It is analogous to the shaft of a common DC motor.
Unlike DC motors, reversing the ground and positive supply connections does not change
the direction (of rotation) of a servo. This may, in fact, damage the servo motor. That is why
it is important to properly account for the order of wires in a servo motor.

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.

The required pulse train for controlling the servo motor can be generated by a timer IC such
as 555 or a microcontroller can be programmed to generate the required waveform. Refer
Servo Motor interfacing with 8051 microcontroller and Servo control using AVR ATmega16.

Basic Servomotor Bracket Assembly


These servomotor brackets may be used to create any number of
robotic project like robotic
arm,hexapod,snake robot.

Assembled Servomotor

Bracket

Fitting servo motor in bracket


.

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.

Link for to view torque calculation:

http://students.iitk.ac.in/projects/roboticsclub/robotic_arm
Torque of each Servo Used
Minimum Necessary

Use

(kg-cm)

(kg-cm)

1.Base

4.0

6.5

2.Shoulder

19.2

20

3.Elbow

12.2

14.5

4.Wrist

4.4

6.5

Programming of Robotic Arm


1. Communication between PC and microcontroller
We used the opencv serial port interface functions for communication between
the pc and

microcontroller for sending the slider values(ocr values )

to atmega 16 for generating the required square wave for driving the servo motors

Why OpenCV ,not Matlab ?


The serial communication in opencv is fast as compared to that in matlab., thus
enabling us to increase the rate of transfer of ocr values to atmega 16.Since we need
slider value of computer interface to be transferred very fastly,so we preferred openCV.

The code used for communication is as follows:


#includeconio.h
#includeTserial.cpp
#includehighgui.h
#includecv.h
#includestring.h
#includestdio.h
Void mainsending(char* ch)
{ Tserial *com;
Com=new Tserial ();
Com->connect(COM1,9600,spNONE);
if (com!=0)
{ com->sendArray(ch,4);
com->disconnect(); }
else printf("not sent");
}

2. Programming the Atmega 16


The main function of atmega 16 is to generate square wave signal at 50Hz to control
5 servo motor.It receives slider value(desired angle for particular servo) from the
computer and generate square wave as required.
The desired frequency is generated with the help of TIMER0 in atmega 16.Code
used for
interrupt [TIM0_COMP] void timer0_comp_isr(void)
{

count++;
if(count>=SERVO_TIME_PERIOD)

{ count=0;
PORTA.0=1;
PORTA.1=1;

PORTA.2=1;
PORTA.3=1;
PORTA.4=1;
}
if(count>=x[0])
PORTA.3=0;
if(count>=x[1])
PORTA.0=0;
if(count>=x[2])
PORTA.1=0;
if(count>=x[3])
PORTA.2=0;
if(count>=x[4])
PORTA.4=0; }

Programming Methodolgy
The data is transferred from the openCV GUI in following format:- a123 .The first alphabetical
character denoted the servo to be activated and the later digits denote the angle at which that particular
servo has to rotate.
void sending_base(int y)
{ int i,n;
n= .58 * x1 +52;

//for servo cal.

conv_four(n,0);}
void sending_shoulder(int y)
{int n;
n= .58 * x2 +62;
conv_four(n,1); }
void sending_elbow(int y)
{ int n;

//for servo cal.

n= .69 * x3 +52;

//for servo cal.

conv_four(n,2); }
void sending_wrist(int y)
{int n;
n= .58 * x4 +80;

//for servo cal.

conv_four(n,3);}
void sending_gripper(int y)
{ int n;
n= x5* 85 + 55 ;
conv_four(n,4); }

Application of

Robotic Arm

The robotic arm can be designed to perform any desired task such as welding, gripping,
spinning etc., depending on the application. For example robot arms in automotive
assembly line perform a variety of tasks such as wielding and parts rotation and
placement during assembly.
In space the space shuttle Remote Manipulator System have multi degree of
freedom robotic arms that have been used to perform a variety of tasks such as
inspections of the Space Shuttle using a specially deployed boom with cameras
and sensors attached at the end effector.

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.
Other end effectors include blowtorches, drills and spray painters.this improves their
performance.

In medical science: "Neuroarm" uses miniaturized tools such as laser scalpels


with pinpoint accuracy and it can also perform soft tissue manipulation,
needle insertion, suturing, and cauterization.

Future work to be done


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.

Acknowledgements
We would like to express our sincere thanks to robotics club,iit Kanpur and our
coordinators
1. Mukul singh
2. Nehchal Jindal
3. Subhojit ghosh
We would also like to thank pranay aggrawal and 4-i lab ,iit Kanpur for their help in
completing the project successfully.

References/Web links
1. For pwm generation through atmega 16 microcontroller
http://enricorossi.org/blog/2010/avr_atmega16_fast_pwm/
2. For developing the graphical user interface using the opencv
The best way to learn opencv is to read the oreilly s book Learning OpenCV:computer
vision with opencv library.
http://opencv.willowgarage.com/documentation/highgui._highlevel_gui_and_media_io.htm
http://www.aishack.in/

3.

For articles related to robotics and the servo motors


http://www.robosapiens-india.com/cookbook/robotics%20virtual%20book/index.html
http://www.engineersgarage.com/articles/servo-motor
http://www.engineersgarage.com/embedded/avr-microcontroller-projects/atmega16servo-motor-circuit

You might also like