A PROJECT REPORT By Neetu Bansal Sakshi Arora Salil Shiva MSc II (PHYSICS&ELECTRONICS) Department of Physics Panjab University Chandigarh

MAY 2010

Under the supervision of

Dr. Navdeep Goyal


It is not until you undertake a project like this one that you realize how massive the effort it really is or how much you must rely upon the selfless efforts and goodwill of others. There are many who helped us in this project and I want to thank them all. We owe a special word of thanks to Dr. NAVDEEP GOYAL (OUR PROJECT GUIDE) for their vision, thoughtful counselling and encouragement at every step of project. We cannot forget to mention the moral support which all the teachers in the electronics branch provided to us. Lastly, but not the least we find no words to acknowledge the financial assistance and moral support rendered by our parents in making this effort a success. All this has become a reality because of their blessings and above all by the grace of God.

Neetu Bansal Sakshi Arora Salil Shiva


The present study aims at developing a LINE FOLLOWER ROBOT or a LINE TRACING ROBOT which is programmed using microcontroller AT89C51. This Robot follows the black line which is drawn over the white surface or it follows the white line which is drawn over the black surface. The infrared sensors are used to sense the line. When the infrared signal falls on the white surface, it gets reflected and if it falls on the black surface, it is not reflected. This principle is used to scan the Lines for the Robot. All the above systems are controlled by the Microcontroller. In our project we are using the popular 8 bit microcontroller AT89C51. It is a 40 pin microcontroller. The Microcontroller AT89C51 is used to control the motors. It gets the signals from the infrared sensors and it drives the motors according to the sensor inputs. Two DC geared motors are used to drive the robot in forward, left or right direction.


  



   




   


A virtual or a mechanical artificial agent. In practice, it is usually an electro-mechanical machine which is guided by computer or electronic programming, and is thus able to do tasks on its own. The guiding force behind the robot is an Embedded System. At the core of every Embedded System there is either a microprocessor or a microcontroller or any other programmable intelligent unit. Basically a robot consists of:  A mechanical device, such as a wheeled platform, arm, or other construction, capable of interacting with its environment  Sensors on or around the device that are able to sense the environment and give useful feedback to the device  Systems that process sensory input in the context of the device's current situation and instruct the device to perform actions in response to the situation.

A sensor is a device that measures a physical quantity and converts it into a signal which can be read by an observer and by an instrument. A transducer is a device that converts one type of energy to other. The conversion can be from electrical, electromechanical, electromagnetic, photonic or any other form of energy. Robots react according to a basic temporal measurement, requiring different kinds of sensors. The term transducer is often used interchangeably with sensors. A Transducer is the mechanism of the sensor that transforms the energy associated with what is being measured into another form of energy. A sensor receives energy and transmits a signal to display or computer. Sensors use transducers to change the input signal (sound, light, pressure, temperature etc,) into an analog or digital form capable of being used by a robot.

Proximity sensors: A proximity sensor measures the relative distance between sensor and objects in the

Infrared (IR) sensors: Another type of active proximity sensor is IR sensor. It emits near infrared energy and
measures whether any significant amount of IR light is returned. Infrared radiation is part of the electromagnetic spectrum, which includes radiowaves, microwaves, visible light, and ultraviolet light, as well as gamma rays and Xrays. The IR range falls between the visible portion of the spectrum and the radio waves. IR wavelengths are usually expressed in microns, with IR spectrum extending from 0.7 to 1000 microns. Because every object (except black body) emits an optimum amount of IR energy at a specific point along IR band, the emitted energy comes from an object and reaches the IR sensor through its optical system, which focuses the energy onto one or more photosensitive detectors. The detector then converts the IR energy into an electrical signal.

This project aims at developing a LINE FOLLOWER ROBOT or a LINE TRACING ROBOT which is programmed using microcontroller AT89C51. The microcontroller has been used to program the ROBOT to turn in a direction followed by line.

Line Following Robot (using AT89C51)
This Project, Line Following Autonomous Robot is based on 8 bit Microcontroller AT89C51. This Robot follows the black line which is drawn over the white surface or it follows the white line which is drawn over the black surface. The infrared sensors are used to sense the line. When the infrared signal falls on the white surface, it gets reflected and if it falls on the black surface, it is not reflected. This principle is used to scan the Lines for the Robot. All the above systems are controlled by the Microcontroller. In our project we are using the popular 8 bit microcontroller AT89C51. It is a 40 pin microcontroller. The Microcontroller AT89C51 is used to control the motors. It gets the signals from the infrared sensors and it drives the motors according to the sensor inputs. Two DC geared motors are used to drive the robot in forward, left or right direction.


1. Chassis 2. Wheels 3. Battery 4. Power supply 5. Electronic circuitry 6. Motor

The main frame of the robot, the body which holds the motor, wheels and the batteries. We need to take care of the weight of the robot. In a robot with limited power supply (i.e. battery) the power to weight ratio has to be kept maximum. This can be done by limiting the weight of the chassis. Chassis can be made out of: 1. 2. 3. Wood (using right angles to attach motors, drilling and attaching the front wheel is easy) Plastic (not easily available, but if found makes a very light chassis). Metal (Most common chassis available, not recommended because the motors can get misaligned very easily resulting in poor turning). 4. 5. Duct tape (alone can be used to attach the motors to each other, makes a fairly sturdy yet light chassis) Plastic Pipes.

Differential drive is a method of controlling a robot with only two motorized wheels. Motors can be used to drive a car using differential turning mechanism. The term 'differential' means that robot turning speed is determined by the speed difference between both wheels, each on either side of your robot. For example: keep the left wheel still and rotate the right wheel forward and the robot will turn left.

Wheels are mainly of two types in this basic car, one is the type attached to the motors at the back, which are used for steering, and another castor wheel in front, which allows 360 degrees free rotation and avoids friction on the ground. The wheels can be put on the shafts either by using screws or by wrapping the shaft with masking tape first.

Used for supplying power to a robot, rechargeable batteries are usually the best ones. A standard 300-500 RPM motor runs well between 9 to 12 volts, and alkaline batteries, lithium ion, nickel cadmium or Zinc carbon batteries can be used. The appropriate series parallel combination can be used to provide more power than a standard battery can provide.


The voltage regulator regulates the supply if the line voltage increases or decreases. The series 78xx regulators provide fixed regulated voltages from 5 to 24 volts. An unregulated input voltage is applied at the IC Input pin i.e. pin 1 which is filtered by capacitor. The out terminal of the IC i.e. pin 3 provides a regular output. The third terminal is connected to ground. While the input voltage may vary over some permissible voltage range, and the output voltage remains constant within specified voltage variation limit. The 78xx IC‟s are positive voltage regulators whereas 79xx IC‟s are negative voltage regulators.

These voltage regulators are integrated circuits designed as fixed voltage regulators for a wide variety of applications. These regulators employ current limiting, thermal shutdown and safe area compensation. With adequate heat sinking they can deliver output currents in excess of 1 A. These regulators have internal thermal overload protection. It uses output transistor safe area compensation and the output voltage offered is in 2% and 4% tolerance. In our circuit, we are using 7809 and a 7805 voltage regulator. We obtain 9 V regulated DC voltage. It is further fed to 7805 to obtain 5 V regulated DC voltage. 9V DC is fed to L293 to drive the motors. 5V DC is fed to the VCC pin of receiver circuit, OP-AMP (LM324), Emitter circuit, microcontroller and L293. We can provide input to 7809 using a 9-12 V battery.

Below is the circuit diagram of POWER SUPPLY:

It consists of three parts:  Input Section: Provides interface of sensors with the microcontroller.  Output Section: Provides interface of microcontroller with the motors.  Control Section: Provides the programming and control using the microcontroller. These are discussed in detail next.

Object Detection using IR light:
The basic idea is to send infra red light through IR-LEDs, which is then reflected by any object in front of the sensor. We use an IR emitter LED which emits infrared radiations. The radiations are reflected by any object or obstacle in its path. IR has a property that it is reflected by the white line and absorbed by the black surface. Using this principle we construct a white line follower robot. A white line is drawn on a black surface. The emitted IR is thus reflected back when sensor comes over a white surface; however no IR is reflected back in case of black surface. The reflected IR is detected by an IR receiver photodiode. This is an electrical property of receiver photodiode which is the fact that a photodiode produce a voltage difference across its leads when it is subjected to light. When the IR is reflected by white surface the voltage drop across the cathode of the receiver LED decreases. We are going to use a very original technique: we are going to use another IR-LED, to detect the IR light that was emitted from another LED of the exact same type! As if it was a photo-cell, but with much lower output current. In other words, the voltage generated by the LED's can't be - in any way - used to generate electrical power from light, it can barely be detected. That‟s why as you will notice in the schematic, we are going to use an Op-Amp (operational Amplifier) to accurately detect very small voltage changes.

The schematic has two sections:

1.The Emitter section: The emitter

is composed of an IR LED in series with a 330 Ohm resistor.

2. The Receiver Section: The receiver part consists of 2 resistors R1 and R2 forming a voltage divider which
provides 2.5V at the anode of the IR LED (act as a sensor). When IR light falls on the LED (D1), the voltage drop increases, the cathode's voltage of D1 may go as low as 1.7V depending upon the light intensity. This voltage drop can be detected using an OP-AMP (LM324). You will have to adjust the variable resistor (POT.) R3 so that the voltage at the positive input of the Op-Amp (pin No. 12) would be somewhere near 1.6 Volt. According to functioning of OPAMP the output will be high when voltage drop at cathode of D1 drops under 1.6V.So, when IR is detected output of the OP-AMP will be high.

The op-amp has 2 inputs, the positive input, and the negative input. If the positive input's voltage is higher than the negative input's voltage, the output goes High (5v, given the supply voltage in the schematic), otherwise, if the positive input's voltage is lower than the negative input's voltage, then the output of the Op-Amp goes to Low (0V). It doesn't matter how big the difference between the positive and negative inputs is, even a 0.0001 volts difference will be detected, and the output will swing to 0v or 5v according to which input has a higher voltage.

Op-Amplifier (LM324)
If the rays received by the IR- LED receiver are above a particular threshold then an amplified signal is generated by the amplifier (LM324). Note that the sensors cannot directly send a signal to the microcontroller as the signal voltage generated by them is too low and even when sensors are on white surface signal generated by them will interpreted low by the microcontroller.

A microcontroller is a single computer chip that executes a user program, normally for the purpose of controlling some device hence the name microcontroller. Its design includes all the features that are in a microcomputer on a chip CPU: ALU, PC, SP, and registers. It also contains some additional features that are required to make a complete computer: ROM, RAM, parallel I/O, serial I/O, counters and clock circuit. Difference between microcontroller and microprocessor: A microcontroller is differed from microprocessor in many ways. Basically microprocessors are the devices which can process huge amount of data. Microprocessors contain no ROM, no RAM, and no I/O ports on the chip itself. That is why these are called as general purpose microprocessors. We can add RAM ,ROM,I/O ports ,timers externally to make general purpose processor functional .although the addition of such things make it bulkier and much more expensive. But this is not the case with microcontroller. A microcontroller has a CPU in addition to the fixed amount of RAM, ROM, I/O ports, timers that are all embedded together on chip. Therefore, designer can‟t add I/O ports and timers externally. The fixed amount of on chip RAM, ROM, I/O ports make it ideal for many applications. EXTERNAL INTERRUPTS






4 I/O ports


Atmel AT89C51
4K Bytes of Reprogrammable Flash Memory Fully static operation: 0 HZ-24 MHZ 128×8-bit Internal RAM 32 Programmable I/O lines Two 16-bit Timer/counters Six Interrupt Sources Programmable serial channel Low-power Idle and Power-down Modes

The AT89c51 is a low –voltage, high performance CMOS 8-bit microcomputer with 4K bytes of Flash Programmable and erasable read-only Memory (PEROM).The device is manufactured using Atmel‟s high-density non-volatile memory technology and is compatible with the industry standard MCS-51 instruction set. The ON-Chip Flash allows the program memory to be reprogrammed in-system. By combining a versatile 8-bit CPU with Flash on monolithic chip, the Atmel AT89C51 is a powerful microcomputer which provides a highly-flexible and cost-effective resolution to many embedded control applications. The 89C51 have a total of 40 pins that are dedicated for various functions such as I/O, RD, WR, address and interrupts. Out of 40 pins, a total of 32 pins are set aside for the four ports P0, P1, P2, and P3, where each port takes 8 pins. The rest of the pins are designated as Vcc, GND, XTAL1, XTAL, RST, EA, and PSEN. All these pins except PSEN and ALE are used by all members of the 8051 and 8031 families. In other words, they must be connected in order for the system to work, regardless of whether the microcontroller is of the 8051 or the 8031 family. The other two pins, PSEN and ALE are used mainly in 8031 based systems.

Pin Configuration of 89C51:

ALE ALE (Address latch enable) is an output pin and is active high. When connecting a microcontroller to external memory, port 0 provides both address and data. In other words the microcontroller multiplexes address and data through port 0 to save pins. The ALE pin is used for de-multiplexing the address and data by connecting to the G pin of the 74LS373 chip. PSEN This is an output pin. PSEN stands for “program store enable.” It is the read strobe to external program memory. When the microcontroller is executing from external memory, PSEN is activated twice each machine cycle. EA All the 8051 family members come with on-chip ROM to store programs. In such cases, the EA pin is connected to the Vcc. For family members such as 8031 and 8032 in which there is no on-chip ROM, code is stored on an external ROM and is fetched by the 8031/32. Therefore for the 8031 the EA pin must be connected to ground to indicate that the code is stored externally. EA, which stands for “external access,” is pin number 31 in the DIP packages. It is input pin and must be connected to either Vcc or GND. In other words, it cannot be left unconnected. XTAL1 and XTAL2 The 8051 have an on-chip oscillator but requires external clock to run it. Most often a quartz crystal oscillator is connected to input XTAL1 (pin 19) and XTAL2 (pin 18). The quartz crystal oscillator connected to XTAL1 and XTAL2 also needs two capacitors of 30 pF value. One side of each capacitor is connected to the ground.



It must be noted that there are various speeds of the 8051 family. Speed refers to the maximum oscillator frequency connected to the XTAL. For example, a 12 MHz chip must be connected to a crystal with 12 MHz frequency or less. Likewise, a 20 MHz microcontroller requires a crystal frequency of no more than 20 MHz. When the 8051 is connected to a crystal oscillator and is powered up, we can observe the frequency on the XTAL2 pin using oscilloscope. RST Pin 9 is the reset pin. It is an input and is active high (normally low). Upon applying a high pulse to this pin, the microcontroller will reset and terminate all activities. This is often referred to as a power –on reset. Activating a power-on reset will cause all values in the registers to be lost. Notice that the value of Program Counter is 0000 upon reset, forcing the CPU to fetch the first code from ROM memory location 0000. I/O port pins and their functions The four ports P0, P1, P2, and P3 each use 8 pins, making them 8-bit ports. All the ports upon RESET are configured as output, ready to be used as output ports. To use any of these as input port, it must be programmed. Port 0: Port 0 is an 8-bit open drain bidirectional port. As an open drain output port, it can sink eight LS TTL loads. Port 0 pins that have 1s written to them float, and in that state will function as high impedance inputs. Port 0 is also the multiplexed low-order address and data bus during accesses to external memory. In this application it uses strong internal pull-ups when emitting 1s. Port 0 emits code bytes during program verification. In this application, external pull-ups are required.

Port 1: Port 1 is an 8-bit bidirectional I/O port with internal pull-ups. Port 1 pins that have 1s written to them are pulled high by the internal pull-ups, and in that state can be used as inputs. As inputs, port 1 pins that are externally being pulled low will source current because of the internal pull-ups. Port 1 also receives low order address bytes during flash programming and verification. Port 2: Port 2 is an 8-bit bidirectional I/O port with internal pullups. When 1‟s are written to Port2 they are pulled high by internal pull-ups and can be used as inputs. Port 2 emits the high-order address byte during accesses to external memory that use 16-bit addresses. In this application, it uses the strong internal pull-ups when emitting 1s.Port 2 emits the contents of the P2 Special Function Register.

Port 3: Port 3 is an 8-bit bidirectional I/O port with internal pull-ups. When 1‟s are written to Port 3 pins they are pulled high by internal pull-ups and can be used as inputs. It also serves the functions of various special features of the 80C51 Family as follows: Port Pin Alternate Function P3.0 RxD (serial input port) P3.1 TxD (serial output port) P3.2 INT0 (external interrupt 0) P3.3 INT1 (external interrupt 1) P3.4 T0 (timer 0 external input) P3.5 T1 (timer 1 external input) P3.6 WR (external data memory write strobe) P3.7 RD (external data memory read strobe)

Port 3 also receives some control signals for flash programming and verification.

VCC: Supply voltage VSS: Circuit ground potential. GND: 20 pin is grounded.


As your car needs an engine to run, similarly our robot also needs something to make it run. An actuator activated a mechanical device and is basically anything that causes movement on your robot. Motors, such as the motors that drive a robot, are the most common type of actuator. Motors come in several varieties such as the gear motor and the servo motor. Motors vary in power, speed, accuracy and power consumption. Some motors have shaft that rotate continuously; other types turn less than a complete rotation. Motors can add a lot of weight to a robot. Light weight aluminium motors or even plastic motors might save your robot a lot of power in the long run. Some of the mechanical devices that are currently being used in modern robotics technology include:

AC motor: AC motors cycle the power at the input leads, to continuously move the field. Given a signal, AC or DC
motor perform their action to best of their ability.

Stepper motor: These motors are like brushless AC or DC motors. They move the rotor by applying power to
different magnets in the motor sequence (stepped). Steppers are designed for fine control and will not only spin on command and will not only spin on command, but can spin at any number of steps-per-second.

Servo motors: Servomotors are closed –loop devices. Given a signal, they adjust themselves until they match the
signal. Servos are used in radio control airplanes and cars. They are simple DC motors with gearing and a feedback control system.

A direct current motor is used to translate electrical pulses into mechanical movement. In DC motor we have + and – leads. Connecting them to a DC voltage source moves the motor in one direction (i.e. clockwise rotation). By reversing the polarity, the DC motor will move in the opposite direction (i.e. counter clockwise rotation). The maximum speed of DC motor is indicated in rpm. The DC motor has two rpms: no load and loaded. The rpm is reduced when moving a load and decreases as the load is increased. DC motors also have voltage and current ratings. The nominal voltage is the voltage for that motor under normal conditions, can vary from 1 to 150V, depending on the motor .As we increase the voltage, the rpm goes up. The current rating varies from 25mA to a few amps. As the load increases, the rpm is decreased, unless the current or voltage

provided to the motor is increased , which in turn increases the torque.

The two types of motors that you are likely to use in robotic adventure are DC motors and RC servo motors. The most common motor for robotics is DC gear motor , which works by gearing down a fast DC motor to make the motor turn at a slower speed and give the motor a higher torque suitable for robot locomotion. A dc gear motor is basically a regular dc motor with a special gear box attached to the output shaft. Your robot electrical drive circuitry can control the dc gear motor to rotate the wheels of your robot for locomotion. You can get a dc motor without a gear head, but generally these are too fast(around 15,000 RPM).For a robot to move at reasonable rate you have to gear down a DC motor to about 30 to 80 RPM. When you gear down a DC motor ,you get a slower speed and plenty of torque.

H-bridge (L293B)
The microcontroller sends a signal to the H-bridge that acts as a switch. If the signal received by the H-bridge is high it will rotate the motor or else it won‟t do so. Note that microcontroller only sends a signal to a switch which gives the voltage required by the motor to rotate. Here we are using L293B which can be used to control two motors. Pin connections for H-bridge: En1 & En2 are given logic 1 from microcontroller or give 5V from outside and are used to activate/deactivate one „half‟ of the H-bridge. V is the voltage that you want to supply to the motor(s) : 9 or 12V Vcc is the logic 1 or 5V

To Derive DC motor Using H-Bridge:
Here we have shown connection of H-Bridge using simple switches. 1. When all the switches are open, the motor will not take any turn.

2. When switches 1 and 4 are closed, current is allowed to pass through the motor i.e. motor will turn in one direction i.e. clockwise direction.

3. To move the motor in opposite direction i.e. counterclockwise direction, switches 2 and 3 must be closed.

4.If switch 1 and 3 are closed or switch 2 and 4 are closed. This will create a short circuit and current will flow to ground directly, but this case is invalid.

The input we give at pins In1, In2 of L293 is the same as switch 1 and switch 2 of H-Bridge, respectively. However switch 3 and switch4 are complement of switch 1 and switch 2, respectively, such that when S1 = 0, S2 = 1 => S3 = 1, S4 = 0 and motor rotates anticlockwise. En 1 pin is used to enable Left motor. In1, In2 provide high/low signal to the motor. En2 pin is used to enable Right motor. In3, In4 provide high/low signal to the motor.

Thus the logic required for controlling motion of the motor is as below:
En1 In1 In2 En2 In3 In4 0 1 1 0 1 X 0 1 0 1 X 0 0 0 0 0 1 1 1 0 x 0 1 1 0 x 0 0 0 0 Type of motion of motor No motion No motion Forward motion, both motors rotate clockwise Turn Left, left motor stops and right motor moves forward Turn Right, left motor moves forward and right motor stops

Here we are using pins P1.0 and P1.4 for taking the inputs from the IR sensors after being amplified by LM324.

The complete circuit diagram with all the integrated circuits required for making a line follower is shown below:

Here we are using pins P1.0 and P1.4 for taking the inputs from the IR sensors after being amplified by LM324.

Microcontroller is used for the processing of the input data and controlling the output devices depending upon the input. We are taking input from the sensors, which is used to control the motion of the motors. The motors at the output section are used to run the Line Follower robot in a particular direction. The input to the microcontroller is fed as below: Pin 1_0 Pin1_4 Left sensor status Right sensor status

This input is used to drive the left motor and the right motor through L293(motor deriver IC). For this, we need to provide six signals from microcontroller to L293, three for each motor, as below: P2_0 P2_1 P2_2 P2_3 P2_4 P2_5 Enable(En1) signal for left motor Switch1(In1) signal for Left motor Switch2 (In2)signal for Left motor Enable(En2) signal for Right motor Switch1(In3) signal for Right motor Switch2(In4) signal for Right motor

We write the following program in a high level language ,C, which is compiled using Keil microvision3. Then we obtain the hex file using this compiler.

//Program code for LINE FOLLOWER ROBOT #include<reg51.h> sbit s1=P1^0; sbit s2=P1^4; #define in P1 #define out P2 //declaring input pin from left sensor //declaring input pin from right sensor

void delay(unsigned int); void delay(unsigned int itime) { unsigned int i,j; for(i=0;i<itime;i++) for(j=0;j<1275;j++);

// declaring a delay function

// To produce a delay of 1 ms when we are using a microcontroller of frequency 11.0592 MHz.//

} void main() { unsigned char z; in=0xFF; while(1) { z=in; z=z&0x11; switch(z) { case(0): //Forward motion // setting P1 as input port //Main Program

out=0x1B; break; case(1): out=0x18; delay(50); break; case(16): out=0x03; delay(50); break; } } }

//1Bh = 00011011b

//Turn Left //18h=00011000b // Inserting a delay for 50ms

// Turn Right, 16d=0x10 //03h=00000011b // Inserting a delay for 50ms

1. It can act as maze solver. Basically it follows a line, therefore it can be used in mining where the robots are used to find the way out of the mine. 2. If we implement a robotic arm along with the line follower then it can be used to pick and place the objects in its way and can be very useful in our day to day life. 3. Apparatus to control the automatic placing of material along a junction between surfaces with reference to the form and position of the junction including a tool controllably movable to deposit material progressively along the junction in response to a control signal. 4. An imager linked to the movement of the tool to produce an image of the surfaces.

5. By modifying the position of the sensors, same principle can be used in obstacle avoidance and edge detection.


This is the first step of making intelligent robots capable of making their own decisions on the situations provided. The design, implementation and testing of a working project proved to be very challenging. The primary objective of detecting and following a specific coloured line proved to be a great learning experience, as we did not have prior hands-on experience in Embedded Systems. The difficulties in project management as well as those brought to light during experimentation provided an opportunity to work on problem-solving abilities. Despite many problems encountered, I found this experience a rewarding and educational one. This project can have many uses in practical fields, from teenagers‟ toy cars to robots working in industries and even in wars. It can be further improved to have more decision taking capabilities by employing varied types of sensors and thus could be used in big industries for different applications.


 THE 8051 MICROCONTROLLER AND EMBEDDED SYSTEMS By Mohd. Ali Mazidi, Janice Gillispie Mazidi, Rolin D. McKinlay  The 8051 MICROCONTROLLER By Kenneth J. Ayala     

Sign up to vote on this title
UsefulNot useful