You are on page 1of 46

1

MAHATMA GANDHI UNIVERSITY


COLLEGE OF ENGINEERING
THODUPUZHA, KERALA-685587

A MINI PROJECT REPORT


ON

AUTOMATED GUIDED VEHICLE

Submitted by
PONNILA RAJAN
PRATHEESH P R

DEPARTMENT OF
ELECTRONICS AND COMMUNICATION ENGINEERING
2011
2

MAHATMA GANDHI UNIVERSITY COLLEGE OF


ENGINEERING
THODUPUZHA, KERALA-685587

DEPARTMENT OF
ELECTRONICS AND COMMUNICATION ENGINEERING

CERTIFICATE

Certified that this mini project titled


AUTOMATED GUIDED VEHICLE is the bona-fide record of the work
done by PONNILA RAJAN with Reg No:62612 of B.Tech in Electronics
and Communication, towards the partial fulfilment of the
requirement for the award of the degree of Bachelor of Technology,
by Mahatma Gandhi University.
Lecturer-in-charge Head of the Department

Electronics and Communication

External Examiner Engineering


3

MAHATMA GANDHI UNIVERSITY COLLEGE OF


ENGINEERING
THODUPUZHA, KERALA-685587

DEPARTMENT OF
ELECTRONICS AND COMMUNICATION ENGINEERING

CERTIFICATE

Certified that this mini project titled


AUTOMATED GUIDED VEHICLE is the bona-fide record of the work
done by PRATHEESH P R with Reg No:15508 of B.Tech in Electronics
and Communication, towards the partial fulfilment of the
requirement for the award of the degree of Bachelor of Technology,
by Mahatma Gandhi University.

Lecturer-in-charge Head of the Department

Electronics and Communication

External Examiner Engineering


4

ACKNOWLEDGEMENT

First and foremost I express our sincere thanks to, our honoured Principal PROF.

K T SUBRAMANIAN for providing excellent lab facilities and the permission to use the

same.

I am extremely grateful to Dr.LETHAKUMARI.B (Head of Electronics and

Communication Department) for her continuous support in the process of completing

the project.

I also convey thanks to Ms MARY METILDA ,Mr RAJEESH BABU & Ms VRINDA

P for their endeavours in providing constant guidance and encouragement through

out the project. I wish to express my deep sense of gratitude to all staff members of

Electronics and Communication department for their keen interest in this project and

valid support.

I am also grateful to my classmates for their concern and interest

in the project. I thank all who have shown interest and helping us with ideas and

opinions to complete this project.

Above all I thank ALMIGHTY GOD and our PARENTS for giving me the blessing

to take over this venture.


5

CONTENTS

SL.NO. CONTENTS PAGE NO.

1 INTRODUCTION 6

2 BLOCK DIAGRAM 7

3 BLOCK DIAGRAM DESCRIPTION 8

4 CIRCUIT DIAGRAM 12

5 CIRCUIT DIAGRAM DESCRIPTION 13

6 PCB FABRICATION 19

7 IMPLEMENTATION OF CIRCUITS AND LAYOUT 25

8 COST ESTIMATE 28

8 SOFTWARE SECTION 29

9 APPLICATIONS 39

10 ADVANTAGES 40

11 LIMITATIONS 41

12 CONCLUSION 42

13 REFERENCE 43

14 DATASHEETS 44
6

INTRODUCTION

The American Society of Safety Engineers (ASSE) defined AGVs as:

a. Machines without drivers that can move along pre-programmed routes, or use

sensory and navigation devices to find their own way around.

b. Vehicles that are equipped with automatic guidance systems and are capable

of following prescribed paths.

c. Driverless vehicles that are programmed to follow a guide path.

The AGV robot described here is a PIC microcontroller based,

and is developed with three degrees of freedom. (Light following, wall following & pit

avoidance capability).The robot contains the USB 2.0 compliant PIC 18F4550

microcontroller, motors, sensors, wheels, battery, etc. The robot uses four IR sensor

modules and two LDR circuits. ALL the sensors of the robot are precise and sensitivity

can be varied.
7

BLOCK DIAGRAM

POWER
SUPPLY

ALARM CONTROL
SWITCHES

IR TRANSCEIVER
MOTOR DRIVER
(WALL & PIT) PIC 18F4550
DETECTOR)
LDR CIRCUIT

(LIGHT
FOLLOWER)
DIFFERENTAL
DRIVE
MOTORS

USB
INTERFACE
FOR LIVE
PROGRAMING
8

BLOCK DIAGRAM DESCRIPTION

Micro controller-PIC 18F4550


The heart of the Robot is a PIC 18F4550 microcontroller. This is an
industrial grade microcontroller manufactured by Microchip technologies Inc. The PIC
18F4550 microcontroller has been specifically designed for embedded C
programming. The PIC 18F4550 microcontroller also has an integrated full speed USB
2.0 transreceiver, which has been configured for high speed USB programming of the
Robot.
9

Core Features

 Universal Serial Bus


 Power-Managed Modes
 Flexible Oscillator Structure
 C Compiler Optimized Architecture with optional
 Extended Instruction Set
 100,000 Erase/Write Cycle Enhanced Flash
 Program Memory typical
 1,000,000 Erase/Write Cycle Data EEPROM
 Memory typical
 Flash/Data EEPROM Retention: > 40 years
 Self-Programmable under Software Control
 Priority Levels for Interrupts
 8 x 8 Single-Cycle Hardware Multiplier
 Extended Watchdog Timer (WDT):
 Programmable period from 41 ms to 131s
 Programmable Code Protection
 Single-Supply 5V In-Circuit Serial
 Programming™ (ICSP™) via two pins
 In-Circuit Debug (ICD) via two pins
 Wide Operating Voltage Range (2.0V to 5.5V)
 High-Current Sink/Source: 25 mA/25 mA
 Three External Interrupts
 Four Timer modules (Timer0 to Timer3)
 Up to 2 Capture/Compare/PWM (CCP) modules:
 Capture is 16-bit, max. resolution 5.2 ns (TCY/16)
 Compare is 16-bit, max. resolution 83.3 ns (TCY)
 PWM output: PWM resolution is 1 to 10-bit
 Enhanced Capture/Compare/PWM (ECCP) module:
 Multiple output modes
 Selectable polarity
 Programmable dead time
 Auto-shutdown and auto-restart
 Enhanced USART module:
 LIN bus support
 Master Synchronous Serial Port (MSSP) module
 Supporting 3-wire SPI (all 4 modes) and I2C™
10

 Master and Slave modes


 10-bit, up to 13-channel Analog-to-Digital Converter
Module (A/D) with Programmable Acquisition Time etc.

Motor and Motor Driver


The Robot comes with two geared dc motors of 500 rpm. The motors
have helical gears for higher efficiency and lower noise. A single L293D motor driver
IC drives the motors. The motor driver IC has a current rating of up to 600mA per
channel. The purpose of the motor driver IC is to convert the five or 0-volt signal
generated by the microcontroller to a level of 12 or 0 volt so that it can power the
motor. Had the motors been directly connected to the microcontroller, the voltage and
current produce by it will be very low to dive the motor.

Buzzer
The Robot has an on board buzzer which is driven by a Darlington pair.
When a voltage of 5 volts, 25mA is given at the base terminal using the
microcontroller, the Darlington pair amplifies the current to drive the buzzer making
it sound. This buzzer can be used to sound an alarm for a particular purpose or during
debugging of program code.

IR sensor module
The Robot comes with four IR sensors. These sensors can be configured
as line sensors or obstacle sensors. The sensors have a tuning screw to vary the range
of sensing. The sensors require a 5-volt supply voltage and can generate digital output
of 5 or 0 volts when functioning properly.
11

LDR circuit
The LDR circuit is used to detect the presence of light. Two LDRs are
used for this purpose and they have separate intensity control mechanisms also. This
enables easy calibration of light sensitivity.

Power Supply
The Robot consist of an 8* 1.5 V AA cell bundle. This pack can provide a
supply voltage of 12 volts for the Robot. This battery pack can be easily mounted on
the underbody of the chassis. The 7805 voltage regulator onboard the Robot takes the
12volt as input and generates a regulated 5-volt supply required for the electronic
components onboard o Robot. The Robot can also be powered by drawing power from
the USB port during programming and testing of sensor modules. However, this is not
suitable for driving the motors.
12

CIRCUIT DIAGRAM

VCC

C5
+12V U2 VCC
7805 ON OFF SWITCH VCC _SENSORS
R6 0.1uF 4
1 3 3
VI VO
2
150R GND
GND

1
POWER R1
2 1k CONN-SIL4
C3 C4
2

1
220u 0.1Uf D2 D3 GND_SENSORS
CONN-SIL2 1N4148 LED R14
D1 4
LED 3
10R
2
1
VCC
CONN-SIL4

RP1 GND
R15 J2
GND
1 1
2
150R
2
+12V
3 16 1 CONN-SIL2
4 15 2
VCC
5 14 3
6 13 4
7 12 5 16 8 U3 GND
8 11 6 R5 1
150R
9 10 7 R8 2 3 2
IN1 VSS VS OUT1 MOTOR 1
9 8 R9 7
IN2 OUT2
6 3
RESPACK-8 10k 1
150R EN1
SW-DIP8 CONN-SIL3

SW1 U1 9
GND EN2
4 2 15 R4 10 11 1
SENSOR I/P 3 3
RA0/AN0 RC0/T1OSO/T1CKI
16 15
IN3 OUT3
14 2
2 4
RA1/AN1 RC1/T1OSI/CCP2/UOE
17
IN4 GND GND OUT4
3 MOTOR 2
C1 1 5
RA2/AN2/VREF-/CVREF RC2/CCP1/P1A
23
150R
RA3/AN3/VREF+ RC4/D-/VM
6 24 L293D CONN-SIL3
RA4/T0CKI/C1OUT/RCV RC5/D+/VP
CONN-SIL4 7 25
RA5/AN4/SS/LVDIN/C2OUT RC6/TX/CK GND
22pF 14 26
RA6/OSC2/CLKO RC7/RX/DT/SDO
X1 13
OSC1/CLKI
C2 CRYSTAL R7
33 19
RB0/AN12/INT0/FLT0/SDI/SDA RD0/SPP0 GND
34 20
RB1/AN10/INT1/SCK/SCL RD1/SPP1 150R
35 21
GND RB2/AN8/INT2/VMO RD2/SPP2
22pF 36 22
VCC RB3/AN9/CCP2/VPO RD3/SPP3
37 27
RB4/AN11/KBI0/CSSPP RD4/SPP4
38 28
RB5/KBI1/PGM RD5/SPP5/P1B
BUZ1 39
RB6/KBI2/PGC RD6/SPP6/P1C
29
40
RB7/KBI3/PGD RD7/SPP7/P1D
30 R2
GND 10k GND
8
Q1 RE0/AN5/CK1SPP
9
BUZZER RE1/AN6/CK2SPP
RE2/AN7/OESPP
10 R3
R10 18
VUSB RE3/MCLR/VPP
1
10k
10k PIC18F4550
R12
BC547BP JUMPER 100R
VCC R13
GND 100R
J1
1
2

R11 1
VCC
3
100R D+
2
D-
4
GND
USBCONN

GND
13

CIRCUIT DIAGRAM DESCRIPTION

The microcontroller used in this project Automated Guided


Vehicle is microchip PIC18f4550(40PIN DIP). It is powerful yet easy-to-program. It
has an operating frequency of DC-48 MHz. It has a 32K memory program.

The data memory is about 2Kbytes. There are 5 ports


in this microcontroller, Ports A, B,C,D and E. The PIC18f4550 features 10-bit, up to 13-
channel Analog-to-Digital Converter module (A/D) with Programmable Acquisition
Time with 4 timers, 2 capture/compare/PWM functions Capture is 16-bit, max.
resolution 5.2 ns (TCY/16) - Compare is 16-bit, max. resolution 83.3 ns (TCY). The
device also have Enhanced Capture/Compare/PWM (ECCP) module. All of these
features make it ideal for more advanced level A/D applications in automotive,
industrial, appliances and consumer applications.

Another important feature of the device is the On-Chip USB


Transceiver with On-Chip Voltage Regulator, which makes the devise capable of full
speed usb2.0 communication (2Mb/s). 1-Kbyte Dual Access RAM is also dedicated for
USB which ensures bulk data transfer.

The circuit here described have 3 degrees of freedom and can be selected
by Mode Selection switches. The microcontroller checks the mode and then
analysing signal from corresponding sensors. It will automatically respond the
signals present at its input. The response is a pwm signal, sent to the IC L293D which
controls the speed and direction of the motor. Since differential drive mechanism is
used, the motors are capable of rotate independently, which makes it to turn even 90
degree easier.
14

 LIGHT FOLLOWING

When operate the Robot in Light Following mode the Robot will follow a
light beam. However, this time the user has to do some hands on work for
achieving this.

The Light follower makes use of Light Dependent Resister(LDR). For example, the
user can keep two LDR circuits for detecting light coming from front, right and left
sides. LDR has a property of varying its resistance according to the intensity of the
light falling on it. So if we connect the LDR circuit as shown in Figure to the power
supply, the output voltage (Vout) of the circuit will vary according to the amount of
light falling on the LDR.
REFERRENCE VOLTAGE
15

Vout must be connected to one of the analog input pins


of the microcontroller, say RB0. Hence, the voltage coming to pin RB0 will vary
according to light falling on the LDR. Now the microcontroller can control the motor,
upon comparing the Vout connected to RB0 with a constant threshold voltage (which
can be adjusted to detect the light to be followed) arriving on another analog pin, say
RB1. This way the user can assemble two circuits one for another LDR and one for its
threshold setting, which have to be connected to RB2 and RB3 respectively.
16

LDR Circuit Assembly


17

U1
2 15
RA0/AN0 RC0/T1OSO/T1CKI
3 16
RA1/AN1 RC1/T1OSI/CCP2/UOE
4 17
RA2/AN2/VREF-/CVREF RC2/CCP1/P1A
5 23
RA3/AN3/VREF+ RC4/D-/VM
6 24
RA4/T0CKI/C1OUT/RCV RC5/D+/VP
7 25
RA5/AN4/SS/LVDIN/C2OUT RC6/TX/CK
14 26
RA6/OSC2/CLKO RC7/RX/DT/SDO
13
OSC1/CLKI
33 19
RB0/AN12/INT0/FLT0/SDI/SDA RD0/SPP0
34 20
RB1/AN10/INT1/SCK/SCL RD1/SPP1
35 21
RB2/AN8/INT2/VMO RD2/SPP2
36 22
RB3/AN9/CCP2/VPO RD3/SPP3
37 27
RB4/AN11/KBI0/CSSPP RD4/SPP4
38 28
RB5/KBI1/PGM RD5/SPP5/P1B
39 29
VCC RB6/KBI2/PGC RD6/SPP6/P1C
40 30
RB7/KBI3/PGD RD7/SPP7/P1D
8
RE0/AN5/CK1SPP
9
RE1/AN6/CK2SPP
10
RE2/AN7/OESPP
18 1
VUSB RE3/MCLR/VPP
PIC18F4550

RV1 RV2
RES-VAR RES-VAR
R1 R2
150k 150k
GND

LDR1 LDR2
1.0

1.0

LDR LDR

 WALL FOLLOWING

In Wall following mode, the Robot will move along the length of a wall. Before we
can use Robot as a wall follower, the sensors range should be set as described in
the program. The wall following mode works using two IR sensors. One of the
sensors is pointed towards the wall so that when it detects the wall it moves away
from it and when it does not detect the wall, it moves towards it. The other sensor
faces towards the front and is used to avoid obstacles while performing wall
following. This sensor also helps in navigating 90-degree bends in the wall. Hence,
the robot moves parallel to the wall maintaining a constant distance from it.

START
A
18

NO YES
If Sensor pointing towards
Wall detects Wall
B

Turn away

If Sensor pointing towards YES


Wall detects no Wall

Move towards B
NO The wall

YES
If Sensor pointing front
Doesn’t detect obstacle

Do nothing
NO

If Sensor pointing YES


front detects obstacle

Turn sharply
NO

 PIT AVOIDANCE
19

Here we make use of the two IR sensors kept under the chassis. The IR
emitter present in the sensor module keep on emitting 38KHz modulated IR signal,
so long as the reflected beam, from the surface where the Robot is travelling, falls
on the IR detector the Robot continues its motion. Whenever a pit comes on its way,
the emitted IR rays never are reflected back to the IR detector. Then the IR detector
output changes and microcontroller gives the control signal to the motor according
to this.
20

PCB FABRICATION

Nowadays the Printed Circuit Board here after mentioned as PCBs makes
the electronic circuit manufacturing as easy one. In olden days vast area was
required to implement a small circuit to connect the leads of the components and
separate connectors were needed. But PCBs connects the two by copper coated
lines. In the single sided PCBs the copper layer is on both sides. Some cases middle
layer is also possible than the two sides.

In our project we have done the PCB design with the help of OR-CAD
software. The different steps in the PCB design and how the same was done by us
are explained below.

BOARD TYPES

The most popular board types are:

1. Single-sided boards: They are mainly used in entertainment electronics


where manufacturing costs have to be kept minimized.

2. Double-sided boards: Double sided PCBs can be with or without plated


through holes. The product of boards with plated through holes is fairly
expensive.
21

MANUFACTURING PROCESS

The different steps involved in the design and fabrication of PCB are
explained below. We, observing the necessary precaution during the entire
fabrication period have been carefully followed these steps.

LAYOUT APPROACHES

The first rule is to prepare each and every PCB layout as viewed from the
component side. Another important rule is not to start the designing of a layout
unless an absolutely clear circuit diagram is available, if necessary with
components list. Among the components the larger ones are placed first and the
space between is filled with smaller ones. Components requiring input/output
connections come near the connectors. All components are placed in such a manner
that de-soldering of other components is not necessary if they have to be replaced.

The layout for our circuit was obtained with the help of OR-CAD
software. For this, as the first step we drew our circuit with the help of the software
obtaining the required components from the library files. These components have
been properly placed avoiding a large number of interconnections and crossovers.
To develop the layout at first the schematic of the circuit is done which is then
converted into a single layered board design to obtain the layout.

BOARD CLEANING

The cleaning of the copper surface prior to resist applications is an


essential step for any types of PCB process using etch or plating resist. Insufficient
cleaning is one of the reasons most often encountered for difficulties in PCB
22

fabrication although it might not always be recognized as this. But it is quite often
the reasons of poor resist adhesion, uneven photo-resist films, pinholes, poor
plating adhesion etc.

The cleaning of the board was done with just a sink with running water,
pumice powder, scrubbing brushes and suitable tanks.

SCREEN PRINTING

The screen-printing process is very simple. For this reason fabric with
uniform meshes and opening is stretched and fixed on a solid frame of metal or
wood. The circuit pattern is then photographically transferred onto the screen,
leaving the meshes in the pattern open, while the meshes in the rest of the area are
closed. In the actual printing step, ink is forced by moving squeegee through the
open meshes onto the surface of the material to be printed.

PLATING

The plating was done expecting the circuit board to retain its solder
ability for long periods of several months so that reliable solder joints can be
produced during assembly. Plating of a metal can be accomplished on a copper
pattern by three methods. They are:

1. Immersion plating.

2. Electrolysis plating.

3. Electroplating.

We have gone for electroplating method.


23

ETCHING

This was done manually by immersing the board into a solution of ferric
chloride and hydrochloric acid and finally cleaning the board y soap. The copper
pattern was formed by selective removal of all unwanted copper which is not
protected by an etch resist. Factors like under etching and overhang which
complicate the matter especially in the production of fine and highly precise PCBs
have been carefully dealt with. This can also be done using a spray type etching
machine.

DRILLING

Drilling was done by mechanical machining operation in PCB production


processes. Holes were made by drilling wherever a superior hole finish for plated
through hole processes is required and where the tooling costs for a punching tool
cannot be justified. Therefore drilling is applied by all the professional grade PCB
manufacturers and generally in smaller PCB production laboratories.

COMPONENT PLACING

In the circuit, components having considerably more connecting points


than the others have been placed first and remaining ones were grouped around
them. This will result in a minimum overall conductor length. This was done aiming
to get shortest possible interconnections. The bending of the axial component leads
was done to guarantee an optimum retention of the component of the PCB while a
minimum of stress is introduced on the solder joint. Horizontally mounted resistors
have to touch the board surface to avoid lifting of solder joints along with the
copper pattern under pressure on the resistor body. Vertically mounted resistors
24

should not be flush to the board surface to avoid strain on the solder joints as well
as on the component lead junction due to different thermal expansion coefficients
of lead and board materials, where necessary resilient spaces have to be provided.

SOLDERING

Soldering is a process for the joining of metal parts with the aid of a
molten metal (solder),where the melting temperature is suited below that of the
material joined and whereby the surface of the parts are wetted, without then
becoming molten.

Soldering generally implies that the process occurs at temperature


below 450 degree centigrade. Solder wets and alloys with the base metals and get
drawn, by capillary action into the gap between them. This process forms a
metallurgical bond between the parts of the joint. Soldering was done by placing
the components at the right position, wetting these surfaces with molten solder and
allowing the solder to cool down until it has been solidified. During this soldering
operation, an auxiliary medium, flux, was used to increase the flow properties of
molten solder and to improve the degree of wetting. Following characteristics are
required in the flux:

 It should provide a liquid cover over the materials and exclusive air up to
the soldering temperature.

 It should dissolve any oxide on the metal surface or on the solder and
carry such unwanted elements away.

 It should be readily displaced from the metal by the molten soldering


operation.
 Residues should be removable after completion of the soldering.
25

Generally applied soldering methods are iron soldering, torch soldering,


electrical soldering, furnace soldering etc. of which we have gone for iron soldering.
Components are mounted on only one side of the board. In double sided PCBs, the
component side is usually opposite to the major conductor pattern side, unless
otherwise dictated by special design requirements.

The performance and reliability of solder joints give best result covered
with solder and herewith contributing to the actual solder connections. However,
lead cutting after soldering is still common in particular in smaller industries where
hand soldering is used.

With the soldered PCB, many contaminants can be found which may
produce difficulties with the functioning of the circuit. The problems usually arise
at a much later than during the final functioning testing of the board in the factory.
Among the contaminants, we can typically find flux, chips of plastics, metals and
other constructional materials, plating salts, oil greases, environmental soils and
other processing materials.

At the end, a cleaning procedure with an appropriate cleaning medium


was done. The following performances are expected from the cleaning procedure:

 Dissolution or dissolving of organic liquids and solids, e.g., oils, greases,


resin, flux.
 Removal of plating salts and silicone oils.
 Displacing of particulate and other insoluble matters, e.g., chips, dust and
lint.

IMPLEMENTATION CIRCUITS AND LAYOUTS


26

We have decided to implement the project as two units; one with PIC
microcontroller and its circuits and another with LCD and its circuits. The two units
are connected using connecting cables. This gives more flexibility in the
arrangement of project because of two separate units rather than a single unit.
Consider the case of using it in a motorcycle. By using two boards we can place LCD
at a suitable position to display speed while the microcontroller can be made
hidden from the view. Four 5 V power outputs are also given

Another important advantage of using two separate units is that we can


ensure the possibility of expansion of the project in future. By providing pins for all
the ports in PIC, the whole project can be taken to a next level by additional circuits
and suitable software modification.

CIRCUIT BOARD
27

VCC

C5
+12V U2 VCC
7805 ON OFF SWITCH VCC _SENSORS
R6 0.1uF 4
1 3 3
VI VO
2
150R GND
GND

1
POWER R1
2 1k CONN-SIL4
C3 C4
2

1
220u 0.1Uf D2 D3 GND_SENSORS
CONN-SIL2 1N4148 LED R14
D1 4
LED 3
10R
2
1
VCC
CONN-SIL4

RP1 GND
R15 J2
GND
1 1
2
150R
2
+12V
3 16 1 CONN-SIL2
4 15 2
VCC
5 14 3
6 13 4
7 12 5 16 8 U3 GND
8 11 6 R5 1
150R
9 10 7 R8 2 3 2
IN1 VSS VS OUT1 MOTOR 1
9 8 R9 7
IN2 OUT2
6 3
RESPACK-8 10k 1
150R EN1
SW -DIP8 CONN-SIL3

SW1 U1 9
GND EN2
4 2 15 R4 10 11 1
SENSOR I/P 3 3
RA0/AN0 RC0/T1OSO/T1CKI
16 15
IN3 OUT3
14 2
2 4
RA1/AN1 RC1/T1OSI/CCP2/UOE
17
IN4 GND GND OUT4
3 MOTOR 2
C1 1 5
RA2/AN2/VREF-/CVREF RC2/CCP1/P1A
23
150R
RA3/AN3/VREF+ RC4/D-/VM
6 24 L293D CONN-SIL3
RA4/T0CKI/C1OUT/RCV RC5/D+/VP
CONN-SIL4 7 25
RA5/AN4/SS/LVDIN/C2OUT RC6/TX/CK GND
22pF 14 26
RA6/OSC2/CLKO RC7/RX/DT/SDO
X1 13
OSC1/CLKI
C2 CRYSTAL R7
33 19
RB0/AN12/INT0/FLT0/SDI/SDA RD0/SPP0 GND
34 20
RB1/AN10/INT1/SCK/SCL RD1/SPP1 150R
35 21
GND RB2/AN8/INT2/VMO RD2/SPP2
22pF 36 22
VCC RB3/AN9/CCP2/VPO RD3/SPP3
37 27
RB4/AN11/KBI0/CSSPP RD4/SPP4
38 28
RB5/KBI1/PGM RD5/SPP5/P1B
BUZ1 39
RB6/KBI2/PGC RD6/SPP6/P1C
29
40
RB7/KBI3/PGD RD7/SPP7/P1D
30 R2
GND 10k GND
8
Q1 RE0/AN5/CK1SPP
9
BUZZER RE1/AN6/CK2SPP
RE2/AN7/OESPP
10 R3
R10 18
VUSB RE3/MCLR/VPP
1
10k
10k PIC18F4550
R12
BC547BP JUMPER 100R
VCC R13
GND 100R
J1
1
2

R11 1
VCC
3
100R D+
2
D-
4
GND
USBCONN

GND

PCB LAYOUT
28

COMPONENT LAYOUT
29

COST ESTIMATE

NO MATERIAL SPECIFICATION PRICE/UNIT COST

1 PIC 18F4550 8BIT,40PIN,32K FLASH,2K EPROM 250.00 250.00

2 PCB+SCREENING GLASS EPOXY 180+200 380.00

3 L293D 16PIN,4CHANNEL,600MA/CH 63.00 63.00

4 IR TRANSCEIVER 2.5METER RANGE 80 320.00

5 MOTOR DC GEAR MOTOR,500 RPM 140.00 280.00

6 METEL BODY ALUMINUM 115.00 115.00

7 WHEELS NYLONE WHEEL 40.00 80.00

8 CASTER WHEEL MEDIUM 40.00 40.00

9 CONNECTOR BERG 8 40.00

10 SWITCH 4 PIN MICRO 2 10.00

11 REGULATOR IC 7805 BELL 7.00 14.00

12 CRYSTAL 20 MHZ 6.00 12.00


RESISTORS, CAPACITORS,
CONNECTORS(RMC), LED'S, DIODES,
13 MISCELLANEOUS SWITCHES, etc 260 260
30

TOTAL COST 1864.00

SOFTWARE SECTION

The compiler used in the project is MPLAB C-18 Tool kit. MPLAB
Integrated Development Environment (IDE) is a free, integrated toolset for the
development of embedded applications employing Microchip's PIC® and dsPIC®
microcontrollers. To create any project we have to create a corresponding
workspace. A workspace links up all the associated files required for creating and
debugging a project that has embedded software aspects. One can create assembly
language programs for Microchip's PIC® and dsPIC® microcontrollers using
MPLAB. To create C programs for the same task one has to use the C-18 tool suite
along with MPLAB.
31

HEADER FILE

#ifndef __robot_H //custom header file creation


#define __robot_H

//-------------------------------------------------------
#include <adc.h> //header files required
#include <stdio.h>
#include <stdlib.h>
#include <p18f4550.h>
#include <delays.h>
#include <pwm.h>
#include <i2c.h>
#include <math.h>
#include <xlcd.h>
//--------------------------------------------------------
#pragma udata //code required for bootloading
extern void _startup (void);
#pragma code _RESET_INTERRUPT_VECTOR = 0x000800
void _reset (void)
{
_asm goto _startup _endasm
}
#pragma code
#pragma code _HIGH_INTERRUPT_VECTOR = 0x000808
void _high_ISR (void)
{
;
}
#pragma code _LOW_INTERRUPT_VECTOR = 0x000818
void _low_ISR (void)
{
}
#pragma code

//-------------------------------------------------------
32

//constant defenitions
#define l0 PORTAbits.RA0
#define l1 PORTAbits.RA1
#define l2 PORTAbits.RA2
#define mode (PORTA&0b00000111)
#define ws 0
#define bs 1
#define ob 0
#define nob 1
#define cw 0
#define aw 1
#define pit 1
#define nopit 0
#define wall 0
#define nowall 1
#define light 1
#define nolight 0
#define rightlsensor PORTAbits.RA5
#define leftlsensor PORTEbits.RE0
#define rightosensor PORTEbits.RE1
#define leftosensor PORTEbits.RE2
#define buzzer PORTAbits.RA3
#define bld PORTBbits.RB4
#define motorra PORTCbits.RC1
#define motorrb PORTDbits.RD0
#define motorla PORTCbits.RC2
#define motorlb PORTCbits.RC0
#define motor_r_fwd PORTCbits.RC1=1;PORTDbits.RD0=0
#define motor_r_bwd PORTCbits.RC1=0;PORTDbits.RD0=1
#define motor_l_fwd PORTCbits.RC2=1;PORTCbits.RC0=0
#define motor_l_bwd PORTCbits.RC2=0;PORTCbits.RC0=1
#define motor_r_stp PORTCbits.RC1=0;PORTDbits.RD0=0
#define motor_l_stp PORTCbits.RC2=0;PORTCbits.RC0=0
#define allanalog OpenADC(ADC_FOSC_2 & ADC_12_TAD, ADC_CH4 & ADC_REF_VDD_VSS & ADC_INT_OFF,
ADC_13ANA);
#define allipdigital OpenADC(ADC_FOSC_2 & ADC_12_TAD, ADC_CH4 & ADC_REF_VDD_VSS & ADC_INT_OFF,
ADC_0ANA);
int rightldr,leftldr,rightthreshold,leftthreshold; //variables required for working of light follower
void initialize( void)
33

{
T2CON=0b00000110;
PR2=0b11111111;
CCPR1L = 0b00110011 ;
CCP1CON = 0b00111100 ;
CCPR2L = 0b00110011 ;
CCP2CON = 0b00111100 ;
OpenADC(ADC_FOSC_2 & ADC_12_TAD, ADC_CH4 & ADC_REF_VDD_VSS & ADC_INT_OFF, ADC_0ANA);
}
void speedirr(int r,int dir) //function for speed and direction control of right motor
{
if(dir==cw)
{
SetDCPWM1(r);
PORTCbits.RC0=0;
}
if(dir==aw)
{
SetDCPWM1(1023-r);
PORTCbits.RC0=1;
}
}
void speedirl(int l,int dir) //function for speed and direction control of left motor
{
if(dir==cw)
{
SetDCPWM2(l);
PORTDbits.RD0=0;
}
if(dir==aw)
{
SetDCPWM2(1023-l);
PORTDbits.RD0=1;
}
}
void acquire_ldr_digital_values() //values acquiring digital for functioning as light follower
{
allanalog;
Delay10TCYx( 5 ); //to get right ldr vaue
34

ConvertADC();
while( BusyADC() );
rightldr=ReadADC();
SetChanADC(ADC_CH8); //to change analog channel
Delay10TCYx( 5 ); //to get left ldr value
ConvertADC();
while( BusyADC() );
leftldr=ReadADC();
SetChanADC(ADC_CH12); //to change analog channel
Delay10TCYx( 5 ); //to get right potentiometer value
ConvertADC();
while( BusyADC() );
rightthreshold=ReadADC();
SetChanADC(ADC_CH9);
Delay10TCYx( 5 );
ConvertADC();
while( BusyADC() );
leftthreshold=ReadADC(); //to get left potentiometer value
SetChanADC(ADC_CH10); //to change analog channel
if(rightldr<rightthreshold)
rightldr=1; //compare ldr value with corresponding potentiometer
else
rightldr=0;
if(leftldr<leftthreshold)
leftldr=1;
else
leftldr=0;
allipdigital;
}
int convert2digital(int l)
{
switch (l)
{
case 0:SetChanADC(ADC_CH0);
break;
case 1:SetChanADC(ADC_CH1);
break;
case 2:SetChanADC(ADC_CH2);
break;
35

case 3:SetChanADC(ADC_CH3);
break;
case 4:SetChanADC(ADC_CH4);
break;
case 5:SetChanADC(ADC_CH5);
break;
case 6:SetChanADC(ADC_CH6);
break;
case 7:SetChanADC(ADC_CH7);
break;
case 8:SetChanADC(ADC_CH8);
break;
case 9:SetChanADC(ADC_CH9);
break;
case 10:SetChanADC(ADC_CH10);
break;
case 11:SetChanADC(ADC_CH11);
break;
case 12:SetChanADC(ADC_CH12);
break;
}

//to set analog channel


Delay10TCYx( 5 ); //delay to charge ADC's internal capacitor
ConvertADC(); //conversion
while( BusyADC() ); //check if conversion is over
return(ReadADC()); //return the 10 bit digital value
}
#endif

MAIN PROGRAMS
 LIGHT FOLLOWING

// Code for light following


//---------------------------------------------------------------------
// header file for robot
#include<robot.h>
void main(void)
{
// setting PORTA as inputs except PA3
36

TRISA=0b11110111;
// setting PORTB as outputs
TRISB=0b00000000;
// setting PORTD as outputs
TRISC=0b00000000;
// setting PORTC as outputs
// setting PORTD as outputs
TRISD=0b00000000;
// setting PORTE as outputs
TRISE=0b11111111;
// making the buzzer off
buzzer =0;
// initializing adc,pwm modules and making all pins digital
initialize();
// loop to perform light follower
while(1)
{
/*compare the ldr values with threshold setting potentiometers to generate
digital output*/

acquire_ldr_digital_values() ;
// if light is detected in front of the bot then move forward
if(rightldr==light && leftldr==light)
{
speedirr(512,cw);
speedirl(512,cw);
}
// if light is detected on the left of the bot
if(rightldr==nolight && leftldr==light)
// then turn to the left to follow the light
{
speedirr(512,cw);
speedirl(512,aw);
}
// if light is detected on the right of the bot
if(rightldr==light && leftldr==nolight)
// then turn to the right
{
speedirr(512,aw);
speedirl(512,cw);

}
// if no light is detected in the vicinity of the bot
// then keep turning till light is detected in the bots vicinity
if(rightldr==nolight && leftldr==nolight)
{
speedirl(512,cw);
speedirr(512,aw);
}
}
}
}

 WALL FOLLOWING

// Code for left wall following


//---------------------------------------------------------------------
37

// header file for AGV


#include<robot.h>
void main(void)
{
// Setting PORTA as inputs except PA3 Setting
TRISA=0b11110111;
// PORTB as outputs
TRISB=0b00000000;
// Setting PORTC as outputs
TRISC=0b00000000;
// Setting PORTD as outputs
TRISD=0b00000000;
// Setting PORTE as outputs
TRISE=0b11111111;
// Making the buzzer off
buzzer =0;
/* Initializing adc, pwm modules and setting PA0,PA1,PA2
AND PA3 pins as analog*/
initialize();
// loop to perform wall following with wall on left
while(1)
{
/* Note :keep the left sensor facing to the left and right sensor facing the
front*/
// if the only left sensor detects no wall
if(leftosensor==nowall )
{
// Then move towards wall
speedirr(512,cw);
speedirl(211,cw);
}
// if the right sensor detects a wall
while( rightosensor==wall )
{
/* Then turn sharply towards the right to avoid the 90 degree bend in the
wall*/
speedirr(512,aw);
speedirl(512,cw);
}
// if the bot drifts towards the wall
if(leftosensor==wall )
{
// then turn away from the wall
speedirr(211,cw);
speedirl(512,cw);
}
}
}

// Code for right wall following


//---------------------------------------------------------------------
// header file for AGV
#include<robot.h>
void main(void)
{
// Setting PORTA as inputs except PA3
TRISA=0b11110111;
// Setting PORTB as outputs
TRISB=0b00000000;
38

// Setting PORTC as outputs


TRISC=0b00000000;
// Setting PORTD as outputs
TRISD=0b00000000;
// Setting PORTE as outputs
TRISE=0b11111111;
// Making the buzzer off
buzzer =0;
/* initializing adc, pwm modules and setting PA0,PA1,PA2
AND PA3 pins as analog*/
initialize();
// loop to perform wall following with wall on right
while(1)
{
/* Note: please keep the right sensor facing the right and left sensor facing
the front */

// if the right sensor detects no wall


if(rightosensor==nowall )
{
// then move towards the wall
speedirr(211,cw);
speedirl(512,cw);
}
// if the left sensor detects a wall
while(leftosensor==wall )
{
/* then turn sharply towards the left to avoid the 90 degree bend in the wall
*/
speedirr(512,cw);
speedirl(512,aw);
}
// if the bot drifts towards the wall
if(rightosensor==wall )
{
// then turn away from the wall
speedirr(512,cw);
speedirl(211,cw);
}
}
}

 PIT AVOIDANCE

// Code for pit avoidance


//---------------------------------------------------------------------
#include<robot.h>
// header file for AGV
void main(void)
{
// setting PORTA as inputs except PA3
TRISA=0b11110111;
// setting PORTB as outputs
TRISB=0b00000000;
// setting PORTC as outputs
TRISC=0b00000000;
39

// setting PORTD as outputs


TRISD=0b00000000;
// setting PORTE as outputs
TRISE=0b11111111;
// making the buzzer off
buzzer= 0;
// initializing adc, pwm modules and setting PA0,PA1,PA2
// AND PA3 pins as analog
initialize();
// loop to perform pit avoidance using 2 sensors
while(1)
{
// if no pit is detected by 2 sensors
if(rightlsensor==nopit && leftlsensor==nopit)
// then move forward
{
speedirr(512,cw);
speedirl(512,cw);
}
/* if the bot has detected a pit on the left then move back and turn to the
right*/
if(rightlsensor==pit && leftlsensor==nopit)
{
speedirr(200,aw);
speedirl(1000,aw);
Delay10KTCYx(700); //delay 700,000 clock cycles
Delay10KTCYx(700);
Delay10KTCYx(700); //delay 700,000 clock cycles
speedirr(512,cw);
speedirl(512,aw);
}
/* if the bot has detected a pit on the right then move back and turn to the
left */
if(rightlsensor == nopit && leftlsensor == pit)
{
speedirr(700,aw);
speedirl(512,aw);
Delay10KTCYx(700); //delay 700,000 clock cycles
Delay10KTCYx(700); //delay 700,000 clock cycles
Delay10KTCYx(700); //delay 700,000 clock cycles
speedirr(512,aw);
speedirl(512,cw);
}
// if the bot has encountered a pit in front of the robot
if(rightlsensor==pit && leftlsensor==pit)
{
// then move back takin a small turn
speedirr(400,aw);
speedirl(1000,aw);
Delay10KTCYx(700); //delay 700,000 clock cycles
Delay10KTCYx(700); //delay 700,000 clock cycles
}
}
}
40

APPLICATIONS

Automated Guided Vehicles can be used in a wide variety of applications to transport


many different types of material including pallets, rolls, racks, carts, and containers.
AGVs excel in applications with the following characteristics:

 Repetitive movement of materials over a distance


 Regular delivery of stable loads
 Medium throughput/volume
 When on-time delivery is critical and late deliveries are causing inefficiency
 Operations with at least two shifts
 Processes where tracking material is important
41
42

ADVANTAGES
-Reduce Manpower
- Increase Productivity
- Eliminate Unnecessary Fork Lift Trucks
- Reduce Product Damage
- Maintain Better Control of Material Management

An Automated Guided Vehicle System (AGVS) can be an integral part of a


conventional warehouse characterized by long distances and "same path"
movement. It offers an alternative to fixed-path conveyors and overhead materials
handling equipment for this type of facility.

A wide range of vehicles move pallet loads of materials and perform various
functions such as lift-lowering, towing carts, transferring loads to and from high
level pallet racks, and precision placement of loads in pickup and delivery stations.
Loads of varying weights (including several thousand pounds each) can be handled.

AGVS Systems are now controlled by flexible, on-board microcomputers. Intelligent


terminals and radio frequency controls are incorporated into the system to track
and direct vehicles.

Vehicles can move both forward and backward at various programmed speeds.
Following a guide wire in the floor, some vehicles can even execute commands off-
the-wire or "free range" when required. Sensors mounted throughout the guide
path control can direct vehicles in motion. AGVS is frequently utilized in receiving
materials into the warehouse and transferring pallet loads from receiving dock
areas to pallet rack areas for put away.

Warehouse areas are best served by an AGVS in two ways. First, when pallet loads
are removed from warehouse storage racks, loads are transported to shipping or
other warehouse areas. Second, an AGVS can be used to pick up loads from the
warehouse and deliver them to work in process areas or to redistribute loads to
other manufacturing functions.

Safety sensors and devices are installed on the vehicles to "warn" the vehicle of
objects and people. Bumpers and stopping devices, warning horns, lights and other
audible sounds can also be provided.

LIMITATIONS
43

-Installation cost is very high


-AGV’s are fragile and should be handled with care.
-Regular care, inspection and maintenance are required.
44

CONCLUSION

All the required components for the project Automated


Guided Vehicle(AGV) have been checked and soldered on a PCB that is prepared
by the procedures mentioned above. The soldering is done as per the PCB layout
and components lay out. The circuit is working well and the motors are run as per
the programmed speed. The robot is fully functional with the loaded programmes.
45

REFERENCE
TEXT BOOKS
 
CAD /CAM : PN RAO
 
AUTOMATION AND COMPUTER INTEGRATED MANUFACTURING :MIKELL
P GROOVER 
 
COMPUTER INTEGRATED MANUFACTURING, J. A. REHG &HENRY. W.
KRAEBBER.
 
CAD/CAM BY ZEID, TATA MCGRAW HILL

WEBSITES

 
 WWW.JBL CORPORATION.COM

 
 WWW.BOSCH INDIA.LOGISTIC.COM

 
 WWW.ROBOTICSYSTEMSLTD.INDIA

 
 WWW.WIKIPEDIA.COM
 
 WWW. HOW STUFFWORK.COM
 
 WWW.SCRIBD.COM
46

DATA SHEETS

You might also like