Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INTRODUCTION
Closed area without air circulation and directly exposed to sunlight heats up much faster
and reaches significantly higher temperatures than the open space where air circulates freely
so-called "greenhouse effect". That is exactly what happens in a vehicle parked in the hot
summer sun, which later represents a problem when entering such overheated vehicle. In real
conditions are presented and analyzed. The ventilation is very important to the humans in
anywhere. Especially for vehicle, in vehicles there is a lot of heat generate inside the vehicle, if it
is parked in the sun shine results more and more heat. So we cannot enter in to the vehicle
immediately, it takes more time to cool inside the vehicle results uncomfortable to the vehicle
owner.
The basic idea of this project is to prevent or at least mitigate overheating of the vehicle
interior in order to facilitate entering into the vehicle. So that a micro controller managed
automatic ventilation systems will help to make the vehicle comfortable to the owners while
it is parked in the sun shine of the vehicles. Micro controller managed automatic ventilation
system is implemented
The problem can be solved by leaving the vehicle windows partially opened so air can
circulate, which reduces the heating of the vehicle interior. However, as the ventilation
process takes place in a parked vehicle, without human presence, and the vehicle is
exposed to external influences, such as precipitation or potential burglary, it is unreliable
and unsafe. Consequently, it is necessary to
is
managed
by
microcontroller
default
algorithm, considering input signals read using various sensors. The temperature sensor
measures the temperature inside the vehicle. If it exceeds predefined level of "comfortable
temperature", microcontroller automatically lowers the power windows to enable air
circulation which alleviates aforementioned "greenhouse effect".
The automatic ventilation process must be reliable and not affect the safety of the vehicle. For
this reason, additional sensors are used, whose task is to annul dangers appeared with this
ventilation method. Before all, these are precipitation sensor that makes the ventilation process
reliable, and motion sensors that make it safe. There are also other sensors whose
implementation gives additional quality, but these are the most important of them. Together with
temperature sensor, they meet the minimum requirements to perform automatic function of
ventilation, without endangering the vehicle.
using a microcontroller as a central logical unit and a series of sensors which provide
sufficient data to ensure functional, but also efficient, reliable and safe ventilation. The
ventilation process is performed by opening vehicle windows slightly, which enables air to
circulate.
Following chapters show components and technologies used, operation modes, advantages
and disadvantages, capabilities and potential upgrades of the module, as well as ability of
integration with existing automatic systems within the vehicle.
module.
CHAPTER-2
LITERATURE SURVEY
With embedded systems fast expanding its reach, subject matter related to this field is
available in abundance. While working on this project we have studied matter from various
sources such as books, online articles and reference manuals. The knowledge gained from this
activity has been of great help to us in understanding the basic concepts related to our project and
has ignited further interest in this topic.
We understood the preponderance of the ARM processors in the field of embedded systems and
the features of ARM processors from the document The ARM Architecture by Leonid Ryzhyk.
The ARM architecture is a confluence of many useful features that makes it better than other
peer processors. Being small in size and requiring less power, they prove useful in providing an
efficient performance in embedded applications.
C/OS III the Real Time Kernel, by Micrium press has been of great help in
providing an introduction to the Real Time Kernel. It has helped me to understand and write the
programming code for the project in the Real Time Operating System.
The Existing systems of automatic ventilation have a lot of demerits which are given below:
1. Pure analogy:
Previously existing systems are pure analogy systems. Which needs the manual operation, it does
not having quality sensors for detection of the high temperature. This system does not support
the predefined input data.
2. Time independent operation:
We cannot give the time to system for its operation set the time the existing systems are
programmed to search only in a predefined path. There is no chance to dynamically alter the
search path.
3. cannot able to establish the remote communication:
The following system cannot able to provide the information regarding temperature condition to
the user remotely.
4. Unintelligent:
Existing systems are unintelligent, it means it does not having micro controller. It simply
collects the data analogy mode; based on that collecting voltage from the sensors, it
performs the operation. It opens window when it receives the maximum voltage and close the
door when cools.
5. Environmental conditions:
It cannot accurately analyze the environmental conditions like temperature, detection of rains for
closing or opening the windows itself.
6. Low trough put:
It was built over the analog system, so that analogy systems performances are time taking
process, so these cannot provide the high speed operations.
CHAPTER-3
EXPERIMENTAL ANALYSIS
3.1 Block Diagram
Figure 3.1 Block diagram of the microcontroller managed automatic ventilation system for
vehicle interiors. The above Block diagram Consisting of the Arm Cortex M4 Micro
Controller and the Temperature Sensor to Monitor the Temperature inside the Vehicle.
Precipitation Sensor Is Used To Detect the Rain Fall Around the Vehicle and If Rain Occurred.
When window is in open position, the window will close automatically. To monitor the status of
the system LCD display is provided. Motor Driver Circuit is used to drive the Motors. Hence,
The Micro Controller cannot drive the motor directly. Two 60 rpm motors are used to close or to
open the window (Both left side window and right side window).
This device needs the power requirements as given as follows 5V, 750mA power supply. So
battery of the vehicle provides the voltage of 12V, 20A, so we are using 7805 three terminal
voltage regulator is used for voltage regulation.Arm7 microcontroller having the 64 pins
&low power consumption model, it is having the64 pins totally, It is having 48 I/O pins, on chip
ADC, UART, RTC 512kb of flash memory and utilizes low power ,it requires +3.3v volts for its
operation. A simpler design facilitates more efficient multi-core CPUs and higher core counts
at lower cost, providing higher processing power and improved energy efficiency for
servers and super computers LCD display.
First the system should be connected to the battery of the vehicle directly; the system should
remain in on condition even though vehicle in OFF position. When the temperature inside the
vehicle exceeds the predefined level, the microcontroller automatically switch on the motors
for opening the window simultaneously. When the temperature inside the vehicle reaches
the lower level, it will automatically close the window and status of the operation is
displaying on the LCD display. Same operation is performed during raining also. If the
windows are in open position if it rains the micro controller automatically activates the
Windows to close. Important notice is that the same operation can performed even the driver
presented inside the vehicle.
The control unit, or microcontroller, receives, processes and sends signals which
makes it the central logical unit, while peripheral unit exclusively collects data and sends it
to control unit, which makes it the input unit.
actual temperature of the vehicle interior, not the ostensible temperature (which is slightly
higher due to the direct expose to the sun rays).
circuit
with
other
necessary electronic
components.
In accordance with
temperature change, sensor gives different output value. The control unit processes it and thus
receives information about the actual temperature inside the vehicle.
The LM35-series devices are precision integrated-circuit temperature sensors, with an
output voltage linearly proportional to the Centigrade temperature. The LM35 device has an
advantage over linear temperature sensors calibrated in Kelvin, as the user is not required to
subtract a large constant voltage from the output to obtain convenient Centigrade scaling. The
LM35 device does not require any external calibration or trimming to provide typical accuracies
of C at room temperature and cover a full 55C to 150C temperature range.
Lower cost is assured by trimming and calibration at the water level. The low output
impedance, linear output, and precise inherent calibration of the LM35 device makes interfacing
to readout or control circuitry especially easy. The device is used with single power supplies, or
with plus and minus supplies. As the LM35 device draws only 60 A from the supply, it has very
low self-heating of less than 0.1C in still air. The LM35 device is rated to operate over a 55C
to 150C temperature range, while theLM35Cdevice is rated for a 40C to 110C range (10
with improved accuracy). The temperature-sensing element is comprised of a delta-V BE
architecture. The temperature-sensing element is then buffered by an amplifier and provided to
the VOUT pin. The amplifier has a simple class A output stage with typical 0.5- output
impedance .Therefore the LM35 can only source current and its sinking capability is limited to 1
A.
angle
onto
the
windshield. The light of the expected intensity reflects to the photodiode which is used
as a receiver. If droplets appear onto the windshield, the light reflects differently which causes
a change in the receiving electronic circuit connected to the microcontroller. That is recognized
as the presence of precipitation and windows close. Figure 3.4 shows precipitation sensor.
classified as a potential danger and the system closes the windows. Commercial motion
sensors on the principle of infrared technology - "Velleman PIR416" are used for purpose
of this module. The infrared motion sensor works on a similar principle as the precipitation
sensor; by detecting the infrared radiation reflected from a moving object within the
sensors range. Infrared sensors have the disadvantage of not receiving signal effectively
through the glass, so they should be mounted outside the vehicle, which is aesthetically
undesirable.
For this reason, microwave motion sensor(s) can be used, such is, which will
surely detect all motions within the vehicle's surroundings, from inside the vehicle. The basic
function of automatic ventilation inside the vehicle is achieved using temperature sensor.
Ventilation inside the vehicle is achieved by method of slightly lowering windows for a
few centimeters, which makes it functional, discreet enough, but relatively reliable and
safe. By adding the precipitation and motion sensors, the ventilation process becomes reliable
and safe, but it opens up the possibility of even better ventilation. That is, now when there is a
control system and protection from external impact, the windows can be further lowered
10
to increase air circulation, and more air circulation means more quality ventilation. These
critical input units are the most important for stable ventilation process. Other input units which
contribute to efficiency and vehicle safety are:
11
where should be placed in the automatic ventilation mode. Position sensors provide a reliable
windows setting in the desired position. This benefits to all aspects of the module quality;
provides the reliability and security because the windows will always reach an end
position whenever it is necessary, improves efficiency because windows will stop
immediately when they reach a target position, preventing unnecessary overload of the
electric motors and needles consumption of limited electrical energy, as well as potential
danger of blowing electric motors or module is prevented and the vehicle is protected
from potential conflagration. Moreover, a very important input information is obtained direct feedback that informs the microcontroller on the execution of the given commands.
All this greatly improves the quality of the ventilation process. Position sensor functionality is
achieved using conventional buttons and switches. When reaching the mid or end position,
the window carrier press the button/switch that closes the electronic circuit which confirms
successfully executed operation to microcontroller. According to, various components and
methods were considered for this purpose, such are photo and infra-red diodes or instead of
using additional components this function is
Programmable via microcontroller in the form of time circuit. However, classic buttons
and switches are the simplest, most reliable and most resistant components that are to be
applied for this purpose.
12
However, it is a
highly complex integrated circuit that contains thousands of electronic components inside.
All in all, this microcontroller is too powerful for this module.
However, as it has an
affordable price, and considering the additional module upgrades and extensions, it would
be imprudent to limit its potential immediately at start by implementing a microcontroller
with fewer features.
The control unit could be implemented even without microcontroller by using
some other logic electronic components, however, the module would not be programmable,
nor upgradeable or be adaptable to individual vehicles and customer requirements.
galvanic circuit separation, relays are used to prevent overheating of the driver component,
achieving a sufficient power for quality work of electric motors and prevent the flow of
large currents within the module, which is not advisable because of the strong magnetic fields
that are generated by large currents and their negative effects on sensitive electronic
components.
13
that
allow
the
processors,
configured
for
various
environments,
developed by British company ARM Holdings. A RISC based computer design approach means
ARM processors require significantly fewer transistors than typical complex instruction set
computing x86 processors in most personal computers. This approach reduces costs, heat and
power use. Such reductions are desirable traits for light, portable, battery powered devices
including smart phones, laptops, tablet and notepad computers, and other embedded systems. A
simpler design facilitates more efficient multi-core CPUs and higher core counts at lower cost,
providing improved energy efficiency for servers.
The main system consists of 32 bit multilayer AHB bus matrix that interconnects the
eight masters and seven slaves.
Eight masters:
14
Seven slaves:
AHB2 peripherals
FSMC
The memory organization of the system with Program memory, data memory, registers
and I/O ports are organized within the same linear 4 Gbyte address space. The bytes are coded in
memory in little Endean format. The lowest numbered byte in a word is considered the words
least significant byte and the highest numbered byte, the words most significant. The
addressable memory space is divided into 8 main blocks, each of 512 MB
GPIO:
The general purpose input output (GPIO) peripherals of system cortex we are using
consistes of the has four 32-bit configuration registers (GPIOx_MODER, GPIOx_OTYPER,
GPIOx_OSPEEDR and GPIOx_PUPDR), two 32-bit data registers (GPIOx_IDR and
GPIOx_ODR), a 32-bit set/reset register (GPIOx_BSRR), a 32-bit locking register
(GPIOx_LCKR) and two 32-bit alternate function selection register (GPIOx_AFRH and
GPIOx_AFRL).
The following are the main features of the GPIO:
Input data to input data register (GPIOx_IDR) or peripheral (alternate function input)
Bit set and reset register (GPIOx_BSRR) for bitwise write access to GPIOx_ODR
15
Analog function
Alternate function input/output selection registers (at most 16 AFs per I/O)
Highly flexible pin multiplexing allows the use of I/O pins as GPIOs or as one of several
Input floating
Input pull-up
Input-pull-down
Analog
RCC:
The Reset and clock control (RCC) of the system consists of three types of reset, defined
as system Reset, power Reset and backup domain Reset.
A system reset sets all registers to their reset values except the reset flags in the clock
controller CSR register and the registers in the Backup domain.
A system reset is generated when one of the following events occurs:
16
values. The BKPSRAM is not affected by this reset. The only way of resetting the BKPSRAM is
through the Flash interface by requesting a protection level change from 1 to 0.
A backup domain reset is generated when one of the following events occurs:
VDD or VBAT power on, if both supplies have previously been powered off
The system clock of the arm cortex plays an important role. Three different clock sources
32 kHz low-speed internal RC (LSI RC) which drives the independent watchdog and,
optionally, the RTC used for Auto-wakeup from the Stop/Standby mode.
32.768 kHz low-speed external crystal (LSE crystal) which optionally drives the RTC
clock (RTCCLK)
DMA:
The DMA controller performs direct memory transfer: as an AHB master, it can take the control
of the AHB bus matrix to initiate AHB transactions.
It can carry out the following transactions:
peripheral-to-memory
memory-to-peripheral
memory-to-memory
The DMA controller provides two AHB master ports: the AHB memory port, intended to be
connected to memories and the AHB peripheral port, intended to be connected to peripherals.
17
However, to allow memory-to-memory transfers, the AHB peripheral port must also have access
to the memories. The AHB slave port is used to program the DMA controller (it supports only
32-bit accesses).
Direct memory access (DMA) is used in order to provide high-speed data transfer between
peripherals and memory and between memory and memory. Data can be quickly moved by
DMA without any CPU action. This keeps CPU resources free for other operations. The DMA
controller combines a powerful dual AHB master bus architecture with independent FIFO to
optimize the bandwidth of the system, based on complex bus matrix architecture. The two DMA
controllers have 16 streams in total (8 for each controller), each dedicated to managing memory
access requests from one or more peripherals. Each stream can have up to 8 channels in total.
And each has an arbiter for handling the priority between DMA requests.
The main DMA features are:
Dual AHB master bus architecture, one dedicated to memory accesses and one dedicated
to peripheral accesses
Four separate 32 first-in, first-out memory buffers (FIFOs) per stream, that can be used
In FIFO mode or direct mode.
ADC:
The ADC of the ARM cortex The 12-bit ADC is a successive approximation analog-todigital converter. It has up to 19 multiplexed channels allowing it to measure signals from 16
external sources, two internal sources, and the VBAT channel. The A/D conversion of the
channels can be performed in single, continuous, scan or discontinuous mode. The result of the
ADC is stored into a left or right aligned 16-bit data register. The analog watchdog feature allows
the application to detect if the input voltage goes beyond the user-defined, higher or lower
thresholds.
The 12-bit ADC is a successive approximation analog-to-digital converter. It has up to 19
multiplexed channels allowing it to measure signals from 16 external sources, two internal
sources, and the VBAT channel. The A/D conversion of the channels can be performed in
18
single, continuous, scan or discontinuous mode. The result of the ADC is stored into a left- or
right-aligned 16-bit data register.
The analog watchdog feature allows the application to detect if the input voltage goes beyond
the user-defined, higher or lower thresholds.
ADC main features:
12-bit, 10-bit, 8-bit or 6-bit configurable resolution
Interrupt generation at the end of conversion, end of injected conversion, and in case of
analog watchdog or overrun events
Single and continuous conversion modes
Scan mode for automatic conversion of channel 0 to channel n
Data alignment with in-built data coherency
Channel-wise programmable sampling time
External trigger option with configurable polarity for both regular and injected conversions
Discontinuous mode
Dual/Triple mode (on devices with 2 ADCs or more)
Configurable DMA data storage in Dual/Triple ADC mode
Configurable delay between conversions in Dual/Triple interleaved mode
ADC conversion type (refer to the datasheets)
ADC supply requirements: 2.4 V to 3.6 V at full speed and down to 1.8 V at slower speed
ADC input range: VREF <= VIN <= VREF+
DMA request generation during regular channel conversion
19
The NVIC and the processor core interface are closely coupled, which enables low
latency interrupt processing and efficient processing of late arriving interrupts.
All interrupts including the core exceptions are managed by the NVIC.
20
Time-base unit
The main block of the programmable timer is a 16-bit upcounter with its related auto-reload
register. The counter clock can be divided by a prescaler.
The counter, the auto-reload register and the prescaler register can be written or read by
software. This is true even when the counter is running.
The time-base unit includes:
Counter Register (TIMx_CNT)
Prescaler Register (TIMx_PSC)
Auto-Reload Register (TIMx_ARR)
The auto-reload register is preloaded. The preload register is accessed each time an attempt is
made to write or read the auto-reload register. The contents of the preload register are
transferred into the shadow register permanently or at each update event UEV, depending on the
auto-reload preload enable bit (ARPE) in the TIMx_CR1 register. The update event is sent
when the counter reaches the overflow value and if the UDIS bit equals 0 in the TIMx_CR1
register. It can also be generated by software. The generation of the update event is described in
detail for each configuration.
The counter is clocked by the prescaler output CK_CNT, which is enabled only when the
counter enable bit (CEN) in the TIMx_CR1 register is set.
Prescaler description
The prescaler can divide the counter clock frequency by any factor between 1 and 65536. It is
based on a 16-bit counter controlled through a 16-bit register (in the TIMx_PSC register). It can
be changed on the fly as the TIMx_PSC control register is buffered. The new prescaler ratio is
taken into account at the next update event.
Counting mode
The counter counts from 0 to the auto-reload value (contents of the TIMx_ARR register), then
restarts from 0 and generates a counter overflow event.
An update event can be generate at each counter overflow or by setting the UG bit in the
TIMx_EGR register (by software or by using the slave mode controller).
21
The UEV event can be disabled by software by setting the UDIS bit in the TIMx_CR1 register.
This avoids updating the shadow registers while writing new values into the preload registers.
In this way, no update event occurs until the UDIS bit has been written to 0, however, the
counter and the prescaler counter both restart from 0 (but the prescale rate does not change). In
addition, if the URS (update request selection) bit in the TIMx_CR1 register is set, setting the
UG bit generates an update event UEV, but the UIF flag is not set (so no interrupt or DMA
request is sent).
When an update event occurs, all the registers are updated and the update flag (UIF bit in the
TIMx_SR register) is set (depending on the URS bit):
the buffer of the prescaler is reloaded with the preload value (contents of the
TIMx_PSC register)
the auto-reload shadow register is updated with the preload value (TIMx_ARR)
The following figures show some examples of the counter behavior for different clock
frequencies when TIMx_ARR = 0x36.
I2C:
I2C (inter-integrated circuit) bus Interface serves as an interface between the microcontroller
and the serial I2C bus. It provides multimaster capability, and controls all I2C bus-specific
sequencing, protocol, arbitration and timing. It supports standard and fast speed modes. It is
also SMBus 2.0 compatible.
It may be used for a variety of purposes, including CRC generation and verification, SMBus
(system management bus) and PMBus (power management bus).
Depending on specific device implementation DMA capability can be available for reduced
CPU overload.
I2C main features
Parallel-bus/I2C protocol converter
Multimaster capability: the same interface can act as Master or Slave
I2C Master Features:
Clock generation
Start and Stop generation
22
23
24
Features:
5x8 dot matrix format for 2.92x5.56mm characters plus cursor line.
25
Pin No.
Symbol
Function
VSS
Ground
VDD
Power supply
VLCD
RS
R/W
DB0
DB1
DB2
10
DB3
11
DB4
12
DB5
26
13
DB6
14
DB7
15
Cathode of Backlight
16
Anode of Backlight
Table 3.1 LCD PIN CONFIGURATION
27
28
achieve. An 8-lead stepper is wound like a unipolar stepper, but the leads are not joined to
common internally to the motor. This kind of motor can be wired in several configurations.
Operation of Stepper Motor:The rotor: The rotor itself is made from two discs, a little like gears, one of which is a magnetic
north pole (red) and the other is a south pole (blue). When we put the two discs back to back, we
get north and South Pole teeth alternating around the edge
The stator: Around the edge of the rotor, we have the stator: in the example, four electromagnets
that can be switched on and off individually. Generally the electromagnets in a stepper motor
work in pairs, with each opposing pair of magnets switching on together to make a north pole at
the same time, followed by the magnets at right angles, which also work together. Exactly what
switches on when depends on how many rotor teeth (steps) there are and how many
electromagnet coils surround them: the geometry and alignment of a stepper motor has to be just
right to make the rotor turn.
29
How it rotates:
The right electromagnet is energized and becomes a north pole (red) and the left
electromagnet becomes a south pole (blue). This pulls the rotor around by one step so a
blue tooth on the rotor snaps toward the right electromagnet and a red tooth snaps toward
the left electromagnet.
Now the bottom electromagnet becomes a north pole, the top magnet becomes a south
pole, and the two horizontal magnets are switched off. Again, the teeth of the rotor are
pulled around by one step.
The vertical magnets are now switched off and the horizontal magnets are switched on
again, but with the opposite polarity (pattern of magnetism) that they had before. The
teeth of the rotor advance by one more step.
Finally, the vertical magnets are switched on again, in the opposite polarity to before, and
the horizontal magnets are switched off. The rotor mores around one more step. The
whole cycle then repeats.
30
3.3.4 SENSORS
In this projects, different types of sensors are used. Those are mainly Temperature sensor,
precipitation sensor, light sensor, motion sensor and position sensors. The full description of
these sensors in the section 3.2.1.
31
CHAPTER-4
MICROCONTROLLER PROGRAMMING
4.1 RTOS (Real Time Operating System)
A Real Time Operating System generally contains a real-time kernel and other higher-level
services such as file management, protocol stacks, a Graphical User Interface (GUI), and other
components. Most additional services revolve around I/O devices.
MICRIUM C/OS -III REAL TIME KERNEL:
C/OS-III is a scalable, ROMable, preemptive real-time kernel that manages an unlimited
number of tasks. C/OS-III is a third-generation kernel, offering all of the services expected
from a modern real-time kernel including resource management, synchronization, inter-task
communication, and more. However, C/OS-III also offers many unique features not found in
other real-time kernels, such as the ability to perform performance measurements at run time,
directly signal or send messages to tasks, and pending (i.e., waiting) on such kernel objects as
semaphores and message queues.
The services offered by the real time kernel c/OS:
Task management
Ready list
Scheduling
Context switching
Interrupt management
Pending list
Time management
Timer management
Resource management
Synchronization
Message passing
Multiple objects
Memory management
Runtime statistics.
32
33
passing NULL pointers, not calling task level services from ISRs, that arguments are within
allowable range, and options specified are valid, etc.. These checks can be disabled (at compile
time) to further reduce the code footprint and improve performance. The fact that C/OS-III is
scalable allows it to be used in a wide range of applications and projects.
Portable: C/OS-III can be ported to a large number of CPU architectures. Most C/OS-II ports
are easily converted to work on C/OS-III with minimal changes in just a matter of minutes and
therefore benefit from more than 45 CPU architectures already supported by C/OS-II.
ROMable: C/OS-III was designed especially for embedded systems and can be ROMed along
with the application code.
Run-time configurable: C/OS-III allows the user to configure the kernel at run time.
Specifically, all kernel objects such as tasks, stacks, semaphores, event-flag groups, message
queues, number of messages, mutual exclusion semaphores, memory partitions and timers, are
allocated by the user at run time. This prevents over-allocating resources at compile time.
Unlimited number of tasks: C/OS-III supports an unlimited number of tasks. From a practical
standpoint, however, the number of tasks is actually limited by the amount of memory (both code
and data space) that the processor has access to. Each task requires its own stack space and,
C/OS-III provides features to allow stack growth of the tasks to be monitored at run-time.
C/OS-III does not impose any limitations on the size of each task stack, except that there be a
minimum size based on the CPU used.
Unlimited number of priorities: C/OS-III supports an unlimited number of priority levels.
However, configuring C/OS-III for between 32 and 256 different priority levels is more than
adequate for most applications.
Unlimited number of kernel objects: C/OS-III allows for any number of tasks, semaphores,
mutual exclusion semaphores, event flags, message queues, timers, and memory partitions. The
user allocates all kernel objects at run-time.
Services: C/OS-III provides all the services expected from a high-end real-time kernel, such as
task management, time management, semaphores, event flags, mutexes, message queues,
software timers, fixed-size memory pools, etc.
Mutual Exclusion Semaphores (Mutexes): Mutexes are provided for resource management.
Mutexes are special types of semaphores that have built-in priority inheritance, which eliminate
34
unbounded priority inversions. Accesses to a mutex can be nested and therefore, a task can
acquire the same mutex up to 250 times. Of course, the mutex owner needs to release the mutex
an equal number of times.
Nested task suspension: C/OS-III allows a task to suspend itself or another task. Suspending a
task means that the task will not be allowed to execute until the task is resumed by another task.
Suspension can be nested up to 250 levels deep. In other words, a task can suspend another task
up to 250 times. Of course, the task must be resumed an equal number of times for it to become
eligible to run on the CPU.
Software timers: You can define any number of one-shot and/or periodic timers. Timers are
countdown counters that perform a user-definable action upon counting down to 0. Each timer
can have its own action and, if a timer is periodic, the timer is automatically reloaded and the
action is executed every time the countdown reaches zero.
Task Signals: C/OS-III allows an ISR or task to directly signal a task. This avoids having to
create an intermediate kernel object such as a semaphore or event flag just to signal a task, and
results in better performance.
Task Messages: C/OS-III allows an ISR or a task to send messages directly to a task. This
avoids having to create and use a message queue, and also results in better performance.
Task registers: Each task can have a user-definable number of task registers. Task registers
are different than CPU registers. Task registers can be used to hold errno type variable, IDs,
interrupt disable time measurement on a per-task basis, and more.
Error checking: C/OS-III verifies that NULL pointers are not passed, that the user is not
calling task-level services from ISRs, that arguments are within allowable range, that options
specified are valid, that a pointer to the proper object is passed as part of the arguments to
services that manipulate the desired object, and more. Each C/OS-III API function returns an
error code concerning the outcome of the function call.
Built-in performance measurements: C/OS-III has built-in features to measure the execution
time of each task, stack usage of each task, number of times a task executes, CPU usage, ISR-totask and task-to-task response time, peak number of entries in certain lists, interrupt disable and
scheduler lock time on a per-task basis, and more.
35
Built-in trace points: C/OS-III has built-in trace points throughout the code to record all the
kernel events and interrupts in real-time using some of the most popular tracing analysis tools
(e.g. Percepio's TraceAlyzer and SEGGER SystemView).
Can easily be optimized: C/OS-III was designed so that it could easily be optimized based on
the CPU architecture. Most data types used in C/OS-III can be changed to make better use of
the CPUs natural word size. Also, the priority resolution algorithm can easily be written in
assembly language to benefit from special instructions such as bit set and clear, as well as countleading-zeros (CLZ), or find-first-one (FF1) instructions.
Deadlock prevention: All of the C/OS-III pend services include timeouts, which help avoid
deadlocks.
Tick handling at task level: The clock tick manager in C/OS-III is accomplished by a task that
receives a trigger from an ISR. Handling delays and timeouts by a task greatly reduces interrupt
latency. Also, C/OS-III uses a hashed delta list mechanism, which further reduces the amount of
overhead in processing delays and timeouts of tasks.
User definable hooks: C/OS-III allows the port and application programmer to define hook
functions, which are called by C/OS-III. A hook is simply a defined function that allows the
user to extend the functionality of C/OS-III. One such hook is called during a context switch,
another when a task is created, yet another when a task is deleted, etc.
Timestamps: For time measurements, C/OS-III requires that a 16-bit or 32-bit free running
counter be made available. This counter can be read at run time to make time measurements of
certain events. For example, when an ISR posts a message to a task, the timestamp counter is
automatically read and saved as part of the message posted. When the recipient receives the
message, the timestamp is provided to the recipient, and by reading the current timestamp, the
time it took for the message to be received can be determined.
Built-in support for Kernel Awareness debuggers: This feature allows kernel awareness
debuggers to examine and display C/OS-III variables and data structures in a user-friendly way.
The kernel awareness support in C/OS-III can be used by C/Probe to display this information
at run-time.
Object names: Each C/OS-III kernel object can have a name associated with it. This makes it
easy to recognize what the object is assigned to. You can thus assign an ASCII name to a task, a
36
semaphore, a mutex, an event flag group, a message queue, a memory partition, and a timer. The
object name can have any length, but must be NUL terminated.
37
When a C/OS-III task begins executing, it is passed an argument, p_arg. This argument is a
pointer to a void. The pointer is a universal vehicle used to pass your task the address of a
variable, a structure, or even the address of a function, if necessary. With this pointer, it is
possible to create many identical tasks, that all use the same code (or task body), but, with
different run-time characteristics. For example, you may have four asynchronous serial ports that
are each managed by their own task. However, the task code is actually identical. Instead of
copying the code four times, you can create the code for a generic task that receives a pointer
to a data structure, which contains the serial ports parameters (baud rate, I/O port addresses,
interrupt vector number, etc.) as an argument. In other words, you can instantiate the same task
code four times and pass it different data for each serial port that each instance will manage.
A run-to-completion task must delete itself by calling OSTaskDel(). The task starts, performs its
function, and terminates. There would typically not be too many such tasks in the embedded
system because of the overhead associated with creating and deleting tasks at run-time. In
the task body, you can call most of C/OS-IIIs functions to help perform the desired operation
of the task.
void MyTask (void *p_arg)
{
OS_ERR err;
/* Local variables
*/
*/
*/
*/
With C/OS-III, you either can call a C or assembly language functions from a task. In fact, it is
possible to call the same C function from different tasks as long as the functions are reentrant. A
reentrant function is a function that does not use static or otherwise global variables unless they
are protected (C/OS-III provides mechanisms for this) from multiple access. If shared C
38
functions only use local variables, they are generally reentrant (assuming that the compiler
generates reentrant code). An example of a non-reentrant function is the famous strtok() provided
by most C compilers as part of the standard library. This function is used to parse an ASCII string
for tokens. The first time you call this function, you specify the ASCII string to parse and a list
of token delimiters. As soon as the function finds the first token, it returns. The function
remembers where it was last so when called again, it can extract additional tokens, which is
clearly non-reentrant.
The use of an infinite loop is more common in embedded systems because of the repetitive work
needed in such systems (reading inputs, updating displays, performing control operations, etc.).
This is one aspect that makes a task different than a regular C function. Note that one could use a
while (1) or for (;;) to implement the infinite loop, since both behave the same. The one used
is simply a matter of personal preference. At Micrium, we like to use while (DEF_ON). The
infinite loop must call a C/OS-III service (i.e., function) that will cause the task to wait for an
event to occur. It is important that each task wait for an event to occur, otherwise the task would
be a true infinite loop and there would be no easy way for other lower priority tasks to execute.
This concept will become clear as more is understood regarding C/OS-III.
void MyTask (void *p_arg)
{
/* Local variables
*/
*/
/* Task initialization
while (DEF_ON) {
*/
/* Task body, as an infinite loop.
*/
:
/* Task body ... do work!
*/
:
/* Must call one of the following services:
*/
/* OSFlagPend()
/*
*/
OSMutexPend()
*/
39
/*
OSQPend()
*/
/*
OSSemPend()
*/
/*
OSTimeDly()
*/
/*
OSTimeDlyHMSM()
/*
OSTaskQPend()
/*
OSTaskSemPend()
/*
OSTaskSuspend()
/*
OSTaskDel()
*/
*/
*/
(Suspend self)
*/
(Delete self)
*/
:
/* Task body ... do work!
*/
:
}
}
The event the task is waiting for may simply be the passage of time (when OSTimeDly() or
OSTimeDlyHMSM() is called). For example, a design may need to scan a keyboard every 100
milliseconds. In this case, you would simply delay the task for 100 milliseconds then see if a key
was pressed on the keyboard and, possibly perform some action based on which key was
pressed. Typically, however, a keyboard scanning task should just buffer an identifier unique to
the key pressed and use another task to decide what to do with the key(s) pressed.
Similarly, the event the task is waiting for could be the arrival of a packet from an Ethernet
controller. In this case, the task would call one of the OS Pend() calls (pend is synonymous with
wait). The task will have nothing to do until the packet is received. Once the packet is received,
the task processes the contents of the packet, and possibly moves the packet along a network
stack.
Its important to note that when a task waits for an event, it does not consume CPU time.
40
Tasks must be created in order for C/OS-III to know about tasks. You create a task by simply
calling OSTaskCreate() as weve seen in the Getting Started section. The function prototype for
OSTaskCreate() is shown below:
void OSTaskCreate (OS_TCB
OS_CHAR
*p_name,
OS_TASK_PTR
void
*p_tcb,
p_task,
*p_arg,
OS_PRIO
prio,
CPU_STK
*p_stk_base,
CPU_STK_SIZE
stk_limit,
CPU_STK_SIZE
stk_size,
OS_MSG_QTY
q_size,
OS_TICK
void
time_slice,
*p_ext,
OS_OPT
opt,
OS_ERR
*p_err)
41
When calling OSTaskCreate(), you pass the base address of the stack (p_stk_base) that will be
used by the task, the watermark limit for stack growth (stk_limit) which is expressed in number
of CPU_STK entries before the stack is empty, and the size of that stack (stk_size), also in
number of CPU_STK elements.
When specifying OS_OPT_TASK_STK_CHK + OS_OPT_TASK_STK_CLR in the opt
argument of OSTaskCreate(), C/OS-III initializes the tasks stack with all zeros.
C/OS-III then initializes the top of the tasks stack with a copy of the CPU registers in the same
stacking order as if they were all saved at the beginning of an ISR. This makes it easy to perform
context switches as we will see when discussing the context switching process. For illustration
purposes, the assumption is that the stack grows from high memory to low memory, but the same
concept applies for CPUs that use the stack in the reverse order.
42
The new value of the stack pointer (SP) is saved in the TCB. Note that this is also called the topof-stack.
The remaining fields of the TCB are initialized: task priority, task name, task state, internal
message queue, internal semaphore, and many others.
Next, a call is made to a function that is defined in the CPU port, OSTaskCreateHook() (see
os_cpu_c.c). OSTaskCreateHook() is passed the pointer to the new TCB and this function allows
you (or the port designer) to extend the functionality of OSTaskCreate(). For example, one could
printout the contents of the fields of the newly created TCB onto a terminal for debugging
purposes.
The task is then placed in the ready-list (see The Ready List) and finally, if multitasking has
started, C/OS-III will invoke the scheduler to see if the created task is now the highest priority
task and, if so, will context switch to this new task.
The body of the task can invoke other services provided by C/OS-III. Specifically, a task can
create another task (i.e., call OSTaskCreate()), suspend and resume other tasks (i.e., call
OSTaskSuspend() and OSTaskResume() respectively), post signals or messages to other tasks
(i.e., call OS??Post()), share resources with other tasks, and more. In other words, tasks are not
limited to only make wait for an event function calls.
The figure below shows the resources with which a task typically interacts.
43
An important aspect of a task is its code. As previously mentioned, the code looks like any other
C function, except that it is typically implemented as an infinite loop and, a task is not allowed to
return.
Each task is assigned a priority based on its importance in the application. C/OS-IIIs job is to
decide which task will run on the CPU. The general rule is that C/OS-III will run the most
important ready-to-run task (highest priority).
With C/OS-III, a low priority number indicates a high priority. In other words, a task at priority
1 is more important than a task at priority 10.
C/OS-III supports a compile-time user configurable number of different priorities (see
OS_PRIO_MAX in os_cfg.h). Thus, C/OS-III allows the user to determine the number of
different priority levels the application is allowed to use. Also, C/OS-III supports an unlimited
number of tasks at the same priority. For example, C/OS-III can be configured to have 64
different priority levels and one can assign dozens of tasks at each priority level.
See Assigning Task Priorities.
1. A task has its own set of CPU registers. As far as a task is concerned, the task thinks it
actually has the CPU all to itself.
2. Because C/OS-III is a preemptive kernel, each task must have its own stack area. The
stack always resides in RAM and is used to keep track of local variables, function calls,
and possibly ISR (Interrupt Service Routine) nesting.
3. Stack space can be allocated either statically (at compile-time) or dynamically (at runtime). A static stack declaration is shown below. This declaration is made outside of a
function.
static CPU_STK MyTaskStk[???];
or,
CPU_STK MyTaskStk[???];
44
Note that ??? indicates that the size of the stack (and thus the array) depends on the task stack
requirements. Stack space may be allocated dynamically by using the C compilers heap
management function (i.e., malloc()) as shown below. However, care must be taken with
fragmentation. If creating and deleting tasks, the process of allocating memory might not be able
to provide a stack for the task(s) because the heap will eventually become fragmented. For this
reason, allocating stack space dynamically in an embedded system is typically allowed but, once
allocated, stacks should not be deallocated. Said another way, its fine to create a tasks stack
from the heap as long as you dont free the stack space back to the heap.
void SomeCode (void)
{
CPU_STK *p_stk;
:
:
p_stk = (CPU_STK *)malloc(stk_size); if (p_stk != (CPU_STK *)0) {
Create the task and pass it p_stk as the base address of the stack ;}
:
:
}
See Determining the Size of a Stack.
1. A task can also have access to global variables. However, because C/OS-III is a
preemptive kernel care must be taken with code when accessing such variables as they
may be shared between multiple tasks. Fortunately, C/OS-III provides mechanisms to
help with the management of such shared resources (semaphores, mutexes and more).
2. A task may also have access to one or more Input/Output (I/O) devices (also known as
peripherals). In fact, it is common practice to assign tasks to manage I/O devices.
45
46
Operation
OSTmrCreate()
OSTmrDel()
Delete a timer.
OSTmrRemainGet()
OSTmrStart()
47
OSTmrStateGet()
OSTmrStop()
A timer needs to be created before it can be used. You create a timer by calling OSTmrCreate()
and specify a number of arguments to this function based on how the timer is to operate. Once
the timer operation is specified, its operating mode cannot be changed unless the timer is deleted
and recreated. The function prototype for OSTmrCreate() is shown below as a quick reference:
void OSTmrCreate (OS_TMR
*p_tmr,
/* Pointer to timer
CPU_CHAR
*p_name,
OS_TICK
dly,
OS_TICK
period,
OS_OPT
opt,
OS_TMR_CALLBACK_PTR
p_callback,
void
OS_ERR
*p_err)
/* Initial delay
*/
/* Repeat period
/* Options
*/
*/
*/
/* Fnct to call at 0
*/
Once created, a timer can be started (or restarted) and stopped as often as is necessary. Timers
can be created to operate in one of three modes: One-shot, Periodic (no initial delay), and
Periodic (with initial delay).
48
CHAPTER-5
EXPERIMENTAL TOOLS
5.1 Software Requirements
IAR EMBEDDED WORKBENCH:
49
A project manager.
A powerful editor.
50
Creating the Application Project and demonstrate the development cycle for setting up your
application project in the IDE. Typically, the cycle consists of these steps.
Creating a workspace
Compiling
Linking
For most product packages, there are two high-level programming languages. You can use with
the IAR C/C++ Compiler. C is the most widely used high-level programming language in the
embedded Systems industry. You can build freestanding applications that follow these Standards:
Standard C also known as C99. Hereafter, this standard is referred to as Standard C in this
guide.
C89 also known as C94, C90, C89, and ANSI C. This standard is required when MISRA
C is enabled.
C++ depends on your product package, any of these standards can be used:
Standard C++ can be used with different levels of support for exceptions and runtime
type information.
IAR Extended Embedded C++, with additional features such as full template support,
multiple inheritances, namespace support, the new cast operators, as well as the Standard
Template Library (STL).
JTAG DEBUGGING:
The Joint Test Action Group (JTAG) name is associated with the IEEE 1149.1 standard
entitled Standard Test Access Port and Boundary-Scan Architecture. Started in 1990 as a
digital test mechanism. In 1994, a supplement containing a description of the boundary scan
description language (BSDL) was added. JTAG is now primarily used for accessing subblocks of integrated circuits, but is also useful as a mechanism for debugging embedded
systems.
51
DEVELOPING EMBEDDED APPLICATIONS:Before we start developing our embedded application software, we should read about these
Concepts:
the development cycle.
commonly used software models.
the build process.
Programming for performance.
considering hardware and software factors.
Application execution.
52
THE DEVELOPMENT CYCLE:Before the actual development starts you must gather requirements and design and
specify your application architecture (manually or using automated code generation tools, such
as visual state). Then, you are ready to start the IAR Embedded Workbench IDE.
Below is a typical development cycle:-
A
Requirement
gathering
Debug with
Design and
specification
C-spy
Set up
project
A
A
A
A
53
54
On-board ST-LINK/V2 with selection mode switch to use the kit as a standalone
STLINK/ V2 (with SWD connector for programming and debugging)
Board power supply: through USB bus or from an external 5 V supply voltage.
Four user LEDs, LD3 (orange), LD4 (green), LD5 (red) and LD6 (blue)
USB OTG LEDs LD7 (green) VBUS and LD8 (red) over-current.
55
Extension header for all LQFP100 I/Os for quick connection to prototyping board and
easy probing.
System Requirements:
Atollic TrueSTUDIO
Keil, MDK-ARMTM.
Demonstration Software:
The demonstration software is preloaded in the boards Flash memory. It uses the MEMS
motion sensor to blink the four LEDs according to the motion direction and speed. Connecting
the board to a PC with a second USB 'type A to micro-B' cable converts it into a standard mouse,
and board motion controls the PC cursor. The latest versions of the demonstration source code
and associated documentation can be downloaded from www.st.com/stm32f4-discovery.
56
Thermocouple:
It is a type of temperature sensor, which is made by joining two dissimilar metals at one
end. The joined end is referred to as the HOT JUNCTION. The other end of these dissimilar
metals is referred to as the COLD END or COLD JUNCTION. The cold junction is actually
formed at the last point of thermocouple material. If there is a difference in temperature between
the hot junction and cold junction, a small voltage is created. This voltage is referred to as an
EMF (electro-motive force) and can be measured and in turn used to indicate temperature.
The RTD:
Is a temperature sensing device whose resistance changes with temperature. Typically
built from platinum, though devices made from nickel or copper are not uncommon, RTDs can
take many different shapes like wire wound, thin film. To measure the resistance across an RTD,
apply a constant current, measure the resulting voltage, and determine the RTD resistance. RTDs
exhibit fairly linear resistance to temperature curves over their operating regions, and any
nonlinearity are highly predictable and repeatable. The PT100 RTD evaluation board uses
surface mount RTD to measure temperature. An external 2, 3 or 4-wire PT100 can also be
associated with measure temperature in remote areas. The RTDs are biased using a constant
current source. So as to reduce self-heat due to power dissipation, the current magnitude is
moderately low. The circuit shown in figure is the constant current source uses a reference
voltage, one amplifier, and a PNP transistor.
Thermistors:
Similar to the RTD, the thermistor is a temperature sensing device whose resistance
changes with temperature. Thermistors, however, are made from semiconductor materials.
Resistance is determined in the same manner as the RTD, but thermistors exhibit a highly
nonlinear resistance vs. temperature curve.
Thus, in the thermistors operating range we can see a large resistance change for a very
small temperature change. This makes for a highly sensitive device, ideal for set-point
applications.
57
CHAPTER-6
FLOWCHART
It is mentioned that a microcontroller decides what to do and operates independently.
The microcontroller basically just follows the algorithm behavior, predefined program of
what to do in a certain situation. Simplified flowchart shows the microcontrollers algorithm
of behavior (Figure 6.1). Method of operation can easily be noticed by the flowchart.
At the
efficiency. For example, if in the middle of the ventilation suspicious movements are detected
on the right side of the vehicle, only the right window will close which still allows
partial ventilation through left window only, which is better than none.
58
59
CHAPTER-8
TEST RESULTS
The module is designed and developed for the installation into a one older car
without automatic air conditioner and with already existing basic electric mechanism for
lowering and raising the windows. The car has two power windows which can be managed.
That is why this module prototype manages only two sets of input and output signals for
connecting two independent windows. Figure 4.1 shows the electric scheme of a module
prototype.
Control unit, switching unit, other units and some of the peripheral units
(temperature and light sensors) can be perceived. Since the rest of the sensors cannot be
integrated into the modules main electronic circuit, connectors for their signals are
located inside the module. However, what is not mentioned so far are a lot of buttons, switches
and LEDs that can be seen alongside input and output connectors. With buttons, switches and
LEDs, this prototype module becomes the simulator as well inside the module are
simulators of all input and output signals that make this prototype even more convenient
for the further development and testing.
Although this is just a module prototype, it satisfies all requirements for working
in
real
conditions
and
can
different
electronic
circuits,
inputs,
outputs
and
module against different sort of nuisances that exist or could appear in real circumstances.
Electronic circuit was developed parallel with the program code to achieve even better
congruence between individual components and operations. Besides all the attention that was
given in the hardware development, a lot of attention was committed to the software
segments that improve quality work of module and protect system against contingent
situations. Aesthetic appearance of the assembly was also taken into consideration. Result is a
complete product that is ready for real use. Of course, the software can still significantly
improve in order to obtain a more intelligent and efficient module, but it is efficient enough,
functional, reliable and safe to use.
60
The module is assembled using DIP (Dual In-line Package) electronic components,
primarily due to the ease of making, testing and changing the hardware, which is quite
important since it is a prototype that will spend most of the time in simulation instead of
operating into the real world. Figure 5 shows the final implementation of printed circuit board.
Necessity of placing sensors around vehicle interior is already presented, but it is
good to emphasize it again because it directly disables implementation of this module as one
physical unit, which triggers other aggravating effects for easy installation and minimum
costs.
PRAPOSED SYSTEM
The proposed system has the following specifications.
1. Fully digital system:
This system is implemented by using advanced controller, which enables all the
sensors to interface them digitally to the micro controller. So that the results given by the
system are very accurate.
2. Status monitoring:
Whatever the works performed by the controller system, which enables the LCD
display to monitor the status of the system. So that the user use this or operate this system
more and more comfortably.
3. Time dependent operation:
This system allows the time dependent operations. Which means that how much of time
is required fully open the window the window or fully close. Time taking to open a window
or to close the window is fixed by the programmer.
4. Intelligent:
This system behavior is very intelligent, why because it is designed over the micro
controller platform, it works depending on the situation occurred.
61
the
temperature inside
the
vehicle reaches
the lower
level,
it
will
automatically close the window and status of the operation is displaying on the LCD display.
Same operation is performed during raining also. If the windows are in open position if it
rains the micro controller automatically activates the windows to close, again status is send to
user through SMS. Important notice is that the same operation can performed even the driver
presented inside the vehicle.
62
Module has been tested under real operating conditions in few vehicles on
outside temperatures in range of 21 C to 27 C. Mid position sensors were set on few different
levels. Also,
temperatures
inside
vehicles while
fully opened/closed
windows
were
measured for better comparison. Measured temperatures are presented by Figure 6. The
samples were collected during longer period of time. Comparing measured inside temperatures
it is concluded that slightly opened windows (up to 5 cm) do not get satisfying results. To
achieve quality ventilation it was necessary to lower windows at least 10 to 15 centimeters.
Of course, more opened windows, and finally completely opened windows gives the best results,
but 15 to 25 centimeters is optimal regarding inside temperature drop, energy consummation and
safety concerns.
Presented results should be taken into consideration as informative since measurements
were not taken in exactly the same weather conditions for each individual vehicle so there are
visible disrupting effects. It can be remarked that many different factors, besides obvious
direct sunlight, outside temperature and windows position directly affect ventilation
process; weather conditions have significant influence on the ventilation process e. g.,
wind noticeably accelerates and enhances ventilation. Further, size of the vehicle, even
vehicle body color and vehicle orientation relative to the sun makes noticeable difference.
Except module proved to be safe, reliable and efficient, satisfactory results of the
ventilation function were achieved.
slightly lowered windows), temperature inside of the vehicle parked in the sun on light
spring temperatures of 25 C can reach over 50 C. In summer, inside temperature rises even
more drastically.
Considering the
fact that this ventilation process is a passive method of cooling overheated interior, it
accomplishes very good results.
63
64
ADVANTAGES
1. It provides the advantage of safety.
The major advancement in this system, it provides the safety to the vehicle users. And
keeps the vehicle interior clean and reduces the health problems to the user of that particular
vehicle
2. Saving of time.
The users of the vehicle are no need to waiting until vehicle becoming cool. So this
system keeps ready vehicle any time to travel.
3. Increases the life span of the vehicle interiors:
This system helps the vehicle interior to continue the long time. So it prevents damage of
vehicle interiors from the excess heat and rain water in rainy season.
4. Saving the fuel.
If vehicle kept in sun shine it may get overheat, to diminish that overheating the
user may switch on the AC of the vehicle. By utilizing the this system the user may not
require
to switch on the AC, so it automatically reduces usage of AC ,it reflects the fuel
saving.
65
5. Saving money.
Microcontroller managed automatic ventilation system, it reduces the fuel usage,
increases the life span of the system, provides the safety for the vehicle interiors so that
ultimately reflects that money saving.
6. Easy maintenance.
By using the, high end technological device for vehicle safety, this device works
without human involvement because it is intelligent one and that too it does not require any
maintenance.
APPLICATIONS
1. cabs This systems is very useful in cabs, because the customers of the cab may
except the luxury of resources, this system meet their requirements.
2. Transport business.
The stated in the above, this system is not only used in cabs, but also in every
transportation bodies, why because that the Passengers may expect the comfortable journey.
3. Home and own vehicles
We can comfortably arrange this type of microcontroller based automatic ventilation for
houses, own vehicles for comfortable living, comfortable journeys respectively.
66
CHAPTER-9
CONCLUSION AND FUTURE SCOPE
Conclusion:
It can be summarized that this module, although only a prototype, is completely
functional device that performs its function safely, reliably and efficiently.
Possibility of
application is not limited only to the vehicle ventilation. The module is extremely expandable
in both ways: it is upgradeable for new tasks as well as compatible for integration into
some existing systems. Nearly every component can be used for several other functions, which
can be achieved only by software upgrade.
Upgrading hardware
opens
even
greater
possibility to upgrade the software and there are countless capabilities. Despite all the
positive sides of this module, the question remains whether it can find its application in the
market. Since the module is impracticable as a physical unit (because of peripheral unit),
it is necessary to adapt it to any individual vehicle. Thus its individual installation is not
cost-effective. It could find its purpose and economic efficiency if it would be serially mounted
in same type of vehicle.
Future Scope:
Microcontroller managed automatic ventilation system a main advantage is extendibility.
As per our requirement we can extend the Microcontroller managed automatic ventilation system
features .By adding additional sensors, communicating equipment in order to increase coverage
area. In next five years, utility for Microcontroller managed automatic ventilation system in cabs
,houses and all other transporting business my grow more and more.
67
CHAPTER-10
REFERENCES
1.
2.
Technology,
and
Biomedical Engineering
September 2009.
4.
Boric Raic, Module for automatic raising and lowering car windows, unpublished
EEE TRANSACTIONS
ON
Information
6.
7.
8.
9.
10.
11.
Hans Brklin, The whole electronics Main catalog 92, datasheet, 1991.
12.
68
13.
www.atmel.com/images/doc2503.pdf
14.
http://www.besyoautoparts.com/Products_hb.asp?id=1704
15.
16.
http://www.velleman.eu/downloads/3/pir416a705.pdf
17.
18.
http://www.savebase.com/infobase/downloads/Kris_products/KG001-12V.pdf
19.
Boris Rai, Module for automatic raising and lowering car windows, unpublished.
20.
21.
22.
23.
24.
25.
26.
69