Sie sind auf Seite 1von 9

Selection Criteria

The basic requirement for the project is to use some kind of a motor in
order to rotate both the arms. Two types of motors are considered in
order to perform this job.
• Stepper Motor
• Servo Motor

A stepper motor works with permanent magnets, which are attached to


the output shaft. Around the body of the motor is a series of coils that
create a magnetic field that interacts with the permanent magnets.
When these coils are turned on and off the magnetic field causes the
rotor to move. As the coils are turned on and off in sequence the motor
will rotate forward or reverse.

A servo is basically controlled by sending them a pulse of variable


widths, which move the output shaft accordingly.

Differences

Various differences can be pointed out between both the motors, but
the solid reason for bending towards a servo is due to its position
feedback control. Usually a stepper motor easily serves the purpose of
a servo in these kind of robotic arms, as high rotations per min (rpm) is
not required. The stepper motor would probably be better than a servo
for a general robotic arm, where high speed is not a priority due to its
high holding torque nature and a comparatively cheaper cost.
Therefore, even though a stepper motor would be a better choice for a
non-industrial robotic arm, where high acceleration is not a priority,
the servo motor is considered for our project as it operates similar to a
stepper motor at low speeds but also provides positional feedback.

Option Chosen: Servo (due to its position feedback ability)

Servo

A servo consists of several internal main parts:


• The motor
• Gearbox
• Position Sensor
• Error Amplifier
• Motor Driver
• Circuit to decode the requested position
Servo Motor Block Diagram

Outside the casing, all we see is, three wires coming out.
• Red – Power (+5V)
• Black - Ground
• White/Yellow (depending on the servo) – Coded Signal

Servo Wires
How Servo works

The servo consists of an output shaft. This shaft can be positioned to


specific angular positions by sending the servo a coded signal. As
long as the coded signal exists on the input line, the servo will
maintain the angular position of the shaft. As the coded signal
changes, the angular position of the shaft changes.
This coded signal is a pulse of varying length approximately every
20 msec. The length of the pulse is usually 1 or 2 milliseconds.

Where does the coded signal come from?

The signal controlling a servo can be supplied by the microcontroller


in two ways:
• Pulse Width Modulation (PWM)
• Timers

Usually, PWM generators are most commonly used due to less


complexity in software algorithms. But in our case, it won’t be so
useful due to the usage of multiple servos. This increases the
complexity in the hardware, as we would have to share one PWM
generator between several servos, which would require switching
components outside the microcontroller. The PWM generator is
designed to generate an accurate pulse between 0% and 100% duty
cycle, but we need something in the order of 5% to 10% duty cycle
(1ms/20ms to 2ms/20ms). If a typical PWM generator is 8 or 10 bits,
then we can use only a small fraction of the bits to generate the
pulse width we need and so we loose a lot of accuracy.

Therefore, using simple timers and software interrupts would be the


apt method for our case.

How does the shaft move?

The control wire is used to communicate the angle. The angle is


determined by the duration of a pulse that is applied to the control
wire. This is called Pulse Coded Modulation. The servo expects to see
a pulse every 20 milliseconds (.02 seconds). The length of the pulse
will determine how far the motor turns. A 1.5-millisecond pulse, for
example, will make the motor turn to the 90-degree position (often
called the neutral position). If the pulse is shorter than 1.5 ms, then
the motor will turn the shaft to closer to 0 degrees. If the pulse is
longer than 1.5ms, the shaft turns closer to 180 degrees.
Pulse variation for servo control

How is pulse width converted to voltage?

The control pulse is fed to a pulse width to voltage converter. This


circuit charges a capacitor at a constant rate while the pulse is high.
When the pulse goes low, the charge on the capacitor is fed to the
output via a suitable buffer amplifier. This essentially produces a
voltage related to the length of the applied pulse. The circuit is tuned
to produce a useful voltage over a 1ms to 2ms period. The output
voltage is buffered and so does not decay significantly between control
pulses.

How do we know the current position of the servo?

A sensor, usually a potentiometer, reads the current rotational position


of the output shaft, which produces a voltage that is related to the
absolute angle of the output shaft. The position sensor then feeds its
current value into the Error Amplifier, which compares the current
position with the commanded position from the pulse width to voltage
converter.

In order to record the current position of the servo, all we need to do is


to connect a wire to the potentiometer to read the voltage values at all
positions. These readings can be sent to the ‘tracking’ arm to move
accordingly.

Torque Calculation

The approximate torque required at each joint has to be calculated


initially to choose the best servo required. The servos available in the
market are usually denoted in the units ‘oz-in’ or ‘Kg-cm’. If we
consider a basic light servo with 3.2 Kg-cm; it means that if there was
a horizontally oriented weightless robot arm 1cm long and a 3.2 Kg
weight applied on the end, the servo could keep the arm straight. If it
was a load of 3.1Kg, the servo could accelerate the arm with 0.1 Kg-
cm. of torque. If it was a 3.3 Kg weight, it would move downwards with
a torque of 0.1 Kg-cm, despite the servo's best efforts. If gravity is not
a factor (ie, not lifting against gravity), it would accelerate the mass at
a rate of Torque / (mass x distance^2) rotations/second.

Gravity pulls down against any rotational arm with a torque of mass x
length of arm. So, take the torque provided by the motor, subtract the
torque created by gravity, and if the number is still greater than zero
the arm will move in the direction the motor is turning.

So in our case, we will need different servos at each joint of the arm,
i.e., two similar servos for both the arms at each joint. The gripper
would need the lightest servo, only depending on the weight of the
object lifted by the arm. But when it comes to the second joint from
the gripper, it should be powerful enough to carry everything above it
including the object, gripper and the weight of the material above it.
So in order to achieve this, that joint would require a stronger servo
compared to the one used at the gripper. It goes for the rest of the
joints below. The base servo would have to be the strongest in the
entire arm, while the gripper has the lightest.

Approximate Parameters

· Gripper Servo 1 (Gripping) Total weight: 200g


- Object to be lifted – 200g (maximum)
· Gripper Servo 2 (Rotating the wrist) Total weight: 300g
- Gripping servo 1 – 50g
- Object to be lifted – 200g
- Gripper – 50g
· Joint Servo Total weight: 450g
- Gripper servo 1 – 50g
- Gripper servo 2 – 50g
- Object to be lifted –200g
- Gripper – 50g
- Material – 100g (includes body and servo brackets)
· Base Servo 1 (Moving Up and Down) Total weight: 550g
- Gripper servo 1 – 50g
- Gripper servo 2 – 50g
- Gripper – 50g
- Object to be lifted – 200g
- Joint servo – 50g
- Material – 150g (includes body and servo brackets)
· Base Servo 2 (Moving Sideways) Total weight: 650g
- Gripper servo 1 – 50g
- Gripper servo 2 – 50g
- Gripper – 50g
- Object to be lifted – 200g
- Joint servo – 50g
- Base servo 1 - 100g
- Material – 150g (includes body and servo brackets)

Length of link 1: 5 inches


Length of link 2: 8 inches

Acceleration required:
Gripper Servo 2: 50 deg/sec^2
Joint Servo: 50 deg/sec^2
Base Servo 1: 50 deg/sec^2

Rough Sketch of the Arm

where,

W1: Weight of the Base servo 1 = 0.98 N


W2: Weight of the joint = 0.98 N
W3: Weight of the Joint servo = 0.49 N
W4: Weight of the joint = 0.98 N
W5: Weight of the Gripper servos (Rotating & Gripping) = 0.98 N
W6: Weight of the object lifted + Gripper = (2 + 0. 49) N
L1: Length of the joint 1 = 6 inches = 15.24 cm
L2: Length of the joint 2 = 8 inches = 20.32 cm

M0: Base servo 2 (Sideways movement)


M1: Base servo 1 (Upwards movement)
M2: Joint servo
M3: Gripper servos (Rotating & Gripping)

Static Torque

Joint 0: M0
= 0 N.m (as it is not affected by gravity)

Joint 1: M1 (Tracking arm)


= L1/2 * W2 + L1 * W3 + (L1 + L2/2) * W4 + (L1 + L2) * (W5+W6)
= (15.24/2)(0.98) + (15.24)(0.49) + (15.24 + 20.32/2)(0.98) + (15.24
+ 20.32)(0.98 + 2.45)
= 1.6180 N.m = 16.5 Kg-cm = 229 oz-in

Joint 1: M1 (User-controlled arm)


= L1/2 * W2 + L1 * W3 + (L1 + L2/2) * W4 + (L1 + L2) * (W5+W6)
= (15.24/2)(0.98) + (15.24)(0.49) + (15.24 + 20.32/2)(0.98) + (15.24
+ 20.32)(0.98 + 0.49)
= 1.02 N.m = 10.44 Kg-cm = 145 oz-in

The torque for the 'user-controlled' arm at Joint 1 is lesser than the
'tracking arm' as it is not lifting the object. But in order to simplify the
calculations, similar servos are used in both the arms at Joint 1.

Joint 2: M2
= L2/2 * W4 + L2 * (W5+W6)
= (20.32/2)(0.98) + (20.32)(0.98 + 2.45)
= 0.7965 N.m = 8.12 Kg.cm = 112.78 oz-in
Joint 3: M3
= 0 N.m (distance is 0)

Dynamic Torque

It is too complicated to calculate the dynamic torque, as the arm does


not denote a specific shape. So an approximation was done in order to
calculate the total torque required.

Proposed Servos

Gripper:
Hitec HS-322HD Standard Heavy Duty Servo
(http://www.robotshop.ca/hitec-hs-322hd-servo.html) - $11.30
• Speed: 0.15 sec @ 60°
• Torque: 3.7 kg/cm – 51.38 oz/in
• Size: 40x20x36.5 mm
• Weight: 43 g - 1.51 oz
• Karbonite Gear

Wrist:
Hitec HS-322HD Standard Heavy Duty Servo
Link  (http://www.robotshop.ca/hitec-hs-322hd-servo.html) - $11.30
• Speed: 0.15 sec @ 60°
• Torque: 3.7 kg/cm – 51.38 oz/in
• Size: 40x20x36.5 mm
• Weight: 43 g - 1.51 oz
• Karbonite Gear

Elbow:
Hitec HS-755HB Giant Scale Servo
Link  (http://www.robotshop.ca/hitec-hs755hb-servo.html) - $31.34
• Speed (sec/60o): 0.23
• Torque (Kg-cm/Oz-in): 13.2/183
• Size (mm): 59 x 29 x 50
• Weight (g/oz): 110 /3.88

Base:
Hitec HS-805HB Giant Scale Servo
Link  (http://www.robotshop.ca/hitec-hs805BB-servo-motor.html) -
$44.77
• Speed (sec/60o): 0.14
• Torque (Kg-cm/Oz-in): 24.7/343
• Size (mm): 66x30x58
• Weight (g/oz): 152/5.26
Base (rotating):
Hitec HS-805HB Giant Scale Servo
Link  (http://www.robotshop.ca/hitec-hs805BB-servo-motor.html) -
$44.77
• Speed (sec/60o): 0.14
• Torque (Kg-cm/Oz-in): 24.7/343
• Size (mm): 66x30x58
• Weight (g/oz): 152/5.26

Total servo cost for each arm (approx.) = $150