High Level Design:: ∇ × ∇ × E=−μ d (∇× E) dt

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 65

1

INTRODUCTION

When we were little, remote controllable toys such as RC car always fascinated
us. The idea of controlling a moving object from distance had been fabulous for us.
Even more, controlling an object in the air would have been even better. The purpose of
our project is to build a helium lifted airship with propellers for controlling motion that
is controllable from distance by use of radiofrequency communication. First, we started
by building building-blocks of the whole program simultaneously building the
hardware block necessary to test the program blocks. After building the sub-programs
(motor control, radiofrequency transmission and reception, analog to digital
conversion), we assembled all the subprogram. Our major difficulty was due to the fact
that we overestimated the lifting power of helium. Thus we had to reduce weight
radically to try to lift up our ship.
The main idea of the airship is that the helium balloons are not capable of lifting
the motor/MCU module just by little bit.  Therefore, when the lifting motors are turned
on, the thrust from the two motors are enough to generating enough lifting force to
bring up the airship.  In addition, there are two motors that put thrust in the sideway. 
By changing the ratio of speed between the two side motors, the airship can rotate
either left or right.  These lift motors and directional motors enable the three
dimensional control over the airship.

1.1 HIGH LEVEL DESIGN:


The project was conceived first by watching a bird flying.  By looking at such
freedom the bird possessed, we immediately realized that there is nothing more
impressive than being able to fly.  Nonetheless, our budgets were limited and also our
times were limited, so that we could not go for F-16 fighters.  Hence the compromise
was made to make an airship, controlled through a wireless controller, and with a
helium balloon to aid the lifting force.
 
1.2 MATH BACKGROUND:
There are two major math background needed for this project: antenna theory and the
helium lift theory.

d (∇× E )
∇ × ∇ × E=−μ ………. (1.1)
dt  

1.3 THEORY:
For the wireless control, a radio frequency (RF) transceiver was implemented. The
operation of such transceiver is governed by the antenna theory which is described
briefly in this section.
Recalling two of the Maxwell’s equations:
2

Now, implement the scalar and vector potentials:

dH dE
∇ × E=−μ And ∇ × H=J + ε …………(1.2)
dt dt

E=∇ φ And μH=∇ × A .................(1.3)

Then, the Faraday’s law in the equation (1.1) becomes

dA
[
∇ × E+
dt ]
=0 …………………………(1.4)

Using the vector identity that the curl of gradient is zero,

dA
E+ E+ =−∇ φ ………...............(1.5)
dt

3
G ( θ )= sin 2 θ …………(1.6)
2

The pre-factor is rather less of importance; rather, what is important there is that
the angle has to be 90 degrees in order for the maximum gain, and there for alignments
of the transmitter antenna and the receiver antenna become important.
The quarter wave antenna has a single wire in one end but it behaves as a dipole
antenna with the imaginary antenna part on the other end.  This in effect behaves as a
half-wave dipole antenna with the half the power.  For the quarter wave antenna, it is
ok to have the antenna length to be the multiples of the quarter of the wavelength used
for the wireless communication.  However, multiple of a fraction of the quarter
wavelength could bring destructive effect to reduce the transmission efficiency of the
transceiver.
Helium Lift Force:
Helium weighs 0.1785 grams per litre while the air weighs about 1.25 grams per
litre.  Due to the difference in the helium weight and the air weight, about litre of
helium can lift about 1 gram from the following equation:

ρair
(
m lift =mass gas × 1−
ρgas ) ………………………(1.7)
3

HARDWARE AND SOFTWARE REQUIREMENTS

2.1 BOARD FEATURES:

2.1.1 Processor: Atmel 89’ series MCU

 64KB internal flash memory

 1 KB RAM

 4 I/O ports

 1 Serial communication

 9 Snap switches

 8 onboard LED’s

 Onboard Reset switch

 1 LCD

 A Serial Port for ISP

 External Interrupt (INT0) Switch

 Onboard interfaces for

o 16X2 character LCD

o 7-Segment Display

o 4X4 Matrix keyboard

o ADC module

o Stepper and DC motor driver

o Real Time Clock


4

2.1.2 Data Package:

 Embedded Starter evaluation board

 Serial Cable

 9VAdaptor for power supply

 Embedded Starter Kit CD

2.1.3 Hardware requirements:

 Embedded Starter Kit

 A serial cable, 9 pin male to 9 pin female connector wired one-to-one

 A PC available with RS232 port. If the port has 25-pin connector, a 9 pin male
to 25 pin female adapter may be required.

 9V Adaptor for power supply

2.1.4 Software requirements:

 Keil uV3

 Flash Magic.

 MS Windows XP/ME/Vista or windows NT/2000/2003

2.2 MCU
Nanosier Incorporation 8051 Starter kit is equipped with P89V51RD2 a +5V
8051based micro controller from Philips (NXP). The chip being in 40 pin DIP package is
hole mounted on the board over the IC base.
The controller has 64KB on-chip Flash ROM and 1 KB on-chip RAM, and supports up to
40 MHz frequency. It also has 32 I/O lines, 3 Timers/Counters, 8 interrupts, 5 channels
PCA, SPI, WDT. It can also operate in a special X2 mode in which 1 machine cycle
consumes 6 crystal frequencies (by default (Normal mode) takes 12 crystal
frequency/machine cycle). P89V51RD2 supports serial In-system Programming for
programming 64KB Flash memory.
5

Fig. 2.1: 8051 and its architecture

2.3 CRYSTAL
XTAL1 is an 11.0592MHz crystal connected across pins 18 and 19 of MCU.
This crystal provides accurate baud rate for serial communications. 11.0592MHz is
maximum clock frequency that the standard 8051 will support.

Fig.2.2: Circuit of Crystal Oscillator

2.4 RESET CIRCUITRY


A logical high on pin 9 of MCU will reset the chip. Pressing and releasing the
switch RST allows capacitor to discharge and recharge respectively, which brings in
RESET high, then low again.
6

Fig. 2.3: Reset Circuitry

2.5 SERIAL INTERFACE


One RS232 serial port has been provided, which may be used to interface the
target 8051board with host PC/any serial terminal for serial data acquisition. This also
facilitates In-System-Programming. Level transition buffer MAX3232 has been used to
make RS232 TTL compatible.

Fig. 2.4: Circuit of Serial Interface

2.6 POWER SUPPLY

Power to the board can be supplied by 9V Adaptor means via LM7805C/TO


which is a 5V regulator.
7

Fig. 2.5: Power supply Circuitry

2.7 BOARD CONFIGURATIONS:


2.7.1 Getting started
The embedded starter kit requires power and a serial connection to a PC having
the IDE μVision keil3 and Flash Magic from Philips semiconductor.
2.7.2 Jumper settings
For the correct working of the board the jumper connection need to be made
before power on.
2.7.3 Power on
1. Connect the 9V Adaptor on the Nanosier Logic’s 8051 Board to provide power
supply.
2. Press the ON/OFF switch.
3. Once the board is powered on; Power on LED (connected to 7805) and LCD should
glow.
2.7.4 Serial Cable Connection
The serial port cable can be used for downloading program codes serially. For this
1. Connect DB9-Male connector to the Nanosier Logic’s 8051 starter kit which is
interfaced to UART1 of the micro controller.
2. Connect DB9-Female connector to the PC/Host terminal.

REVIEW OF LITERATURE
8

3.1 LOGIC STRUCTURE

The main idea of the airship is that the helium balloons are not capable of lifting
the motor/MCU module just by little bit.  Therefore, when the lifting motors are turned
on, the thrust from the two motors are enough to generating enough lifting force to
bring up the airship.  In addition, there are two motors that put thrust in the sideway. 
By changing the ratio of speed between the two side motors, the airship can rotate
either left or right.  These lift motors and directional motors enable the three
dimensional control over the airship.
The control of the airship is done through remote controller.  The controller,
which is controlled by three potentiometers, sends RF signals to the airship.  In turn,
the airship receives the signal – through an antenna if necessary – to obtain information
on how to control the fans (motors).  By controlling the motorized fans on the airship,
one can manipulate the directionality and acceleration of the airship navigation.

Fig.3.1: Airship
9

Fig. 3.2 : Block Diagram of the Transmitter

Fig.3.3: Block Diagram of the Receiver


 
3.2 HARDWARE COMPROMISES

Since the airship is lift using helium balloons and more balloons are needed to
lift more weights, there is an intrinsic trade off between the size of the airship and the
size of the motor.  Though bigger motors can exert more torque, hence lift more
weight, it might require additional balloons because the bigger motors are much
heavier.  Also, as more balloons and bigger motors are used, they add to extra cost,
hence there is trade of between such items and the cost of the project.
10

3.3 STANDARD COMPLIANCE

The airship complies IEEE safety standard to avoid any possible hazard.  The
propeller is in soft plastic to avoid any cutting injuries.  In addition no high power will
be used for the safety reason as well.
This project does meet the regulation imposed by FCC, which is shown in Table 3
below, to incorporate with legal considerations.
 

Table 3.1: FCC Regulation for RF

Fig. 3.4 Airship model

3.4 PROGRAM DESIGN


11

3.4.1 Transmitter

(1) TIMER0

Mega644 has TIMERX modules which increase at user specified rate independently
from program execution. The program has number of tasks to be run. In order to
control the timing of each tasks, we used TIMER0 to generate 1 millisecond time base.
During initialization routine, we set the CS<02:0> bits in TCCR0B register to 011 to
change pre-scale to 1:64, OCIE0A bit in TIMSK0 register to 1, and OCR0A register to
249 thereby making TIMER0 interrupt every 250 timer count. Thus, we were able to
generate 64/16000000 * 250 = 0.001s time base. During TIMER0 compare match
interrupt service routine, we incremented timer for each of the tasks. Thus, we were
able to make the task for transmitting data and the task for taking analog to digital
conversion data every 50ms. During initialization, we made sure that the two timing
variables for our tasks didn’t time out at the same time by initializing one timing
variable to be 0 and the other timing variable to be 25.
 
(2) Analog to Digital Conversion

Mega644 board has an analog to digital converter (ADC) which has 8 software
multiplexed channel with prescalable clock. The analog to digital converter converts
the analog value linearly and stores the result in 8bit or 10bit form, which can be read
by user. The transmitter board takes in user-input through analog values from three
potentiometers. As reference voltage, A Vdd was used. Each potentiometer was to
control upward thrust, forward thrust, and turn. Turning up the potentiometers for
upward and forward thrust, would make the propeller in the airship turn faster giving it
more power. The third potentiometer was designed to work like a car handle. Turning
the potentiometer knob left would make the airship turn left. Similarly, turning the
potentiometer knob right would make the airship turn right.
To implement the analog to digital conversion from three different sources, we
had to manipulate analog to digital converter channels. Thus we changed MUX4:0 in
ADMUX bit to change channel before each conversion to take in three different data
from three different sources. For ease of programming we set the ADLAR bit in
ADMUX to one thereby making the processor right adjust the result. Right adjusting
the data made us able to use the value stored in ADCH register for eight bit analog to
digital conversion result. Since the airship we designed would be very large compared
to the restricted power we have due to weight constraint, we figured that full 10bit
resolution for analog to digital conversion was unnecessary. Thus we only took the
upper eight bit by taking the value of ADCH register. Of course, we had to set the
ADEN bit in ADCRA register to enable the analog to digital conversion. At first, above
register configuration for the analog to digital converting peripheral did not produce
correct converted value.
After trying many times to make it work by changing various other registers, we
figured out the reason that the converter didn’t work was that the clock input to the
analog to digital converter inside the microcontroller was too fast because we were 
using 16Mhz crystal without prescaler. The clock speed was too fast for the analog to
digital converter to charge up. Thus we had to change the prescaler to 1:128 to give the
12

analog to digital converter enough time to convert. Lastly, we made the digital I/O
function of the PORTA(which should be used for analog to digital conversion port) by
setting DIDR0 register to value 0xFF. Also, we changed the port direction of PORTA
to inputs by changing DDRA register to value 0x00. The correctly setup analog to
digital conversion routine was carried out every 50 millisecond. In the routine that
takes the analog to digital converted user input, 1) we changed analog to digital channel
by changing ADMUX register, 2)initiated conversion by setting ADSC bit in ADCSRA
register to one, 3) waited for the conversion to finish by monitoring ADIF bit in
ADCSRA register, and finally read the value of ADCH register. We did the above step
three times to take in three different data from three different sources. The converted
value ranged from 1 to 255 since we used only eight bit result. For upward and forward
data, 1 meant least power and 255 meant maximum power. For Left or Right handling,
the value of 1 meant turning the handle to the left fully and the value of 255 meant
turning the handle to the right fully.
 
(3) Data packaging

For radiofrequency transmission and reception, we had to allow the radiofrequency


receiver to adjust its gain and keep it stable by keeping the DC bias of the bytes sent
constant. In other words, the number of ones and zeros in each byte sent had to be the
same for each byte we sent. If a byte consisting of all zeros were sent for prolonged
period of time(in microcontroller sense) the receiver would turn up its gain because it
will think that it is receiving no signal. Turning up the gain to high would make the
receiver very susceptible to noise especially in lab environment full of electronic
equipment.
On the other hand, if we send a byte consisting of all ones for prolonged period of
time, the receiver would turn down its gain since it thinks that it is receiving noise
making it hard to detect the real signal. Thus we decided to sent one nibble at a
time(Low byte and High byte). Using function data_packager_L and data_packager_H,
we balanced the number of ones in each nibble by attaching the negated version of
mirror of the nibble to be sent. For example, for nibble 1101, we attached 0010 to make
a byte 11010010. For low nibble, we put the original nibble on the lower nibble
position and attached the negated nibble on the higher nibble position, and for high
nibble we kept the original nibble on the high nibble position and attached the negated
nibble to the lower nibble position for programming simplicity in the receiver side.
Thus, the three bytes we wanted to send(upward, forward, and Left or Right) was
divided into 6 nibbles balanced by their negated values.
 

(4) Transmitter and Receiver Syncing

For radiofrequency transmission and reception we used RCT/R 433 by Radiotronix.


The module uses 433Mhz as carrier frequency. . Before sending the actual data we
wanted to send, we first wanted to allow receiver to adjust its gain. Thus, we sent bit
balanced byte(0xAA) 5 times to allow the receiver to adjust is gain appropriately. 
Also, because some of the other groups were using the same parts(using same carrier
frequency) we had to have means of making sure that the data received by the airship
was actually the data sent from our transmitter and not somebody else’s. After sending
13

gain adjust bytes, we sent 3 bytes(bit balanced) which we called sync bytes(0x35, 0x69,
and 0xAC) to sync with the receiver. On the receiver end, the software simulated state
machine kept track of each byte received and it recognized our data only after the three
sync bytes are received in order. In other words, only after sending the gain adjust bytes
and “Sync byte” we sent the actual data.

(5) UART Transmission

For communication between the radiofrequency transmitter and the microcontroller, we


used the built in USART module in the mega644 with asynchronous mode at baud rate
of 2400. During initialization routine, we set the TXEN bit in UCSR0B register bit to 1
to enable UART transmission. Also, we set the UBRR0 to 416 to set the baud rate to
2400. Finally we set the UPM0<1:0> bits in UCSR0C register to 11 to set the UART
module in odd parity mode, and USCZ<1:0> to 11 to make the character size eight bit.
To send a byte to a radiofrequency transmitter from the MCU, first we made sure that
the UART transmit buffer was empty by checking UDRE0 bit in UCSR0A register.
Once the transmit buffer was empty, then we wrote byte to UDR0 register. Then the
data in the transmitter buffer was sent to shift register to be finally sent to the radio
frequency transmitter.
 

3.4.2 Receiver

(1) UART Reception

For communication between the microcontroller and the radiofrequency receiver, we


used built in UART receiver module. During initialization routine, we set RXCIE bit
and RXEN bit in UCSR0B to one to enable UART reception and interrupt. Also we set
the UBRR0 register to 416 to match the baud rate with the transmitter. Finally we set
the UPM0<1:0> bits in UCSR0C register to 11 to set the UART module in odd parity
mode, and USCZ<1:0> to 11 to make the character size eight bit to match the
communication protocol of the transmitter. As explained above, transmitter first sends
five gain adjust bytes and three sync bytes. In UART reception interrupt service
routine, the program keeps track of each state (gain adjust stage, sync stage and data
reception stage) to make sure that the data we received in airship is the correct data that
we actually sent from the transmitter. The six nibbles received in this way are then sent
to data_unpackager which combines two nibbles to produce the byte that we originally
wanted to send.
 

(2) Motor Control


14

The most important aspect of our receiver board design is the motor control. For motor
control, we use two timers, TIMER0 and TIMER2 for PWM output. In order to use the
PWM peripheral, we set COM0A<1:0> in TCCR0A register to 10 to use OCOA pin as
the non-inverting PWM output to drive upward motor. The OCOA pin will be high as
long as the value of the TIMER0 is lower than OCROA register. We wanted simple
fast PWM mode so we set the WGM<1:0> bits in TCCR0A register to 11. In previous
lab regarding digital tachometer(lab4 in ECE 4760 at Cornell) we noticed that the
frequency of PWM output which controls motor was important because frequency that
was too high would not pass across the onto isolator and the frequency that is too low
would give erratic response of motor. Thus, we set the pre scalar of the TIMER0 and
TIMER2 to 64 to make about 1Khz PWM frequency, the same frequency we used For
TIMER2, we set the COM2A<1:0> bits and COM2B<1:0> bits to 10 to use OC2A and
OC2B pins as PWM output for controlling left motor and right motor.  Through
radiofrequency communication, we receive three bytes(“upward”, “forward”, and “Left
or Right”) which corresponds to the upward thrust, forward thrust, and left or right turn.
Upward byte goes directly into OCR0A register for direct translation of upward thrust
and the data sent from the transmitter to control the duty rate. The duty rate for the
motors that provides forward thrust is calculated by combining the latter two bytes sent
by the transmitter. The duty rate for the left motor is determined by “forward”/2 plus
(255 - “Left or Right”)/2. The duty rate for the right motor is determined by
“forward”/2 plus “Left or Right”/2. Thus, for left and right motor, half of the thrust
depends on “forward” byte and the other half depends on “Left or Right” byte.
The calculated duty rate “Left” and “Right” is then written to OCR2A and
OCR2B register respectively. Please note that we chose the above three PWM output
pins for soldering ease. Without that consideration, we could have chosen any three
PWM output pins from all six PWM output pins to drive motors. Lastly, our
radiofrequency transmitter and receiver pair had only limited range, we needed to have
safety mechanism for retrieving our airship in case the airship lost and the transmitter
lost contact. Thus, we kept another timer, to count the time from the last reception of
data arrays. If the airship did not receive for prolonged period of time(in
microcontroller sense), it was programmed to turn off all of the motor. That way, we
would be able to retrieve the ship even if it loses connection because it would fall
slowly by gravitational force.
 
(3) Watchdog Timer

Due to the nature of our project that used the actuator that generated heavy noise, even
with opto isolation, and the fact that we had to use small lithium battery(which turned
out to be very unreliable) to power the MCU, we had to make sure that the system was
self correcting in case of runaway code, probably due to corrupted program counter.
Thus, we decided to use watchdog timer built inside the mega644 MCU. The watchdog
timer is just like any other timers that we used for controlling the motors except that it
is clocked from different source and it resets the processor when it expires. Thus, the
watchdog timer has to be reset periodically to prevent the unwanted processor reset.
The watchdog timer is very useful because when the code runs away, it is very likely
that the program won’t reset the watchdog timer on time making the timer reset the
CPU. In order to use watchdog timer, we set the WDE bit in WDTCSR register to one
to enable watchdog timer. Also, in order to change the time out period for watchdog
15

timer to the value we want, we had to first set WDCE bit in WDTCSR register and then
change WDP bits in WDTCSR register. We set the WDP bits to 101 to make the
watchdog timer time out at 0.5 second. However, even with watchdog timer, the system
is not fail proof. For example, if the program enters an infinite loop that constantly
clears watchdog timer, it can never recover. Also, the hardware, not the software,
condition persists; it is very likely that the processor will reset constantly.

3.5 SOFTWARE SOLUTIONS

3.5.1 Keil features

Embedded C kit provides Keil uvision3 evaluation version along with the kit.
This is an IDE that combines project management, make facilities, source code editing,
and program debugging and complete simulation under one powerful environment.
μVision includes traditional features like simple and complex breakpoints, watch
windows and execution control as well as sophisticated features like trace capture,
execution profiler, code coverage and logic analyzer.
The μVision Debugger provides a number of ways to display variables and program
objects.
 Source Code Windows display your high-level language and assembly program
source code.
 The Disassembly Window shows mixed high-level language and assembly code.
 The Registers Tab of the Project Workspace shows system registers.
 The Symbol Window hierarchy displays program symbols in your application.
 The Output Window displays the output of various debugger commands.
 The Memory Window displays up to four regions of code or data memory.
 The Watch Window displays local variables, user-defined watch expression lists,
and the call stack.

3.5.2 Executing code


μVision offers several ways you can control and manipulate program execution.
 Reset - It is possible to debug reset conditions using the μVision Simulator.
 Run/Stop - Buttons and Commands make starting and stopping program execution
is easy.
 Single-Stepping - μVision supports various methods of single-stepping through
your target program.
 Execution Trace - Execution trace information for each executed instruction is
stored by μVision.
16

 Breakpoints - Both simple and complex breakpoints are supported by the μVision
Debugger.

3.5.3 Advanced analysis tools


Advanced analysis tools are available to help you test and debug your embedded
applications.
 Code Coverage helps you determine how much of your program has been tested.
 The Performance Analyzer shows how functions and code blocks in your program
perform.
 The Execution Profiler shows execution counts and time for each line of code or
instruction.

 The Logic Analyzer shows how various signals and variables in your program
change over time.

3.5.4 Simulation
Simulation capabilities make it possible to test your target system without target
hardware.
 Instruction Simulation simulates the exact effects and timing of each MCU
instruction.
 Interrupt Simulation simulates the cause and effect of a system or peripheral
interrupt.
 Peripheral Simulation simulates the effects of on-chip peripherals including special
function registers.
 Debugger Functions allow you to expand the command scope of the debugger and
create and respond to stimuli.
 Toolbox Buttons are a convenient way for you to connect debugger functions
buttons on the user-interface.
17

3.5.5 Using µvision Keil3 for programming and debugging

►STEP 1
Load the keil

►STEP 2

Once keil is loaded an empty work space is displayed, if previously no projects were
opened. Else if any projects were opened previously, then the same project will be
opened.

►STEP 3
To create a new project, go to Project, a drop down menu will be displayed from this
select new project.
18

►STEP 4
Within the “Create New Project window” select the path for the new project , as in
above snap shot desktop is selected and within this path right click and create a new
folder and here it is named as “demo”.

►STEP 5
Double click on the newly created folder and type in the project name and click on
save.
19

►STEP 6
Once the project is saved the target chip that has to be programmed need to be selected
from the window shown below:

►STEP 7
For our purpose goto Generic and then select 8051(all variants). Click OK.
20

►Step 8

The above window will be displayed and to add the “Startup file click on Yes.

►STEP 9
The Startup file for 8051 gets added to the source group of the current project.
21

►STEP 10
Go to File Menu select new. A new file gets opened where you can start editing the
program codes.

►STEP 11
22

Once the program is edited, save the file as .c file

►STEP 12

Click Save.

►STEP 13
23

Now add the file to the current project. For this right click on source group, and click
on Add Files to Group 'Source Group 1'.

►STEP 14

Now select the .c file and click on Add and close the Add files to Group window.

►STEP 15
24

Now the program has to be compiled click on the compile button and build target i.e.
Project Menu --> Build Target.

►STEP 16

If no Errors and Warnings, then the program can be debugged by entering into debug
mode. The path is go to Debug Menu and select Start/Stop Debug Session. If any errors
present in the list of errors will be displayed.

►STEP 17

For debugging we can use either step into/ Step Over.

The register content after each instruction execution will be displayed in the register
window towards the left hand side.
25

3.5.6 hex file generation


Once the program has been built and debugged the down loadable hex file need
to be generated.

►STEP 1
Being outside the debug mode right click on the Target folder in the Project work space
and select the Options for Target 'Target name'

►STEP 2

Select Output option and click in the check box of Create HEX File and click OK.
26

►STEP 3

Now build the program again to generate the HEX File. The Hex file will be saved in
the current project folder as .HEX file. This file is downloadable to the 89V51RD2
Flash.

3.5.7 Downloading hex files on to target board


►STEP1
27

Double click on the Flash Magic icon.

The above window gets displayed upon which the following configuration has to be
made.
A) Step 1: Communications
COM Port: COM1
Baud Rate: 9600(if you’re connecting to your PC)
Device: 89V51RD2
Interface: None [ISP]
B) Step 2: Erase
Select Erase all Flash Magic
C) Step 3: Hex File
Click on browse, select the path of the hex file generated
D) Step 4: Options
Select Verify after programming

►STEP2
28

Check for, the connection has been established between Flash Magic and the target
system. Click on ISP--->Read Device Signature + Reset Button on the target board
simultaneously.

►STEP 3
Once the device gets detected the manufacture Id and Device Id are displayed

►Step 4
29

If the board is not detected the following window will be displayed. Check for proper
hardware connections and reset the board.

►Step 5
Once the board is detected and the hex file path has been provided click on Start. You
Observe a blue band increasing, gives you the info about the amount of the code been
downloaded till that moment. Once blue band disappears the program has been
downloaded.
Now wait until the Verifying message toward bottom left disappears.
Finally, after all the above procedures reset the switch on your board to get into
execution mode.
30

3.6 MICROCONTROLLERS
3.6.1 History of Microprocessors and Microcontrollers

The Intel 8051 is Harvard architecture, single chip microcontroller (µC) which
was developed by Intel in 1980 for use in embedded systems. Intel's original
versions were popular in the 1980s and early 1990s, but has today largely been
superseded by a vast range of faster and/or functionally enhanced 8051-compatible
devices manufactured by more than 20 independent manufacturers including Atmel,
Infineon Technologies (formerly Siemens AG), Maxim Integrated Products (via its
Dallas Semiconductor subsidiary), NXP (formerly Philips Semiconductor), Nuvoton
(formerly Winbond), ST Microelectronics, Silicon Laboratories (formerly Cygnal),
Texas Instruments and Cypress Semiconductor. Intel's official designation for the
8051 family of µCs is MCS 51.
Intel's original 8051 family was developed using NMOS technology, but later
versions, identified by a letter C in their name (e.g., 80C51) used CMOS technology
and were less power-hungry than their NMOS predecessors. This made them more
suitable for battery-powered devices. It's also low power consumption max 5v.
The past two decades have seen the introduction of a technology that has radically
changed the way in which we analyze and control the world around us. Born of
parallel developments in computer architecture and integrated circuit fabrication, the
microprocessor, or "computer on a chip," first became a commercial reality in 1971
with the introduction of the 4-bit 4004 by a small, unknown company by the name
of Intel Corporation. Other, more well-established, semiconductor firms soon
followed Intel's pioneering technology so that by the late 1970s one could choose
from a half dozen or so microprocessor types. The 1970s also saw the growth of the
number of personal computer users from a handful of hobbyists and "hackers" to
millions of business, industrial, governmental, defence, educational, and private
users now enjoying the advantages of inexpensive computing.
A by-product of microprocessor development was the microcontroller. The
same fabrication techniques and programming concepts that make possible the
general-purpose microprocessor also yielded the microcontroller.
Microprocessors and microcontrollers stem from the same basic idea, are made by
the same people, and are sold to the same types of system designers and
programmers. What is the difference between the two?
A µp, as the term has come to be known, is a general-purpose digital computer
central processing unit. Although popularly known as a "computer on a chip," the µp
is in no sense a complete digital computer.
3.6.1.1 Building Blocks of Microprocessor

Figure 3.1 shows a block diagram of a microprocessor CPU, Microprocessor


consists of the following basic elements
 Arithmetic and logic unit (ALU),
 Program counter (PC),
 Stack pointer (SP), some working,
 Registers,
 A clock timing circuit, and interrupt circuits.
 Floppy/CD/DVD drive
31

 I/O peripherals, such as a keyboard and a CRT display


 Read-only program memory (ROM) and random-access data memory (RAM),
 Memory decoders, an oscillator, and
A number of input/output (I/O) devices, such as parallel and serial data ports.
Additionally, special-purpose devices, such as interrupt handlers, or counters,
may be added to relieve the CPU from time-consuming counting or timing
chores.

Fig. 3.5: Block Diagram Of Microprocessor

3.6.1.2 Microprocessor usage and applications

The key term in describing the design of the microprocessor is "general-


purpose." The hardware design of a µp CPU is arranged so that a small, or very large,
system can be configured around the CPU as the application demands. The internal
CPU architecture, as well as the resultant machine level code that operates that
architecture, is more as flexible as possible.
The prime use of a microprocessor is to fetch data, perform extensive calculations on
that data, and store those calculations in a mass storage device or display the results for
human use. The programs used by the microprocessor are stored in the mass storage
device and loaded into RAM as the user directs. A few microprocessor programs are
stored in ROM. The ROM-based programs are primarily small fixed programs that
operate peripherals and other fixed devices that are connected to the system. The design
of the microprocessor is driven by the desire to make it as expandable as possible, in
the expectation of commercial success in the marketplace.
32

3.6.2 Microcontrollers

A highly integrated chip that contains all the components comprising a


controller. Typically this includes a CPU, RAM, some form of ROM, I/O ports, and
timers. Unlike a general-purpose computer, which also includes all of these
components, a microcontroller is designed for a very specific task -- to control a
particular system. As a result, the parts can be simplified and reduced, which cuts down
on production costs.
Microcontrollers are sometimes called embedded microcontrollers, which just
mean that they are part of an embedded system that is, one part of a larger device or
system.

Fig. 3.6: Block diagram of Microcontroller

The prime use of a microcontroller is to control the operation of a machine


using a fixed program that is stored in ROM and that does not change over the lifetime
of the system.
The design approach of the microcontroller mirrors that of the microprocessor:
make a single design that can be used in as many applications as possible in order to
sell, hopefully, as many as possible. The microprocessor design accomplishes this goal
by having a very flexible and extensive repertoire of multi-byte instructions. These
instructions work in a hardware configuration that enables large amounts of memory
and I/O to be connected to address and data bus pins on the integrated circuit package.
Much of the activity in the microprocessor has to do with moving code and data words
to and from external memory to the CPU. The architecture features working registers
that can be programmed to take part in the memory access process, and the instruction
set is aimed at expediting this activity in order to improve throughput. The pins that
connect the microprocessor to external memory are unique, each having a single
function. Data is handled in byte, or larger, sizes.
The microcontroller design uses a much more limited set of single- and double-
byte instructions that are used to move code and data from internal memory to the
ALU. Many instructions are coupled with pins on the integrated circuit package; the
33

pins are "programmable"-that is, capable of having several different functions


depending upon the wishes of the programmer.
The microcontroller is concerned with getting data from and to its own pins; the
architecture and instruction set are optimized to handle data in bit and byte size.
3.6.2.1 Applications of Microcontroller

Microcontrollers are not as well known to the general public, or even the
technical community, as are the more glamorous microprocessors. The public is,
however, very well aware that "something" is responsible for all of the smart VCRs,
clock radios, washers and dryers, video games, telephones, microwaves, TVs,
automobiles, toys, vending machines, copiers, elevators, irons, and a myriad of other
articles that have suddenly become intelligent and "programmable." Companies are
also aware that being competitive in this age of the microchip requires their products,
or the machinery they use to make those products, to have some "smarts."

3.6.3 Comparing µp & µc

Microcontrollers Microprocessors
Microcontrollers may have one, or two Microprocessors have many operational codes
operational codes (op codes) for moving (op codes) for moving data from external
data from external memory to the CPU. memory to the CPU.
Microcontrollers have many types of bit- Microprocessors may have one or two types of
handling instructions. bit-handling instructions.
Microcontroller is concerned with rapid Microprocessor is concerned with rapid
movement of bits within the chip. movement of code and data from external
addresses to the chip.
µC can function as a computer with the Microprocessor must have many additional
addition of no external parts. parts to be operational.
Table 3.2: Comparison between µp & µc

3.7 TYPES OF MEMORY

Fig.3.7: Types of memories


3.7.1 Volatile memory
34

Volatile memory, also known as volatile storage or primary storage device, is


computer memory that requires power to maintain the stored information, unlike non-
volatile memory which does not require a maintained power supply.
Volatile is also called Temporary Memory.

3.7.2 Random access memory (RAM)

Random-access memory (usually known by its acronym, RAM) is a form of


computer data storage. Today, it takes the form of integrated circuits that allow stored
data to be accessed in any order (i.e., at random). The word random thus refers to the
fact that any piece of data can be returned in a constant time, regardless of its physical
location and whether or not it is related to the previous piece of data.
By contrast, storage devices such as tapes, magnetic discs and optical discs rely on the
physical movement of the recording medium or a reading head. In these devices, the
movement takes longer than data transfer, and the retrieval time varies based on the
physical location of the next item.
The word RAM is often associated with volatile types of memory (such as DRAM
memory modules), where the information is lost after the power is switched off.
Most forms of modern random access memory (RAM) are volatile storage, including
dynamic random access memory (DRAM) and static random access memory (SRAM).
Content addressable memory and dual-ported RAM are usually implemented using
volatile storage.
3.7.3 Non-volatile memory

Non-volatile memory, NVM or non-volatile storage, is computer memory that


can retain the stored information even when not powered. Examples of non-volatile
memory include read-only memory, flash memory, most types of magnetic computer
storage devices (e.g. hard disks, floppy disks, and magnetic tape), optical discs, and
early computer storage methods such as paper tape and punch cards.
Non-volatile data storage can be categorized in electrically addressed systems (read
only memory) and mechanically addressed systems (hard disks, optical disc, magnetic
tape, holographic memory and such). Electrically addressed systems are expensive, but
fast, whereas mechanically addressed systems have a low price per bit, but are slow.
Non-volatile memory may one day eliminate the need for comparatively slow forms of
secondary storage systems, which include hard disks.

3.7.4 Read only memory (ROM)

Read-only memory (usually known by its acronym, ROM) is a class of storage


media used in computers and other electronic devices. Because data stored in ROM
cannot be modified (at least not very quickly or easily), it is mainly used to distribute
firmware (software that is very closely tied to specific hardware, and unlikely to require
frequent updates).
In its strictest sense, ROM refers only to mask ROM (the oldest type of solid state
ROM), which is fabricated with the desired data permanently stored in it, and thus can
never be modified. However, more modern types such as EPROM and flash EEPROM
can be erased and re-programmed multiple times; they are still described as "read-only
35

memory"(ROM) because the reprogramming process is generally infrequent,


comparatively slow, and often does not permit random access writes to individual
memory locations. Despite the simplicity of mask ROM, economies of scale and field-
programmability often make reprogrammable technologies more flexible and
inexpensive.

3.7.5 Programmable ROM

A programmable read-only memory (PROM) or field programmable read-only


memory (FPROM) is a form of digital memory where the setting of each bit is locked
by a fuse or anti-fuse. Such PROM’s are used to store programs permanently. The key
difference from a strict ROM is that the programming is applied after the device is
constructed. They are frequently seen in video game consoles or such products as
electronic dictionaries, where PROM’s for different languages can be substituted.

3.7.6 Electrically erasable programmable ROM

EEPROM (electrically erasable programmable read-only memory) is user-


modifiable read-only memory (ROM) that can be erased and reprogrammed (written to)
repeatedly through the application of higher than normal electrical voltage. Unlike
EPROM chips, EEPROM’s do not need to be removed from the computer to be
modified.
Selective programming can be done to an EEPROM chip. The user can alter the
value of certain cells without needing to erase the programming on other cells. Thus,
sections of data can be erased and replaced without needing to alter the rest of the
chip's programming.
It also has a limited life - that is, the number of times it can be reprogrammed is
limited to tens or hundreds of thousands of times. In an EEPROM that is frequently
reprogrammed while the computer is in use, the life of the EEPROM can be an
important design consideration.
3.8 FLASH
Flash memory is a non-volatile computer memory that can be electrically erased
and reprogrammed. It is a technology that is primarily used in memory cards and USB
flash drives for general storage and transfer of data between computers and other digital
products.
Since flash memory is non-volatile, no power is needed to maintain the
information stored in the chip. In addition, flash memory offers fast read access times
(although not as fast as volatile DRAM memory used for main memory in PCs) and
better kinetic shock resistance than hard disks. These characteristics explain the
popularity of flash memory in portable devices. Another feature of flash memory is that
when packaged in a "memory card," it is enormously durable, being able to withstand
intense pressure, extremes of temperature, and even immersion in water.

3.9 APPLICATIONS

Example applications include PDA’s (personal digital assistants), laptop


computers, digital audio players, digital cameras and mobile phones. It has also gained
36

popularity in the game console market, where it is often used instead of EEPROM’s or
battery-powered SRAM for game save data.

3.9.1 Difference between Flash and EEPROM

 It is a specific type of EEPROM (Electrically Erasable Programmable Read-Only


Memory) that is erased and programmed in large blocks.
 Because erase cycles are slow, the large block sizes used in flash memory erasing
give it a significant speed advantage over old-style EEPROM when writing large
amounts of data.
 Flash memory costs far less than byte-programmable EEPROM and therefore has
become the dominant technology wherever a significant amount of non-volatile, solid
state storage is needed.
3.9.2 Difference between Volatile and Non-volatile memory
Volatile Memory Non Volatile Memory
It is faster (read/write). It is comparatively slower.
It is cheaper. It is costly (extra circuit for storage)
It is small in size (comparatively). It takes more chip area.
It has less power requirement. It requires more power to drive.
It is commercially available in larger It is commercially available in much
capacity (MB’s-GB’s). smaller capacities.
It does not require initialization (read It may require initialization (EEPROMs
below) require complete erasure. even flash
memory also requires AFIK)
Example -> main memory Example. -> flash memory for BIOS

Table 3.3: Comparison between volatile and non volatile memory

Non-volatile memory is typically used for the task of secondary storage, or


long-term persistent storage. The most widely used form of primary storage today is a
volatile form of random access memory (RAM), meaning that when the computer is
shut down, anything contained in RAM is lost. Unfortunately, most forms of non-
volatile memory have limitations that make them unsuitable for use as primary storage.
Typically, non-volatile memory either costs more or performs worse than volatile
random access memory.
3.10 8051 FEATURES

 8 bit CPU Optimized for Control Applications.


 Extensive Boolean processing (single bit logic) capabilities.
 Easy interfacing.
 64K Program Memory address space.
 64K Data Memory address space.
 12 to 30 MHz available (1us to 400ns for single cycle instruction) Full
instruction set including:
 Multiply and Divide
37

 Boolean instruction
 Variety of Addressing mode
 Special Function Registers (SFR’s)
 4K ROM on chip Program Memory
 128 bytes of on chip Data RAM
 32 bidirectional and individually addressable I/O lines.
 Two 16 bit timers/counters
 Serial I/O port Full Duplex (UART).
 6-sources/5-vector interrupts structure with two priority levels.
 On chip clock oscillator.

3.11 8051 ARCHITECTURE

The architecture of the 8051 family of microcontrollers is referred to as the


MCS-51 architecture, or sometimes simply as MCS-51. The 8051 can address 64K of
external data memory and 64K of external program memory. These may be separate
blocks of memory, so that up to 128K of memory can be attached to the
microcontroller.
Separate blocks of code and data memory are referred to as the Harvard architecture.
The 8051 has two separate read signals, (P3.7) and
 The first is activated when a byte is to be read from external data memory,
 The other, from external program memory.
Both of these signals are so-called active low signals. That is, they are cleared to logic
level 0 when activated.
All external code is fetched from external program memory. In addition, bytes from
external program memory may be read by special read instructions such as the MOVC
instruction. There are separate instructions to read from external data memory, such as
the MOVX instruction. That is, the instructions determine which block of memory is
addressed, and the corresponding control signal, either RD# or PSEN# is activated
during the memory read cycle.
A single block of memory may be mapped to act as both data and program
memory. This is referred to as the Von Neumann1 architecture. In order to read from
the same block using either the RD# signal or the PSEN# signal, the two signals are
combined with a logic AND operation. This way, the output of the AND gate is low
when either input is low. The advantage of the Harvard architecture is not simply
doubling the memory capacity of the microcontroller. Separating program and data
increases the reliability of the microcontroller, since there are no instructions to write
to the program memory. A ROM device is ideally suited to serve as program memory.
The Harvard architecture is somewhat awkward in evaluation systems, where code
needs to be loaded into program memory. By adopting the Von Neumann architecture,
code may be written to memory as data bytes, and then executed as program
instructions.
38

Fig. 3.8: Block diagram of 8051

The 8052 has 256 bytes of internal RAM and 8K of internal code ROM. The
8051 and 8052 internal ROM cannot be programmed by the user. The user must supply
the program to the manufacturer, and the manufacturer programs the microcontrollers
during production. Due to the setup costs, the factory masked ROM option is not
economical for small quantity productions.
The 8751 and 8752 are the Erasable Programmable Read Only Memory
(EPROM) versions of the 8051 and 8052. Many manufacturers offer the EPROM
versions in windowed ceramic and non-windowed plastic packages. These are user
programmable. However, the non-windowed versions cannot be erased. These are
usually referred to as One-Time- Programmable (OTP) microcontrollers, which are
more suitable for experimental work or for small production runs.
The 8951 and 8952 contain FLASH EEPROM’s (Electrically Erasable
Programmable Read Only Memory). These chips can be programmed as the EPROM
versions, using a chip programmer. Moreover, the memory may be erased. Similar to
EPROM’s, Erasing FLASH memory sets all data bits (data bytes become 0FFH). A bit
may be cleared (made 0) by programming. However, a zero bit may not be
programmed to a one. This requires erasing the chip.
Some larger FLASH memories are organized in banks or sectors. Rather than
erasing the entire chip, you may erase a given sector and keep the remaining sectors
unchanged. During the past decade, many manufacturers introduced enhanced
members of the 8051 microcontroller. The enhancements include more memory, more
ports, analog to digital converters, more timers with compare, reload and capture
facilities, more interrupt sources, higher precision multiply and divide units, idle and
power down mode support, watchdog timers, and network communication subsystems.
All microcontroller of the family use the same set of machine instructions, the MCS-
51. The enhanced features are programmed and controlled by additional SFR’s.
3.12 PIN OUT DESCRIPTION
39

Fig. 3.9: pin diagram of 8051


 Pins 1-8: Port 1, each of these pins can be configured as an input or an output.
 Pin 9: RS, A logic one on this pin disables the microcontroller and clears the
contents of most registers. In other words, the positive voltage on this pin resets the
microcontroller. By applying logic zero to this pin, the program starts execution
from the beginning.
 Pins10-17: Port 3, Similar to port 1, each of these pins can serve as general
input or output. Besides, all of them have alternative functions:
 Pin 10: RXD, Serial asynchronous communication input or Serial synchronous
communication output.
 Pin 11: TXD, Serial asynchronous communication output or Serial
synchronous communication clock output.
 Pin 12: INT0, Interrupt 0 input.
 Pin 13: INT1, Interrupt 1 input.
 Pin 14: T0, Counter 0 clock input.
 Pin 15: T1, Counter 1 clock input.
 Pin 16: WR, Write to external (additional) RAM.
 Pin 17: RD, Read from external RAM.
 Pin 18, 19: X2 and X1, internal oscillator input and output.
A quartz crystal which specifies operating frequency is usually connected to these
pins. Instead of it, miniature ceramics resonators can also be used for frequency
stability.
 Pin 20: GND, Ground.
 Pin 21-28: Port 2,
40

If there is no intention to use external memory then these port pins are configured
as general inputs/outputs.
In case external memory is used, the higher address byte, i.e. addresses A8-A15
will appear on this port. Even though memory with capacity of 64KB is not used,
which means that not all eight port bits are used for its addressing, the rest of them
are not available as inputs/outputs.
 Pin 29: PSEN,
If external ROM is used for storing program then a logic zero (0) appears on it
every time the microcontroller reads a byte from memory.
 Pin 30: ALE Prior to reading from external memory, the microcontroller puts
the lower address byte (A0-A7) on P0 and activates the ALE output. After
receiving signal from the ALE pin, the external register memorizes the state of P0
and uses it as a memory chip address. Immediately after that, the ALU pin is
returned its previous logic state and P0 is now used as a Data Bus. As seen, port
data multiplexing is performed by means of only one additional (and cheap)
integrated circuit. In other words, this port is used for both data and address
transmission.
 Pin 31: EA
By applying logic zero to this pin, P2 and P3 are used for data and address
transmission with no regard to whether there is internal memory or not. It means
that even there is a program written to the microcontroller, it will not be executed.
Instead, the program written to external ROM will be executed.
By applying logic one to the EA pin, the microcontroller will use both memories,
first internal then external (if exists).
 Pin 32-39: Port 0
Similar to P2, if external memory is not used, these pins can be used as general
inputs/outputs. Otherwise, P0 is configured as address output (A0-A7) when the
ALE pin is driven high (1) or as data output (Data Bus) when the ALE pin is driven
low (0).
 Pin 40: VCC +5V power supply.

3.13 REGISTER SET ORGANISATION


The 8051 has two types of memory and these are Program Memory and Data Memory.
 Program Memory (ROM) is used to permanently save the program being
executed, while
 Data Memory (RAM) is used for temporarily storing data and intermediate
results created and used during the operation of the microcontroller.
41

Depending on the model in use (we are still talking about the 8051 microcontroller
family in general) at most a few Kb of ROM and 128 or 256 bytes of RAM is used.
All 8051 microcontrollers have a 16-bit addressing bus and are capable of addressing
64 kb memory. It is neither a mistake nor a big ambition of engineers who were
working on basic core development. It is a matter of smart memory organization which
makes these microcontrollers a real “programmers’ goody“.
All 80C51 devices have separate address spaces for program and data memory, as
shown in Figures 1 and 2. The logical separation of program and data memory allows
the data memory to be accessed by 8-bit addresses, which can be quickly stored and
manipulated by an 8-bit CPU. Nevertheless, 16-bit data memory addresses can also be
generated through the DPTR register.

Fig.3.10: Flow diagram of memory addressing

3.13.1 Program memory


Program memory (ROM, EPROM) can only be read, not written to. There can
be up to 64k bytes of program memory. In the 80C51, the lowest 4k bytes of program
are on-chip. In the ROM less versions, all program memory is external. The read strobe
for external program memory is the PSEN (program store enable).
42

EA pin logic state:

 EA = 0
In this case, the microcontroller completely ignores internal program memory
and executes only the program stored in external memory.
 EA = 1
In this case, the microcontroller executes first the program from built-in ROM,
then the program stored in external memory.

Note: In both cases, P0 and P2 are not available for use since being used for data and
address transmission. Besides, the ALE and PSEN pins are also used.

3.13.2 DATA MEMORY

Data Memory (RAM) occupies a separate address space from Program


Memory.
In the 80C51, the lowest 128 bytes of data memory are on-chip. Up to 64k bytes of
external RAM can be addressed in the external Data Memory space. The CPU
generates read and write signals, RD and WR, as needed during external Data Memory
accesses. Data Memory is mainly used for temporarily storing data and intermediate
results created and used during the operation of the microcontroller.

3.13.2.1 External data memory


External Data Memory addresses can be either 1 or 2 bytes wide. One-byte
addresses are often used in conjunction with one or more other I/O lines to page the
RAM, as shown in Figure 5.

3.13.2.2 Internal data memory


Internal Data Memory is mapped in Figure 6. The memory space is shown
divided into three blocks, which are generally referred to as the Lower 128, the Upper
128, and SFR space.
43

Fig. 3.11: Internal Data Memory

Internal Data Memory addresses are always one byte wide, which implies an address
space of only 256 bytes. However, the addressing modes for internal RAM can in fact
accommodate 384 bytes, using a simple trick.

 Direct addresses higher than 7FH access one memory space and

 Indirect addresses higher than 7FH access a different memory space. Thus
Figure 6 shows the Upper 128 and SFR space occupying the same block of
addresses, 80H through FFH, although they are physically separate entities.

3.14 PORT FEATURES

3.14.1 Port 0
The P0 port is characterized by two functions. If external memory is used then
the lower address byte (addresses A0-A7) is applied on it. Otherwise, all bits of this
port are configured as inputs/outputs.
The other function is expressed when it is configured as an output. Unlike other
ports consisting of pins with built-in pull-up resistor connected by its end to 5 V power
supply; pins of this port have this resistor left out. This apparently small difference has
its consequences:
If any pin of this port is configured as an input then it acts as if it “floats”. Such
an input has unlimited input resistance and undetermined potential.
When the pin is configured as an output, it acts as an “open drain”. By applying logic 0
to a port bit, the appropriate pin will be connected to ground (0V). By applying logic 1,
the external output will keep on “floating”. In order to apply logic 1 (5V) on this output
pin, it is necessary to built in an external pull-up resistor.
44

3.14.2 Port 1
P1 is a true I/O port, because it doesn't have any alternative functions as is the
case with P0, but can be configured as general I/O only. It has a pull-up resistor built-in
and is completely compatible with TTL circuits.
3.14.3 Port 2
P2 acts similarly to P0 when external memory is used. Pins of this port occupy
addresses intended for external memory chip. This time it is about the higher address
byte with addresses A8-A15. When no memory is added, this port can be used as a
general input/output port showing features similar to P1.
3.14.4 Port 3
All port pins can be used as general I/O, but they also have an alternative
function. In order to use these alternative functions, a logic one (1) must be applied to
appropriate bit of the P3 register. In tems of hardware, this port is similar to P0, with
the difference that its pins have a pull-up resistor built-in.
3.14.5 8051 Timers and Counters
The 80C51 has two 16-bit Timer/Counter registers: Timer 0 and Timer 1. Both
can be configured to operate either as timers or event counters (see Figure 6).
In the “Timer” function, the register is incremented every machine cycle. Thus,
one can think of it as counting machine cycles. Since a machine cycle consists of 12
oscillator periods, the count rate is 1/12 of the oscillator frequency.
In the “Counter” function, the register is incremented in response to a 1-to-0
transition at its corresponding external input pin, T0 or T1. Since it takes 2 machine
cycles (24 oscillator periods) to recognize a 1-to-0 transition, the maximum count rate
is 1/24 of the oscillator frequency. There are no restrictions on the duty cycle of the
external input signal, but to ensure that a given level is sampled at least once before it
changes, it should be held for at least one full cycle. In addition to the “Timer” or
“Counter” selection, Timer 0 and Timer 1 have four operating modes from which to
select.
3.15 DIFFERENCE BETWEEN TIMERS AND COUNTERS

Timer Counter
The register is incremented every machine The register is incremented in response to a 1-
cycle. to-0 transition at its corresponding external
input pin (T0, T1).
Maximum count rate is 1/12 of oscillator Maximum count rate is 1/24 of oscillator
frequency frequency

  External I/P signal should be held for at least


one machine cycle
Table 3.4: Comparisons between timer and counter
45

HARDWARE REQUIREMENT ANALYSIS

4.1 RF TRANSMITTER

The TWS-434 and RWS-434 are extremely small, and are excellent for
applications requiring short-range RF remote controls.  The transmitter module is only
1/3 the size of a standard postage stamp, and can easily be placed inside a small plastic
enclosure.
TWS-434:  The transmitter output is up to 8mW at 433.92MHz with a range of
approximately 400 foot (open area) outdoors.  Indoors, the range is approximately 200
foot, and will go through most walls.....

Fig.4.1: TWS-434A(Transmitter)

The TWS-434 transmitter accepts both linear and digital inputs can operate
from 1.5 to 12 Volts-DC, and makes building a miniature hand-held RF transmitter
very easy.  The TWS-434 is approximately the size of a standard postage stamp.

Fig. 4.2: TWS-434 Pin diagram


46

4.2 RF RECEIVER

RWS-434:  The receiver also operates at 433.92MHz, and has a sensitivity of 3uV. 
The RWS-434 receiver operates from 4.5 to 5.5 volts-DC, and has both linear and
digital outputs.

Fig. 4.3: RWS-434 Pin diagram

Note: For maximum range, the recommended antenna should be approximately 35cm


long.  To convert from centimeters to inches -- multiply by 0.3937.  For 35cm, the
length in inches will be approximately 35cm x 0.3937 = 13.7795 inches long.  We
tested these modules using a 14", solid, 24 gauge hobby type wire, and reached a range
of over 400 foot.  Your results may vary depending on your surroundings.
47

HARDWARE DEISGN: TRANSMITTER SECTION

5.1 ENCODER IC (HT12E)

The 212 encoders are a series of CMOS LSI’s for remote control system
applications. They are capable of encoding information which consists of N address
bits and 12_N data bits. Each address/data input can be set to one of the two logic
states. The programmed addresses/data are transmitted together with the header bits via
an RF or an infrared transmission medium upon receipt of a trigger signal. The
capability to select a TE trigger on the HT12E or a DATA trigger on the HT12A
further enhances the application flexibility of the 212 series of encoders. The HT12A
additionally provides a 38kHz carrier for infrared systems.
48

Fig. 5.1: Sample transmitter application circuit

5.2 HARDWARE DESIGN

5.2.1 Radiofrequency Communication


Our radio frequency transmitter transmits when the input to the data pin(pin3)
is logic high. However, the default state of the UART communication is logic high
when no data is being transmitted. However, we didn’t want the transmitter to send
signal always in order to save power. For inverter, we used very cheap and space
saving configuration by using two resistor and a NPN transistor. The gate of the NPN
transistor is connected to the microcontroller UART TX pin. When TX pin is high, it
turns on the transistor thereby pulling the drain end of transistor to ground. When the
TX pin is low, the transistor is off and the drain end of the transistor is pulled up to
logic high. The antenna was designed to have the length of the quarter
49

Fig. 5.2: Radiofrequency transmission circuit


 
wavelength of the transmitted signal, about 17cm for maximum gain. The supply to
the radio frequency transmitter was filtered using inductor which contains some
resistance and a capacitor to make the supply voltage as stable as possible for
optimum performance of the transmitter.
50

Fig. 5.3: Radiofrequency reception circuit


 
Similar to radiofrequency transmission circuit, we filtered the supply voltage
with an inductor(which contains some resistance) and capacitor. This time, the data
from the receiver is fed to the input of our inverter configuration. The MCU then
takes data from the output end of our inverter. The data from the receiver needs to be
inverted back because the original data was inverted in order to save power.
 
5.2.2 Motor Control
            A motor normally generates electromagnetic noise that can possibly crash the
program in microcontroller. Plus, the particular motor used would require a voltage
higher than the voltage supplied to microcontroller. Thus, we had to use another
power supply to power the motor. The bridge between the two system is the opto-
isolator 4N35. The positive end of the diode is connected to the PWM outputs of the
MCU through a resistor, and the negative end to the ground. Thus, inside the 4N35
chip, when the MCU outputs high, the diode emits light.  
That light, is then captured by the phototransistor inside the 4N35 chip, and
makes the transistor conduct. When the transistor conducts, the emitter side of the
transistor becomes 9V and turns on another transistor(NMOSFET) to conduct,
thereby powering the motor. As a result, the motor receives power only when the
MCU outputs high.
The speed of the motor is controlled by generating pulse width modulated
signal from the MCU. The motor itself is a low pass filter with resister and capacitor
buried inside. Thus, we can control the speed of the motor by varying the pulse width
of the PWM signal. In parallel to the motor, notice we added a capacitor and a diode.
A capacitor removes an ac noise and the diode absorbs a negative spikes from the
51

inductor when the motor is suddenly unpowered, in order to protect the NMOSFET
transistor from breaking.

Fig. 5.4: Microcontroller Board Circuit of Transmitter


 
Our microcontroller design uses 16Mhz crystal with 5V power supply from LM
340L regulator output. To the regulator input, we used 9V battery. As long as the
voltage at the input of the regulator is higher than 7.5V, we can get stable 5V from the
regulator output. As a safety measure, we added a diode in front of the input of the
regulator. The diode is there to block the backward voltage applied by mistake. To the
ADC0, ADC1, ADC2 pin, the analog inputs from three different inputs goes in. The
TXD pin of the MCU is connected to the data pin of the RCT 433.
 
52

5.3 PROGRAM DESIGN

5.3.1 Transmitter:

5.3.1.1 TIMER0

Mega644 has TIMERX modules which increase at user specified rate


independently from program execution. The program has number of tasks to be run.
In order to control the timing of each tasks, we used TIMER0 to generate 1
millisecond time base. During initialization routine, we set the CS<02:0> bits in
TCCR0B register to 011 to change pre-scale to 1:64, OCIE0A bit in TIMSK0 register
to 1, and OCR0A register to 249 thereby making TIMER0 interrupt every 250 timer
count. Thus, we were able to generate 64/16000000 * 250 = 0.001s time base. During
TIMER0 compare match interrupt service routine, we incremented timer for each of
the tasks. Thus, we were able to make the task for transmitting data and the task for
taking analog to digital conversion data every 50ms. During initialization, we made
sure that the two timing variables for our tasks didn’t time out at the same time by
initializing one timing variable to be 0 and the other timing variable to be 25.
 
5.3.1.2 Analog to Digital Conversion

Mega644 board has an analog to digital converter (ADC) which has 8 software
multiplexed channel with prescalable clock. The analog to digital converter converts
the analog value linearly and stores the result in 8bit or 10bit form, which can be read
by user. The transmitter board takes in user-input through analog values from three
potentiometers. As reference voltage, A Vdd was used. Each potentiometer was to
control upward thrust, forward thrust, and turn. Turning up the potentiometers for
upward and forward thrust, would make the propeller in the airship turn faster giving
it more power. The third potentiometer was designed to work like a car handle.
Turning the potentiometer knob left would make the airship turn left.

Similarly, turning the potentiometer knob right would make the airship turn
right. To implement the analog to digital conversion from three different sources, we
had to manipulate analog to digital converter channels. Thus we changed MUX4:0 in
ADMUX bit to change channel before each conversion to take in three different data
from three different sources. For ease of programming we set the ADLAR bit in
ADMUX to one thereby making the processor right adjust the result. Right adjusting
the data made us able to use the value stored in ADCH register for eight bit analog to
digital conversion result. Since the airship we designed would be very large compared
to the restricted power we have due to weight constraint, we figured that full 10bit
resolution for analog to digital conversion was unnecessary. Thus we only took the
upper eight bit by taking the value of ADCH register. Of course, we had to set the
ADEN bit in ADCRA register to enable the analog to digital conversion. At first,
above register configuration for the analog to digital converting peripheral did not
produce correct converted value.

After trying many times to make it work by changing various other registers, we
figured out the reason that the converter didn’t work was that the clock input to the
53

analog to digital converter inside the microcontroller was too fast because we were 
using 16Mhz crystal without prescaler. The clock speed was too fast for the analog to
digital converter to charge up. Thus we had to change the prescaler to 1:128 to give
the analog to digital converter enough time to convert. Lastly, we made the digital I/O
function of the PORTA(which should be used for analog to digital conversion port)
by setting DIDR0 register to value 0xFF. Also, we changed the port direction of
PORTA to inputs by changing DDRA register to value 0x00. The correctly setup
analog to digital conversion routine was carried out every 50 millisecond. In the
routine that takes the analog to digital converted user input, 1) we changed analog to
digital channel by changing ADMUX register, 2)initiated conversion by setting
ADSC bit in ADCSRA register to one, 3) waited for the conversion to finish by
monitoring ADIF bit in ADCSRA register, and finally read the value of ADCH
register. We did the above step three times to take in three different data from three
different sources. The converted value ranged from 1 to 255 since we used only eight
bit result. For upward and forward data, 1 meant least power and 255 meant
maximum power. For Left or Right handling, the value of 1 meant turning the handle
to the left fully and the value of 255 meant turning the handle to the right fully.
 
5.3.1.3 Data packaging

For radiofrequency transmission and reception, we had to allow the


radiofrequency receiver to adjust its gain and keep it stable by keeping the DC bias of
the bytes sent constant. In other words, the number of ones and zeros in each byte sent
had to be the same for each byte we sent. If a byte consisting of all zeros were sent for
prolonged period of time(in microcontroller sense) the receiver would turn up its gain
because it will think that it is receiving no signal. Turning up the gain to high would
make the receiver very susceptible to noise especially in lab environment full of
electronic equipment. On the other hand, if we send a byte consisting of all ones for
prolonged period of time, the receiver would turn down its gain since it thinks that it is
receiving noise making it hard to detect the real signal. Thus we decided to sent one
nibble at a time(Low byte and High byte). Using function data_packager_L and
data_packager_H, we balanced the number of ones in each nibble by attaching the
negated version of mirror of the nibble to be sent. For example, for nibble 1101, we
attached 0010 to make a byte 11010010. For low nibble, we put the original nibble on
the lower nibble position and attached the negated nibble on the higher nibble position,
and for high nibble we kept the original nibble on the high nibble position and attached
the negated nibble to the lower nibble position for programming simplicity in the
receiver side. Thus, the three bytes we wanted to send(upward, forward, and Left or
Right) was divided into 6 nibbles balanced by their negated values.

 
54

5.3.1.4 Transmitter and Receiver Synchronizing

For radiofrequency transmission and reception we used RCT/R 433 by


Radiotronix. The module uses 433Mhz as carrier frequency. Before sending the actual
data we wanted to send, we first wanted to allow receiver to adjust its gain. Thus, we
sent bit balanced byte(0xAA) 5 times to allow the receiver to adjust is gain
appropriately.  Also, because some of the other groups were using the same parts(using
same carrier frequency) we had to have means of making sure that the data received by
the airship was actually the data sent from our transmitter and not somebody else’s.
After sending gain adjust bytes, we sent 3 bytes(bit balanced) which we called sync
bytes(0x35, 0x69, and 0xAC) to sync with the receiver. On the receiver end, the
software simulated state machine kept track of each byte received and it recognized our
data only after the three sync bytes are received in order. In other words, only after
sending the gain adjust bytes and “Sync byte” we sent the actual data.
55

HARDWARE DEISGN: Receiver section

6.1 DECODER IC (HT12D)


The 212 decoders are a series of CMOS LSI’s for remote control system
applications. They are paired with Holtek_s 212 series of encoders (refer to the
encoder/decoder cross reference table). For proper operation, a pair of encoder/decoder
with the same number of addresses and data format should be chosen. The decoders
receive serial addresses and data from a programmed 212 series of encoders that are
transmitted by a carrier using an RF or an IR transmission medium. They compare the
serial input data three times continuously with their local addresses. If no error or
unmatched codes are found, the input data codes are decoded and then transferred to
the output pins. The VT pin also goes high to indicate a valid transmission. The 212
series of decoders are capable of decoding information’s that consist of N bits of
address and 12_N bits of data. Of this series, the HT12D is arranged to provide 8
address bits and 4 data bits, and HT12F is used to decode 12 bits of address
information.

Fig. 6.1: Pin diagram of Decoder IC


56

Fig. 6.2: Receiver Ciruit


57

6.2 CIRCUIT DIAGRAM: RECEIVER BOARD


The receiver circuit is powered in exactly the same way as the transmitter circuit.
However, the output line from OC0A, OC2A, and OC2B pin goes to the motor module
to control motors. Also, the microcontroller receives data from RCR 433 through RX
pin.

Fig. 6.3: Microcontroller Board Circuit of Receiver

6.3 RECEIVER CIRCUITRY


58

6.3.1 UART Reception

For communication between the microcontroller and the radiofrequency receiver,


we used built in UART receiver module. During initialization routine, we set RXCIE
bit and RXEN bit in UCSR0B to one to enable UART reception and interrupt. Also we
set the UBRR0 register to 416 to match the baud rate with the transmitter. Finally we
set the UPM0<1:0> bits in UCSR0C register to 11 to set the UART module in odd
parity mode, and USCZ<1:0> to 11 to make the character size eight bit to match the
communication protocol of the transmitter. As explained above, transmitter first sends
five gain adjust bytes and three sync bytes. In UART reception interrupt service
routine, the program keeps track of each state(gain adjust stage, sync stage and data
reception stage) to make sure that the data we received in airship is the correct data that
we actually sent from the transmitter. The six nibbles received in this way are then sent
to data_unpackager which combines two nibbles to produce the byte that we originally
wanted to send.
 

Fig.6.4: Block Diagram of UART Reception

6.3.2 Motor Control

The most important aspect of our receiver board design is the motor control. For
motor control, we use two timers, TIMER0 and TIMER2 for PWM output. In order to
use the PWM peripheral, we set COM0A<1:0> in TCCR0A register to 10 to use
OCOA pin as the non-inverting PWM output to drive upward motor. The OCOA pin
will be high as long as the value of the TIMER0 is lower than OCROA register. We
wanted simple fast PWM mode so we set the WGM<1:0> bits in TCCR0A register to
11. In previous lab regarding digital tachometer(lab4 in ECE 4760 at Cornell) we
noticed that the frequency of PWM output which controls motor was important because
frequency that was too high would not pass across the opto isolator and the frequency
that is too low would give erratic response of motor. Thus, we set the pre scaler of the
TIMER0 and TIMER2 to 64 to make about 1Khz PWM frequency, the same frequency
we used For TIMER2, we set the COM2A<1:0> bits and COM2B<1:0> bits to 10 to
use OC2A and OC2B pins as PWM output for controlling left motor and right motor.  
59

period of time(in microcontroller sense), it was programmed to turn off all of the
motor. That way, we would be able to retrieve the ship even if it loses connection
because it would fall slowly by gravitational force.
 
6.3.2 Watchdog Timer

Due to the nature of our project that used the actuator that generated heavy noise, even
with opto isolation, and the fact that we had to use small lithium battery(which turned
out to be very unreliable) to power the MCU, we had to make sure that the system was
self correcting in case of runaway code, probably due to corrupted program counter.
Thus, we decided to use watchdog timer built inside the mega644 MCU. The watchdog
timer is just like any other timers that we used for controlling the motors except that it
is clocked from different source and it resets the processor when it expires. Thus, the
watchdog timer has to be reset periodically to prevent the unwanted processor reset.
The watchdog timer is very useful because when the code runs away, it is very likely
that the program won’t reset the watchdog timer on time making the timer reset the
CPU. In order to use watchdog timer, we set the WDE bit in WDTCSR register to one
to enable watchdog timer. Also, in order to change the time out period for watchdog
timer to the value we want, we had to first set WDCE bit in WDTCSR register and then
change WDP bits in WDTCSR register. We set the WDP bits to 101 to make the
watchdog timer time out at 0.5 second. However, even with watchdog timer, the system
is not fail proof. For example, if the program enters an infinite loop that constantly
clears watchdog timer, it can never recover. Also, the hardware, not the software,
condition persists; it is very likely that the processor will reset constantly.
 

6.4 FLOW DIAGRAM


60

-Receive RF Signal
- The
signal contains command for upward thrust, forward
boost, left or right turn.

RESULTS
61

7.1 SPEED AND RESPONSIVENESS

Even if we reduced the weight of the parts mounted under the balloon as much
as we could, we had to use very big volume of helium filled balloon to lift up the
airship. Also, because of the weight constraint we could not use motors with big torque.
Instead, we had to use mini motors that were light weighted. Thus, we only had limited
amount of thrust for maneuvering airship. Therefore although the response to the
radiofrequency transmission was very fast(almost instantaneous translation to PWM
output), the speed of our airship was could not be very fast. Nevertheless, we were able
to move the airship with reasonable speed as to make keep the controller entertained.
The speed of the airship is best demonstrated in the video attached for demo testing.
 
7.2 ACCURACY

For our purpose, the only accuracy that we needed to carefully consider was the
accuracy of the sent data. Before we adjusted the antenna length to be quarter wave
length of the carrier frequency, we had erratic transmission even when we moved the
transmitter about 10 meters away from the receiver. However, after readjusting the
antenna to quarter wave length, and making the sync byte arrays more restrictive, we
were able to safely extend the range of the reception to about 100 meters without any
corruption in data as specified in the datasheet of RCT/R 433. 

7.3 SAFETY

The major safety concern we worried about was the receiver going out of
control for various reasons. As described in software section, we designed the receiver
program to turn off all the motors if no valid signal was received from the transmitter
for prolonged period of time. Plus, we used the watchdog timer to monitor correct
program execution. Nevertheless, if both of the safety measure failed, there could be
little safety hazard because helium is not flammable and nontoxic. In earlier design
phase, we also considered using hydrogen gas. However, we decided that that would be
extremely dangerous although it would provide much more lifting force per volume.
Thus, even if the balloon containing helium blew apart, there would be little hazard
other than possible hearing loss, and heart attack from sudden noise. Thus, we advise
people with heart problem avoid using the device we created.

CONCLUCIONS
62

This project was successful in a sense that the airship met the specification
initially imposed.  For instance, it was possible to lift the airship as well as to change
directions in both left and right.  For improvements, the motor modules could be
combined such that all the four modules can be built on one piece of board, which
would save some extra room.  Also, a better qualify regulator could be implemented to
reduce the amount of batteries required for the MCU control, which could aid to
reducing the amount of the helium needed.  In addition, the more efficient propeller
could be adapted in order to extract more lifting force from the motor.

The design conforms to the applicable standards in military or toy industry.  It


does not require much power, hence could be implemented as a spying tool, and it is
also safe to be a toy.  No code has been copied from another source but we wrote them
ourselves.  Since the technologies used are already well-known to the engineering
society – motor control and wireless communication – there are rather small chances of
getting patents out of this project.   However, if we happen to use this tool to spy on
other nations on issue – such as North Korea or Iran, the result could be publishable.

In terms of ethical considerations, first of all, the airship satisfies the demand of
green trend which advocates for less carbon mono-oxide emission.  Because it does not
consume a carbon fuel, this airship is totally environmental friendly, emitting no carbon
mono-oxide.  In terms of the safety consideration, the propellers are small and made of
soft plastics such that there is the minimal cutting hazard.  In addition, the airship is
operated at a very low power device in consideration for the safety of the general
public. Such low power feature also coincides with the electronic engineering society’s
emphasis on low power devices.  This could be helpful to be implemented in the
defense related missions where the low power is the key to the success of the mission. 

We accepted no bribes to this project which we are very proud of and planning
to keep our work ethic up to the standard of IEEE.  After all, this project was a
sincerely great opportunity to expand our knowledge on electronics that we only learn
through textbooks.  We take prides in keeping up with state of art technologies in motor
control and wireless communication and being able to find a suitable application for the
composite of the technologies.  Lastly, we also have graciously accepted the productive
criticisms from the Prof. Land as well as teaching assistant, all of which added
invaluable value to this project.

FURTHER ENHANCEMENT
63

1. Airships are not constrained by geographical conditions provided that there is


no severe winds. They can reach any disaster area.
2. Airships can go around blocked paths and roadways and brave rainstorms to
rescue people thus reducing casualties and loss.
3. It can be used as a signal regenerator.
4. It can be used as spy camera.
A use of wire to fulfill a function as an antenna was suggested in the specification
document of the wireless transceiver. Nonetheless, at first, it was neglected. 
Furthermore, without the much knowledge on the antenna, initially no wire was
connected to the wire end of the chip.  It did transmit and receive signals, however, the
efficiency was rather low – the wireless communication did not work for more than
about 7 meters.  Then, we put an antenna blindly, just hoping for the best, without
realizing that the antenna put on was, accidentally close to the half of the quarter
wavelength.  Then the wireless communication barely worked, only in even a short
distance of few meters.  Then we came back to the antenna theory, and put on the
quarter wavelength wire as an antenna and achieved almost maximum value shown in
the specification of the wireless transceiver – 300 ft which is close to 100 meters.  This
was verified by moving the transmitter from one end of the Duffield hall to the other
end of the hall.
Another important feature to be noted was that the antennas at the transmitter
and the receiver had to be aligned for the maximum gain.  Initially, the two antennas
were put close to orthogonal and the wireless communication did not work – as
predicted from the antenna theory, in the orthogonal alignment, the receiver and
transmitter did not ‘talk’.  Only after the antennas were aligned parallel to each other,
they started to communicate.  It did not matter whether one antenna was pointing
downward while the other was pointing upward or not.  This was anticipated because
the quarter wavelength antenna in fact behaved as the half wavelength dipole with the
imaginary quarter wave antenna at the other end of the real quarter wave antenna (two
quarter wavelength make a half wavelength dipole).
 
9.1 BATTERIES
As mentioned previously mentioned, in order to allow wireless control over the
airship, the motor was actuated through batteries.  At first, we did not recognize the
importance of the power-hour supported by a battery.  Instead, we mistakenly took a
voltage of a battery as a number that characterizes the battery.  As a result, initially,
small button cell batteries were tried.  It was not too long after the trial when we
realized that the small batteries could not drive the motors strongly enough as their
power was limited.  In operating a device that requires both high voltage as well as high
current, the product of the two parameters, power, was important.  Therefore, the 9 volt
battery was used instead of the button cell batteries to drive the motors and indeed such
motors offered much more strength to the motor drive.  Therefore, 9-volt battery was
used to control the four motors in the airship.  In all the cases, only the Energizer
batteries were used.
Moreover, it was interesting to note that different brands of batteries differed by a lot in
terms of their power-hours.  Though they seemed to run the motor the same in terms of
64

the motor speed as long as their sizes were the same, brand-named batteries ran the
motors for much longer than what the low-name batteries could do – almost twice as
long.
After the motor battery has been replaced, there came the problem in controlling
the motors through MCU.  It was later found that it was also a problem with a battery
as well.  Initially used three serially connected three button batteries were not enough to
keep the MCU running.  The set of batteries had too small of power, and therefore,
could not provide enough voltage and current for the regulator – 7.5 volts.  At the end,
serially connected five button cell batteries and serially connected five coin cell
batteries were paralleled connected to be used for MCU in the airship in order to
provide sufficient voltage and current for the motor control.
In order to reduce the mass of the airship module as much as possible, we tried
to make a motor module without using an opto-isolator.  Nonetheless, this resulted in a
miserable failure as the inductive coupling-induced voltage spikes and noise created too
much of disturbance for MCU to function properly.  Essentially, the disturbance was
large enough that the motors were not able

REFERENCES
65

10. 1 JOURNELS
i. [1] Mueller, J. B., Zhao, Y., and Paluszek, M., “Development of an
Aerodynamic Model and Control Law
ii. Design for a High-Altitude Airship,” AIAA Unmanned Unlimited Conference,
No. AIAA-6479, AIAA,
iii. Chicago, IL, 2004.
iv. [2] Zhao, Y., Garrard, W., and Mueller, J. B., “Bennefits of Trajectory
Optimization for Airship Flights,”
v. AIAA Unmanned Unlimited Conference, No. AIAA-6527, AIAA, Chicago, IL,
2004.
vi. [3] Jones, S. P. and DeLaurier, J. D., “Aerodynamic Estimation Techniques for
Aerostats and Airships,”
vii. AIAA Lighter-than-Air Systems Conference, AIAA, Annapolis, MD, 1981.
viii. Guidance and Control of High-Altitude Navigation Airships.
ix. Development of an Aero dynamical Model and control law for airship.

10.2 BOOKS
i. [4]Antenna Theory by Constantnie A. Balanis.
ii. [5]Radio and Wave Propogation by K.D. Prasad

10.3 WEBSITES:
i. [6]www.engineersgarage.com
ii. [7]www.radiotronix.com
iii. [8]www.allpinout.com
iv. [9]www.atmel.com

You might also like