You are on page 1of 112

ABSTRACT

Appropriate environmental conditions are necessary for optimum plant growth,


improved crop yields, and efficient use of water and other resources. Automating the data
acquisition process of the soil conditions and various climatic parameters that govern plant
growth allows information to be collected at high frequency with less labor requirements. The
existing systems employ PC or SMS-based systems for keeping the user continuously informed
of the conditions inside the greenhouse; but are unaffordable, bulky, difficult to maintain and
less accepted by the technologically unskilled workers.

The objective of this project is to design a simple, easy to install, microcontroller-based


circuit to monitor and record the values of temperature, humidity, soil moisture and sunlight
of the natural environment that are continuously modified and controlled in order optimize
them to achieve maximum plant growth and yield. The controller used is a low power, cost
efficient chip manufactured by ATMEL having 8K bytes of on-chip flash memory. It
communicates with the various sensor modules in real-time in order to control the light,
aeration and drainage process efficiently inside a greenhouse by actuating a cooler, fogger,
dripper and lights respectively according to the necessary condition of the crops. An integrated
Liquid crystal display (LCD) is also used for real time display of data acquired from the
various sensors and the status of the various devices. Also, the use of easily available
components reduces the manufacturing and maintenance costs. The design is quite flexible as
the software can be changed any time. It can thus be tailor-made to the specific requirements
of the user.

This makes the proposed system to be an economical, portable and a low maintenance
solution for greenhouse applications, especially in rural areas and for small scale agriculturists.
CONTENTS

NAME OF THE CHAPTER PAGE NO.

1. INTRODUCTION

1.1 CURRENT SCENARIO……………………………………………………………..2


1.1.1 MANUAL SETUP……………………………………………………………..2
1.1.2 PARTIALLY AUTOMATED SETUP…………………………………….…..2
1.1.3 FULLY AUTOMATED SETUP……………………………………….……...3
1.2 PROBLEM DEFINITION…………………………………………………………...3
1.3 PROPOSED MODEL FOR AUTOMATION OF GREENHOUSE………………...4

2. SYSTEM MODEL

2.2 BASIC MODEL OF THE SYSTEM……………………………………………......6


2.3 PARTS OF THE SYSTEM………………………………………………………….7
2.4 STEPS FOLLOWED IN DESIGNING THE SYSTEM…………………………….8

3. BASIC THEORY

3.1 LIFE PROCESSES INSIDE A GREENHOUSE


3.1.1 PHOTOSYNTHETIC PROCESS…………………………………………….12
3.1.2 TRANSPIRATION…………………………………………………………...13

4. HARDWARE DESCRIPTION

4.1 TRANSDUCERS
4.1.1 SOIL MOISTURE SENSOR………………………………………………...16
4.1.1.1 FEATURES 16
4.1.1.2 FUNCTIONAL DESCRIPTION 17
4.1.2 LIGHT SENSOR
4.1.2.1 FEATURES 18
4.1.2.2 FUNCTIONAL DESCRIPTION 19
4.1.3 HUMIDITY SENSOR
4.1.3.1 20
FEATURES-------------------------------------------------------------
4.1.3.2 FUNCTIONAL 21
DESCRIPTION--------------------------------
4.1.4 TEMPERATURE SENSOR
4.1.4.1 22
FEATURES-----------------------------------------------------------
4.1.4.2 FUNCTIONAL 23
DESCRIPTION------------------------------------
4.2 ANALOG TO DIGITAL CONVERTER (ADC 0809)
4.2.1 24
DESCRIPTION----------------------------------------------------------------
4.2.2 24
FEATURES---------------------------------------------------------------------
4.2.3 CONVERSION METHOD 25
USED-------------------------------------------
4.2.4 PIN DIAGRAM OF ADC 26
0809----------------------------------------------
4.2.5 SELECTING AN ANALOG 27
CHANNEL-----------------------------------------
4.3 CLOCK CIRCUITRY FOR THE ADC
4.3.1 FUNCTIONAL 29
4.4 MICROCONTROLLER
4.4.1 CRITERIA FOR CHOOSING A 31
MICROCONTROLLER--------------------------
4.4.2 31
DESCRIPTION-----------------------------------------------------------------
4.4.2 32
FEATURES---------------------------------------------------------------------
4.4.4 PIN 33
CONFIGURATION---------------------------------------------------
4.4.5 BLOCK 34
DIAGRAM--------------------------------------------------------
4.4.6 PIN 35
DESCRIPTION---------------------------------------------------------
4.4.6.1 POWER-ON RESET 36
CIRCUIT-----------------------------------
4.4.6.2 OSCILLATOR CLOCK 37
CIRCUIT----------------------------------
4.4.7 SPECIAL FUNCTION 38
REGISTERS-------------------------------------
4.4.8 MEMORY 39
ORGANIZATION----------------------------------------------
4.4.9 WATCHDOG 40
TIMER------------------------------------------------------

4.4.10 TIMERS AND COUNTERS………………………………………………..41


4.4.11 INTERRUPTS………………………………………………….…………...42
4.4.12 MICROCONTROLLER CONFIGURATION USED IN THE SET-UP…..42
4.5 LIQUID CRYSTAL DISPLAY……………………………………………..…….44
4.5.1 SIGNALS TO THE LCD………………………………………………..........44
4.5.1.1 LOGIC STATUS ON THE CONTROL LINES………………………45
4.5.1.2 WRITING AND READING DATA FROM THE LCD………………45
4.5.2 PIN DESCRIPTION………..……………………………………………........45
4.6 ALARM CIRCUITRY……………………………………………………...……..46
4.7 RELAYS…………………………………………………………………...….........47
4.8 POWER SUPPLY CONNECTION……………………………………….……...50

5. SYSTEMS USED IN WORK MODE

5.1 DRIP IRRIGATION SYSTEM FOR CONTROLLING SOIL MOISTURE……….54


5.2 ARTIFICIAL GROWING LIGHTS FOR CONTROLLING ILLUMINATION......55
5.3 HEATERS AND FANS FOR CONTROLLING TEMPERATURE
5.3.1 COOLING EQUIPMENT……………………………………………….…….56
5.3.2 HEATING EQUIPMENT…………………………………………….……….56
5.4 HUMIDIFICATION SYSTEMS……………………………………………………56

6. SOFTWARE

6.1 INTRODUCTION TO KEIL SOFTWARE


6.1.1 WHAT IS µVision3?..........................................................................................59
6.1.2 STEPS FOLLOWED IN CREATING AN APPLICATION IN µVision3……59
6.1.3 DEVICE DATABASE………………………………………………………...64
6.1.4 PERIPHERAL SIMULATION………………………………………………..64
6.2 PROGRAMMER……………………………………………………………………64
6.3 ProLoad PROGRAMMING SOFTWARE………………………………………..65
7. FLOWCHART

7.1 FLOWCHART REPRESENTING THE WORKING OF THE SYSTEM…………...68


7.2 FLOWCHART FOR LCD INITIALIZATION………………………..………….......69
7.3 FLOWCHART FOR ADC INITIALIZATION……………………………………….71

8. RESULT ANALYSIS

8.1 SENSOR READINGS


8.1.1 SOIL MOISTURE SENSOR……………………………….………..…….……..74
8.1.2 LIGHT SENSOR……………………………………………………………........75
8.1.3 HUMIDITY SENSOR………………………………………………………........76
8.1.4 TEMPERATURE SENSOR………………………………………………………77

9. ADVANTAGES AND DISADVANTAGES

9.1 ADVANTAGES………………………………………………………………………..80
9.2 DISADVANTAGES……………………………………………………………………80

10. FUTURE SCOPE …………………………………………………………………….82

11. CONCLUSION……………………………………………………………………….84

I. REFERENCES…………………………………………………………………….85
II. ANNEXURE-I…………………………………………………………………….. 87
III. ANNEXURE-II ……………………………………………………………………91
IV. ANNEXURE-III…………………………………………………………………...95
V. ANNEXURE-IV…………………………………………………………………...97
LIST OF FIGURES

I. Figure 2.1 Block diagram of the system……………………………………..6

II. Figure 3.2 Block diagram of photosynthesis………………………………..12

III. Figure 3.2 Transpiration…………………………………………………….14

IV. Figure 4.1 Soil moisture sensor circuit……………………………………..17

V. Figure 4.2 Light Dependent Resistor……………………………………….18

VI. Figure 4.2.1 Structure of a Light Dependent Resistor……………………...18

VII. Figure 4.3 Light sensor circuit……………………………………………...19

VIII. Figure 4.4 HIH-4000-001 Humidity sensor………………………………... 20

IX. Figure 4.5 Humidity sensor circuit………………………………………….21

X. Figure 4.6 LM35 temperature sensor……………………………………….22

XI. Figure 4.7 Temperature sensor circuit……………………………………...23

XII. Figure 4.8 Getting data from the analog world……………………………..24

XIII. Figure 4.9 Block diagram of ADC 0809……………………………………25

XIV. Figure 4.10 Flowchart explaining the Successive Approximation method...26

XV. Figure 4.11 Pin diagram of ADC 0809……………………………………..26

XVI. Figure 4.12 ADC 0809 pin details for the system…………………………..28

XVII. Figure 4.13 Timing diagram of ADC 0809…………………………………29

XVIII. Figure 4.14 Clock circuitry for the ADC…………………………………...30

XIX. Figure 4.15 The effect of using a Schmitt trigger instead of a comparator…30

XX. Figure 4.16 Pin diagram of AT89S52………………………………………33

XXI. Figure 4.17 Block diagram of the microcontroller………………………….34

XXII. Figure 4.18 Power-on reset circuit………………………………………….36


XXIII. Figure 4.19 Oscillator clock circuit…………………………………………38

XXIV. Figure 4.20 Internal memory block…………………………………………40

XXV. Figure 4.21 Microcontroller Pin Details…………………………………….43

XXVI. Figure 4.22 Address locations for a 2x16 line LCD………………………..44

XXVII. Figure 4.23 Pin diagram of 2x16 line LCD…………………………………46

XXVIII. Figure 4.24 Electrical symbol of a buzzer…………………………………..46

XXIX. Figure 4.25 Buzzer circuitry………………………………………………..47

XXX. Figure 4.26 Sugar Cube Relay……………………………………………...48

XXXI. Figure 4.27 Circuit symbols of relays………………………………………49

XXXII. Figure 4.28 Relay circuitry…………………………………………………50

XXXIII. Figure 4.29 +5V Power supply circuit……………………………………...51

XXXIV. Figure 4.30 +12V Power supply circuit…………………………………….51

XXXV. Figure 5.1 Drip irrigation system…………………………………………...54

XXXVI. Figure 6.1 Window for choosing the target device…………………………60

XXXVII. Figure 6.2 Project workspace pane………………………………………….61

XXXVIII. Figure 6.3 Project options dialog…………………………………………...61

XXXIX. Figure 6.4 “Save All” and “Build All Target Files” buttons………………..61

XL. Figure 6.5 µVision3 Debugger window…………………………………….62


XLI. Figure 6.6 ‘Reset’, ‘Run’ and ‘Step into’ options…………………………..63
XLII. Figure 6.7 Programming window…………………………………………..66
XLIII. Annexure-I: Snapshots of the System…………………………………..88-90
LIST OF TABLES

I. Table 2.1 Importance of the various parameters…………………………….8

II. Table 4.1 Selection of the input channels…………………………………..27

III. Table 4.2 Alternate functions of Port 3……………………………………..36

IV. Table 4.3 Pin description of the LCD………………………………………46

V. Table 8.1 Soil moisture sensor readings……………………………………74

VI. Table 8.2 Light sensor readings…………………………………………….75

VII. Table 8.3 Humidity sensor readings………………………………………..76

VIII. Table 8.4 Temperature sensor readings…………………………………….77


CHAPTER 1
INTRODUCTION
INTRODUCTION

We live in a world where everything can be controlled and operated


automatically, but there are still a few important sectors in our country where
automation has not been adopted or not been put to a full-fledged use, perhaps because of
several reasons one such reason is cost. One such field is that of agriculture. Agriculture
has been one of the primary occupations of man since early civilizations and even today
manual interventions in farming are inevitable. Greenhouses form an important part of
the agriculture and horticulture sectors in our country as they can be used to grow plants
under controlled climatic conditions for optimum produce. Automating a greenhouse
envisages monitoring and controlling of the climatic parameters which directly or
indirectly govern the plant growth and hence their produce. Automation is process control
of industrial machinery and processes, thereby replacing human operators.

1.1 CURRENT SCENARIO

Greenhouses in India are being deployed in the high-altitude regions where the
sub- zero temperature up to -40° C makes any kind of plantation almost impossible and in
arid regions where conditions for plant growth are hostile. The existing set-ups primarily
are:

1.1.1 MANUAL SET-UP:

This set-up involves visual inspection of the plant growth, manual irrigation of
plants, turning ON and OFF the temperature controllers, manual spraying of the
fertilizers and pesticides. It is time consuming, vulnerable to human error and hence
less accurate and unreliable.

1.1.2 PARTIALLY AUTOMATED SET-UP:

This set-up is a combination of manual supervision and partial automation and


is similar to manual set-up in most respects but it reduces the labor involved in
terms of irrigating the set-up.
1.1.3 FULLY- AUTOMATED:

This is a sophisticated set-up which is well equipped to react to most of the


climatic changes occurring inside the greenhouse. It works on a feedback system which
helps it to respond to the external stimuli efficiently. Although this set-up overcomes
the problems caused due to human errors it is not completely automated and expensive.

1.2 PROBLEM DEFINITION

A number of problems associated with the above mentioned systems are


enumerated as below:

1. Complexity involved in monitoring climatic parameters like humidity, soil moisture,


illumination, soil pH, temperature, etc which directly or indirectly govern the
plant growth.

2. Investment in the automation process are high, as today’s greenhouse control systems
are designed for only one parameter monitoring (as per GKVK research center); to
control more than one parameter simultaneously there will be a need to buy
more than one system.

3. High maintenance and need for skilled technical labor. The modern proposed systems
use the mobile technology as the communication schemes and wireless data acquisition
systems, providing global access to the information about one’s farms. But it suffers
from various limitations like design complexity, inconvenient repairing and high
price. Also the reliability of the system is relatively low, and when there are
malfunctions in local devices, all local and tele data will be lost and hence the whole
system collapses. More over farmers in India do not work under such sophisticated
environment and find no necessity of such an advanced system, and cannot afford the
same.

Keeping these issues in view, a microcontroller based monitoring and control


system is designed to find implementation in the near future that will help Indian farmers.
1.3 PROPOSED MODEL FOR AUTOMATION OF GREENHOUSE

The proposed system is an embedded system which will closely monitor and
control the microclimatic parameters of a greenhouse on a regular basis round the
clock for cultivation of crops or specific plant species which could maximize their
production over the whole crop growth season and to eliminate the difficulties involved in
the system by reducing human intervention to the best possible extent. The system
comprises of sensors, Analog to Digital Converter, microcontroller and actuators.

When any of the above mentioned climatic parameters cross a safety threshold
which has to be maintained to protect the crops, the sensors sense the change
and the microcontroller reads this from the data at its input ports after being converted
to a digital form by the ADC. The microcontroller then performs the needed actions by
employing relays until the strayed-out parameter has been brought back to its optimum
level. Since a microcontroller is used as the heart of the system, it makes the set-up low-
cost and effective nevertheless. As the system also employs an LCD display for
continuously alerting the user about the condition inside the greenhouse, the entire set-up
becomes user friendly.

Thus, this system eliminates the drawbacks of the existing set-ups mentioned in the
previous section and is designed as an easy to maintain, flexible and low cost solution.
CHAPTER 2
SYSTEM MODEL
BASIC MODEL OF THE SYSTEM

Fig. 2.1 Block diagram of the system


2.1 PARTS OF THE SYSTEM:

• Sensors (Data acquisition system)


ƒ Temperature sensor (LM35)
ƒ Humidity sensor / Soil Moisture sensor
ƒ Light sensor (LDR)
ƒ Wind Sensor
• Analog to Digital Converter ( ADC 0808/0809)
• Microcontroller (AT89S52)
• Liquid Crystal Display (Hitachi's HD44780)
• Actuators – Relays
• Devices controlled
ƒ Water Pump (simulated as a bulb)
ƒ Sprayer (simulated as a bulb)
ƒ Cooler (simulated as a fan)
ƒ Artificial Lights (simulated as a bulb)

TRANSDUCERS (Data acquisition system):

This part of the system consists of various sensors, namely soil moisture, humidity,
temperature and light. These sensors sense various parameters- temperature, humidity, soil
moisture and light intensity and are then sent to the Analog to Digital Converter.

ANALOG TO DIGITAL CONVERDER (ADC):

The analog parameters measured by the sensors are then converted to


corresponding digital values by the ADC.

MICROCONTROLLER:

The microcontroller is the heart of the proposed embedded system. It


constantly monitors the digitized parameters of the various sensors and verifies
them with the
predefined threshold values and checks if any corrective action is to be taken for
the

condition at that instant of time. In case such a situation arises, it activates the
actuators to perform a controlled operation.
ACTUATORS:

An array of actuators can be used in the system such as relays, contactors, and
change over switches etc. They are used to turn on AC devices such as motors,
coolers, pumps, fogging machines, sprayers. For the purpose of demonstration relays have
been used to drive AC bulbs to simulate actuators and AC devices. A complete working
system can be realized by simply replacing these simulation devices by the actual
devices.

DISPLAY UNIT:

A Liquid crystal display is used to indicate the present status of parameters and the
respective AC devises (simulated using bulbs). The information is displayed in two modes
which can be selected using a push button switch which toggles between the modes. Any
display can be interfaced to the system with respective changes in driver circuitry and
code.

2.2 STEPS FOLLOWED IN DESIGNING THE SYSTEM:

Three general steps can be followed to appropriately select the control system:

Step # 1: Identify measurable variables important to production.

• It is very important to correctly identify the parameters that are going to be


measured by the controller’s data acquisition interface, and how they are to be
measured. The
set of variables typically used in greenhouse control is shown below:

Sl. No. Variable to be monitored Its Importance


1 Temperature Affects all plant metabolic functions.

2 Humidity Affects transpiration rate and the plant's


thermal
3 Soil moisture controland
Affects salinity, mechanisms.
pH of irrigation water

4 Solar Radiation Affects photosynthetic rate, responsible for


most
5 Speed of the Wind Affectsthermal load
the plants during warm
polination and growth

Table 2.1 Importance of the various parameters


An electronic sensor for measuring a variable must readily available, accurate,
reliable

and low in cost. If a sensor is not available, the variable cannot be incorporated into
the control system, even if it is very important. Many times variables that cannot be
directly or continuously measured can be controlled in a limited way by the system.
For example, fertility levels in nutrient solutions for greenhouse production are difficult
to measure continuously.

Step#2:Investigate the control strategies.

• An important element in considering a control system is the control strategy that


is to be followed. The simplest strategy is to use threshold sensors that
directly affect actuation of devices. For example, the temperature inside a
greenhouse can be affected by controlling heaters, fans, or window openings
once it exceeds the maximum allowable limit. The light intensity can be
controlled using four threshold levels. As the light intensity decreases one light
may be turned on. With a further decrease in its intensity a second light would be
powered, and so on; thus ensuring that the plants are not deprived of adequate
sunlight even during the winter season or a cloudy day.
• More complex control strategies are those based not only on the current values of
the controlled variables, but also on the previous history of the system, including
the rates at which the system variables are changing.

Step #3: Identify the software and the hardware to be used.

• It is very important that control system functions are specified before deciding
what software and hardware system to purchase. The model chosen must have
the ability
to:
1. Expand the number of measured variables (input subsystem) and
controlled devices (output subsystem) so that growth and changing
needs of the production operation can be satisfied in the future.
2. Provide a flexible and easy to use interface.
3. It must ensure high precision measurement and must have the ability
resist noise.
Hardware must always follow the selection of software, with the hardware required
being supported by the software selected. In addition to functional capabilities, the
selection of the control hardware should include factors such as reliability,
support, previous
experiences with the equipment (successes and failures), and cost.
CHAPTER 3
BASIC THEORY
BASIC THEORY

3.1 LIFE PROCESSES INSIDE GREENHOUSE:

3.1.1 PHOTOSYNTHETIC PROCESS

The two major life-processes occurring in plants are photosynthesis and


transpiration. Photosynthesis is the conversion of light energy into chemical energy by
living organisms. The raw materials are carbon dioxide and water; the energy source is
sunlight; and the end- products are oxygen and (energy rich) carbohydrates, for
example sucrose, glucose and starch. This process is arguably the most important
biochemical pathway, since nearly all
life on Earth either directly or indirectly depends on it.

Fig 3.1 Block diagram of photosynthesis


A commonly used but slightly simplified equation for photosynthesis is:

6 CO2(g) + 12 H2O(l) + photons → C6H12O6(aq.) + 6 O2(g) + 6 H2O(l) …(3.1)


Carbon dioxide + water + light energy → glucose + oxygen + water

Light energy obtained from the sun is very essential for photosynthesis. The
photons present in light are responsible for triggering the light-reaction in plants.
Plants need an optimum amount of exposure to light in a day. This optimum period
is called its photo- period. The plant sensitivity curve for photosynthesis has its peak
at the red side of the spectrum. This indicates that providing plants with the
wavelengths best suited to photosynthesis is most efficient with the use of artificial light.
Tests show a mean deviation from the average sensitivity curve of less than 5% for a
wide variety of plants. The curve shows that the maximum sensitivity for
photosynthesis lies in the far red at approximately
675 nm. The plant sensitivity curve disputes two common misconceptions. The first is that
an "ideal" plant growing lamp duplicates the spectral energy distribution of the sun.
Sunlight has a continual spectrum, radiating energy in wavelengths that contribute less to
photosynthesis, and are therefore "wasted" on the plant. For this reason, many lamps are
more efficient than sunlight for plants.

Plants need dark periods. Periods of light (called photo-periods) and dark periods
and their relative lengths have an effect on plant maturity. The dark period of each day
affects flowering and seeding of most plants. Although many plants can grow under
continuous light, nearly all plants prefer a dark period each day for normal growth. All
plants need some darkness to grow well or to trigger flowering. The ideal photoperiods of
plants vary, some preferring long days and short nights; others the reverse; and some do
best when the length of
the night and day periods are
equal.

3.1.2 TRANSPIRATION
Transpiration is the evaporation of water from the aerial parts of plants,
especially leaves but also stems, flowers and roots Transpiration also cools plants and
enables mass flow of mineral nutrients and water from roots to shoots. Mass flow is
caused by the decrease in hydrostatic (water) pressure in the upper parts of the plants
due to the diffusion of water out of stomata into the atmosphere. Water is absorbed at
the roots by osmosis, and any dissolved mineral nutrients travel with it through the
xylem.
The rate of transpiration is directly related to the degree of stomatal opening,
and to the evaporative demand of the atmosphere surrounding the leaf. The amount of
water lost by a plant depends on its size, along with the surrounding light intensity,
temperature, humidity, and wind speed (all of which influence evaporative demand).
Soil water supply and soil
temperature can influence stomatal opening, and thus the transpiration rate.

Fig 3.2 Transpiration

The moisture content in the soil is a very crucial factor in the process of
transpiration as the absorption of mineral salts from the soil through the process of
osmosis is directly dependent on the moisture content in the soil.

The greenhouse works best when the temperature is not too hot and not too cold.
Though it sounds simple in the spring and autumn we can easily have a wide range of
temperatures from the cold in the middle of the night to the excessive heat of the day
when the sun is shining. During the day the rays from the sun penetrate the greenhouse
and warm up and light up the surroundings. Light escapes through the glass walls but
the heat in form of infra-red radiations gets trapped inside the green house leading to an
incubating effect and the temperature inside gradually increases. This increased
temperature leads to an increase in
the rate of transpiration which is harmful to the plants.
CHAPTER 4
HARDWARE
DESCRIPTION
HARDWARE DESCRIPTION

4.1 TRANSDUCERS:
A transducer is a device which measures a physical quantity and converts it
into a signal which can be read by an observer or by an instrument. Monitoring and
controlling of a greenhouse environment involves sensing the changes occurring
inside it which can influence the rate of growth in plants. The parameters which
are of importance are the temperature inside the greenhouse which affect the
photosynthetic and transpiration processes are humidity, moisture content in the soil, the
illumination etc. Since all these parameters are interlinked, a closed loop (feedback)
control system is employed in monitoring it. The sensors used in this system are:

1. Humidity Sensor / Soil moisture Sensor


2. Light Sensor ( LDR (Light Dependent Resistor) )
3. Wind Sensor
4. Temperature Sensor (LM35)

4.1.1 SOIL MOISTURE SENSOR

4.1.1.1 Features of the Soil moisture sensor:

1. The circuit designed uses a 5V supply, fixed resistance of 100Ω, variable


resistance of 10ΚΩ, two copper leads as the sensor probes, 2N222N transistor.
2. It gives a voltage output corresponding to the conductivity of the soil.
3. The conductivity of soil depends upon the amount of moisture present in
it. It increases with increase in the water content of the soil.
4. The voltage output is taken at the transmitter which is connected to a
variable
resistance. This variable resistance is used to adjust the sensitivity of the sensor.
VCC SENSORLEADS

100 Ω
2N222N

ADC IN 5

10 k Ω

Fig. 4.1 Soil moisture sensor

4.1.1.2 Functional description of Soil moisture


sensor:
The two copper leads act as the sensor probes. They are immersed into the specimen
soil whose moisture content is under test. The soil is examined under three conditions:

Case#1: Dry condition- The probes are placed in the soil under dry conditions and
are inserted up to a fair depth of the soil. As there is no conduction path between the two
copper leads the sensor circuit remains open. The voltage output of the emitter in this
case ranges from 0 to 0.5V.
Case#2: Optimum condition- When water is added to the soil, it percolates through the
successive layers of it and spreads across the layers of soil due to capillary force. This
water increases the moisture content of the soil. This leads to an increase in its
conductivity which forms a conductive path between the two sensor probes leading to a
close path for the current flowing from the supply to the transistor through the sensor
probes. The voltage output of the circuit taken at the emitter of the transistor in the
optimum case ranges from 1.9 to 3.4V approximately.
Case#3: Excess water condition- With the increase in water content beyond the optimum
level, the conductivity of the soil increases drastically and a steady conduction path is
established between the two sensor leads and the voltage output from the sensor increases
no
further beyond a certain limit. The maximum possible value for it is not more than
4.2V.
4.1.2 LIGHT SENSOR

Light Dependent Resistor (LDR) also known as photoconductor or photocell, is a


device which has a resistance which varies according to the amount of light falling on its
surface. Since LDR is extremely sensitive in visible light range, it is well suited for the
proposed application.

Fig. 4.2 Light Dependent Resistor

4.1.2.1 Features of the light sensor:

• The Light Dependent Resistor (LDR) is made using the semiconductor


Cadmium
Sulphide (CdS).

• The light falling on the brown zigzag lines on the sensor causes the resistance
of the device to fall. This is known as a negative co-efficient. There are some
LDRs that work in the opposite way i.e. their resistance increases with light (called
positive co- efficient).
• The resistance of the LDR decreases as the intensity of the light falling on it
increases.
Incident photons drive electrons from the valence band into the conduction
band.

conduction band
Cadmium
Cadmiu
mSulphide Band
Sulphid valence band
e track gap

Fig. 4.2.1 Structure of a Light Dependent Resistor, showing Cadmium Sulphide


track and an atom to illustrate electrons in the valence and conduction
bands
4.1.2.2 Functional description

• An LDR and a normal resistor are wired in series across a voltage, as shown in
the circuit below. Depending on which is tied to the 5V and which to 0V, the
voltage at the point between them, call it the sensor node, will either rise or fall
with increasing light. If the LDR is the component tied directly to the 5V, the
sensor node will increase in voltage with increasing light

• The LDR's resistance can reach 10 k ohms in dark conditions and about 100 ohms
in full brightness.

• The circuit used for sensing light in our system uses a 10 kΩ fixed resistor
which is tied to +5V. Hence the voltage value in this case decreases with increase
in light intensity.

VC
C

10K Ω
ADC_IN4

LD
R

GN
D

Fig. 4.3 Light sensor circuit

• The sensor node voltage is compared with the threshold voltages for different
levels of light intensity corresponding to the four conditions- Optimum, dim, dark
and night.

• The relationship between the resistance RL and light intensity Lux


for a typical LDR is:

RL = 500 / Lux kΩ …(4.1)


• With the LDR connected to 5V through a 10K resistor, the output voltage of the
LDR
is :

Vo = 5*RL / (RL+10) …(4.2)

• In order to increase the sensitivity of the sensor we must reduce the value of the
fixed resistor in series with the sensor. This may be done by putting other
resistors in parallel with it.

4.1.3 HUMIDITY SENSOR

The humidity sensor HIH4000, manufactured by Honeywell is used for sensing


the humidity. It delivers instrumentation quality RH (Relative Humidity) sensing
performance in a low cost, solder able SIP (Single In-line Package). Relative humidity is
a measure, in percentage, of the vapour in the air compared to the total amount of vapour
that could be held
in the air at a given temperature.

Fig. 4.4 HIH-4000-001 Humidity Sensor

4.1.3.1 Features:
• Linear voltage output vs. %RH
• Laser trimmed interchangeability
• Low power design
• High accuracy
• Fast response time
• Stable, low drift performance
• Chemically resistant
• The RH sensor is a laser trimmed, thermoset polymer capacitive sensing element
with on-chip integrated signal conditioning. The sensing element's multilayer
construction provides excellent resistance to most application hazards such as
wetting, dust, dirt,
oils and common environmental chemicals.

VC
C

12.5 k Ω

Vin HIH4 GND


1

000
Vo
ut
3

To ADC IN6

Fig 4.5 Humidity sensor circuit

4.1.3.2 Functional description

• The sensor develops a linear voltage vs. RH output that is ratiometric to the
supply voltage. That is, when the supply voltage varies, the sensor output voltage
follows in the same proportion. It can operate over a 4-5.8 supply voltage range. At
5V supply voltage, and room temperature, the output voltage ranges from 0.8 to
3.9V as the humidity varies from 0% to 100% (noncondensing).
• The humidity sensor functions with a resolution of up to 0.5% of relative
humidity
(RH).
• With a typical current draw of only 200 µA, the HIH-4000 Series is ideally suited
for low drain, battery operated systems.
• The change in the RH of the surroundings causes an equivalent change in the
voltage
output. The output is an analog voltage proportional to the supply
voltage.
Consequently, converting it to relative humidity (RH) requires that both the
supply and sensor output voltages be taken into account according to the formula:

RH = ((Vout / Vsupply) – 0.16) /0.0062, typical at 25°C ….(4.3)

• This voltage is converted to the digital form by the ADC and then sent as input to
the microcontroller which reads the data.

4.1.4 TEMPERATURE SENSOR

National Semiconductor’s LM35 IC has been used for sensing the temperature. It
is an integrated circuit sensor that can be used to measure temperature with an electrical
o
output proportional to the temperature (in C). The temperature can be measured more
accurately
with it than using a thermistor. The sensor circuitry is sealed and not subject to oxidation,
etc.

Fig. 4.6 LM35 temperature sensor

4.1.4.1 Features:
• Calibrated directly in ° Celsius (Centigrade)
• Linear + 10.0 mV/°C scale factor
• 0.5°C accuracy guaranteed (at +25°C)
• Rated for full −55° to +150°C range
• Suitable for remote applications
• Low cost due to wafer-level trimming
• Operates from 4 to 30 volts
• Less than 60 µA current drain
• Low self-heating, 0.08°C in still air
• Nonlinearity only ±1⁄4°C typical

Fig. 4.7 Temperature sensor circuit

4.1.4.2 Functional description:

o
• The sensor has a sensitivity of 10mV / C.
• The output of LM35 is amplified using a LM324 single power supply (+5V) op-
amp.
• The op-amp is designed to have a gain of 5.
• The circuitry measures temperatures with a resolution of up to 0.5 degree Celsius.
• The output voltage is converted to temperature by a simple conversion factor.
The general equation used to convert output voltage to temperature is:

o o
Temperature ( C) = (Vout * 100 ) / 5 C …(4.4)

o
So if Vout is 5V, then, Temperature = 100 C

• The output voltage varies linearly with temperature.


4.2 ANALOG TO DIGITAL CONVERTER (ADC 0809)
In physical world parameters such as temperature, pressure, humidity, and
velocity are analog signals. A physical quantity is converted into electrical signals. We
need an analog to digital converter (ADC), which is an electronic circuit that converts
continuous signals into discrete form so that the microcontroller can read the data.
Analog to digital converters
are the most widely used devices for data acquisition.

Analog world Signal Analog to


(temperature, Transducer Conditioning Digital Converter Microcontroller
pressure, etc.)

Fig. 4.8 Getting data from the analog


world

4.2.1 DESCRIPTION
The ADC0809 data acquisition component is a monolithic CMOS device with an
8- bit analog-to-digital converter, 8-channel multiplexer and microprocessor compatible
control logic. The 8-bit A/D converter uses successive approximation as the conversion
technique. The converter features a high impedance chopper stabilized comparator, a
256R voltage divider with analog switch tree and a successive approximation register.
The 8-channel multiplexer can directly access any of 8-single-ended analog signals.
The design of the ADC0809 has been optimized by incorporating the most
desirable aspects of several A/D conversion techniques. The device offers high speed, high
accuracy, minimal temperature dependence, excellent long-term accuracy and
repeatability, and consumes minimal power. These features make it ideally suited for
applications from process and machine control to consumer and automotive applications.

4.2.2 FEATURES
1. Easy interface to all microcontrollers.
2. Operates ratiometrically or with 5 VDC or analog span adjusted voltage reference.
3. No zero or full-scale adjust required.
4. 8-channel multiplexer with address logic.
5. 0V to 5V input range with single 5V power supply.
6. Outputs meet TTL voltage level specifications.
7. 28-pin molded chip carrier package.

Fig. 4.9 Block diagram of ADC 0809

4.2.3 CONVERSION METHOD USED


Following are the most used conversion methods:
ƒ Digital-Ramp ADC
ƒ Successive Approximation ADC
ƒ Flash ADC
Successive approximation ADC is suitable for the proposed application. It is
much faster than the digital ramp ADC because it uses digital logic to converge on the
value closest to the input voltage. A comparator and a DAC (Digital to Analog
Converter) are used in the
process. A flowchart explaining the working is shown below.
Fig. 4.10 Flowchart explaining the Successive approximation method

4.2.4 PIN DIAGRAM OF ADC 0808/0809

Fig. 4.11 Pin diagram of ADC 0809


We use A, B, C addresses to select IN0-IN7 and activate Address latch enable
(ALE) to latch in the address. SC is for Start Conversion. EOC is for End of Conversion
and OE is for Output Enable. The output pins D0-D7 provides the digital output from
the chip. Vref (-) and Vref (+) are the reference voltages.

4.2.5 SELECTING AN ANALOG CHANNEL


How to select the channel using three address pins A, B, C is shown in Table below:

Select Analog Channel C B A


IN0 0 0 0
IN1 0 0 1
IN2 0 1 0
IN3 0 1 1
IN4 1 0 0
IN5 1 0 1
IN6 1 1 0
IN7 1 1 1

Table 4.1 Selection of the input channels

The ADC 0804 is most widely used chip, but since it has only one analog input,
ADC
0809 is chosen as this chip allows the monitoring of up to 8 different transducers using only
a single chip. The 8 analog input channels are multiplexed and selected according to
the requirement. But for the proposed application only the last 4 channels i.e., IN4, IN5, IN6
and IN7 are used to monitor the four parameters- temperature, humidity, soil moisture and
light intensity. Hence the address line ADD_C is given to Vcc (+ 5V) as it is always high
in this case. Vref (+) and Vref (-) set the reference voltages. If Vref (-) =Gnd and Vref (+)
=5V, the step size is 5V/256=19.53.
Since there is no self clocking in this chip, the clock must be provided from an
external source to the Clock (CLK) pin. The 8-bit output from the ADC is given to Port 0
of
the microcontroller and the control signals ADD_A, ADD_B, ADD_C, ALE, START, OE,
EOC are given to Port 1 as shown in the figure below.
+5V

11
26 17

IN0 VCC D0 PIN 1.0 OF MC


27 14
PIN 1.1 OF MC
IN1 D1
28 15 PIN 1.2 OF MC
IN2 D2
PIN 1.3 OF MC
1 8
IN3 D3
PIN 1.4 OF MC
2 18
IN4 D4 PIN 1.5 OF MC
TEMPERATURE SENSOR
3 19 PIN 1.6 OF MC
MOISTURE SENSOR IN5 D5
PIN 1.7 OF MC
4 ADC0809 20
HUMIDITY SENSOR IN6 D6

5 21
IN7 D7
LIGHT SENSOR
12 25
Vref+ ADD_A
+5v PIN 3.4 OF MC
16 24
Vref- ADD_B PIN 3.5 OF MC
23
10 VCC
CLOCK ADD_C
6 PIN 3.1 OF MC
9 OE
PIN 3.0 OF MC START
EOC PIN 3.7 OF MC
7 22
GND ALE
PIN 3.3 OF MC

13

Fig. 4.12 ADC 0809 pin details as used for this application

At a certain point of time, even though there is no conversion in progress


the ADC0809 is still internally cycling through 8 clock periods. A start pulse can occur
any time during this cycle but the conversion will not actually begin until the
converter internally cycles to the beginning of the next 8 clock period sequence. As
long as the start pin is held
high no conversion begins, but when the start pin is taken low the conversion will start
within
8 clock periods. The EOC output is triggered on the rising edge of the start pulse. It, too, is
controlled by the 8 clock period cycle, so it will go low within 8 clock periods of the
rising edge of the start pulse. One can see that it is entirely possible for EOC to go low
before the conversion starts internally, but this is not important, since the positive
transition of EOC, which occurs at the end of a conversion, is what the control logic is
looking for. Once EOC does go high this signals the interface logic that the data
resulting from the conversion is
ready to be read. The output enable (OE) is then raised
high.

Fig 4.13 Timing diagram of ADC 0809

4.3 CLOCK CIRCUITRY FOR ADC:

4.3.1 Functional Description:

The clock for the ADC is generated using the IC CD4093, which is a 2-input
Schmitt triggered NAND gate. A Schmitt trigger is a comparator circuit that incorporates
positive feedback.

The Control pin is pulled high and the capacitor charges and discharges producing
alternate patterns of 0’s and 1, generating a square waveform. When the input is higher
than a certain chosen threshold, the output is high; when the input is below another
(lower) chosen threshold, the output is low; when the input is between the two, the
output retains its value.
The trigger is so named because the output retains its value until the input
changes
sufficiently to trigger a change. This dual threshold action is called hysteresis, and
implies
that the Schmitt trigger has some memory.

Fig. 4.14 Clock circuitry for ADC

The benefit of a Schmitt trigger over a circuit with only a single input threshold is
greater stability (noise immunity). With only one input threshold, a noisy input signal
near that threshold could cause the output to switch rapidly back and forth from noise
alone. A noisy Schmitt Trigger input signal near one threshold can cause only one switch
in output value, after which it would have to move to the other threshold in order to
cause another
switch.

Fig. 4.15 The effect of using a Schmitt trigger (B) instead of a comparator (A)
4.4 MICROCONTROLLER (AT89S52)

4.4.1CRITERIAFORCHOOSING A MICROCONTROLLER

The basic criteria for choosing a microcontroller suitable for the application are:

1) The first and foremost criterion is that it must meet the task at hand efficiently and cost
effectively. In analyzing the needs of a microcontroller-based project, it is seen whether an
8- bit, 16-bit or 32-bit microcontroller can best handle the computing needs of the task
most effectively. Among the other considerations in this category are:
(a) Speed: The highest speed that the microcontroller supports.
(b) Packaging: It may be a 40-pin DIP (dual inline package) or a QFP (quad
flat package), or some other packaging format. This is important in terms of space,
assembling, and prototyping the end product.
(c) Power consumption: This is especially critical for battery-powered
products. (d) The number of I/O pins and the timer on the chip.
(f) How easy it is to upgrade to higher –performance or lower consumption
versions. (g) Cost per unit: This is important in terms of the final cost of the
product in which a microcontroller is used.
2) The second criterion in choosing a microcontroller is how easy it is to develop products
around it. Key considerations include the availability of an assembler, debugger, compiler,
technical support.
3) The third criterion in choosing a microcontroller is its ready availability in
needed quantities both now and in the future. Currently of the leading 8-bit
microcontrollers, the
8051 family has the largest number of diversified suppliers. By supplier is meant a
producer besides the originator of the microcontroller. In the case of the 8051, this has
originated by Intel several companies also currently producing the 8051.
Thus the microcontroller AT89S52, satisfying the criterion necessary for the proposed
application is chosen for the task.

4.4.2 ESCRIPTION:

The 8051 family of microcontrollers is based on an architecture which is


highly optimized for embedded control systems. It is used in a wide variety of
applications from
military equipment to automobiles to the keyboard. Second only to the Motorola 68HC11
in eight bit processors sales, the 8051 family of microcontrollers is available in a wide
array of variations from manufacturers such as Intel, Philips, and Siemens. These
manufacturers have added numerous features and peripherals to the 8051 such as I2C
interfaces, analog to digital converters, watchdog timers, and pulse width modulated
outputs. Variations of the 8051 with clock speeds up to 40MHz and voltage
requirements down to 1.5 volts are available. This wide range of parts based on one core
makes the 8051 family an excellent choice as the base architecture for a company's entire
line of products since it can perform many functions and developers will only have to
learn this one platform.
The AT89S52 is a low-power, high-performance CMOS 8-bit microcontroller
with
8K bytes of in-system programmable Flash memory. The device is manufactured using
Atmel’s high-density nonvolatile memory technology and is compatible with the industry-
standard 80C51 instruction set and pinout. The on-chip Flash allows the program
memory to be reprogrammed in-system or by a conventional nonvolatile memory
programmer. By combining a versatile 8-bit CPU with in-system programmable Flash
on a monolithic chip, the Atmel AT89S52 is a powerful microcontroller which provides a
highly-flexible and cost- effective solution to many embedded control applications. In
addition, the AT89S52 is designed with static logic for operation down to zero frequency
and supports two software selectable power saving modes. The Idle Mode stops the CPU
while allowing the RAM, timer/counters, serial port, and interrupt system to continue
functioning. The Power-down mode saves the RAM con-tents but freezes the oscillator,
disabling all other chip functions until the next interrupt or hardware reset.

4.4.3 EATURES:
The basic architecture of AT89C51 consists of the following features:
• Compatible with MCS-51 Products
• 8K Bytes of In-System Programmable (ISP) Flash Memory
• 4.0V to 5.5V Operating Range
• Fully Static Operation: 0 Hz to 33 MHz
• 256 x 8-bit Internal RAM
• 32 Programmable I/O Lines
• Three 16-bit Timer/Counters
• Eight Interrupt Sources
• Full Duplex UART Serial Channel
• Low-power Idle and Power-down Modes
• Interrupt Recovery from Power-down Mode
• Watchdog Timer
• Fast Programming Time
• Flexible ISP Programming (Byte and Page Mode)

4.4.4 PIN CONFIGURATION

Fig. 4.16 Pin diagram of AT89S52


4.4.5 BLOCK DIAGRAM

Fig. 4.17 Block diagram of the microcontroller


4.4.6 PIN DESCRIPTION
• VCC: Supply voltage.
• GND: Ground.

• Port 0: Port 0 is an 8-bit open drain bidirectional I/O port. As an output port, each
pin can sink eight TTL inputs. When 1s are written to port 0 pins, the pins can be
used as high-impedance inputs. Port 0 can also be configured to be the multiplexed
low-order address/data bus during accesses to external program and data memory.
In this mode, P0 has internal pull-ups.

• Port 1: Port 1 is an 8-bit bidirectional I/O port with internal pull-ups. The
Port 1 output buffers can sink/source four TTL inputs. When 1s are written to
Port 1 pins, they are pulled high by the internal pull-ups and can be used as inputs.
As inputs, Port
1 pins that are externally being pulled low will source current (IIL) because of the
internal pull-ups. In addition, P1.0 and P1.1 can be configured to be the
timer/counter
2 external count input (P1.0/T2) and the timer/counter 2 trigger input (P1.1/T2EX),
respectively, as shown in the following table.

• Port 2: Port 2 is an 8-bit bidirectional I/O port with internal pull-ups. The
Port 2 output buffers can sink/source four TTL inputs. When 1s are written to
Port 2 pins, they are pulled high by the internal pull-ups and can be used as inputs.
As inputs, Port
2 pins that are externally being pulled low will source current (IIL) because of the
internal pull-ups. Port 2 emits the high-order address byte during fetches
from external program memory and during accesses to external data memory that
use 16- bit addresses (MOVX @ DPTR). In this application, Port 2 uses strong
internal pull- ups when emitting 1s. During accesses to external data memory that
uses 8-bit addresses (MOVX @ RI), Port 2 emits the contents of the P2
Special Function register.


Port 3: Port 3 is an 8-bit bidirectional I/O port with internal pull-ups. The Port 3
output buffers can sink/source four TTL inputs. When 1s are written to Port 3
pins, they are pulled high by the internal pull-ups and can be used as inputs. As
inputs, Port
3 pins that are externally being pulled low will source current (IIL) because of
the
Pull-ups.
Port 3 also serves the functions of various special features of the AT89S52, as
shown in the following table.

Alternate functions of Port 3:

Table 4.2 Alternate functions of Port 3

• RST: Reset input. A high on this pin for two machine cycles while the
oscillator is running resets the device. This pin drives high for 98 oscillator
periods after the watchdog times out.

4.4.6.1 Power-On Reset circuit

Fig. 4.18 Power-on reset circuit


In order for the RESET input to be effective, it must have a minimum duration of
two machine cycles.

• ALE/PROG: Address Latch Enable (ALE) is an output pulse for latching


the low byte of the address during accesses to external memory. This pin is also
the program pulse input (PROG) during Flash programming. In normal
operation, ALE is emitted at a constant rate of 1/6 the oscillator frequency and
may be used for external timing or clocking purposes. Note, however, that one
ALE pulse is skipped during each access to external data memory. If
desired, ALE operation can be disabled by setting bit 0 of SFR location
8EH. With the bit set, ALE is active only during a MOVX or MOVC
instruction. Otherwise, the pin is weakly pulled high. Setting the ALE-disable
bit has no effect if the microcontroller is in external execution mode.

• PSEN: Program Store Enable (PSEN) is the read strobe to external


program memory. When the AT89S52 is executing code from external program
memory, PSEN is activated twice each machine cycle, except that two
PSEN activations are skipped during each access to external data memory.

• EA: External Access Enable. EA must be strapped to GND in order to enable


the device to fetch code from external program memory locations starting at
0000H up to FFFFH. Note, however, that if lock bit 1 is programmed,
EA will be internally latched on reset. EA should be strapped to VCC for
internal program executions. This pin also receives the 12-volt programming
enable voltage (VPP) during Flash programming.

• XTAL1: Input to the inverting oscillator amplifier and input to the internal
clock operating circuit.

• XTAL2: Output from the inverting oscillator amplifier.

4.4.6.2 The AT89S52 oscillator clock circuit

• It uses a quartz crystal oscillator.


• We can observe the frequency on the XTAL2 pin.
C2
XTAL2
30pF
C1
XTAL1
30pF
GN D

Fig 4.19 The AT89S52 oscillator clock circuit

• The crystal frequency is the basic internal frequency of the microcontroller.


• The internal counters must divide the basic clock rate to yield
standard communication bit per second (baud) rates.
• An 11.0592 megahertz crystal, although seemingly an odd value, yields a
crystal frequency of 921.6 kilohertz, which can be divided evenly by the standard
communication baud rates of 19200, 9600, 4800, 2400, 1200, and 300 hertz.

4.4.7 SPECIAL FUNCTION REGISTERS

The Special Function Registers (SFRs) contain memory locations that are used
for special tasks. Each SFR occupies internal RAM from 0x80 to 0xFF.They are 8-bits
wide.

• The A (accumulator) register or accumulator is used for most ALU operations


and
Boolean Bit manipulations.

• Register B is used for multiplication & division and can also be used for
general purpose storage.

• PSW (Program Status Word) is a bit addressable register

• PC or program counter is a special 16-bit register. It is not part of SFR.


Program instruction bytes are fetched from locations in memory that are
addressed by the
PC.
• Stack Pointer (SP) register is eight bits wide. It is incremented before data
is stored during PUSH and CALL executions. While the stack may reside
anywhere in on-chip RAM, the Stack Pointer is initialized to 07H after a
reset. This causes the stack to begin at location 08H.

• DPTR or data pointer is a special 16-bit register that is accessible as two 8-


bit registers: DPL and DPH, which are used to used to furnish memory
addresses for internal and external code access and external data access.

• Control Registers: Special Function Registers IP, IE, TMOD, TCON, SCON,
and PCON contain control and status bits for the
interrupt system, the Timer/Counters, and the serial port.

• Timer Registers: Register pairs (TH0, TL0) and (TH1, TL1) are the 16-
bit
Counter registers for Timer/Counters 0 and 1, respectively.

4.4.8 MEMORY ORGANIZATION

MCS-51 devices have a separate address space for Program and Data Memory. Up
to
64K bytes each of external Program and Data Memory can be
addressed.

• Program Memory: If the EA pin is connected to GND, all program fetches


are directed to external memory. On the AT89S52, if EA is connected to
VCC, program fetches to addresses 0000H through 1FFFH are directed to
internal memory and fetches to addresses 2000H through FFFFH are to external
memory.

• Data Memory: The AT89S52 implements 256 bytes of on-chip RAM. The
upper
128 bytes occupy a parallel address space to the Special Function Registers.
This means that the upper 128 bytes have the same addresses as the SFR space
but are physically separate from SFR space. When an instruction accesses an
internal location above address 7FH, the address mode used in the instruction
specifies whether the CPU accesses the upper 128 bytes of RAM or the SFR
space. Instructions which use direct addressing access the SFR space. The
lower 128bytes of RAM can be divided into three segments:
1. Register Banks 0-3: locations 00H through 1FH (32 bytes). The device after
reset defaults to register bank 0. To use the other register banks, the user must
select them in software. Each register bank contains eight 1-byte registers R0-R7.
Reset initializes the stack point to location 07H, and is incremented once to start
from 08H, which is the first register of the second register bank.

2. Bit Addressable Area: 16 bytes have been assigned for this segment 20H-
2FH. Each one of the 128 bits of this segment can be directly addressed (0-7FH).
Each of the 16 bytes in this segment can also be addressed as a byte.

3. Scratch Pad Area: 30H-7FH are available to the user as data RAM.
However, if the data pointer has been initialized to this area, enough bytes should
be left aside to prevent SP data destruction.

Fig. 4.20 Internal memory block

4.4.9 WATCHDOG TIMER (One-time Enabled with Reset-out)

The WDT is intended as a recovery method in situations where the CPU may
be
subjected to software upsets. The WDT consists of a 14-bit counter and the Watchdog
Timer
Reset (WDTRST) SFR. The WDT is defaulted to disable from exiting reset. To enable
the
WDT, a user must write 01EH and 0E1H in sequence to the WDTRST register (SFR
location
0A6H). When the WDT is enabled, it will increment every machine cycle while the
oscillator is running. The WDT timeout period is dependent on the external clock
frequency. There is no way to disable the WDT except through reset (either hardware
reset or WDT overflow reset). When WDT over-flows, it will drive an output RESET
HIGH pulse at the RST pin.

4.4.10TIMERS AND COUNTERS


Many microcontroller applications require the counting of external events such as
the frequency of a pulse train, or the generation of precise internal time delays between
computer actions. Both of these tasks can be accomplished using software techniques,
but software loops for counting or timing keep the processor occupied so that, other
perhaps more important, functions are not done. Hence the better option is to use
interrupts & the two 16- bit count- up timers. The microcontroller can programmed for
either of the following:
1. Count internal - acting as
timer
2. Count external - acting as
counter
All counter action is controlled by the TMOD (Timer Mode) and the TCON
(Timer/Counter Control) registers. TCON Timer control SFR contains timer 1& 2
overflow flags, external interrupt flags, timer control bits, falling edge/low level
selector bit etc. TMOD timer mode SFR comprises two four-bit registers (timer #1, timer
#0) used to specify the timer/counter mode and operation.
The timer may operate in any one of four modes that are determined by modes
bits
M1 and M0 in the TMOD
register:
TIMER MODE-0: Setting timer mode bits to 00b in the TMOD register results in using
the TH register as an 8-bit counter and TL as a 5-bit counter. Therefore mode0 is a
13-bit counter.
TIMER MODE-1: Mode-1 is similar to mode-0 except TL is configured as a full
8-bit counter when the mode bits are set to 01b in TMOD.
TIMER MODE-2: Setting the mode bits to 10b in TMOD configures the timer to use
only the TL counter as an 8-bit counter. TH is used to hold a value that is loaded into
TL every
time TL overflows from FFh to 00h. The timer flag is also set when TL
overflows.

TIMER MODE-3: In mode-3, timer-1 simply hold its count, where as timer 0 registers
TL0 and TH0 are used as two separate 8-bit counters. TL0 uses the Timer-0 control
bits. TH0 counts machine cycles and takes over the use of TR1 and TF1 from Timer-1.

4.4.11INTERRUPTS
A computer has only two ways to determine the conditions that exist in internal
and external circuits. One method uses software instructions that jump to subroutines
on the states of flags and port pins. The second method responds to hardware
signals, called interrupts that force the program to call a subroutine.
The AT89S52 has a total of six interrupt vectors: two external interrupts (INT0 and
INT1), three timer interrupts (Timers 0, 1, and 2), and the serial port interrupt. Each of
these interrupt sources can be individually enabled or disabled by setting or clearing
a bit in Special Function Register IE. IE also contains a global disable bit, EA, which
disables all interrupts at once.
Each interrupt forces the processor to jump at the interrupt location in the
memory. The interrupted program must resume operation at the instruction where the
interrupt took place. Program resumption is done by storing the interrupted PC address on
to stack.
RETI instruction at the end of ISR will restore the PC
address.

4.4.12 MICROCONTROLLER CONFIGURATION USED IN THE SET-UP

The microcontroller is interfaced with the ADC in polling mode. INT0 is used for
the
LCD mode selection switch in order to switch between two modes of display:
1) Sensor output display
2) Actuator status display
Port details:
• Port 0: Interfaced with the LCD data lines.
• Port 1: Interfaced with the ADC data lines
• Port 2: Interfaced with the LCD Control lines and AC Interface control
• Port 3: Interfaced with the ADC control lines

4.5 LIQUID CRYSTAL DISPLAY


A liquid crystal display (LCD) is a thin, flat display device made up of any number
of color or monochrome pixels arrayed in front of a light source or reflector. Each pixel
consists of a column of liquid crystal molecules suspended between two transparent
electrodes, and two polarizing filters, the axes of polarity of which are perpendicular to
each other. Without the liquid crystals between them, light passing through one would
be blocked by the other. The liquid crystal twists the polarization of light entering one
filter to allow it to pass through the other.
Many microcontroller devices use 'smart LCD' displays to output visual
information. LCD displays designed around Hitachi's LCD HD44780 module, are
inexpensive, easy to use, and it is even possible to produce a readout using the 8x80
pixels of the display. They have a standard ASCII set of characters and mathematical
symbols.
For an 8-bit data bus, the display requires a +5V supply plus 11 I/O lines. For a 4-
bit data bus it only requires the supply lines plus seven extra lines. When the LCD display
is not enabled, data lines are tri-state and they do not interfere with the operation of the
microcontroller.
Data can be placed at any location on the LCD. For 16×2 LCD, the address
locations
are:

First line 80 81 82 83 84 85 86 through 8F

Second line C0 C1 C2 C3 C4 C5 C6 through CF


Fig 4.22 Address locations for a 2x16 line LCD

4.5.1 SIGNALS TO THE LCD


The LCD also requires 3 control lines from the microcontroller:
1) Enable (E)
This line allows access to the display through R/W and RS lines. When this
line is low, the LCD is disabled and ignores signals from R/W and RS. When (E)
line is high, the LCD checks the state of the two control lines and responds
accordingly.
2) Read/Write (R/W)
This line determines the direction of data between the LCD and
microcontroller.
When it is low, data is written to the LCD. When it is high, data is read from
the
LCD.
3) Register select (RS)
With the help of this line, the LCD interprets the type of data on data lines. When it
is low, an instruction is being written to the LCD. When it is high, a character is being
written to the LCD.
4.5.1.1 Logic status on control lines:
• E - 0 Access to LCD
disabled
- 1 Access to LCD enabled
• R/W - 0 Writing data to LCD
- 1 Reading data from
LCD
• RS - 0 Instruction
- 1 Character
4.5.1.2 Writing and reading the data from the LCD:
Writing data to the LCD is done in several steps:
1) Set R/W bit to low
2) Set RS bit to logic 0 or 1 (instruction or character)
3) Set data to data lines (if it is writing)
4) Set E line to high
5) Set E line to low
Read data from data lines (if it is reading):
1) Set R/W bit to high
2) Set RS bit to logic 0 or 1 (instruction or character)
3) Set data to data lines (if it is writing)
4) Set E line to high
5) Set E line to low

4.5.2 PIN DESCRIPTION


Most LCDs with 1 controller has 14 Pins and LCDs with 2 controller has 16 Pins
(two pins are extra in both for back-light LED connections).
Fig 4.23 Pin diagram of 2x16 line LCD

Table 4.23 Pin description of the LCD

4.6 ALARM CIRCUITRY

BUZZER:

A buzzer or beeper is a signaling device, usually electronic, typically used


in automobiles, household appliances such as a microwave oven.

Fig. 4.24 Electrical symbol of a buzzer


It is connected to the control unit through the transistor that acts as an
electronic switch for it. When the switch forms a closed path to the buzzer, it sounds a
warning in the form of a continuous or intermittent buzzing or beeping sound.

The transistor acts as a normal controlled by the base connection. It switches


ON when a positive voltage from the control unit is applied to the base. If the positive
voltage is less than 0.6V, the transistor switches OFF. No current flows through the buzzer
in this case and it will not buzz. As can be seen in the buzzer circuitry given below, a
protection resistor of 10k ohm is used in order to protect the transistor from being
damaged in case of excessive current flow. In our system, the buzzer is designed to give a
small beep whenever one of the devices such as a cooler or a bulb turns on in order to
alert the user.

Fig. 4.25 Buzzer circuitry

4.7 RELAYS

A relay is an electrical switch that opens and closes under the control of another
electrical circuit. In the original form, the switch is operated by an electromagnet to open
or close one or many sets of contacts. It was invented by Joseph Henry in 1835. Because
a relay is able to control an output circuit of higher power than the input circuit, it can be
considered
to be, in a broad sense, a form of an electrical amplifier.
Fig. 4.26 Sugar cube
relay

Despite the speed of technological developments, some products prove so


popular that their key parameters and design features remain virtually unchanged for
years. One such product is the ‘sugar cube’ relay, shown in the figure above, which
has proved useful to many designers who needed to switch up to 10A, whilst using
relatively little PCB area

Since relays are switches, the terminology applied to switches is also applied
to relays. A relay will switch one or more poles, each of whose contacts can be thrown by
energizing the coil in one of three ways:

1.Normally - open (NO) contacts connect the circuit when the relay is activate d; the
circuit is disconnected when the relay is inactive. It is also called a FORM A contact or
“make” contact.

2.Normally - closed (NC) contacts disconnect the circuit when the relay is activated ; the
circuit is connected when relay is inactive. It is also called FORM B contact or”
break” contact

3.Change-over or double-throw contacts control two circuits ; one normally open


contact and one normally –closed contact with a common terminal. It is also called a
Form C “transfer “contact.

The following types of relays are commonly encountered:


"C" denotes the common terminal in SPDT and DPDT
types

Fig. 4.27 Different types of


Relays

• SPST - Single Pole Single Throw: These have two terminals which can be
connected or disconnected. Including two for the coil, such a relay has four
terminals in total. It is ambiguous whether the pole is normally open or normally
closed. The terminology "SPNO" and "SPNC" is sometimes used to resolve the
ambiguity.
• SPDT - Single Pole Double Throw: A common terminal connects to either of
two others. Including two for the coil, such a relay has five terminals in total.
• DPST - Double Pole Single Throw: These have two pairs of terminals. Equivalent
to two SPST switches or relays actuated by a single coil. Including two for the coil,
such a relay has six terminals in total. It is ambiguous whether the poles are
normally open, normally closed, or one of each.
• DPDT - Double Pole Double Throw: These have two rows of change-over
terminals.
Equivalent to two SPDT switches or relays actuated by a single coil. Such a relay
has eight terminals, including the coil.
• QPDT - Quadruple Pole Double Throw: Often referred to as Quad Pole Double
Throw, or 4PDT. These have four rows of change-over terminals. Equivalent to
four SPDT switches or relays actuated by a single coil, or two DPDT relays. In
total, fourteen terminals including the coil.

The Relay interfacing circuitry used in the application is:


1N4148

Fig. 4.28 Relay


circuitry

4.8 POWER SUPPLY CONNECTION

The power supply section consists of step down transformers of 230V primary to
9V and 12V secondary voltages for the +5V and +12V power supplies respectively. The
stepped down voltage is then rectified by 4 1N4007 diodes. The high value of capacitor
1000 µF charges at a slow rate as the time constant is low, and once the capacitor charges
there is no resistor for capacitor to discharge. This gives a constant value of DC. IC 7805
is used for regulated supply of +5 volts and IC 7812 is used to provide a regulated supply
of +12 volts in order to prevent the circuit ahead from any fluctuations. The filter
capacitors connected after this IC filters the high frequency spikes. These capacitors
are connected in parallel with supply and common so that spikes filter to the common.
These give stability to the power supply circuit.
As can be seen from the above circuit diagrams, the rectified voltage from
the 4 diodes is given to pin 1 of the respective regulators. Pin 2 of the regulators is
connected to ground and pin 3 to Vcc. With adequate heat sinking the regulator can
deliver 1A output current. If internal power dissipation becomes too high for the heat
sinking provided, the
thermal shutdown circuit takes over preventing the IC from overheating.
1
Vin 7805 Vout
GND
2

1000
230V, uf 10 1uf
50Hz uf

Fig. 4.29 +5V Power supply circuit

Fig. 4.30 +12V Power supply Circuit


CIRCUIT SCHEMATIC OF THE SYSTEM
CHAPTER 5
SYSTEMS USED IN
WORK MODEL
5.1 DRIP IRRIGATION SYSTEM FOR CONTROLLING
SOIL MOISTURE
Drip, or micro-irrigation, technology uses a network of plastic pipes to carry a
low flow of water under low pressure to plants.

Polyethylene tubing is run from the source of water to the plant, where the emitter
is attached for dripping water. Emitter line (poly tubing with pre-installed emitters) is
used where a continuous band of water is needed. Fittings are available to make sharp
turns (elbows), branch lines (tees), and to make the transition between different sizes of
tubing. When plants are removed or die, drip lines should be plugged.

Fig. 5.1 Drip irrigation


system

Drip irrigation (sometimes called trickle irrigation) works by applying water


slowly, directly to the soil. The high efficiency of drip irrigation results from two
primary factors. The first is that the water soaks into the soil before it can evaporate or run
off. The second is that the water is only applied where it is needed, (at the plant's roots)
rather than sprayed everywhere.

A drip irrigation system slowly provides water to the plant's root system. Regular
watering prevents plant dehydration, but roots don't get overly soaked and in turn,
plant growth can increase up to 50%. Drip systems irrigate all types of landscape:
shrubs, trees,
perennial beds, ground covers, annuals and lawns. Drip is the best choice to water roof
gar-
dens, containers on decks and patios, row crops and kitchen gardens, orchards,
and vineyards.

5.2 ARTIFICIAL GROWING LIGHTS FOR CONTROLLING


ILLUMINATION

Growing lights enable cultivators to extend daylight hours - useful for winter
and spring growing when levels of natural lights can be low, and one can therefore
improve plant growth. Three basic types of lamps used in greenhouse lighting are:

• Fluorescent lamps - These have the advantage of higher light efficiency with
low heat. This type of lamp is the most widely used for supplemental light. It is
available in a variety of colors but cool-white lamps are the most common.
High intensity (1500 ma) fluorescent tubes that require higher wattage are also
commonly used to reach 2000 foot candles.

• Incandescent lamps - These vary in size from 60 watts to 500 watts. The grower
can vary foot-candle levels by adjusting the spacing and mounting height
above the plants.
• High-intensity discharge (HID) lamps - These have a long life (5000 hours
or more). With improvements made possible by the addition of sodium and
metal- halides, the lamp has a high emission of light in the regions utilized by
plants.

The following generally accepted cultural divisions describe light levels:

• Very high: Over 5000 footcandles--nearly full sun except at midday, when
full summer sun in most latitudes may reach 10,000 fc.
• High: 4000-5000 footcandles--bright light, just under 50% of the full midday sun.
• Intermediate: 1800-4000 footcandles--dappled sunlight.
• Low: 1000-1800 footcandles--reduced sunlight, so that if a hand is passed over
the leaves it does not produce a shadow.

One footcandle is equal to 10.76 lux, although in the lighting industry, typically
this is approximated as 1 footcandle being equal to 10 lux.
5.3 TEMPERATURE CONTR OLLERS

5.3.1 COOLING EQUIPMENT

There are three primary cooling devices in most greenhouses. These are the vent
system, exhaust fan, and swamp cooler. Some greenhouses may make use of air
conditioners and/or misting systems as well.

• Vents are hinged or track connected panels in the roof or sides of greenhouses.
They open up the greenhouse to outside natural air. Hot air that builds up in the
greenhouse can escape, and fresh air can enter the house. The microcontroller can
be used to automate the opening and closing of these vents depending upon
requirement. But during hot summer days, venting alone will not get the job done.

• Exhaust fans can move a large volume of the hot greenhouse air out and pull
fresh air in through the rear vent. They're powerful for a reason, as full sun
on a hot summer day can cause temperatures inside the greenhouse to superheat.
An exhaust fan must be able to pull this air out, or the temperatures will continue
to rise.

• Swamp coolers: come in different widths and lengths. They can be configured to
the appropriate size, as this varies depending on the length and width of the
greenhouse, location where you live, and type of plants you wish to grow.

5.3.2 HEATING EQUIPMENT

• Hot-water or steam heater: A hot-water system with circulator or a steam


system linked with automatic ventilation will give adequate temperature
control. In some areas, coal or natural gas is readily available at low cost. This
fuel is ideal for hot- water or a central steam system. Steam has an advantage in
that it can be used to sterilize growing beds and potting soils.

• Electric heaters: Overhead infrared heating equipment combined with soil cable
heat provides a localized plant environment, which allows plants to thrive even
though the surrounding air is at a lower than normal temperature. Electric
resistance-type heaters
are used as space heaters or in a forced air system.
5.4 HUMIDIFCATION SYSTEMS

Many evaporative cooling and humidifying systems are available: Foggers,


Mist systems, Roof Sprinklers, and Pan & Fan Systems. They add water vapour to the
air, and may subsequently reduce the amount of water that the plants need to transpire.
• Roof sprinklers add water vapour and cool the incoming air. On large ranges, it
is possible to decrease the temperature by 3 - 5 C and increase the humidity by 5-
10%.
• Pad and fan systems consist of porous wet pads at the inlet end of a fan ventilated
greenhouse. As the exhaust fans draw air through the wet pads, water evaporates,
cooling and humidifying the air. Temperatures tend to be coolest nearer the fans and
hottest at the exhaust when using these systems.
• Mist and fog systems produce tiny water droplets that evaporate, thereby cooling
and humidifying the greenhouse air. A misting system can provide needed
moisture to maintain a healthy humidity level of 50 to 70%.
CHAPTER 6
SOFTWARE
USED
6.1 INTRODUCTION TO KEIL SOFTWARE

Keil MicroVision is an integrated development environment used to create


software to be run on embedded systems (like a microcontroller). It allows for such
software to be written either in assembly or C programming languages and for that
software to be simulated on a computer before being loaded onto the microcontroller.

6.1.1 WHAT IS µVision3?


µVision3 is an IDE (Integrated Development Environment) that helps write,
compile, and debug embedded programs. It encapsulates the following components:

¾ A project manager.
¾ A make facility.
¾ Tool configuration.
¾ Editor.
¾ A powerful debugger.

6.1.2 STEPS FOLLOWED IN CREATING AN APPLICATION IN uVision3:

To create a new project in uVision3:

1. Select Project - New Project.


2. Select a directory and enter the name of the project file.
3. Select Project –Select Device and select a device from Device Database.
4. Create source files to add to the project
5. Select Project - Targets, Groups, and Files. Add/Files, select Source Group1, and
add the source files to the project.
6. Select Project - Options and set the tool options. Note that when the target device
is selected from the Device Database™ all-special options are set automatically.
Default memory model settings are optimal for most applications.
7. Select Project - Rebuild all target files or Build target

To create a new project, simply start MicroVision and select


“Project”=>”New
Project” from the pull–down menus. In the file dialog that appears, choose a name and
base
directory for the project. It is recommended that a new directory be created for each
project, as several files will be generated. Once the project has been named, the dialog
shown in the figure below will appear, prompting the user to select a target device. In
this lab, the chip
being used is the “AT89S52,” which is listed under the heading
“Atmel”.

Fig. 6.1 Window for choosing the target device

Next, MicroVision must be instructed to generate a HEX file upon program


compilation. A HEX file is a standard file format for storing executable code that is to be
loaded onto the microcontroller.
In the “Project Workspace” pane at the left, right–click on “Target 1” and select
“Options for ‘Target 1’ ”.Under the “Output” tab of the resulting options dialog, ensure
that both the “Create Executable” and “Create HEX File” options are checked. Then
click “OK”
as shown in the two figures below.
Fig. 6.2 Project Workspace Pane Fig. 6.3 Project Options Dialog

Next, a file must be added to the project that will contain the project code. To do
this, expand the “Target 1” heading, right–click on the “Source Group 1” folder, and select
“Add files…” Create a new blank file (the file name should end in “.asm”), select it,
and click “Add.” The new file should now appear in the “Project Workspace” pane under
the “Source Group 1” folder. Double-click on the newly created file to open it in the
editor. All code for this lab will go in this file. To compile the program, first save all
source files by clicking on the “Save All” button, and then click on the “Rebuild All
Target Files” to compile the program as shown in the figure below. If any errors or
warnings occur during compilation, they will be displayed in the output window at
the bottom of the screen. All errors and warnings will reference the line and column
number in which they occur along with a description of the problem so that they can
be easily located. Note that only errors indicate that the compilation failed, warnings do
not (though it is generally a good idea to look into them anyway).

Fig. 6.4 “Save All” and “Build All Target Files” Buttons
When the program has been successfully compiled, it can be simulated using the
integrated debugger in Keil MicroVision. To start the debugger, select
“Debug”=>”Start/Stop Debug Session” from the pull–down menus.
At the left side of the debugger window, a table is displayed containing several key
parameters about the simulated microcontroller, most notably the elapsed time (circled in
the figure below). Just above that, there are several buttons that control code
execution. The “Run” button will cause the program to run continuously until a
breakpoint is reached, whereas the “Step Into” button will execute the next line of code
and then pause (the current
position in the program is indicated by a yellow arrow to the left of the code).

Fig. 6.5 µVision3 Debugger window


Breakpoints can be set by double–clicking on the grey bar on the left edge of
the window containing the program code. A breakpoint is indicated by a red box next to
the line
of code.

Fig. 6.6 ‘Reset’, ‘Run’ and ‘Step into’ options

The current state of the pins on each I/O port on the simulated microcontroller
can also be displayed. To view the state of a port, select “Peripherals”=>”I/O
Ports”=>”Port n” from the pull–down menus, where n is the port number. A checked box
in the port window indicates a high (1) pin, and an empty box indicates a low (0) pin. Both
the I/O port data and the data at the left side of the screen are updated whenever the
program is paused.
The debugger will help eliminate many programming errors, however the
simulation is not perfect and code that executes properly in simulation may not
always work on the
actual microcontroller.
6.1.3 DEVICE DATABASE

A unique feature of the Keil µVision3 IDE is the Device Database, which contains
information about more than 400 supported microcontrollers. When you create a
new
µVision3 project and select the target chip from the database, µVision3 sets all assembler,
compiler, linker, and debugger options for you. The only option you must configure is the
memory map.

6.1.4 PERIPHERAL
SIMULATION

The µVision3 Debugger provides complete simulation for the CPU and on-chip
peripherals of most embedded devices. To discover which peripherals of a device are
supported, in µVision3 select the Simulated Peripherals item from the Help menu. You
may also use the web-based Device Database. We are constantly adding new
devices and simulation support for on-chip peripherals so be sure to check Device
Database often.

6.2 GRAMMER
The programmer used is a powerful programmer for the Atmel 89 series of
microcontrollers that includes 89C51/52/55, 89S51/52/55 and many more.

It is simple to use & low cost, yet powerful flash microcontroller programmer for
the Atmel 89 series. It will Program, Read and Verify Code Data, Write Lock Bits, Erase
and Blank Check. All fuse and lock bits are programmable. This programmer has
intelligent onboard firmware and connects to the serial port. It can be used with any
type of computer and requires no special hardware. All that is needed is a serial
communication port which all computers have.

All devices also have a number of lock bits to provide various levels of software
and programming protection. These lock bits are fully programmable using this
programmer. Lock bits are useful to protect the program to be read back from
microcontroller only allowing erase to reprogram the microcontroller.

Major parts of this programmer are Serial Port, Power Supply and Firmware
microcontroller. Serial data is sent and received from 9 pin connector and converted
to/from
TTL logic/RS232 signal levels by MAX232 chip. A Male to Female serial port
cable, connects to the 9 pin connector of hardware and another side connects to back of
computer.

All the programming ‘intelligence’ is built into the programmer so you do not
need any special hardware to run it. Programmer comes with window based software for
easy programming of the devices.

6.3 ProLoad PROGRAMMING SOFTWARE

‘ProLoad’ is a software working as a user friendly interface for programmer boards


from Sunrom Technologies. Proload gets its name from “Program Loader” term,
because that is what it is supposed to do. It takes in compiled HEX file and loads it to
the hardware. Any compiler can be used with it, Assembly or C, as all of them
generate compiled HEX files. ProLoad accepts the Intel HEX format file generated from
compiler to be sent to target microcontroller. It auto detects the hardware connected to
the serial port. It also auto detects the chip inserted and bytes used. The software is
developed in Delphi and requires no overhead of any external DLL.

The programmer connects to the computer’s serial port (Comm 1, 2, 3 or 4) with a


standard DB9 Male to DB9 Female cable. Baud Rate - 57600, COMx Automatically
selected by window software. No PC Card Required.

After making the necessary selections, the ‘Auto Program’ button is clicked as
shown in the figure below which burns the selected hex file onto the microcontroller.
Fig. 6.7 Programming window
CHAPTER 7
FLOWCHART
7.1 FLOWCHART REPRESENTING THE WORKING OF THE
SYSTEM:

START

INITIALISE THE LCD

DISPLAY INITIALISATION MESSAGE


B
INITIALISE THE ADC

OBTAIN THE SENSOR DATA

OBTAIN DIGITIZED DATA FROM ADC

STORE DIGITAL OUTPUT IN THE BUFFER MEMORY


OF THE MICROCONTROLLER

CLEAR THE LCD

IS
YES
MODE
BUTTO
N
PRESSED

NO

DISPLAY THE DEVICE STATUS

DISPLAY THE SENSOR DATA

A
A

YES NO
SENSOR
THRESHOL
D
CROSSED?

TURN ON TURN OFF ACTUATOR


ACTUATOR

7.2 FLOWCHART FOR LCD INITIALIZATION

START

INTILIAZE THE LCD WITH 2LINES, 5X7 MATRIX

CLEAR REGISTER SELECT, READ/WRITE


AND SET THE ENABLE PIN OF THE LCD

CALL SOME DELAY

CLEAR THE ENABLE PIN OF THE LCD

CALL SOME DELAY

C
C

SET THE DISPLAY ON AND THE CURSOR ON

CLEAR REGISTER SELECT,


READ/WRITE AND SET THE ENABLE
PIN OF THE LCD

CALL SOME DELAY

CLEAR THE ENABLE PIN OF THE LCD

CALL SOME DELAY

CLEAR THE LCD AND SHIFT THE CURSOR TO RIGHT

CLEAR REGISTER SELECT,


READ/WRITE AND SET THE ENABLE
PIN OF THE LCD

CALL SOME DELAY

CLEAR THE ENABLE PIN OF THE LCD

CALL SOME DELAY

SHIFT THE CURSOR AT LINE 1, POSITION 0

CLEAR REGISTER SELECT,


READ/WRITE AND SET THE ENABLE
PIN OF THE LCD

D
D

CALL SOME DELAY

CLEAR THE ENABLE PIN OF THE LCD

CALL SOME DELAY

STOP

7.3 FLOWCHART FOR ADC INITIALIZATION

START

SELECT AN ANALOG CHANNEL BY


SETTING THE ADDRESS LINES A, B AND C

CLEAR THE OUTPUT ENABLE PIN

ACTIVATE THE ALE PIN


WITH A LOW TO HIGH
PULSE

ACTIVATE THE START PIN BY A HIGH


TO LOW PULSE TO INITIATE
CONVERSION

NO
IS YES
EOC =0? A
A

SET THE OUTPUT ENABLE PIN

CALL SOME DELAY

READ DATA OUT OF THE ADC CHIP

CLEAR THE OUTPUT ENABLE PIN

STOP
CHAPTER 8
RESULT
ANALYSIS
RESULT ANALYSIS
0
Readings taken at room temperature of 27 C

8.1 TRANSDUCER READINGS

8.1.1 SOIL MOISTURE SENSOR

Tolerance= ± 0.2 V

Table 8.1 Soil moisture sensor readings

Soil Condition Transducer


Optimum Range

Soil is dry 0V

Optimum level of 1.9- 3.5V

soil moisture

Slurry soil >3.5V


8.1.2 LIGHT SENSOR

Tolerance = ±0.1V

Table 8.2 Light sensor readings

Illumination Status Transducer Optimum


Range

OPTIMUM 0V-0.69V
ILLUMINATION

DIM LIGHT 0.7V-2.5V

DARK 2.5V- 3V

NIGHT 3V-3.47V
8.1.3 HUMIDITY SENSOR

8.1.3.1 FORMULA:

RH = ((Vout / Vcc) – 0.16 )/0.0062, typical at 25°C (Ref. Eq.4.3)

where, Vsupply =

4.98V Tolerance=

±0.1V

Table 8.3 Humidity sensor


readings

Percentage RH Transducer Optimum Range

(RELATIVE

HUMIDITY)
0% 0-0.8V

0% to 9.81% 0.8-1.1V

12.9% to 20.1% 1.2-1.45V

22.7% to 30.06% 1.5-1.725V

30.8% to 40.5% 1.75-2.05V

41.3%to50.3% 2.075-2.35V

51%to 60.02% 2.375-2.65

61.6%to70.5% 2.7-2.975V

71%to80.2% 3-3.275V

81.1%to 90% 3.3-3.6V

91%to 100% 3.6-3.9V


8.1.4 TEMPERATURE SENSOR

8.1.4.1 FORMULA:

Temperature ( oC ) = (Vout/5) *100( oC/V) (Ref. Eq.4.4)

Table 8.4 Temperature sensor readings

Temperature range Temperature sensor


in degree Celsius output(V out)

100 C 0.5V

150 to 200 C 0.75-1.0V

20 0to 250 C 1.0-1.25V

250 to 30 0C 1.25-1.5V

30 0to 35 0C 1.5-1.75V

350 to 400 C 1.75-2.0V

400 to 45 0C 2.0-2.25V

450 to 500 C 2.25-2.5V

500 to 55 0C 2.5-2.75V

550 to 600C 2.75-3.0V

600 to 650 C 3.0-3.25V

650 to 70 0C 3.25-3.5V

70 0to 750 C 3.5-3.75V


75 0to 80 0C 3.75-4.0V

80 0to 850 C 4.0-4.25V

85 0to 900 C 4.25-4.5V

900 to 95 0C 4.5-4.75V

950 to 1000 C 4.75-5V


CHAPTER 9

ADVANTAGES AND DISADVANTAGES


ADVANTAGES AND DISADVANTAGES
9.1 ADVANTAGES
1. Sensors used have high sensitivity and are easy to handle.
2. Low cost system, providing maximum automation.
3. Closed loop design prevents any chances of disturbing the greenhouse environment.
4. User is indicated for changes in actuator state thereby giving an option for
manual override.
5. Low maintenance and low power consumption.
6. The system is more compact compared to the existing ones, hence is easily
portable.
7. Can be used for different plant species by making minor changes in the
ambient environmental parameters.
8. Can be easily modified for improving the setup and adding new features.
9. Labour saving.
10. Provides a user-friendly interface hence will have a greater acceptance by
the technologically unskilled workers.
11. In response to the sensors, the system will adjust the heating, fans, lighting,
irrigation immediately, hence protect greenhouse from damage.
12. Malfunctioning of single sensor will not affect the whole system.
13. Natural resource like water saved to a great extent.

9.2 DISADVANTAGES

1. Complete automation in terms of pest and insect detection and eradication


cannot be achieved.

2. No self-test system to detect malfunction of sensors.

3. Requires uninterrupted power supply.

4. Facility to remotely monitor the greenhouse is not possible.


CHAPTER 10
FUTURE SCOPE
SCOPE FOR FURTHER DEVELOPMENT

1) The performance of the system can be further improved in terms of the operating
speed, memory capacity, instruction cycle period of the microcontroller by using other
controllers such as AVRs and PICs. The number of channels can be increased to
interface more number of sensors which is possible by using advanced versions of
microcontrollers.
2) The system can be modified with the use of a datalogger and a graphical LCD
panel showing the measured sensor data over a period of time.
3) A speaking voice alarm could be used instead of the normal buzzer.
4) This system can be connected to communication devices such as modems, cellular
phones or satellite terminal to enable the remote collection of recorded data or
alarming of certain parameters.
5) The device can be made to perform better by providing the power supply with the help
of battery source which can be rechargeable or non-rechargeable, to reduce the
requirement of main AC power.
6) Time bound administration of fertilizers, insecticides and pesticides can be introduced.
7) A multi-controller system can be developed that will enable a master controller along
with its slave controllers to automate multiple greenhouses simultaneously.
CHAPTER 11
CONCLUSION
CONCLUSION

A step-by-step approach in designing the microcontroller based system


for measurement and control of the four essential parameters for plant growth, i.e.
temperature, humidity, soil moisture, and light intensity, has been followed. The results
obtained from the measurement have shown that the system performance is quite reliable
and accurate.
The system has successfully overcome quite a few shortcomings of the
existing systems by reducing the power consumption, maintenance and complexity, at the
same time providing a flexible and precise form of maintaining the environment.

The continuously decreasing costs of hardware and software, the wider acceptance
of electronic systems in agriculture, and an emerging agricultural control system industry
in several areas of agricultural production, will result in reliable control systems
that will address several aspects of quality and quantity of production. Further
improvements will be made as less expensive and more reliable sensors are developed for
use in agricultural production.

Although the enhancements mentioned in the previous chapter may seem far in the
future, the required technology and components are available, many such systems have
been independently developed, or are at least tested at a prototype level. Also,
integration of all
these technologies is not a daunting task and can be successfully carried out.
REFERENCES

[1] Dr. R. Jayanthi, Prof. of Horticulture, UAS, GKVK, Bangalore.

IEEE Papers

[2] Stipanicev D., Marasovic J., Networked embedded greenhouse monitoring and control,
Proceedings of 2003 IEEE Conference on Control Applications, June 2003.
[3] Turnell, D.J. de Fatima, Q.V., Turnell, M., Deep, G.S., Freire, R.C.S.,
FarmWeb-an integrated, modular farm automation system, Proceedings of
IEEE International Conference on Systems, Man, and Cybernetics, Vol. 2, Oct.
1998.

Books

nd
[3] Rebecca Tyson Northen, Orchids As House Plants, Dover Publications, New York, 2
Edition, 1985.
[4] Muhammad Ali Mazidi, Janice Gillispie Mazidi, Rolin D. Mc Kinlay , The 8051
nd
Microcontroller & Embedded Systems, Pearson Education Inc. 2 Edition, 2008.
[5] Myke Predko, Programming and Customising the 8051 Microcontroller, TMH, 1999.
[6] Kenneth J Ayala, The 8051 Microcontroller Architecture, Programming &
Applications,
nd
Penram International, 2 Edition, 1996.
[7] Ramakant Gayakwad, Operational Amplifiers Linear Integrated Circuits, Prentice Hall
of
rd
India, 3 Edition.
[8] National Semiconductors, CMOS Logic Databook
[9] SENSORS- The Journal of Applied Sensing Technology, Advanstar Communications
Inc
Web Resources

[10] http://freewebs.com/maheshwankede
[11] http://www.faludi.com
[12] http://www.electro-tech-online.com
[12] http://www.8052.com
[13] http://www.8051projects.net/forum
[14] http://www.ro boticsindia.c om
[15] http://www.datasheetdirect.com
[16] http://www.keil.com/appnotes
[17] http://www.google.com
1. Final Prototype:

19 20 21 22

18

17

1 6 16

8 10
2 15
14
3
13
4
9
5 14
7
12

1. Power Supply +5V 15. AC- switch


2. Temperature Sensor 16. AC fan
3. Humidity Sensor 17. Power Supply +12V
4. Light sensor 18. 230V- 9V transformer
5. Moisture Sensor 19. AC- bulb simulating light1
6. Power supply junction 20. AC- bulb simulating light2
7. ADC and Clock circuit board 21. AC- bulb simulating sprayer
8. Relay board. 22. AC-bulb simulating pump
9. Buzzer circuit board
10. Microcontroller board
11. Buzzer
12. Mode selection switch
13. DC -switch
14. LCD Display
Light Sensor Soil Moisture Sensor

Humidity Sensor Temperature Sensor

ADC and Clock Circuit


Microcontroller Board and Buzzer Circuitry

The Two Display Modes of LCD

AC Interface – Relay
Board
Bill Of Materials:

Quantity
Sl. No. List of electrical components in
1. 230V, 50Hz,9V transformer 1

2. 12-0-12V, 500mA, 1

3. Bridge 3
rectifier
4. 1000uF Electrolytic capacitor 3

5. 10uF Electrolytic capacitor 3

6. 1uF Electrolytic capacitor 4

7. 30pF Ceramic capacitor 2

8. 1nF Ceramic capacitor 5

9. 10k Ω resistance 20

10. 8.2k Ω resistance 1

11. 1.2k Ω resistance 1

12. 1k Ω 1
resistance
13. 1.8k Ω resistance 1

14. 330 Ω resistance 8

15. 100 Ω resistance 1

16. 12.5k Ω resistance 1

17. LM7805 2

18. LM7812 1

19. 2x16 Matrix LCD 1


20. ADC0809 1

21. AT89S52 Microcontroller 1

22. Push to ON button 2

23. Toggle 2
switches
24. BC107 1

25. Buzzer 1

26. 8-pin connectors 5

27. 3-pin connectors 2

28. 2-pin connectors 15

Single connectors 35
29. CD4093 Schmitt trigger IC 1

30. BC547 Transistor 10

31. Sugar cube relays 5

32. 11.0592 MHz Crystal 1

33. LDR 12mm 1

34. LM324 1

35. LM35 1

36. 2N222N Transistor 1

37. HIH4000- 1
001
38. 12.5 k Ω Resistor 1

39. AC 5W 4
bulbs
40. AC 230V Cooling Fan 1
41. 16 Pin Connector 2

42. 10 Ω Preset 5

43. 10k Ω Bourns Pot 3

44. 2.2K Ω 5
Resistor
45. 10k Ω Strip Resistor 1

46. 0.1uF Tantalum Capacitor 1

47. Heat 3
Sink
48. LED 10

49. Copper Wire 32AWG 0.5 m

50. AC Power Cord 2m

51. Wire Cap 1m

52. Varo Board(Shoted, Non Shoted ) 4 pc, 5pc

53. HOT GLUE GUN 1


As per
54. Fevi Quick requirement

55. Connecting Wires 2m


SYSTEM INSTALLATION AND FAULT REDUCTION:
The system has to be provided with uninterrupted power supply and should
be installed with care, in a place where the changes in microclimatic parameters are well
pronounced.

For best results with the moisture sensor, the probes must be inserted into
the specimen soil when the soil is dry.

For best results with the humidity sensor HIH4000

• Do not expose sensor to condensing environments. Exposure to


condensing environments will cause sensor output to indicate 0 %RH.
• Sensor is light sensitive. For best performance, shield sensor from bright light.
• Sensor is static sensitive. Sensor connection protected to 15 kV maximum.

For best results with the temperature sensor, the LM35 and accompanying wiring
and circuits must be kept insulated and dry, to avoid leakage and corrosion.
Printed-circuit coatings and varnishes such as Humiseal and epoxy paints or dips can be
used to insure that moisture does not corrode the LM35 or its connections.

1. TROUBLE SHOOTING:

In case of a system hang-up condition, the reset button in the vicinity of


the
Microcontroller can be used to revive the system.

In case of anomalies in the readings of the humidity sensor, it is recommended


that the sensor be kept in an air -tight container with silica-gel inside.

In case of anomalies with the moisture sensor, the probes can be stripped off the
soil or mud particles deposited on its surface and in case of sensor-leads-
oxidation, it is
recommended that the leads be replaced.
Source Code
; Microcontroller connections to LCD.

RS BIT P2.5 ; P2.5 is connected to RS pin of LCD


RW BIT P2.6 ; P2.6 is connected to R/W pin of LCD
E BIT P2.7 ; P2.5 is connected to E pin of LCD

LCDDATA equ P0 ; P0.0-P0.7 are connected to LCD data pins D0-D7

SWITCH equ P3.2 ; P3.2 (INT0) is connected to SWITCH for LCD

; Microcontroller connections to ADC0808/9 lines.

OE EQU P3.0 ; Pin 9 Output Enable


START EQU P3.1 ; Pin 6 Start
EOC EQU P3.3 ; Pin 7 EOC
ADD_A EQU P3.4 ; Pin 25 ADD A
ADD_B EQU P3.5 ; Pin 24 ADD B
ALE EQU P3.7 ; Pin 22 ALE

ADCDATA EQU P1 ; Data Lines

; Microcontroller connections to Actuators

COOLER EQU P2.4


PUMP EQU P2.3
SPRAYER EQU P2.2
LIGHT1 EQU P2.1
LIGHT2 EQU P2.0
BUZZER EQU P3.6
;---------------------------------------------------------

; Register definitions.

LCD_INTR BIT 00h ;LCD Interrupt flag bit

T_BUFFER EQU 30h ;Temperature buffer (ADC o/p)


M_BUFFER EQU 31h ;Soil Moisture buffer (ADC o/p)
RH_BUFFER EQU 32h ;RH buffer (ADC o/p)
L_BUFFER EQU 33h ;Light buffer (ADC o/p)
LIGHT_LEVEL EQU 34h ;Buffer to store light level
MOIST_LEVEL EQU 35h ;Buffer to store moisture level

;----------------------------------------------------------

org 00h

LJMP main
org 03h
LJMP int_isr ; Interrupt for the LCD switch
org 07h

;Main Code
;-----------------------------------------------------------------------

MOV TMOD, #01h ;Timer 0 Mode 1, 16 bit timer (for generating 5 second delay
for LCD)
SETB TCON.0 ;Make INT0 edge triggered
MOV IE, #81h ;Enable INT0
CLR LCD_INTR ;Make LCD interrupt flag =0
ACALL lcd_init ;LCD initialisation
back:
ACALL adcread ;Read sensor data from ADC
ACALL data_display ;call routine to display to LCD
ACALL threshold_check ;call routine to check threshold
SJMP back ;repeat ADC process

lcd_init: ;LCD initialisation


MOV A, #38H ;init. LCD 2 lines,5x7 matrix
ACALL comnwrt ;call command subroutine
ACALL lcddelay ;give LCD some time
MOV A, #0EH ;display on, cursor on
ACALL comnwrt ;call command subroutine
ACALL lcddelay ;give LCD some time
MOV A, #01 ;clear LCD
ACALL comnwrt ;call command subroutine
ACALL lcddelay ;give LCD some time
MOV A, #06H ;shift cursor right
ACALL comnwrt ;call command subroutine
ACALL lcddelay ;give LCD some time
RET

adcread: ;Initializing ADC


;SENSOR 1
MOV ADCDATA, #0FFH ; Data lines for input
SETB EOC ; Make EOC i/p
ACALL delay
CLR ALE ; clearing ALE
CLR START ; Make start high
CLR OE ; Disable o/p
CLR ADD_A ;A=0
CLR ADD_B ;B=0 ;Select IN4
ACALL delay
SETB ALE ;latching the address
ACALL delay
SETB START ;start conversion pulse
ACALL delay
CLR ALE ;ALE H-L transition
CLR START ;START H-L transition
JB EOC,$
JNB EOC,$
ACALL delay
SETB OE ;enable o/p
ACALL delay
MOV T_BUFFER, ADCDATA ;store adc data to buffer
CLR OE ;disable o/p

;SENSOR 2
MOV ADCDATA, #0FFH ; Data lines for input
SETB EOC ; Make EOC i/p
ACALL delay
CLR ALE ; clearing ALE
CLR START ; Make start high
CLR OE ; Disable o/p
SETB ADD_A ;A=1
CLR ADD_B ;B=0 Select IN5
ACALL delay
SETB ALE ;latching the address
ACALL delay
SETB START ;start conversion pulse
ACALL delay
CLR ALE ;ALE H-L transition
CLR START ;START H-L transition

JB EOC,$
JNB EOC,$
ACALL delay
SETB OE ;enable o/p
ACALL delay
MOV M_BUFFER, ADCDATA ;store adc data to buffer
CLR OE ;disable o/p

;SENSOR 3
MOV ADCDATA, #0FFH ; Data lines for input
SETB EOC ; Make EOC i/p
ACALL delay
CLR ALE ; clearing ALE
CLR START ; Make start high
CLR OE ; Disable o/p
CLR ADD_A ;A=0
SETB ADD_B ;B=1 Select IN6
ACALL delay
SETB ALE ;latching the address
ACALL delay
SETB START ;start conversion pulse
ACALL delay
CLR ALE ;ALE H-L transition
CLR START ;START H-L transition

JB EOC,$
JNB EOC,$
ACALL delay
SETB OE ;enable o/p
ACALL delay
MOV RH_BUFFER, ADCDATA ;store adc data to buffer
CLR OE ;disable o/p

;SENSOR 4
MOV ADCDATA, #0FFH ; Data lines for input
SETB EOC ; Make EOC i/p
ACALL delay
CLR ALE ; clearing ALE
CLR START ; Make start high
CLR OE ; Disable o/p
SETB ADD_A ;A=1
SETB ADD_B ;B=1 Select IN7
ACALL delay
SETB ALE ;latching the address
ACALL delay
SETB START ;start conversion pulse
ACALL delay
CLR ALE ;ALE H-L transition
CLR START ;START H-L transition

JB EOC,$
JNB EOC,$
ACALL delay
SETB OE ;enable o/p
ACALL delay
MOV L_BUFFER, ADCDATA ;store adc data to buffer
CLR OE ;disable o/p

RET
delay: ;Delay subroutine
MOV R3, #250
here1:
MOV R4, #255
here:
DJNZ R4, here
DJNZ R3, here1
RET

data_display: ;LCD routine to display sensor and actuator data

JNB LCD_INTR, sensor_display ;if ACT=0, jump to display sensor data label
MOV A, #01h ;clear LCD
ACALL comnwrt
ACALL lcddelay ;give LCD some time
MOV A,#80H ;cursor at line 1, position 0
ACALL comnwrt ;call command subroutine
ACALL lcddelay ;give LCD some time
MOV R0, #60h ;address of display message line 1
line1:
CLR A
MOV A, @R0 ;moving the data to accumulator
JZ nxt_line ;exit loop on completion of display and start
;display of LCD next line
LCALL datawrt ;call data display routine
LCALL lcddelay ;give LCD some time
INC R0 ;increment address
SJMP line1 ;repeat display till end of message

nxt_line: ;Displaying on line 2 of LCD


MOV A, #0C0h ;cursor at line 2, position 0

LCALL comnwrt ;call command subroutine


LCALL lcddelay ;give LCD some time
MOV R0, #70h ;address of display message line 2 line2:
CLR A
MOV A, @R0 ;moving the data to accumulator
JZ delay_5s ;exit loop on completion of display & call routine
;to wait 5 sec
LCALL datawrt ;call data display routine
LCALL lcddelay ;give LCD some time
INC R0 ;increment address
SJMP line2 ;repeat display till end of message

delay_5s: ;5 second delay routine


MOV R7, #100 ;REPEAT 100 TIMES (50ms*100= 5sec)
sec_5:
MOV TL0, #0FDh ;load 4BFDh for 5ms delay
MOV TH0, #4Bh
SETB TR0 ;Start timer 0
JNB TF0, $ ;Check for end of count
CLR TR0 ;Stop timer
CLR TF0 ;Clear timer 0 flag
DJNZ R7, sec_5 ;Repeat till R7=0

MOV A, #01h
;clear LCD LCALL comnwrt
LCALL lcddelay ;give LCD some time

sensor_display: ;displaying sensor data


MOV A,#80H ;cursor at line 1, position 0
LCALL comnwrt ;call command subroutine
LCALL lcddelay ;give LCD some time

MOV A, #'T' ;display letter T


LCALL datawrt ;call display subroutine
LCALL lcddelay ;give LCD some time
MOV A, #':' ;display : symbol
LCALL datawrt ;call display subroutine
LCALL lcddelay ;give LCD some time

MOV A, T_BUFFER ;move sensor data from buffer to accumulator


MOV DPTR, #temp_tens ;address of ASCII code look up table (tens place) MOVC
A, @A+DPTR ;store corresponding ASCII code to Accumulator LCALL
datawrt ;call display subroutine
LCALL lcddelay ;give LCD some time

MOV A, T_BUFFER ;move sensor data from buffer to accumulator


MOV DPTR, #temp_ones ;address of ASCII code look up table (ones place)
MOVC A, @A+DPTR ;store corresponding ASCII code to Accumulator LCALL
datawrt ;call display subroutine
LCALL lcddelay ;give LCD some time

MOV A, #'.' ;display . symbol


LCALL datawrt ;call display subroutine
LCALL lcddelay ;give LCD some time

MOV A, T_BUFFER ;move sensor data from buffer to accumulator


MOV DPTR, #temp_dec ;address of ASCII code look up table (dec. place)

MOVC A, @A+DPTR ;store corresponding ASCII code to Accumulator


LCALL datawrt ;call display subroutine
LCALL lcddelay ;give LCD some time

MOV A, #0DFh ;display degree symbol


LCALL
datawrt ;call display subroutine
LCALL lcddelay ;give LCD some time
MOV A, #'C' ;display letter C
LCALL datawrt ;call display subroutine
LCALL lcddelay ;give LCD some time

MOV A, #' ' ;display space


LCALL datawrt ;call display subroutine
LCALL lcddelay ;give LCD some time

threshold_check:

temp_check: ;CHECKING TEMPERATURE


THRESHOLD MOV A, T_BUFFER ;read sensor data from
buffer
CJNE A, #83, t_not_equal ;check for ambient temp (32deg C)
SJMP t_within_thresh ;end of threshold checking routine
t_not_equal:
JC t_within_thresh ;jump to within threshold routine

t_outside_thresh:
SETB COOLER ;turn on heater
JB BUZZ, no_buzz
SETB BUZZER ;turn on buzzer
ACALL
delay
CLR BUZZER ;turn off buzzer
SETB BUZZ ;set the buzzer flag high
no_buzz:
MOV 63h, #' '
MOV 64h, #'O'
MOV 65h, #'N'
SJMP light_check

t_within_thresh:
MOV A,
T_BUFFER
CJNE A, #73, ht_off
ht_off:
JNC light_check
CLR COOLER ;turn off heater
CLR
BUZZ
MOV 63h, #'O'
MOV 64h, #'F'
MOV 65h, #'F'
light_check: ;CHECKING LIGHT
THRESHOLDS MOV A, LIGHT_LEVEL
CJNE A, #1, lev2
CLR LIGHT1 ;turn off light 1
CLR LIGHT2 ;turn off light 2
CLR
BUZZ1
MOV 7Bh, #'O'
MOV 7Ch, #'F'
MOV 7Dh, #'F'
SJMP
humid_check lev2:
MOV A,
LIGHT_LEVEL
CJNE A, #2, lev3
SETB LIGHT1 ;turn on light1
CLR LIGHT2 ;turn off light2
ACALL
delay
buzzer
SETB
BUZZ1
no_buzz1:

MOV 7Bh, #' '


MOV 7Ch, #'O'
MOV 7Dh, #'N'
SJMP
humid_check lev3:
MOV A,
LIGHT_LEVEL
CJNE A, #3, lev4
SETB LIGHT1 ;turn on light1
SETB LIGHT2 ;turn on light2
MOV 7Bh, #' '
MOV 7Ch, #'O'
MOV 7Dh, #'N'
SJMP
humid_check ev4:
CLR LIGHT1 ;turn off light1
CLR LIGHT2 ;turn off light2
CLR
BUZZ1
MOV 7Bh, #'O'
MOV 7Ch, #'F'
MOV 7Dh, #'F'
humid_check:
MOV A, RH_BUFFER ;read sensor data from buffer
CJNE A, #40, h_not_equal ;check for ambient RH
SJMP h_within_thresh ;end of threshold checking routine
h_not_equal:
JNC h_within_thresh ;jump to within threshold routine

h_outside_thresh:
SETB SPRAYER ;turn on sprayer
MOV 73h, #' '
MOV 74h, #'O'
MOV 75h, #'N'
SJMP moist_check

h_within_thresh:
CJNE A,#70, sp_off
sp_off: JC moist_check

CLR SPRAYER ;turn off sprayer


CLR
BUZZ2
MOV 73h, #'O'
MOV 74h, #'F'
MOV 75h, #'F'
moist_check:
CHECKING MOISTURE THRESHOLDS

MOV A, MOIST_LEVEL CJNE A, #1, level2


SETB PUMP ;turn on pump

MOV 6Bh, #' '


MOV 6Ch, #'O'
MOV 6Dh, #'N'
SJMP th_end_check

level2:
MOV A,
MOIST_LEVEL
CJNE A, #2, level3
CLR
PUMP
CLR
BUZZ3
MOV 6Bh, #'O'
MOV 6Ch, #'F'
MOV 6Dh, #'F'
SJMP th_end_check
level3:
CLR PUMP ;turn off pump
CLR BUZZ3
MOV 6Bh, #'O'
MOV 6Ch, #'F'
MOV 6Dh, #'F'

th_end_check:
end_check: RET

int_isr: ;interrupt routine for LCD button


MOV IE, #00h ;Disable interrupts
PUSH 0E0h ;Push A to stack PUSH
00h ;Push R0
PUSH 03h ;Push R3
PUSH 04h ;Push R4
PUSH 07h ;Push R7
PUSH 82h ;Push DPL
PUSH 83h ;Push DPH
SETB LCD_INTR ;Set flag to check interrupt
POP 83h ;Pop
DPH POP 82h ;Pop DPL
POP 07h ;Pop R7 from stack
POP 04h ;Pop R4
POP 03h ;Pop R3
POP 00h ;Pop reg R0
POP 0E0h ;Pop Accumulator
MOV IE, #81h ;Enable INT0
RET

You might also like