Sei sulla pagina 1di 12

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

Software Design

The software design plays the most important role in this project.
Optimization has to be done to the maximum level in order to cut short
the delay between each servo communicating with the microcontroller.
The complexity level for controlling one servo or a sensor at a time
might not be that high, but when it comes to controlling upto various
number of servos and sensors, the compleity level definitely rises.

Tracking arm

Servo control

Initially, a continuous signal of 1ms/20 ms duty cycle (‘1ms’ might vary


depending on the servo) must be provided by the microcontroller to all
the servos in order to function, which is provided by the pulse width
modulators on the microcontroller. The 1ms pulse width would make
the servo stay constant at a particular angle carrying the maximum
load depending on its torque.

The next step is to test the servos by giving certain signals. This would
be done by connecting the servos of the ‘tracking’ arm to the digital
ports of the microcontroller and sending the desired signals. The
microcontroller then sends pulse widths varied between 1 ms to 2 ms
to the digital ports depending on the desired angle, which are then
converted to voltage by the pulse width to voltage converters on the
servos.

Ideally, the arm has to operate according to the signals sent by the
computer via the microcontroller.

Haptics

The testing principle for force sensors will be similar to the servo
control for the user controlled arm, due to the fact that the force
sensors on the tracking arm will be the input to the microcontroller
unlike the servos.

The signal wires from the force sensors will be connected to the analog
ports of the microcontroller to receive the varied voltage values
depending on the force exerted on them. These voltage values then go
through the ADC to get the corresponding pulse widths, which can be
sent to either the gripper or the elbow servos of the user controlled
arm. These varied pulse widths should then be displayed on the LCD
that is connected to the microconctroller for testing purposes.

Ideally, the pulse widths displayed should be varying even for the
slightest of the force.

User controlled arm

Servo control

After the servos have been modified (to move freely using hand
controls and give positional feedback), the servo signal wires are
connected to the analog ports of the microcontroller. The
microcontroller then receives various voltages depending on the servo
movement, which are later converted to pulse widths using analog to
digital conversion. The pulse widths after the ADC are to be displayed
on the LCD that is connected to the microcontroller for testing
purposes.

Ideally, the LCD has to be displaying a change in pulse width even for
the slightest of the movements by the arm.

Haptics

This is the most crucial part in the project, where the servos of the user
controlled arm at the gripper and elbow joints should be programmed
to act as both input and output devices. As mentioned in the previous
section, all the servos are programmed to move freely sending the
position feedback, acting as an input device. But now the gripper and
elbow servos, should be able to act as an output device as well to
receive the force feedback. As of now, we are considering multiple
approaches for this part, as we do not know for certain which will work
the best with the highest accuracy.

The first logic we will try implementing for the gripper is to use the
servo angle of the tracking arm’s gripper to act as an input/output
device without using a force sensor. This will restrict the movements of
the user’s gripper depending on the tracking gripper’s position. The
analog voltage received from the tracking gripper is converted to pulse
widths through ADC, which is then passed to the user’s gripper. This
logic cannot be applied at the elbow joint, as it would work only if the
arm is lifting an object heavier than its maximum torque, and it starts
jittering. So this logic would not be implemented at the elbow joint as
we desire to feel any kind of weight even when its within the torque
range for the servo.

The second logic would be the implementation of a force sensor on the


tracking gripper and the elbow to detect the exact force acting, which
is later converted to voltage. This voltage is then converted to pulse
widths through ADC, to be passed to the user’s gripper. These pulse
widths are then sent though the signal wires which were initially
connected to the servo prior to the modification. This would be a mixed
signal with varied pulse widths to make the user feel pressure towards
the opposite direction of movement.

According to our current knowledge, we are assuming that the former


method would work well for the gripper and latter for the elbow joint.
This would probably change once the testing procedure starts.

Overall System

After successfully implementing the individual testing procedures, both


the methods should now be programmed to function at the same time.
The changing pulse widths which are received from the user controlled
arm should be sent to the tracking arm, which are converted to voltage
values by the servo in order to move accordingly. The analog feedback
from the tracking gripper and the elbow should be sent to the
microcontroller, which is then converted to pulse widths through ADC
and outputted to the user’s arm to feel the haptics.
Ideally, the tracking arm should receive a varied pulse width for even
the slightest movement in the user’s arm. Similarly, the user’s gripper
should respond for even the slightest force on the tracking gripper and
same goes to the elbow.

Potrebbero piacerti anche