You are on page 1of 27

VIVEKANAND EDUCATION SOCIETYS INSTITUTE OF

TECHNOLOGY
LBS REPORT
INSTRUMENTATION LANDING SYSTEM
Bhavesh Chetwani
Rahul Goswami
Prajakta Nalawde
Chandni Nanwani
Prachiti Waghambare
D14-A

Guided By:
Mrs Swati Zope
(ETRX Dept.)

Department of Electronics & Telecommunication


2014-2015

CERTIFICATE
This is to certify that Mr.Bhavesh Chetwani, Mr.Rahul Goswami, Ms.Prajakta Nalawde,
Ms.Chandni Nanwani, Ms.Prachiti Waghambare has satisfactorily completed the partial
fulfilment of LBS (Looking Beyond Syllabus) project in Instrumentation Landing System
under my supervision in VESIT during the academic year 2014 15.

Signature of the Project Mentor

Signature of the LBS Co-ordinator

Mrs Swati Zope

Dr.Saylee Gharge

Index
Sr No.

Topic

Page no.

1.

Introduction

2.

Motivation

3.

Problem definition

4.

Issues & challenges

5.

Design of Project

6.

Specifications

11

7.

Advantages

16

8.

Applications

17

9.

Conclusion

18

10.

References

19

11.

Appendix

20

PICTURE INDEX
Sr. No
1.
2.
3.
4.
5.
6.
7.

Picture
Block diagram of system.
Working model
ATmega 16 development board
ATmega 16 pin diagram
HC-SR04
Timing diagram of HC-SR04
ADXL-335

Introduction
3

Page No.
08
09
10
11
14
14
15

The Instrument Landing System (ILS) is an internationally normalised system for


navigation of aircrafts upon the final approach for landing. It provides the horizontal as well
as the vertical guidance necessary for an accurate landing approach.
An ILS (Instrument Landing System) is a type of instrument approach consisting of a
localizer, a glide slope and specific approach and runway lighting. It is one of many kinds of
instrument approaches which enable an airplane to safely get from the enroute environment
down to a position where it can see the runway and make a landing.

Motivation
Also very costly earthworks may be required and at some airports ILS cannot be made
to work. It is quite sensitive to reflections from terrain and buildings which disturb the
4

course. Hence we decided to make an instrumentation landing system which will use sensors
instead of the costly arrays involved in the actual system. Thus the system becomes costeffective & compact since the use of arrays is eliminated.

Problem Definition

First the distance of the aeroplane will be measured from the ground. Then the tilt of
the aeroplane is sensed in X axis & Y axis & the information is conveyed to the pilot.

Issues & Challenges


6

Vertical guidance:

We decided to use Z axis of accelerometer to guide the aeroplane vertically. The


output of z axis was not according to the lateral displacement, it was according to tilt.
Hence we used ultrasonic sensor for vertical guidance.

Programming of Atmega:

We faced the initialization problem in ultrasonic sensor. Also since both the sensors
were programmed differently combining them together in a single program was a
problem.

DESIGN OF PROJECT
7

Block diagram and explanation:

There are 4 main blocks in the system

Atmega 16 Development board

Ultrasonic sensor

Accelerometer

Liquid crystal display

The Atmega 16 microcontroller acts as the heart of the system & is programmed in order
to get the required output.
The ultrasonic sensor is interfaced to port C of Atmega 16. The 2 main pics of
ultrasonic sensor which are the Trigger & Echo are connected to C0 & C1 pins
respectively of microcontroller. For the operation of sensor a 100 kHz signal is provided
by the microcontroller on its trigger pin & the output of the sensor is obtained on its Echo
pin. This output is in the form of pulses which is given to microcontroller. The
microcontroller displays the output of distance in cm on the LCD which is interfaced to
port B of Atmega 16.
The Accelerometer is interfaced to port A of Atmega 16 which also has an inbuilt
ADC. Accelerometer has 3 axis- X, Y & Z. We have connected only X axis & Y axis
output to pins A0 & A1 of the microcontroller. Accelerometer measures acceleration on
these axis & provides a proportional analog output voltage which is given to
8

microcontroller. The internal ADC converts this analog voltage into digital & provides the
corresponding output on LCD.

Working:

The two eyes of the system are the ultrasound sensor (HC-SR04) and accelerometer
(ADXL-335). To determine the correct position of the plane and to correct it, in the
first step, the ultrasonic detects the height of the prototype from the ground. We have
kept the optimum height between 15-20 cm. But, the sensor can very well work with
height up to 4 metres. If the height of the plane is not in the defined range, the atmega
displays message through LCD to go up or down accordingly.
Once the condition of height is set, the accelerometer tests the condition of tilt
in right or left. For a proper landing, the plane must be straight. It tests the condition
of right or left in Y-axis. If the plane is tilted in either of the directions, the atmega
processes it and displays accordingly.
Being in the optimum landing height and being straight, the accelerometer
determines the tilt in forward direction (X-axis) and thus displays message
accordingly. When all three conditions of height, right or left tilt and forward tilt are
satisfied, the plane is ready and safe to land.

SPECIFICATIONS
9

Atmega 16 development board:

The main blocks of the development board


1. Power supply and voltage regulation
2. Microcontroller (ATmega 16/32)
3. Motor drivers
4. LCD display ports
5. ASK RF Tx and Rx ports
6. FT232

Power supply and voltage regulation


All digital ICs work at a voltage around 5v and may get damaged at higher voltages but
motors require a high voltage of about 12 volts to function. To solve this discrepancy, a
voltage regulator circuit is added on to the board. The voltage regulator takes an input of 12V
and gives a 5V output and hence only one power supply is needed to power the entire robot.
The voltage regulator on the board is LM7805. The board has provisions for taking 12 V
input from a battery (through wire connections) as well as from a power supply (through a
power jack).

The Microcontroller (The brain)


A microcontroller (MCU) is a small computer on a single integrated circuit containing a
processor core, memory, and programmable input/output peripherals. The MCU provided on
our board is an ATMEL ATmega 16. The pin configuration is as given below

10

11

MOTOR DRIVERS:
Motor drivers are essentially little current amplifiers; their function is to take a low-current
control signal, and turn it into a proportionally higher-current signal that can drive a motor.
The motor driver provided on board is IC L293D.

LCD DISPLAY:
The board has provisions for connecting a standard 16 pin LCD Display. However, it must be
noted that the port provided for LCD interfacing using the ATmega is for 4- bit interfacing
and not 8-bit wherein the pins B0, B1, B2 of the MCU are used for RS, R/W and E and the
pins B4, B5, B6, B7 are used for data bus lines.

RF communication:
The board includes provision for connecting 433 MHz ASK Transmitter and Receiver
Modules to transmit and receive serial data with a 100 m range in open space.

USBasp:
USBasp is a USB programmer used for burning the codes into the MCU on your
development board.

Some pins to know when using the programmer:

When programming your development for the first time, put a jumper on the pins with
SLOW SCK and firmware written near them. (You dont need to this, weve already
programmed it once for you) Putting the SLOW SCK jumper reduces your
programming speed, which is desirable at times, when it fails to program at a faster
speed.

Of the extreme pins, whose wires are connected to the development board, the one
having an initial G near it printed on the board, is the ground pin. The pin adjacent to
it is the VCC pin. The remaining 4 are the programming pins which go 15 to pins 6-9
of the ATMEGA. So, the 6-wire ribbon from the programmer board goes to the 6-11
pins of the ATMEGA.

The power target (pwr target) jumper when put on, allows the MCU to be powered by
the PC, when connected to the PC.

The glowing of red LED signifies that the process of programming is on. The green
LED should ideally glow when the programmer is connected to the PC (with the
power target jumper on the board) and is idle.
12

FEATURES OF ATMEGA 16:

16KB of Flash memory

Available in 40-Pin DIP

8-Channel 10-bit ADC

Two 8-bit Timers/Counters

One 16-bit Timer/Counter

4 PWM Channels

In System Programmer (ISP)

Serial USART

SPI Interface

Digital to Analog Comparator

HC-SR04 Ultra Sonic Sensor:


Product features:
Ultrasonic ranging module HC - SR04 provides 2cm - 400cm non-contact measurement
function, the ranging accuracy can reach to 3mm. The modules includes ultrasonic
transmitters, receiver and control circuit. The basic principle of work:
(1) Using IO trigger for at least 10us high level signal,
(2) The Module automatically sends eight 40 kHz and detect whether there is a
pulse signal back.
(3) IF the signal back, through high level , time of high output IO duration is the time from
sending ultrasonic to returning.
Test distance = (high level timevelocity of sound (340M/S) / 2,
Wire connecting direct as following:

5V Supply
Trigger Pulse Input
Echo Pulse Output
0V Ground

13

Electric Parameter:

Working Voltage DC 5 V
Working Current 15mA
Working Frequency 40Hz
Max Range 4m
Min Range 2cm
Measuring Angle 15 degree
Trigger Input Signal 10uS TTL pulse
Echo Output Signal Input TTL lever signal and the range in proportion
Dimension 45*20*15mm

Timing Diagram:

14

Timing diagram The Timing diagram is shown below. You only need to supply a short 10uS
pulse to the trigger input to start the ranging, and then the module will send out an 8 cycle
burst of ultrasound at 40 kHz and raise its echo. The Echo is a distance object that is pulse
width and the range in proportion .You can calculate the range through the time interval
between sending trigger signal and receiving echo signal. Formula: uS / 58 = centimeters or
uS / 148 =inch; or: the range = high level time * velocity (340M/S) / 2; we suggest to use
over 60ms measurement cycle, in order to prevent trigger signal to the echo signal.

Accelerometer:
The ADXL335 is a small, thin, low power, complete 3-axis accelerometer with signal
conditioned voltage outputs. The product measures acceleration with a minimum full-scale
range of 3 g. It can measure the static acceleration of gravity in tilt-sensing applications, as
well as dynamic acceleration resulting from motion, shock, or vibration.
The user selects the bandwidth of the accelerometer using the CX, CY, and CZ
capacitors at the XOUT, YOUT, and ZOUT pins. Bandwidths can be selected to suit the
application, with a range of 0.5 Hz to 1600 Hz for the X and Y axes, and a range of 0.5 Hz to
550 Hz for the Z axis.
The ADXL335 is available in a small, low profile, 4 mm 4 mm 1.45 mm, 16-lead,
plastic lead frame chip scale package (LFCSP_LQ).

ADVANTAGES
15

ILS supports all types of aircrafts:


This system can be used for landing aeroplanes, helicopters etc without much
change in the guiding circuitry.

Precision Approach :
This system gives the direct readout digitally instead of complex analog meters as
used in actual system.

APPLICATIONS
16

Visually Impaired :
The ILS can be used for guiding the visually impaired, for eg if we install the
vertical guidance part of our system in the shoes ,then it will be helpful for
guiding the way whenever that person is walking on the stairs.

Used in cranes :
If we mount this system on the cranes then it will help to put cranes at proper
position from a particular distance.

CONCLUSION
17

In this project we have focused on building a prototype of landing system which is


less complex, less expensive and more users friendly. The only constraint being its
accuracy, the system can be used in many other applications as explained earlier.
The prototype can be worked upon and developed into a working model in future.

REFERENCES
18

Cisropedia.net

ibatnam.net

Wikipedia.org

Appendix
19

Code:
#include <avr/io.h>
#include <util/delay.h>
#include "lcd.h"
#include "lcd.C"
#define US_PORT PORTC
#define

US_PIN

#define US_DDR

PINC

DDRC

#define US_TRIG_POS

PC0

#define US_ECHO_POS

PC1

#define US_ERROR

-1

#define

US_NO_OBSTACLE -2

void InitADC()
{
ADMUX=(1<<REFS0);

// For Aref=AVcc;

ADCSRA=(1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
=128
}

/*
Function to read required analog channel and returns the value
Argument:
Channel number from 0-7
Return Vale:
Result of conversion on selected channel
ranges from 0-1023
*/

20

//Rrescalar div factor

uint16_t ReadADC(uint8_t ch)


{
//Select ADC Channel ch must be 0-7
ch=ch&0b00000111;
ADMUX&=0b11100000;
ADMUX|=ch;
//Start Single conversion
ADCSRA|=(1<<ADSC);
//Wait for conversion to complete
while(!(ADCSRA & (1<<ADIF)));
//Clear ADIF by writing one to it
//Note you may be wondering why we have write one to clear it
//This is standard way of clearing bits in io as said in datasheets.
//The code writes '1' but it result in setting bit to '0' !!!

ADCSRA|=(1<<ADIF);
_delay_ms(200);
return(ADC);
}
void HCSR04Init();
void HCSR04Trigger();
void HCSR04Init()
{
US_DDR|=(1<<US_TRIG_POS);
}
void HCSR04Trigger()
{
21

//Send a 10uS pulse on trigger line


US_PORT|=(1<<US_TRIG_POS); //high
_delay_us(15);

//wait 15uS

US_PORT&=~(1<<US_TRIG_POS);

//low

}
uint16_t GetPulseWidth()
{
uint32_t i,result;

//Wait for the rising edge


for(i=0;i<=600000;i++)
{
if(!(US_PIN & (1<<US_ECHO_POS)))
continue;

//Line is still low, so wait

break;

//High edge detected, so break.

else

}
if(i==600000)
return US_ERROR; //Indicates time out
//High Edge Found
//Setup Timer1
TCCR1A=0X00;
TCCR1B=(1<<CS11);

//Prescaler = Fcpu/8

TCNT1=0x00;

//Init counter

//Now wait for the falling edge


for(i=0;i<600000;i++)
{
22

if(US_PIN & (1<<US_ECHO_POS))


{
if(TCNT1 > 60000) break; else continue;
}
else
break;
}

if(i==600000)
return US_NO_OBSTACLE; //Indicates time out
//Falling edge found
result=TCNT1;
//Stop Timer
TCCR1B=0x00;
if(result > 60000)
return US_NO_OBSTACLE; //No obstacle
else
return (result>>1);
}

/*
Simple Delay function
*/
void Wait(uint8_t t)
{
uint8_t i;
for(i=0;i<t;i++)
23

_delay_loop_2(0);
}
void main()
{

LCDInit(LS_NONE);

//Initialize ADC
InitADC();
_delay_ms(1000);
//Put some intro text into LCD

//LCDWriteString(" Accelerometer ");


//LCDWriteStringXY(0,1,"

Test

");

//_delay_ms(1500);

Wait(150);
LCDClear();
uint16_t r;
_delay_ms(100);

//Let the LCD Module start

//Initialize the LCD Module

//Set io port direction of sensor


HCSR04Init();
//LCDClear();
LCDWriteString("ultra sonic");
LCDWriteStringXY(0,1,"Sensor Test");
_delay_ms(2500);
24

LCDClear();
int16_t x,y,z; //X,Y,Z axis values from accelerometer.
//Wait for LCD to Startup
_delay_loop_2(0);
//Initialize LCD, cusror style = NONE(No Cursor)
while(1)
{
//Send a trigger pulse
HCSR04Trigger();
//Measure the width of pulse
r=GetPulseWidth();
//Handle Errors
if(r==US_ERROR)
{
LCDWriteStringXY(0,0,"Error !");
}
else if(r==US_NO_OBSTACLE)
{
LCDWriteStringXY(0,0,"Clear !");
}
else
{
int d;
d=(r/58.0);

//Convert to cm

LCDWriteIntXY(0,0,d,4);
_delay_ms(1500);
LCDWriteString(" cm");
25

_delay_ms(1500);
if(d<15)
{
LCDWriteStringXY(0,1,"Go Up");
_delay_ms(1500);
lcd_clear();
}
else if(d>20)
{
LCDWriteStringXY(0,1,"Go Down");
_delay_ms(1500);
lcd_clear();
}
else
{LCDWriteStringXY(0,1,"Set Accelerometer");
_delay_ms(1500);
lcd_clear();
_delay_ms(1500);
x=ReadADC(0);

// Read Analog value from channel-0

y=ReadADC(1);

// Read Analog value from channel-1

z=ReadADC(2);

// Read Analog value from channel-2

//Make it signed value (zero point is at 338)


x=x-250;
y=y-250;
z=z-360;
//Print it!
LCDWriteStringXY(0,0,"X=");
26

LCDWriteInt(x,3);
LCDWriteString(" Y=");
LCDWriteInt(y,3);
_delay_ms(10000);
Wait(20);

if(x<=75){
LCDWriteStringXY(0,1,"READY");
_delay_ms(2000);
}
else
{LCDWriteStringXY(0,1,"Tilt F");
_delay_ms(2000);}
if(y>110){
LCDWriteStringXY(9,1,"Tilt L");
_delay_ms(2000);
}
else{
if(y<90){
LCDWriteStringXY(9,1,"Tilt R");
_delay_ms(2000);
}
else {
LCDWriteStringXY(9,1,"READY");
_delay_ms(2000);
lcd_clear();

27