finished 1
TRANSCRIPT
Microcontroller based Fan speed controller by measuring Temperature
1. Introduction
Measuring the impact of environmental constraints is analysis and control.
Different types of data loggers and data acquisition system are available in the
market to perform this task well.
Temperature measurement is today more common. The ambient
temperature keeps varying during different times of the day and night at
different places. Temperature measurement can be done for weather forecast
or for automation in electronics devices and industries.
Here we describe a temperature measurement device which controls the
speed of the FAN using microcontroller AT89S52, temperature sensor and other
components. The temperature is measured at a user defined interval. Each time
the current temperature goes above ie increase or decrease corespondigly the
FAN speed will vary .
1Government Polytechnic Tumkur
Microcontroller based Fan speed controller by measuring Temperature
2. Block Diagram
The above Block diagram consist of the following Functional Blocks
1. Temperature sensor
2. Analogue to digital converter ADC
3. Micro controller
4. Power supply
5. Lcd module
6. Motor Driver & DC motor FAN
1.Temperature sensor:-
This section has a temperature sensor which measures the temp and
gives particular analog output. And gives output to the ADC.
2Government Polytechnic Tumkur
Microcontroller based Fan speed controller by measuring Temperature
2. Analogue to digital converter adc
Analog to digital converter which takes input from the temperature
sensor and Converts it into digital signals, these signals are send to the
processor.
3.Microcontroller:-
Microcontroller is the heart of the circuit which receives the digital signals
from the ADC and converts it into the ASCII code and gives the measured
temperature on the Display.
4. Power supply:-
The most of the Digital IC’s Microcontrollers, diplay’s, etc are work only in
+5V so power supply circuit it must needed with some typical components. The
relay requires unregulated DC supply so the power supply for the relay section
is unregulated 12 V.
5. LCD module:-
The LCD is used for display the temperature measured. And it also
displays the fan speed mposition .
6. Motor Driver:
This driver circuit uses L293D IC for controlling speed of the DC motor
FAN and the speed of the DC motor can be controlled by inputting the PWM
signals from the micro controller. And the direction of the motor is also can
be controlled by alternating the inputs to the IC.
3Government Polytechnic Tumkur
Microcontroller based Fan speed controller by measuring Temperature
3. Parts List
IC1 AT 89S52 microcontroller
IC2 ADC 0804 analogue-to digital converter
IC3 LM35 temperature sensor
IC4 7805 5v regulator
IC5 L293D motor driver
BR1 Bridge rectifier 1A
Resistors (all of ¼ watt, +/- 5 % carbon)
R1,R4 330-ohm
R2,R3,R5-R8 10 kilo-ohm
RNW1 10kilo-ohm resistor network
VR1 10 kilo-ohm variable
VR2 1 kilo-ohm variable
Capacitors
C1 1000uF,25v electrolytic
C2 0.1 uF ceramic disk
C3 10uF,16V electrolytic
C4,C5 33 pF, ceramic disk
C6 150pF, ceramic disk
Miscellaneous
X1 230V AC Primary to 12V, 500mA secondary transformer
Xtal X1 12Mhz
S1-S4 Push-to-on switch
PZ1 Piezo Buzzer
LCD module 16 character x 2 line LCD module
FAN 12 V DC motor
4Government Polytechnic Tumkur
Microcontroller based Fan speed controller by measuring Temperature
4. Circuit diagram
5. Hard ware Description
5Government Polytechnic Tumkur
Microcontroller based Fan speed controller by measuring Temperature
Micro-controller at89s52
Features
• compatible with mcs®-51 products
• 8k bytes of in-system programmable (isp) – endurance: 10,000 write/erase
cycles
• 4.0v to 5.5v operating range
• fully static operation: 0 hz to 33 mhz
• three-level program memory lock
• 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
• dual data pointer
• power-off flag
• fast programming time
• flexibleisp programming (byte and page mode)
• green (pb/halide-free) packaging option
description
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 indus-try-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 pro-grammer. By combining a versatile 8-bit
6Government Polytechnic Tumkur
Microcontroller based Fan speed controller by measuring Temperature
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. The at89s52 provides the
following standard features: 8k bytes of flash, 256 bytes of ram, 32 i/o lines,
watchdog timer, two data pointers, three 16-bit timer/counters, a six-vector
two-level interrupt architecture, a full duplex serial port, on-chip oscillator, and
clock circuitry. 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.
Oscillator
Xlt1 and xlt2 are the input and output of an inverting amplifier, which is
used as a crystal oscillator, in the pierce configuration by connecting an
external crystal. A 11.0592mhz crystal is selected which provides a internal
cycle timing of 1μsec (1mhz) which is 1/12 of the oscillator frequency.
The clock generator divides the oscillator frequency by 2, and provides a
two-phase clock signal to the chip. The phase1 signal is active during the first
half of each clock period, and phase2 signal is active during the second half of
each clock period.
Reset circuit
Reset of the micro-controller chip is accomplished by holding the reset pin
high for at least two machine cycles (24 oscillator periods) while oscillator is
running. The cpu responds by executing an internal reset. The internal reset is
executed during the second cycle in which reset is high and is repeated every
cycle until reset goes low.
7Government Polytechnic Tumkur
Microcontroller based Fan speed controller by measuring Temperature
An automated reset can be obtained when vcc is turned on by connecting
the reset pin to a 10k resistor and 1μf capacitor
When power comes on, the current through the resistor commences to
charge the capacitor. The voltage at reset is the difference between vcc and the
capacitor voltage, and decreases from vcc as the capacitor charges. The larger
the capacitor is, the more slowly the voltage at the reset pin falls. The time
required is the oscillator start up time plus 2 machine cycles. If the vcc rise-time
is less than 1msec and the oscillator startup time does not exceed 10msec, a
1μf capacitor will provide a reliable power on reset.
IC LM35 (IC3) is a three-terminal precision temperature sensor whose
output voltage is linearly proportional to the Celsius temperature with +/- 10.0
mV/ C scale factor. It thus has an advantage over linear temperature sensors
calibrated in degree Kelvin, and the user is not required to subtract large
constant voltage from its output to obtain convenient Centigrade scaling.
The LM35 does not require any external calibration or trimming to
provide typical accuracies. It is rated for full -55 C to 150 C ranges and
operates off 4V-30V input. It gives 0V output for 0oC temperature .The analog
output (Vout) at pin 2 of LM35 is fed to Vin (+) pin 6 of analog-to-digital
converter ADC0804,whose Vin (-) pin is connected to ground .Pin 1 of LM35 is
connected to 5V supply and pin 3 is grounded.
ADC0804 (IC2) is a CMOS, 8-bit single channel analog-to-digital
converter .It features conversion time of less than 100ms , differential analog
input voltage, TTL-compatible inputs and outputs, on-chip clock generator ,
analog voltage input range from 0V to 5V , and no zero adjustment . The
conversion time depends on resister R3 and capacitor C6. The conversion rate
in free running mode is 640 kHz. Digital and analog ground should be separated
in ADC0804 to avoid any interference in the circuit.
8Government Polytechnic Tumkur
Microcontroller based Fan speed controller by measuring Temperature
The resolution of 8-bit ADC0804 is 19.53 mV, which doesn’t match with
the scale factor cf LM35 and therefore can cause error. To avoid this error, the
full-scale range of ADC0804 is made 0-2.56V by adjusting the voltage at pin 9
(Vref/2) to 1.28V through 1-kilo-ohm preset VR2. In ADC0804, the input analog
voltage is divided by its step size to give digital output. For each 10 mV rise and
fall of the analog input at Vin (+), digital outputs at DB0 through DB7 increase
and decrease, respectively. The maximum input voltage that can be converted
by the ADC is 2.55v (10mV * 255), giving full-scale output of FF hex value in this
system.
The 8-bit digital output of ADC0804 (DB0 through DB7) is connected to 8-
bit port P0 of the microcontroller. Signals , and of the ADC are connected
to P2.7, P2.6 and P2.5 of the microcontroller. These signals of the ADC act as
handshaking signals with microcontroller IC1. and are the input pins of
the ADC, while is the output pin. Through signal, the
microcontroller gets to know when the conversion from analog into digital is
completed by the ADC.
The microcontroller makes WR pin ‘low’ RD and pin ‘high’ to start the
conversion. Pin INTR goes high for the end oh conversion. A transition from high
to low on INTR indicates end of conversion. Then the microcontroller makes RD
‘low’ and WR ‘high’ to read the 8-bit data at DB0 through DB7 through
microcontroller port P0. Through its firmware, the microcontroller multiplies the
digital input at port 0 with the steps size value of ADC0804 and then divides
with the temperature / volt scale factor of LM35 to give the measured and
calibrated oC temperature.
The measured temperature is instantaneously displayed on the LCD. Port
P1 of the microcontroller is connected to data port as well as The handshake
signals of the LCD (RS, R/W and Enable) , respectively. All the data is sent to the
LCD in ASCII form to display. Only the commands are sent in hex form to the
9Government Polytechnic Tumkur
Microcontroller based Fan speed controller by measuring Temperature
LCD. RS signal is used to distinguish between data (RS=1) and command
(RS=0). Use Present VR1 to control the contrast of the LCD.
The motor driver circuit is connected to Port 3 which needs 3 pins i.e
enable, Input 1 & input 2 of L293D IC5. By enabeling pin we can run the FAN.
Rotating the FAN by giving input 1 is high & input 2 is low & by giving pulse or
PWM (pulse width modulation) signals the enable pin we can control the speed
of the FAN. The speed is depends up on the on period of the enable signal.
For proper measurement, adjust preset VR2 to give 1.28V at pin 9 of the
ADC. Initially, using preset VR1set the contrast level for display on LCD.
Power supply: -
The 230V, 50Hz AC mains power supply is stepped down by transformer
X1 to deliver a secondary output of 12V at 500mA. The transformer output is
rectified by a full-wave bridge rectifier BR1, filtered by Capacitor C1, and
regulated by IC 7805. The output of IC 7805 which is 5V used for operation of
the circuit. The ripple in the regulator output is filtered by capacitor C2. For the
DC motor the supply is taken before the regulator.
10Government Polytechnic Tumkur
Microcontroller based Fan speed controller by measuring Temperature
6.Software section
Software operation flow chart
YES NO
YES
11Government Polytechnic Tumkur
INITIALISE SP AND LCD
DISPLAY WELCOME MESSAGE
Start the temerature measuring
INITIALISE NUMBER OF
SAMPLES TO ZERO
START ADC WR=0>1 INTR=1
INTR=1
?
READ ADC RD=0
CONVERT ADC OUT TO TEMPERATURE ASCII VALUE
INCREASE NUMBER OF SAMPLES BY ONE
DISPLAY TEMPERATURE AND NUMBER OF SAMPLES
DELAY ACCORDING TO MEASURING INTERVAL
TEMP>
increase speed Decrease speed
Microcontroller based Fan speed controller by measuring Temperature
NO
Source code:
The software is well commented and easy to understand. Written in C-
language and assembled using Keil uvision -3, it works as per the flowchart
shown in Fig. The hex code generated by the keil is burnt into the
microcontroller using a suitable programmer.
The value of the measured temperature and the number of samples taken
until power-‘on’ are displayed on the LCD screen. The number of samples is
updated according to the measuring interval.
Each port of the microcontroller is made input through software by
putting high on the respective pin or port. By default, all the ports act as output.
Instead of using timer, nested loops are used to provide delay at various
locations of the software. The values for the loop are calculated according to
the crystal frequency and the machine cycles taken by the used instructions.
Program:
#include "lcd.h"
#define adc_input P1
#define sec 100
sbit wr= P3^1;
sbit rd= P3^0;
sbit intr= P3^2;
sbit m1= P3^3;
12Government Polytechnic Tumkur
Microcontroller based Fan speed controller by measuring Temperature
sbit m2= P3^4;
sbit en1=P3^5;
int s,temp_new;
unsigned char i,j;
int test_intermediate3=0,
test_final=0,test_intermediate1[10],test_intermediate2[3]={0,0,0};
void delay(unsigned int msec )
{
int i ,j ;
for(i=0;i<msec;i++)
for(j=0; j<1275; j++);
}
void shape() // Function to make the shape of degree symbol
{
lcd_cmd(64);
lcd_data(2);
lcd_data(5);
lcd_data(2);
13Government Polytechnic Tumkur
Microcontroller based Fan speed controller by measuring Temperature
lcd_data(0);
lcd_data(0);
lcd_data(0);
lcd_data(0);
lcd_data(0);
}
void convert() // Function to convert the values of ADC into numeric value to
be sent to LCD
{
lcd_cmd(0x80);
lcd_str("Temp Base FAN SC");
delay(2);
test_final=(((9*test_intermediate3)/5)+32);
s=test_final/100;
test_final=test_final%100;
lcd_cmd(0x88);
test_final=test_intermediate3;
lcd_cmd(0xc1); //Setting cursor to first position of first line
delay(2);
14Government Polytechnic Tumkur
Microcontroller based Fan speed controller by measuring Temperature
lcd_str("TEMP:");
s=test_final/100;
test_final=test_final%100;
lcd_cmd(0xc8);
if(s!=0)
lcd_data(s+48);
else
lcd_cmd(0x06);
s=test_final/10;
test_final=test_final%10;
lcd_data(s+48);
lcd_data(test_final+48);
lcd_data(0);
lcd_data('c');
lcd_data(' ');
delay(2);
}
void delaym(unsigned int value)
{
unsigned char y;
15Government Polytechnic Tumkur
Microcontroller based Fan speed controller by measuring Temperature
for (y=0; y<value; y++) ;
}
void main1()
{
adc_input=0xff;
delay(2);
lcd_init();
delay(2);
m1=1;
m2=0;
en1=0;
for(j=0;j<3;j++)
{
for(i=0;i<10;i++)
{
delay(2);
delay(1);
rd=1;
16Government Polytechnic Tumkur
Microcontroller based Fan speed controller by measuring Temperature
wr=0;
delay(1);
wr=1;
while(intr==1);
rd=0;
lcd_cmd(0x88);
test_intermediate1[i]=adc_input/10;
delay(1);
intr=1;
}
for(i=0;i<10;i++)
test_intermediate2[j]=test_intermediate1[i]+test_intermediate2[j];
}
test_intermediate2[0]=test_intermediate2[0]/3;
test_intermediate2[1]=test_intermediate2[1]/3;
test_intermediate2[2]=test_intermediate2[2]/3;
test_intermediate3=test_intermediate2[0]+test_intermediate2[1]+test_int
ermediate2[2];
shape();
17Government Polytechnic Tumkur
Microcontroller based Fan speed controller by measuring Temperature
convert();
temp_new=s*10+test_final;
}
void delayms2(int usec)
{
for (i=0;i<usec;i++);
}
void delayms1(int msec)
{
for (i=0;i<msec;i++)
for (j=0;j<1275;j++);
}
void main()
{
m1=1;
m2=0;
while(1)
18Government Polytechnic Tumkur
Microcontroller based Fan speed controller by measuring Temperature
{
main1();
while(j<20000)
{
en1=1;
delayms2(150-temp_new);
en1=0;
delayms2(150-temp_new);
}
}
}
19Government Polytechnic Tumkur
Microcontroller based Fan speed controller by measuring Temperature
7.PCB layouts
7.1 Bottom Side of PCB
7.1 Top Layer of PCB
20Government Polytechnic Tumkur
Microcontroller based Fan speed controller by measuring Temperature
7.2 3D view of PCB layout
21Government Polytechnic Tumkur
Microcontroller based Fan speed controller by measuring Temperature
8.Conclusion
This project is an effort to demonstrate the worthiness of Atmel 89S52 IC
for the operation of measuring temperature. It has own limitations which are
very common in any of the project works from junior level technicians. The
maximum temperature can measured by this project is 1500c and minimum is -
550c only. With these draw backs this project is only used for areas such as
1. Measuring temperature in home or room.
2. Whre the power consumption is the main issur there by using our
project the power can be saved like places Mobile towers.
Although this project is just a simple of the capabilities of At 89S52 from Atmel
corporation. With the forthcoming series of Atmel IC’s from the company one
can expect larger storing of system software and high operating speeds.
22Government Polytechnic Tumkur
Microcontroller based Fan speed controller by measuring Temperature
9. Bibliography
1. Electronics For You of month September 2008
2.www.rickyworld’s.info
3.www.8051projects.info
4. www.scienceprog.in
5. www.circuittoday.com
6. The 8051 microcontroller and embedded systems
Mazdi & Mazdi
5. www.alldatasheet.com
6. www.8051projects.net
7. www.microcontrollerprojects.com
8. From the book “hobby circuit”.
Please add datasheets how much you want
After read this, delete these two lines.
23Government Polytechnic Tumkur