You are on page 1of 38









Table of Contents

1.0 Objective 3

2.0 Introduction 3

2.1 General Block Diagram 4

2.2 Technical Specifications 5

3.0 Design 5

3.1 Microcontroller 5

3.1.1 Selection Criteria 5

3.1.2 Summarization for selection factors 6
3.1.3 List of MCU considered 6
3.1.4 Arduino Duemilanove 7
3.1.5 Evaluation 8
3.1.6 Additional Add-ons 8

3.2 Actuators 10

3.2.1 Selection Criteria 10

3.2.2 Servo Motor 10
3.2.3 Torque Calculation 12

3.3 Robotic Gripper 13

3.3.1 Selection Criteria 13

3.3.2 Gripper Specifications 14
3.3.3 Approach 14

3.4 Haptic Functions 14

3.4.1 Selection Criteria for force sensing 14

3.4.2 Force Sensor Specifications 15
3.4.3 Approach for gripper haptics 15
3.4.4 Approach for elbow haptics 16
3.4.5 Selection Criteria for collision sensing 16
3.4.6 Collision Sensor Specifications 17
3.4.7 Approach for collision detection 17
3.4.8 Distance calculation 19


3.5 Power Supply 19

3.5.1 Voltage Regulation 19

3.5.2 Minimum Power Requirement 20
3.5.3 Proposed Power Regulation Design 20
3.5.4 Theory of operation 21

3.6 Software 22

3.6.1 Tracking arm 22

3.6.2 User controlled arm 23
3.6.3 Overall system 24

4.0 Design Challenges 24

5.0 Conclusion 25

6.0 References 26

7.0 Appendix A – Torque Calculation 27

7.1 Parameters chosen 27

7.2 Static Torque 29
7.3 Dynamic Torque 29
7.4 Proposed Servos 30
7.5 Servo Modification 31

8.0 Appendix B – Force Sensors Calculations 33

8.1 Circuit 33
8.2 Gripper Calculations 33
8.3 Elbow Calculations 34
8.4 Maintenance and Operation 35

9.0 Appendix C – Prototype 37

10.0 Appendix D – Materials 38


1.0 Objective

Our main objective is to build a robotic arm to implement several Haptic functions. This
report outlines the objective and purpose of our engineering design project. The
requirements and materials needed shall be discussed in further detail as well as its

We first have to build two separate 4-DOG (degrees of freedom) robotic arms that
duplicate each other’s motion. Both of them must be essentially identical in terms of
components used. Initially, the ‘tracking arm’ mainly follows the motion of the ‘user-
controlled’ arm. As soon as building the two robots is completed, we then can proceed
on implementing several haptic functionalities to our robotic arms.

The two haptic functions that we would want to realize are: to feel a gripping sensation
on an object, to feel the weight of an object, and to feel a restrictive movement due to a
possible incoming collision from the sides of the “tracking” robotic arm. When we
incorporate haptics to our robots, the ‘user-controlled’ arm should now also track the
movements of the ‘tracking arm’. The ‘tracking’ robotic arm’s gripper should be capable
of sending a force feedback to the ‘user-controlled’ gripper. This in turn enables the user
to feel a haptic sensation on his/her fingers. Likewise, similar logic will be applied to
enable the sensation of lifting an object. The elbow of the ‘user-controlled arm’ should
also track the elbow of the ‘tracking’ arm. The ‘tracking’ robotic arm should also possess
a collision detection capability. In case of incoming collision, the base rotational motion
of the ‘user-controlled’ arm should stop moving in the direction of impact. This will give
the user a non-movement feedback. However in the interim, adding collision sensors is
an optional part of our project.

The above objectives must be done in real-time with very minimal delays or lags.
Ideally, both arms are required to be moving very smoothly without jitters.

2.0 Introduction

Robotics has profound cultural roots. Over the course of the centuries, human beings
have been constantly seeking substitutes capable of mimicking human behavior and
sensing various interactions with our surroundings. In 1965, the Computer Graphics
pioneer Ivan Sutherland, envisioned the building of an “ulti-mate display”, a multimodal
synthetic environment, which included force and feedback [1]. He was one of the first
researchers to realize the significance of the sense of touch, especially for the
enhancement of virtual worlds. As the philosopher Bertrand Russell put it in [2]:

“it is touch that gives out sense of “reality”…Not only our geometry and physics, but out
whole conception of what exists outside us, is based upon the sense of touch.”

Nowadays, multimodal human-machine interfaces have been established as one of the

most important fundamental components of information technology in the 21st century.
They already have decisive impacts on all areas of our professional and private life, for


example covering everyday communication, manufacturing, trade, financial services,

health care and entertainment.
In recent times, the importance of sense of touch for human-computer interaction has
finally been realized and it is widely believed that haptic interfaces will be a major
improvement for human-system interaction. Nevertheless, although the need for high-
definition haptic systems has clearly been identified, up to now no haptic system has been
created that is used on a day-to-day basis. This is due to the fact that haptic technology is
still at its infancy and most of these devices are still just expensive prototypes.
The word ‘Haptics’ is derived from the Greek word ‘haptesthai’ which literally means ‘to
touch[3]. Haptics interface, therefore, gives the illusion of touching one’s surroundings.
The word ‘surroundings’ may refer to a real physical object but in a remote location or a
virtual object in a computer program. There are many types of Haptics interface, such as
Machine Haptics, Computer Haptics, Multimedia Haptics, etc. In our project, we will be
applying haptics interface that includes humans in the loop, referred to as Human haptics.
The idea is to make one of the robotic arms controllable by a human and the second arm
follow the user’s instructions.

2.1 General Block Diagram


2.2 Technical Specifications:

• Microcontroller – Arduino Duemilanove ATmega328 MCU

• Philips HEF4051B MUX/DEMUX
• FlexiForce A201 Force Sensor
• Devantech Ultrasonic Range Finder SRF05
• Hitec HS-422HD Standard Heavy Duty Servo
• Hitec HS-755HB Giant Scale Servo
• Hitec HS-805HB Giant Scale Servo
• Switching regulator – National Semiconductor LM2575
• ATX Power Supply Unit (PSU)
• Switching regulator - 3 Amp Adjustable Switching Regulator (DE-SWADJ 3)

3.0 Design

3.1 Microcontroller

3.1.1 Selection Criteria

Microcontrollers come in various ranges, from low-power, small architecture to highly

sophisticated high-speed processor core. The selection is therefore, dependent on the
specific application. We look at the amount of memory required, number of I/O pins,
communication interfaces, programming language, ADC and DAC pins, and input and
output capture requirements, voltage supply, etc. Also, the MCU must be able to process
data in real-time, thus it must be capable of multitasking.

Microchip Technologies Inc.1 suggested following factors while selecting the


• Microcontroller speed (MIPS, clock speed for communications channels, etc.): Our
project will implement tele-presence using haptics. To smoothly feel the illusion of
haptic interaction it has been shown that the refresh rate must be at least 1 [kHz] [5].
Thus, we need a MCU which runs at clock speed higher than 1 [kHz].
• Memory sizes (program memory/ Flash, RAM, data EEPROM): Memory size will
depend on the implementation of our project; though, it will not be a major issue as
today’s MCU integrate enough memory for program storage and stack management.
• Number of I/O pins required: Number of I/O pins is on the other hand is major
issue. We require enough number of I/O pins to integrate all the actuators (servos in
our case) and torque/force sensors. We will be using at least six servos and two
torque/force sensors. We will also need to integrate collision sensors as well in each
of robotic arms. Keeping that in mind we need more than 10 dedicated I/O pins. We
need to further refine our model to conclude on exact I/O pins.
• Peripherals needed (ADC, Input Capture, Output Compare, Motor Control PWM,
SPI™, UART, etc.): In order to process data we need ADC, to communicate and to
load developed program to flash memory we need UART (standard communication



interface), to control speed of servos we need enough number of CCP pins, where
duty cycle of the pulse regulates the speed of servo.
• Physical size (form factor/package): Physical size is important once we need to
commercialize our project, but we are in implementing and testing phase and it is
not our primary concern.
• Analog Input Voltage levels: This will depend on voltage level of servos and
sensors. If the voltage levels are low or out of range we need an implement
amplifier to operate in proper voltage range.
• MCU architecture: MCU architecture comes in 8, 16, 32, and now in 64 bit. But 8-
bit MCU architecture is enough for out project since our project is implemented on a
small scale and does not require extensive computation, as 16-bit and 32-bit
architecture would be implemented in automobile and digital signal processing
• Software development choices: Software can be developed using numerous
programming languages and different MCU manufacturers have their own choices
as well. We as a team prefer C programming language or its derivative since we are
most familiar with it and also it has wide debugging support.
• Providing power to peripherals: To provide power to peripherals we need dedicated
power supply in order to allow clean, smooth, and regulated power. Single power
from MCU is a bad choice since there is threshold on current supply. Therefore, we
will use a dedicated power supply to provide necessary power to all peripherals.
• Cost: Finally the cost of the MCU will be bottleneck since we need to keep within
our budget or better stay below. Obviously we can buy MCU, which adheres to our
requirement, but it may cost a lot more. Sacrificing on our needs for cost and
coming up with engineering solution with limited resources is one of implicit
purpose of this project.

3.1.2 Summary of Selection Criteria

Architecture 8 bit
Operating Frequency >1 KHz
Memory >15 KB
Digital Communication Peripherals Serial Communication (RS232, USB), Wireless Protocols (optional)
Capture/Compare/PWM Peripherals Ideally 10 PWM (Output Compare or DEMUX can be used as well)
Analog Input Ideally 10 (otherwise we need MUX)
Physical Size Small to Medium
Cost <$100
Programming Language C programming language

3.1.3 List of MCU Considered

• Microchip PIC18 MCU - PIC18F8628

• Arduino - Arduino Duemilanove
• Actel - Core8051
• Cypress Semiconductor - CY3687 MoBL-USB FX2LP18 Development Kit


3.1.4 Verdict

As stated before, for a given price we can buy the best MCU and evaluation board but we
are constraint by our budget. The engineering solution is to employ as much ingenuity
possible while remaining within the limited resources. Every MCU in list above was
evaluated in the light set rules. After evaluation, we selected Arduino Duemilanove
MCU evaluation board because it is the least expansive of one’s discussed previously and
more or less fulfills our requirement with additional add-ons, i.e., we need a MUX and
DEMUX in order to accommodate all servos and sensors. It is not possible to include
evaluation content for every MCU in this report for brevity. For comprehensive
evaluation please visit our wiki page. Therefore, only Arduino Deumilanove MCU board
is evaluated below.

3.1.4 Arduino Duemilanove

Evaluation Board

Arduino Evaluation Board

Summary of Features

Microcontroller ATmega328

Operating Voltage 5V

Input Voltage (recommended) 7-12V

Input Voltage (limits) 6-20V
Digital I/O Pins 14 (of which 6 provide PWM output)
Analog Input Pins 6
DC Current per I/O Pin 40 mA
DC Current for 3.3V Pin 50 mA

Flash Memory 32 KB (Atmega328) of which 2 KB used by bootloader

SRAM 2 KB (Atmega328)
EEPROM 1 KB (Atmega328)

Clock Speed 20 MHz


3.1.5 Evaluation

All the required specifications for choosing a microcontroller for our project were met by
the Arduino Duemilanove Atmega328 microcontroller. All the specifications for the
board to match our needs can be evaluated as follows:

• Microcontroller speed (MIPS, clock speed for communications channels, etc.):

This MCU runs at 20 MHz [6]with throughput of up to 20 MIPS. It definitely is
enough for our application and haptic implementation, as we require at least 1 MHz
refresh rate.
• The memory sizes (program memory/ Flash, RAM, data EEPROM):
It supports 32 KB flash memory of which 2 KB is for bootloader, therefore, there is
30 KB of memory available for storage. The available memory is enough for our
• The number of I/O pins required: There are total of 20 I/O pins, of which 14 are
digital and 6 are analog. The 14 digital pins can be set to either be input or output.
Also, 6 pins out of 14 digital for dedicated PWM output. We require at least 10
dedicated PWM and analog input pins since we are using 10 servos. Also, we would
need some extra pins for collision sensors. Therefore, we need to use MUX and
DEMUX to achieve our functional needs.
• Peripherals needed (ADC, Input Capture, Output Compare, Motor Control PWM,
and SPI™, UART): This particular MCU supports serial communication, such as
through RS232. PWM requirements are discussed above already.
• Physical Size (form factor/package): The board's dimensions are 2.7x2.1 inch. This
is a small PCB and is suited to practical purposes.
• Analog Input Voltage Levels: The operating voltage range is 7-12 V. Also, the
Arduino takes 5 V input through analog input pins. We would be scaling circuit if
the input voltage is not 5 V.
• Programming Language: Arduino uses its own functions but it is based on C
language, which is our preference.
• Cost: This evaluation board costs CAD $49.9. This is very well priced and well
within our budget.

3.1.6 Additional Add-ons

Arduino Duemilanove incorporates ATmega328 MCU. ATmega328 MCU has 20 I/O

pins, of which 14 are digital I/O pins, of which further 6 can be used as dedicated PWM
pins, and 6 as analog input pins. We need to design an approach to accommodate the
required number of I/O pins as we are using 10 servos. To accommodate all servos, it is
not feasible in ATmega328 MCU. Therefore, we need to employ MUX and DEMUX to
fulfill our requirement. The proposed functional design is given below. At the input end,
there are only 6 analog input pins. In the design below, the input 2 servos are connected
directly to Analog IN 1 (A1) and Analog Input 2 (A2). While all other servos are
connected through 8-Channel MUX to Analog IN 3 (A3) where through logic table it is
decided which of the servos in active. The read action must be very quick in order to
counter transition lag. The decision logic is implemented through 3 Digital IN pins (D12,


D13, and D14) as an example. This approach leaves us with 3 free Analog IN pins.
Similarly we will use DEMUX at the output end. Though we have much more leeway
since there are 14 digital I/O pins, we want to conserve as much pins possible for the of
use sensors. Therefore, 2 PWM pins are connected to 2 servos and other PWM pulses are
transferred through 8-Channel DEMUX. All remaining 8 servos can be accommodated
this way through logic decision from 3 Digital IN pins (D9, D10, and D11) in this
example. This way we conserve 5 Digital I/O pins for other uses.

Proposed Design for MCU with Servos

The proposed design for the MUX/DEMUX and MCU interaction can be seen in the
figure above. With this approach 5 digital I/O and 3 analog input pins are free and
available in order to connect various sensors including the force sensors and collision


3.2 Actuators

3.2.1 Selection Criteria

The basic requirement for the project is to use some kind of an actuator in order to make
the rotation of the arms possible. Two types of motors are considered in order to perform
this job.

• Stepper 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.

• Servo Motor: A servo motor basically operates using pulse signals from the
microcontroller. The output shaft is then controlled according to the pulse widths of
the signal received by the microcontroller.

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.

3.2.2 Servo

A servo consists of several internal main parts:

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

It can be seen in the figure below that three wires are coming out.
• Red – Power (+5V)
• Black - Ground
• White/Yellow (depending on the servo) – Coded Signal


Servo Motor Block Diagram Servo Wires

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 depending on the desired angle.

Servo Control

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. They usually operate by generating an accurate pulse between 0% and 100%
duty cycle. But a single PWM generator would not be sufficient to control all the servos.
So the microcontroller chosen is capable of providing sufficient PWM generators in order
to control all the servos.

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

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.

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.

3.2.3 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 were 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.

The torque at each arm is then calculated considering the individual forces at each joint.
Worst-case scenarios are considered for all the joints during the torque calculation to
make sure that arm would not jitter for weights below 200g. The proposed servos can be
seen in the appendix section, which were calculated accordingly with the torque

3.3 Robotic gripper

3.3.1 Selection Criteria

There are several models of robotic grippers available. We are to find a gripper that can
accommodate a reasonably sized object. The gripper must able to support at least two
mechanical movements (gripping and wrist rotation). It should also be easily connected
to two separate servos to implement both mechanical movements. After further research,
the Lynxmotion Gripper is best suited for our design project.

Selected gripper: Lynxmotion Robotic Gripper SG-01

Lynxmotion Robotic Gripper SG-01

3.3.2 Gripper Specifications

• Maximum accommodated object thickness is 1.3 inches.

• Supports a maximum of two mechanical movements all at the same time
(gripping and wrist rotation).
• Can be easily connected to two separate servos (one for each mechanical
• Compatible with several HiTec servo motors like the HS-422, HS-322, HS-325,


3.3.3 Approach

Each robotic arm shall have one gripper each. The gripper on the user side is used to
control the gripper of the second arm. A mechanism shall be added on the gripper so that
the user can slide his/her two fingers and commence controlling both robotic arms. The
Servo Gripper SG-01 can be directly connected to a maximum of two servo motors. One
motor is used to open and close the gripper and the other to rotate the wrist.

3.4 Haptic Functions

The primary objective of our robotic arm project is to introduce the haptics technology
into it to get the virtual ‘feel’. The following are the haptic functions that we would want
to achieve:

• Haptic sense to feel the solidity of the gripped object

• Haptic sense to feel the weight of the lifted object at the elbow
• Haptic sense to feel the incoming collision

Haptics to feel a gripped object

There are many types of sensors available that can be used to implement the haptics of
gripping an object. Each one of them has their own specialty and functionality. We are to
find a sensor that is to be placed on the gripper of our robotic arm. This sensor shall
detect if the robotic gripper has gripped an object.

3.4.1 Selection Criteria

The following are the requirements that need to be considered:

• Measures load and force with reasonable range (in lbs)
• Flexible material that can be easily attached to the gripper
• Rigid material that can sense various shaped objects
• Reasonable price
Proximity sensors cannot be used since they detect objects at a distance. Slip sensors also
have a different functionality as it detects shear force. Furthermore, force sensors
measure force or load.
There are two general classifications of force sensors: hard and thin film sensors. The
former (e.g. Phidgets Force Sensors) are not suitable for robotic grippers as they are not
flexible and are bigger in size. Thin film sensors on the other hand are lighter, smaller,
and flexible, although some are still only optimized for human touch (e.g. Interlink Force
Sensors). Taking into account all the requirements for selection, the Parallax FlexiForce
Sensor, which is a thin film force sensor, is best suited for our design project
Selected sensor: FlexiForce A201 Force Sensor


3.4.2 Sensor Specifications

• Thickness: 0.008”
• Length: 8”
• Width: 0.55”
• Sensing area: 0.375” diameter
• Connector: 3-pin male square pin
• Response time: < 5 microseconds
• Force range: 0 – 25lbs

3.4.3 Approach for gripper haptics using a Force Sensor

The force sensor will be placed on the robotic gripper of the output side. It will measure
the pressure that the gripper applies to the object. When a pre-selected threshold pressure
is attained, the user must no longer be able to command the gripper to close any further.
This pressure must be enough to lift the object and to not damage it. Consequently, this
non-closing movement of the gripper would make the user feel that he/she has grabbed an
object. The maximum pressure that the gripper applies to the object will be around 5 lbs.
before it stops closing. This value may change during the testing process.

When the force sensor has no load, its resistance is very high (>5MΩ). When a force or
load is applied, the resistance decreases. This resistance is measured by connecting an
ohmmeter to the two outer pins. This device is designed such that force is inversely
proportional to the resistance. Conversely, force is directly proportional to conductance
A table must be completed to test the precision of the A201 Force Sensor. Resistances
are to be measured with respect to various sample forces. Conductance is then calculated
from these resistance values (G=1/R). If the device is working correctly, the plot of
conductance vs. force should be linear and should show a straight line with a positive
slope as seen below.

Resistance vs. Force variation


Haptics to feel the object's weight

The second haptic function of our design project is to let the user feel the weight of an
object being lifted. In addition, the user must be able to distinguish which object is
heavier if not lighter. We will have at least two test objects with different weights.

3.4.4 Approach for elbow haptics using a Force Sensor

Our approach in implementing weight haptics on our project is to use a similar force
sensor as above. We are to place it on a strategic place where the movements of the
elbow arm touch the force sensor. This sensor is to be placed on the elbow joint of the
output robotic arm. The varying pressure readings of the force sensor will serve as an
input mechanism to the robotic arm of the user side. The force sensor will be connected
to a force to voltage circuit. This output voltage will then be read by the microcontroller.
Depending on the voltage reading, the microcontroller shall send a signal to the user
elbow servo to lower down the arm. This will counteract the lifting movement of the
robot applied by the user. As the user rises up the arm, the servo keeps going down with
a rate relative to the force sensor measurement. This then is our mechanism to let the
user feel an objects weight.

We can use the elbow servo as both input and output device by setting up specific times
for each. For example, we first send a pulse to the elbow servo so that it can function as
an input device. Right immediately, a second pulse is sent so that it can now function as
an output device. This process will then repeat. It is worth noting that the time in
between pulses must be low enough so that the user will have a more continuous feel
with the robots.

Haptics to feel possible incoming collision

The functionality of a collision sensor can be found in various types of sensors like force
sensors, proximity sensors, distance sensors, IR sensors, and range finders. However, not
all of them may be suitable for our robotic arm project.

3.4.5 Selection Criteria

The following are the requirements that need to be considered:

• Range distance: the range distance must be reasonable enough, low "minimum
sensing distance" and reasonable "maximum sensing distance"
• Connection: information regarding connecting and programming the sensor must
be sufficient.
• Price: reasonable price.

Force sensors should not be used in this part of our project as they only detect collisions
as it happen and not prior. Proximity sensors also tend to be more specific on the object's
characteristics (e.g. plastic or metal). Most contact and proximity sensors are only used to
detect human fingers. Distance sensors seem to be advantageous because they can output


a voltage reading based on the distance of the object. This reading can be converted to
distance by means of scaling and proportion. The problem however is that most distance
sensors has a very high sensing range (e.g. 4" - 30"). A lower "minimum sensing
distance" is needed. On the contrary, most Infrared sensors either have a very small
"maximum sensing distance (e.g. Maximum of 6 mm) or a high judgment distance (e.g.
40cm). The last option is to use range finders, which tend to offer more options
depending on the distance range that is needed. Taking into account all the requirements
for selection, the Devantech Ultrasonic Range Finder SRF05 is best suited for our design
Selected sensor: Devantech Ultrasonic Range Finder SRF05

This sensor determines the distance of an obstacle within sonar field of view. LED status
indicator then blinks when the sonar fires. It can be used to control servo motors based on
an obstacle’s distance and they use only a single pin for both trigger and echo.

3.4.6 Sensor Specifications

• Length: 43 mm
• Width: 20 mm
• Height: 3–4 cm
• Range Distance: 1cm – 4m
• Interface: Positive TTL level signal width proportional to range
• Power requirements: 5V and 4mA
• Frequency: 40 KHz
• Trigger pulse: 10us at least

3.4.7 Approach for collision detection

The SRF05 sensor will be placed on important locations of the output robotic arm.
Object detection by one or more of the sensors will translate to a restrictive movement
on the respective joints of the robotic arms (both user and output side). We are to put at
least two sensors, one for each side, of the second arm. In other words, the sensor will
detect any possible collisions to the right or to the left of the robot. Initially, we have


decided to set the threshold distance of 5 inches. So the presence of any obstruction that
is within 1 cm to 5" of the robot shall restrict movement in that direction.

The SRF05 has two modes of operation.

Mode 1 - Separate Trigger and Echo

This mode uses separate trigger and echo pins. To work on this mode, the Mode pin is
left unconnected.

2-pin Trigger Echo Mode Sensor Timing Diagram

Mode 2 - Single pin for both Trigger and Echo

This mode uses a single pin for both trigger and echo signals, therefore, saving valuable
pins on microcontrollers. To work on this mode, the Mode pin is connected to the 0V
Ground pin. The SRF05 will wait 700uS after the end of the trigger signal before raising
the echo line. This wait time should be enough to ready the measuring code and switch
the function of the pin into echo.

1-pin Trigger Echo Mode Sensor Timing Diagram


3.4.8 Distance Calculation

A 10us pulse is supplied to the trigger input to start ranging. The SRF05 will send out an
8 cycle burst of ultrasound at 40KHz (at the speed of sound) and the echo line is raised to
high. After sending out the sonar, the SRF05 listens for an echo and as soon as it detects
one, it lowers the echo line. The echo line is a pulse whose width is proportional to the
distance of the object from the sensor. If nothing is detected after 30ms, the echo line is
lowered. Since the echo pulse is proportional to distance, we can determine the distance
of the object. Considering the width of the pulse is measured in us, then dividing by 58
will give the distance in cm, or dividing by 148 will give the distance in inches. The time
in between triggers must be 50ms. This is to make sure that the previous emitted sonar
will not overlap with the next one. The other 5 pins on the opposite side of the SRF05 are
not to be used or connected. They were used only once during manufacturing to program
the flash memory on the PIC16F630 chip.

Beam Pattern

The beam pattern above is the blueprint of the sonar being emitted by the sensor.

3.5 Power Supply

Efficient power supply is the cornerstone to the success of robotic project. It provides the
power source to servo motors. Just using battery will not do the job. In fact, there are
some rules that need to be taken under consideration before making continuing. We need
a circuit that regulates desired voltage, supply the required amount power at all times, and
allow for additional special requirements of particular application2.

3.5.1 Voltage Regulation

For efficiency, optimally it would be best to use a power source slightly above the desired
voltage input required. However this is rarely easy or even feasible. Different electronics
require different voltages. A MCU will require 5V, the servo motors perhaps 12V and a
voltage amplifier perhaps both 20V and -20V.

Batteries are never at a constant voltage. A 6V battery will be at around 7V when fully
charged, and can drop to 3-4V when drained. This below image shows how a typical
battery voltage changes over time.



Typical Battery Life Chart

To correct for this, an IC module called a voltage regulator is used. What a voltage
regulator does is take any input voltage and outputs a regulated voltage. So if the battery
is at 7V, then a 5V regulator will output 5V and rest will dissipate as the unused

To calculate wasted power, use this equation:

Since MCU and sensors typically do not consume that much current, the wasted energy
isn't that much. But for motors, this can be a huge problem. We do not want to over
voltage them, but to regulate the voltage is a huge waste of energy. To correct for this,
instead is switching regulator used. They act just like a voltage regulator in terms of
output, but are much more efficient.

3.5.2 Supply a minimum required amount of power

The total power required for the servos has to be below the maximum amount the power
circuit can supply. If power drops even for a fraction of a second below what the servos
require, things like the MCU could reset, or sensors would give bad readings, or motors
won’t work very well.

The rule of thumb is: energy required by robot < energy battery can supply

To solve this problem, we determine how much total power servos will require by
experimenting, calculating equations, and looking up datasheets of the servos and other
parts used: power = voltage x current

3.5.3 Proposed Power Regulation Circuit

The proposed power regulation circuit has the following additional features:

Short circuit protection, regeneration, negative voltages and noise protection


Proposed Power Regulation Circuit

Main Components used:

• ATX Power Supply Unit (PSU)

• Switching regulator - 3 Amp Adjustable Switching Regulator (DE-SWADJ 3)

3.5.4 Theory of Operation

We proposed ATX PSU as power source because it is relatively cheap. Along with that
we get huge current outputs, short-circuit protection, and a very good voltage regulation.
Generally PSU give 5 V, 30 A, and 12 V, 12A, supply. These rating can easily replace
standard lab power supply.

In order to convert PSU to our power supply, we need to first identify which wires are 5
V, 12 V, and GND, etc. The 5 V rail can be used as it is since it already regulated to 5 V.
In addition to that we proposed an additional fuse, on/off switch, LED, and a capacitor to
take out any transients. The 5 V supply will provide power to MCU and sensors. On the
other hand, the 12 V rail need to be regulated to around 6~6.5 V to provide power to
servos. Its schematic is identical to 5 V except it has an additional switching regulator.
The switching regulator is similar to regular voltage regulator but it is much more
efficient. A regular voltage regulator may burn and melt due to overwhelming power
requirement. This is where switching regulator comes.

Before choosing the switching regulator, we found the total power consumed in worst
case and it was about 93 Watts for all 10 servos. We propose 3 Amp Adjustable
Switching Regulator from Dimension Engineering, model DE-SWADJ3. It should be


ideal for our application as it provides maximum of 25 Watts and an adjustable output
voltage from 3 to 13 V. Using this switching regulator with four 12 V rails should
provide ample power to the servos.

3.6 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.

3.6.1 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


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.


3.6.2 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.


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.


3.6.3 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.

4.0 Design Challenges

Considering the complexity involved in out project, it is certain for sure that we are going
to face hurdles in order to complete it successfully. Some of these challenges are:

• Building the arm successfully with physical stability. The components need to be
connected securely and safely to avoid injuries and avoid property damages.
• Modifying the servos so that they can be used as an input feedback mechanism
without damaging them.
• Accommodating all the servos needed using limited resources such as number of
pins in the microcontroller.
• Syncing both robotic arms seamlessly. We have a theoretical and plausible
approach in dealing with this challenge, but still there is no assurance of
effectiveness until we begin testing.
• Supplying enough power to all the servos at once. The servos need clean power
to avoid jittering.
• Implementing the haptic functions of our robotic arm can easily be considered as
one of the biggest challenges of our design project. The aforementioned haptic
functions in the report will be difficult to implement.
• Programming all the mechanisms and functions of our design project will be the
biggest challenge to our design project in the 8th semester.


5.0 Conclusion

The research for this project was divided into equal parts due the broadness of concepts,
strategies, and resources entailed. During our research we coordinated continuously with
each other to arrive at optimal solution. During the course, we made some bad choices
but with consultation of FLC and FA we think that we have finally arrived at solid
grounding to jump start our project.

Our approach is first implement 3 DOF by limiting the action of base and gripping
rotating servo. Our goal is successfully implement haptics with this configuration and
then build upon it for 4 DOF. Likewise, we have already designed a strategy for moving
from 3 DOF to 4 DOF.

As a whole, this design project would be a great experience for us to learn many new
concepts in terms of understanding. Also this is great opportunity is get sense of practical
experience with all the components. Overcoming all the design challenges stated above
would definitely be a great task. But we are sure that after putting our best efforts we can
make this project successful.

Our design process considered all aspects including time, cost and complexity level.
Estimated cost for the entire project would come out to be around $600 CAD in total,
with the servos taking up most of the cost.

Our design project can be extended other levels as well. We can implement some
additional features like wireless communication between the robotic arms, live-camera
feedback, etc. We will keep ourselves open to any opportunity where we can integrate
new ideas and technologies.


6.0 References

1. Brewster, S.A., Murray-Smith, R.: First International Workshop on Haptic

Human-Computer Interaction. In: Brewster, S.A., Murray-Smith,R. (eds) Haptic
HCI 2000. LNCS, vol. 2058, Springer, Heiderlberg (2001)
2. Mclaughlin, M., EspanhaM, J.: Touch in Virtual Environments. Haptics and the
Design of Interactive Systems. Prentice Hall, Englewood Cliffs (2001)
3. (2009), Haptic. Retrieved from
4. (2009), Robotshop. Retrieved from
5. (El Saddik, “The Potential of Haptics Technologies,” Instrumentation &
Measurement Magazine, IEEE, vol.10, no.1, pp.10-17, Feb. 2007).
6. (2009), Microchip. Retrieved from
7. Seattle Robotics. Retrieved from
8. (July, 2009), Jess. Retrieved from
9. (2009), RC Servos. Retrieved from
10. (February, 2003), Lightening Rotary Servos and the R4P Receiver. Retrieved


7.0 Appendix A – Torque Calculation

This appendix includes the details for the torque calculation for the robotic arms:

7.1 Parameters

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

o Object to be lifted – 200g (maximum)

• Gripper Servo 2 (Rotating the wrist) Total weight: 300g

o Gripping servo 1 – 50g
o Object to be lifted – 200g
o Gripper – 50g

• Joint Servo Total weight: 450g

o Gripper servo 1 – 50g
o Gripper servo 2 – 50g
o Object to be lifted –200g
o Gripper – 50g
o Material – 100g (includes body and servo brackets)

• Base Servo 1 (Moving Up and Down) Total weight: 550g

o Gripper servo 1 – 50g
o Gripper servo 2 – 50g
o Gripper – 50g
o Object to be lifted – 200g
o Joint servo – 50g
o Material – 150g (includes body and servo brackets)

• Base Servo 2 (Moving Sideways) Total weight: 650g

o Gripper servo 1 – 50g
o Gripper servo 2 – 50g
o Gripper – 50g
o Object to be lifted – 200g
o Joint servo – 50g
o Base servo 1 - 100g
o 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
Joint Servo: 50
Base Servo 1: 50


Rough Sketch of the Arm


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)


7.2 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 +
= 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 +
= 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 = 112.78 oz-in

Joint 3: M3
= 0 N.m (distance is 0)

7.3 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

The basic formula in order to calculate the dynamic torque is ‘I x α’, where I is the
moment of inertia and α is the angular acceleration of the arm. The angular acceleration
of the arm can be approximated, but the moment of inertia will be very complex to
calculate, as the arm is not a constant rigid body. So, it will be very complex in order to
approximate this.


7.4 Proposed Servos

Hitec HS-322HD Standard Heavy Duty Servo
( - $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

Hitec HS-322HD Standard Heavy Duty Servo
Link  ( - $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

Hitec HS-755HB Giant Scale Servo
Link  ( - $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

Hitec HS-805HB Giant Scale Servo
Link  ( - $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  ( - $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


7.5 Servo Modification

A hobby servo works by sending pulses to the servo from a controller. There is a small
potentiometer inside the servo that is attached to the servo arm. The electronics inside the
servo compares the position of the potentiometer with the desired position from the
pulses and moves the arm as required until they match. The servo does not give any
feedback to the controller; therefore the controller has to assume that servo is always at
the desired position. Therefore, the servo has to be modified so that the potentiometer
inside the servo provides us with the information about the location of the servo arm. We
can ‘close the loop’ with this data and always know the location of the arm. The steps to
modify the servo are as follows:

1. Firstly, remove the four screws on the back of the servo casing. The back of the
casing should just slide off, exposing the circuit board, as shown in Figure 1.

2. The board is only held in place by compression so it should lift free of the casing.
Gently pry it up, taking care not to damage the board or the wires holding the board.
The potentiometer should now be exposed. The wire in the middle of the
potentiometer will be the wiper. This is the wire that we will want to connect to in the
future, shown in Figure 2.

Figure 1 Figure 2

3. Connect the red and black wires from the servo cable to a power supply or battery
that will supply the voltage for the servo. Move the servo arm all the way to one side
and measure the voltage from the wiper of the potentiometer (yellow wire in Figure
2) to ground (black wire of servo cable). Write down the voltage, move the servo arm
all the way around to the opposite position, and record that voltage as well. These
values will be used in a moment.

4. Follow the wire that is attached to the wiper on the potentiometer to where it connects
to the circuit board. This is shown as the yellow wire in the upper right corner of the
circuit board in Figure 3.
5. Gently heat the solder on the wire and remove it from the circuit board. Strip one
piece of wire that will be used to make the feedback cable and solder it to the yellow


wire. Re solder both wires back to where the wire was just removed. Take extreme
care not to damage the board or apply too much heat. Place the board back into the
casing and fold the new wire so that it exits next to the motor, as shown in Figure 4.

Figure 3 Figure 4

6. Locate a good ground by checking resistance from various points on the top of the
board to the back wire on the servo cable. The anode of the surface mount diode,
shown in Figure 5, makes a nice place to attach the ground wire. Strip the second wire
of the feedback cable and solder it to the ground, as shown in Figure 5.

7. Move the feedback cable so that it is parallel to the servo cable and secure it with a
very small amount of hot glue. This will protect the cables by giving them a small
amount of strain relief. Place the cover back on the servo and tighten down all of the
screws, as shown in Figure 6

Figure 5 Figure 6


8.0 Appendix B – Force Sensors Calculations

8.1 Circuit

To process the input signal (force) from the A201 force sensor, it has to be connected to a
force-to-voltage circuit. This drive circuit is used to calibrate and convert the force signal
into a proper engineering unit (voltage). Also, it is used to adjust sensitivity of the
sensor. The drive circuit is shown below.

• Supply Voltages should be constant

• Resistance RF is 1kΩ to 100kΩ
• Max recommended current is 2.5mA
• Aim is to get a Vout of 0V when no force is applied and 4.2V when max force is

8.2 Gripper Calculations

VT = -5V Rs = ? (Force sensor resistance at F = 5 lbs)

Vsat = +5V F = 5 lbs (Threshold Force)
Vout = 4.2V

Based on the preceding conductance vs. force plot, we use the equation to
find the relationship between force F and sensor resistance Rs.

Conductance = (Slope * Force) + y intercept

1/Rs = (0.005/25) * F + 0
F = 5000/Rs

Given that F = 5 lbs, we can determine the sensor resistance, Rs = 1KΩ. Also, given that
Vout = 4.2V, we can determine RF using the equation

Vout = -VT*(RF/Rs).
4.2 = 5*(RF/1000)
RF = 840Ω


Thus, when the force applied by the gripper on the object reaches 5 lbs, the resistance
reading on the sensor will be Rs = 1KΩ. Furthermore, when the sensor is connected to
the inverted amplifier circuit with RF = 840Ω, Vout will have a reading of 4.2V at F = 5

When the microcontroller detects a 4.2V on one of the input capture pins, it then sends a
signal to the user gripper servo to stop closing any further.

8.3 Elbow Calculations

The calculation for this approach is essentially similar to that of the calculation of the
gripper pressure. The difference would be that the gripper force sensor detects a fixed
threshold force of 5 lbs. but the elbow force sensor detects a range of forces.

VT = -5V Rs = ? (Force sensor resistance at F = 0 – 8 lbs.)

Vsat = +10V Vout = ?
RF = 1KΩ
F = 0 - 8 lbs. (Force Range)

Based on the preceding conductance vs. force plot, we use the equation to
find the relationship between force F and sensor resistance Rs.

Conductance = (Slope * Force) + y intercept

1/Rs = (0.005/25) * F + 0
F = 5000/Rs

Given that F = 0 lbs, we can determine the sensor resistance, Rs > 5MΩ. At maximum
pressure F = 8 lbs, Rs = 625Ω. Thus, the resistance range of the force sensor will be
from 625Ω to 5MΩ.

Also, given that the feedback resistor RF = 1KΩ, we can determine the range of Vout
values by using the equation Vout = -VT*(RF/Rs).

Assuming F = 0 lb Assuming F = 8 lbs

Vout = -VT*(RF/Rs) Vout = -VT*(RF/Rs)
Vout = 5*(1KΩ/5MΩ) Vout = 5*(1KΩ/625Ω)
Vout = 1 mV Vout = 8V

The input pin of the microcontroller will then detect voltage readings within the range of
1 mV to 8 V. Having a higher value of Vout will result in a faster rotation of the elbow
servo. This will move the elbow arm faster downwards. The rate of downward
movement of the elbow is directly proportional to the Vout of the force to voltage circuit.


8.4 Maintenance and Operation of FlexiForce sensor

• If the footprint of the applied load is larger than the sensing area, it may be necessary
to use a "puck." A puck is a piece of rigid material (smaller than the sensing area)
that’s placed on the sensing area to ensure that the entire load path goes through this
area. The puck must not touch any of the edges of the sensing area, or these edges
may support some of the load and give an erroneous reading.
• Avoid shear forces on the sensor (since sensor reads forces that are perpendicular to
the sensor plane)
• Use tapes or adhesives that will not degrade the substrate (polyester) material of the
• Saturation force - when maximum force of sensor is achieved and no change in output
will occur. This can be altered by changing the sensitivity (reference resistance). A
lower RF will make the system less sensitive, and increase its active force range. It is
essential that the sensor(s) do not become saturated during testing. If the sensor
saturates at a lower load than desired, adjust the "Sensitivity."
• Conditioning the sensors - As with most measurement devices, it is customary to
exercise, or "condition" a sensor before calibrating it or using it for measurement.
This is done to reduce the amount of change in the sensor response due to repeated
loading and unloading. A sensor is conditioned by loading it to 110% of the test
weight four or five times.
• Hysteresis is the difference in the sensor output response during loading and
unloading, at the same force. For static forces, and applications in which force is
increased, and not decreased, the effects of hysteresis are minimal. If an application
includes load decreases, as well as increases, there may be error introduced by
hysteresis that is not accounted for by calibration.
• Drift is the change in sensor output when a constant force is applied over a period of
time. If the sensor is kept under a constant load, the resistance of the sensor will
continually decrease, and the output will gradually increase. It is important to take
drift into account when calibrating the sensor, so that its effects can be minimized.
The simplest way to accomplish this is to perform the sensor calibration in a time
frame similar to that which will be used in the application.
• Linearity error - FlexiForce standard sensors are linear within +/- 3%.


9.0 Appendix C - Prototype

In order for better understanding of the project, a prototype has been considered. The
LEGO Mindstorms NXT Robotic Kit would be the best kit for our case, as it is perfectly
stable for lightweights. It is an alternative to all the robotic parts mentioned in this report.
This LEGO kit contains everything including the microcontroller and servos. When Dr.
James Smith’s advice was taken regarding the project, knowing that this is our first
robotic project, he advised us to work with the NXT kit first as it is more trouble free
than using our own parts. The LEGO Mindstorms NXT Robotic Kit can either be a
prototype of our project or can even be our final design.

LEGO Mindstorms NXT Robotic Arm

LEGO Mindstorms NXT Robotic Kit


10.0 Appendix D - Materials

Choosing the right materials for building the robotic arm is one of the most important
things. Lighter weight and easy to build are the two main features considered in the
selection of materials. After thorough research, it was finalized to use carbon fiber for
building the arm using servo brackets that are attached directly to the servo.

Carbon Fiber Rods Servo Brackets