Friday, November 22, 2013

8051 Based Temperature Controlled Automatic Air Conditioning System


Hi everyone,today I am gonna share a project entitled  Temperature Controlled Automatic Air Conditioning System.This project was done for Minor Project in which I was a part of the team.As the name implies the main purpose of this project is to devise a system whose sole purpose is to condition or maintain the temperature within the predefined limits.Thus,this system proves to be useful to be used as a Air Conditioning System inside room,offices,departmental stores etc.Apart from that,it can also be used in various industrial applications such as to control the temperature in boilers,refrigerator,AC computers and Laboratories etc.
Now lets look at each element of the design turn by turn.
First lets have a glance at flowchart of the system:

Block diagram:


Above figure  shows the block diagram of the system that we have designed.Basically, it consists of microcontroller  as a central processor of the entire control operation. The temperature sensor gives the analog output voltage based on the temperature of the room.This analog voltage is fed to the A/D converter.The A/D converter then converts the analog input voltage from the temperature sensor into equivalent binary bits.The converted binary data from the A/D converter is applied to microcontroller.The microcontroller reads binary data from A/D converter,convert it to suitable form and performs different operations based on the value of temperature read from A/D converter.
The LCD is used to display the data given by microcontroller.Microcontroller can turn on dc fan through the optocoupler if required.We have used led as prototype model for heater.If appropriate condition is met microcontroller can turn on heater(i.e. LED).
In this system,if the temperature read is in between 20-25 degree celcius,it is considered normal state.In this condition both fan and heater are off but the temperature and status is displayed in LCD.If the temperature of the room is  greater that 25 degree celcius it is considered to be a situation to turn on fan and turn off heater. If the temperature of the room is in between 25-30 degree celcius it is considered as a situation to turn on fan with speed of level one.In this level,appropriate temperature and status is displayed on the LCD. If the temperature of the room is in between 30-35 degree celcius it is considered as a situation to turn on fan with speed of level two.In this level,appropriate temperature and status is displayed on the LCD. If the temperature of the room is greater than 35 degree celcius it is considered as a situation to turn on fan with speed of level three.In this level,appropriate temperature and status is displayed on the LCD. If the temperature of the room is  less that 20 degree celcius it is considered to be a situation to turn on Heater and turn off fan. If the temperature of the room is in between 10-20 it is considered as a situation to turn one heater on with heat of level one.In this level,appropriate temperature and status is displayed on the LCD. If the temperature of the room is in between 0-10 it is considered as a situation to turn two heater  on with heat of level two.In this level,appropriate temperature and status is displayed on the LCD.

Circuit Diagram:


The circuit shown in the figure consists of a microcontroller,LCD,optocoupler,temperature sensor,ADC etc.The microcontroller port one is connected to the data pins of LCD.Likewise port three of the microcontroller is connected to the  data pins of ADC.Pins P2.0 through P2.2 are used to connect to the control pins of LCD.Pins P2.3 through P2.5  are connected to the INTR,WR and RD pins of ADC respectively.Pin 2.6 of the port 2 is use to generate control signal to rotate DC fan.It is obtained using PWM.This pin is connected to the input pin of the optocoupler.The optocoupler is driving the switch to turn the  motor on/off.The pins P0.0 and P0.1 is used to drive LEDs which are used as a prototype model for heater. 

Source Code:


/****************************************************
Programmer: Bikal Adhikari                                                   *
Designation: Student                                                             * 

Compiled on: Keil uVision C51 compiler under Win 8 OS          * 

Program for:Temperature Controlled Automatic                       *

                   Air Conditioning System                                     *  

                   (Appropriate for BEX Minor Project)                   *

*****************************************************/

#include<reg51.h> /*Instructing Preprocessor to add header file reg51.h to use the features of 8051 C Programming*/
#define MYDATA P3 /*Defining Port 3 as "MYDATA" Function:To input the digital data from ADC*/
#define ldata P1  /*Defining Port 1 as data pins for lcd as ldata,Function:To output data to LCD*/
#define FL3i 35   /*Defining set of constants for the temperature limits*/
#define FL2ii 35  /*This approach makes changing the temperature limits very easy*/
#define FL2i 30   /*This prevents from going deeper into the code.*/
#define FL1ii 30
#define FL1i 25
#define NLii 25
#define NLi 20
#define HL1i 20
#define HL1ii 10
#define HL2i 10
#define HL2ii 00



sbit rd=P2^5;   /*Configuring P2.5 with identifier rd,Function:To send read command to ADC*/
sbit wr=P2^4;   /*Configuring P2.4 with identifier wr,Function:To send write command to ADC*/
sbit INTR=P2^3;   /*Configuring P2.3 with identifier INTR,Function:To detect start and end of conversion by ADC*/
sbit rs=P2^0;   /*Configuring P2.0 to give a value to RS register of LCD*/
sbit rw=P2^1;   /*Configuring P2.1 to give a value to RW register of LCD*/
sbit en=P2^2;   /*Configuring P2.2 to give a value to EN register of LCD*/
sbit MTR=P2^6;   /*Configuring P2.6 to give a Pulse width modulated signal to Motor Control Circuitry*/
sbit HTR1=P0^0;   /*Configuring P0.0 as a output line for led which is used as prototype model for heater*/
sbit HTR2=P0^1;   /*Configuring P0.0 as a output line for led which is used as prototype model for heater*/
sbit busy=P1^7;   /*Configuring P1.7,8th bit of ldata or P1 with identifier busy,Function:To know whether */

/*Following are set of functions required by the main routine.
  It is to be noted that function protoype are not used.
  Instead functions are directly implemented along with their definitions.
  While doing so proper function ordering should be made otherwise compiler 
  will generate error.For example:Most of the functions in program calls msDelay() function 
  ,and if msDealy() function is kept below the one calling it,compiler will generate error.*/

void msDelay(unsigned int value){ /*Provides delay in Miliseconds equal to the argument provided.Note that the choice of loop parameter 1275 is 
                                   completely determined by the inernal design of Compiler and may vary from Compiler to Compiler.*/
unsigned int x,y;
for(x=0;x<value;x++)
    for(y=0;y<1275;y++);  /*; is kept because second for loop is written as a single line statement*/
}


void lcdReady(){  /*Checks if LCD controller is busy or not and waits till not busy if it is busy*/
busy=1;
rs=0;
rw=1;
while(busy==1)
{
en=0;
en=1;
}
return;
}

void lcdCmd(unsigned char value){ /*Gives command to LCD*/
lcdReady();/*Calls to check for busy flag*/
ldata=value;
rs=0;
rw=0;/*To appreciate why these values are enforced,one needs to have basic understanding*/
en=1;/*of LCD controller internal operations for read,write etc.*/
en=0;
return;
}


void lcdInit(){ /*Initializes LCD.Whenever initialization is necessary this function is called.*/
lcdCmd(0x38);
lcdCmd(0x0c);
lcdCmd(0x01);
lcdCmd(0x80);
return;
}

void lcdData(char value){ /*To give data to LCD controller for display.*/
ldata=value;
rs=1;
rw=0;
en=1;
en=0;
return;
}

void display(char d1,char d2){
    lcdData(d2);
msDelay(30);
msDelay(30);
lcdData(d1);
msDelay(30);
msDelay(' ');
msDelay(30);
lcdData('C');
}



void convert(char value){/*Converts data from binary to ASCII code.*/
    char y,d1,d2,d3;
y=value/10;
d1=value%10;
d2=y%10;
d3=y/10;
d1=d1|0x30;
d2=d2|0x30;
d3=d3|0x30;
display(d1,d2);/*d3 will be needed only if temperature exceeds 100 degree celcius.
                         If needed it can be added in this call and in function definition
                         as well as body of display().Here it is not included so as to 
                         eliminate redundant digit in the display.*/
 }

 void update(char value){/*Updates the data in lcd if data is changed and is within the range.*/
    char y,d1,d2,d3;     /*Other method would also apply to update data*/
y=value/10;      /*But I thought this to be the easy and elegant approach.*/
d1=value%10;
d2=y%10;
d3=y/10;
d1=d1|0x30;
d2=d2|0x30;
d3=d3|0x30;
lcdData(d2);
msDelay(30);
msDelay(30);
lcdData(d1);
msDelay(30);
lcdCmd(0xc0);
 }



char adcRead(){/*Reads data from ADC and returns a value in binary format.*/
char value;
wr=0;/*Gives LO-HI pulse to ADC to Start the conversion process.*/
wr=1;
while(INTR==1);/*Waits till data has been converted by ADC.*/
rd=0;/*Gives LO-HI pulse to ADC to read the data converted by ADC*/
value=MYDATA;/*Receiving the converted data into the port 3 of uC*/ 
rd=1;/*End of LO-HI transition.*/
return value;
}


void motorcontrol(){
         unsigned char i;
 unsigned char value;
 unsigned char x[6]="TEMPR:";/*This Section consists Set of Strings defined for purpose of display in LCD*/
 unsigned char x1[5]="FANON";/*TEMPR: means Temperature,HTRON means Heater On*/
 unsigned char x2[5]="HTRON";/*HTRON meansHeater on.*/
 unsigned char y[12]="SPEED:LEVEL";
 unsigned char z[11]="HEAT:LEVEL";
 unsigned char u1[5]="NORM.";/*NORM. means Normal.*/
 unsigned char u2[11]="FAN,HTR OFF";/*FAN,HTR OFF means FAN and Heater both off.*/
 
while(1){  /*Infinite loop is made because of the absence of Operating System.
            Because there is no operating system to return to*/
value=adcRead(); /*read data from adc*/
    if(value<20){ /*Heater on logic ,confirms to turn on the heater*/   
     lcdCmd(0x01);   /*clear display*/
 for(i=0;i<6;i++) /*display string TEMPR: */
     {
     msDelay(50);
     lcdData(x[i]);
     }
 convert(value); /*convert data and display*/
 lcdCmd(0x8b);  
 for(i=0;i<5;i++){ /*display HTRON message*/
 msDelay(30);
 lcdData(x2[i]);
 }
 
     while(value>HL1ii && value<HL1i){ /*level 1 heat for heater*/
       MTR=1;  
   HTR2=1;
   HTR1=0;
   msDelay(1);
   z[10]='1';
   lcdCmd(0xc0);
   for(i=0;i<11;i++){
    msDelay(30);
    lcdData(z[i]);
    }
   bkl5:
   value=adcRead();
   if(value>HL1ii && value<HL1i){
    lcdCmd(0x86);
    update(value);
   goto bkl5;
   }
   else
   break;
   } /*While closed*/
 
    while(value>=HL2ii && value<=HL2i){ /*level 2 heat for heater*/
      MTR=1;
  HTR1=0;
  msDelay(30);
  HTR2=0;
  msDelay(1);
  lcdCmd(0xc0);
  z[10]='2';
  for(i=0;i<11;i++){
    msDelay(30);
    lcdData(z[i]);
    }
  bkl6:
  value=adcRead();
  if(value>=HL2ii && value<=HL2i){
    lcdCmd(0x86);
    update(value);
    goto bkl6;
   }
  else
  break;
  } /*While closed*/
   

   } /*Heater on logic closed*/
   
   
   while(value>=NLi&&value<NLii){ /*Normal state logic*/
     HTR1=1;
 HTR2=1;
 MTR=1;
 lcdCmd(0x01); /*clear display*/
 for(i=0;i<6;i++){ /*display TEMPR:*/
     msDelay(50);
     lcdData(x[i]);
      }
 convert(value); /*convert data and display*/
 for(i=0;i<5;i++){
 msDelay(30);
 lcdData(u1[i]);
 }
     lcdCmd(0xc0);
 for(i=0;i<11;i++){
 msDelay(30);
 lcdData(u2[i]);
 }
 bklbkl:
 value=adcRead();
 if(value>=NLi&&value<NLii){
  lcdCmd(0x86);
  update(value);
  goto bklbkl;
  }
     else
 break;
   }
    
    
if(value>=25) /*fan on logic,first confirms the situation to turn on fan*/
{
 HTR1=1;
 HTR2=1;
 lcdCmd(0x01); /*clear display*/
 for(i=0;i<6;i++) /*display TEMPR:*/
     {
     msDelay(50);
     lcdData(x[i]);
     }
 convert(value); /*convert data and display*/
 lcdCmd(0x8b);
 for(i=0;i<5;i++)
 {
 msDelay(30);
 lcdData(x1[i]);
 }



 
     while(value>=FL1i && value<FL1ii){ /*level 1 speed for fan*/
  lcdCmd(0xc0);
  y[11]='1';
  for(i=0;i<12;i++){
    msDelay(30);
    lcdData(y[i]);
   }
  bkl1:
  MTR=0;
      msDelay(50);
      MTR=1;
      msDelay(50);
  value=adcRead();
  if(value>=FL1i && value<FL1ii){   
  lcdCmd(0x86);
  update(value);
  goto bkl1;
  }
  else
  break;
   
  } /*level 1 speed logic closed*/
 


     while(value>=FL2i && value<FL2ii){ /*level 2 speed for fan*/
  y[11]='2';
  lcdCmd(0xc0);
  for(i=0;i<12;i++){
    msDelay(30);
    lcdData(y[i]);
   }
  bkl2:
  MTR=0;
      msDelay(75);
      MTR=1;
      msDelay(25);
      value=adcRead();
  if(value>=FL2i && value<FL2ii){
    lcdCmd(0x86);
    update(value);
    goto bkl2;
   }
  else
  break;
  } /*level 2 speed logic closed*/


   
 while(value>=FL3i){ /*level 3 speed for fan*/
  y[11]='3';
  lcdCmd(0xc0);
  for(i=0;i<12;i++){
    msDelay(30);
    lcdData(y[i]);
   }
  bkl3:
  MTR=0;
  value=adcRead();
  if(value>=FL3i){
    lcdCmd(0x86);
    update(value);
    goto bkl3;
   }
  else
  break;
  } /*level 3 speed logic closed*/


   
     } /*if statement closed i.e fan on logic closed*/
   }  
}  

  void main(){ /*Main function starts.Execution begins from here.*/
   P0=0xff;  /*Setting all pins of P0 to 1s to make it as output port in negative logic*/
   MYDATA=0xff; /*Setting all pins of P3 to 1s to make it as input port in positive logic*/
   INTR=1;/*Active low signal therefore initialized as high.*/
   rd=1;/*Active low signal therefore initialized as high.*/
   wr=1;/*Active low signal therefore initialized as high.*/
   MTR=1;/*Active low is required to drive optocoupler,so initialized as high.*/
   HTR1=0;/*To give a blink effect during a startup to show they are functioning and*/
   HTR2=0;/*leds are used as prototype for heater and are connected in active low configuration.*/
   msDelay(50);
   HTR1=1;/*After 50ms of delay Leds are turned off by high output.*/
   HTR2=1;
   lcdInit();/*Initializes LCD with appropriate Display Setting*/
   motorcontrol();/*Calls motorcontrol() subroutine*/
   } /*main function closed*/

You can request the download to the source code,keil and proteus project files and other files through this link
Also the arduino version of this same project can  be requested through this link

77 comments:

  1. It is very helpful for me ...

    ReplyDelete
    Replies
    1. I recommend to all This article To every One.
      How to Check Diode Working condition

      Here You Can Find Unlimited Whatsapp group Name For Promoting Your group

      Also You can see This Online Money Earning Ways

      Top 25 Tamil Movies Download Website

      இதுவும் உங்களுக்கு உதவியாக இறுக்கும் நீங்கள் வளர வாழ்த்துக்க்கள் தமிழ் படங்களை பார்க்க 25 website Tamil Movies Website

      You Need Governement Job Then Go to This Link Ind Govt job

      Delete
  2. Thank you very much

    ReplyDelete
  3. values of resistors capacitors and names of components...???

    ReplyDelete
    Replies
    1. Its quite easy and straight forward.
      8.2K, 33pF, crystal 12 MHz for Microcontroller.

      For driving LEDs any value works but be sure to use as low as possible just to prevent blowing LEDs.

      LCD: LM016L
      (Use appropriate resistors(or POTS) for brightness control).

      Temperature Sensor: LM 35

      ADC: 0804,resistor used 10K,capacitor 150pF

      Optocoupler: 4N35
      It is used to isolate motor control circuitry from Microcontroller circuit and temperature sensor circuit.
      Using it enabled us not to use motor driving IC and it is reallly cheap.

      Capacitors and Diodes in motor Circuit can have any value.They are just use to prevent from electromagnetic interference.
      Use different source for motor control circuit as far as possible if u r using batteries.

      Last but not least: Be sure to design a very nice power unit.If you design a power unit just using LM 7805 etc,and If you dont' use decoupling

      capacitor , back connected diodes across supply noise glitches will haunt our circuit and reading displayed will be random.So , once again , be sure to design a nice power supply unit.

      Hope that is informative !!!

      Delete
    2. very informative indeed.....i am gratefull..thanks

      Delete
  4. If i want to add this module in water level indicator and controller using microcontrollerhow could i do that? what changes in pin and component placing will occur?
    If u want to see my circuit mail me on dollybodgal92@gmail.com. please reply soon

    ReplyDelete
  5. how could I add this temperature sensing module in water level indicator using microcontroller. If needed i can show my circuit. please reply , my mail id is dollybodgal92@gmail.com

    ReplyDelete
    Replies
    1. No problem.Depends upon how you would like to hit the problem.A variety of solution exists.Some of them may be:
      i.Using multiplexer controlled by microcontroller to take input from various sensors and sending required information to LCD.(Best idea.)
      ii.If you have already done this project independently.Use both of them at the same time!!!(Not logical)

      Delete
    2. This comment has been removed by the author.

      Delete
    3. Contact me through gmail...
      bkl.adh@gmail.com
      be specific about problem...

      Delete
  6. which diode is used for heater?

    ReplyDelete
    Replies
    1. In this schematic diode is just used as a prototype model.If you really need to connect heater you just need to connect heater to power supply and use our microcontroller to switch it using relay or optoisolator.

      Delete
  7. Thank u so much sir for your great response. Sir, I need one more help from you, I am doing project on water level controller but I am weak at coding will u please provide me coding for that? If need i can mail u my circuit too. Waiting for your favorable reply and again thanks a lot for your previous replies.

    ReplyDelete
  8. Can we use L293D motor driver instead of optocoupler?

    ReplyDelete
  9. Yes of course but they are expensive comparatively and there is more chance that you could blow them while testing. Optocoupler is very cheap.

    ReplyDelete
  10. thanks for the reply....& the temp. does not remain constant or in a particular range ...jumps from 31 to 44C suddenly...is it cause of noise causing variation in lm35 output?

    ReplyDelete
    Replies
    1. Yes of course.Noise has profound effect.Specially when you do projects using sensors.Actually Lm 35 has nothing to do with it.The main problem might be due to your power supply fluctuations as you might have used some voltage regulator ic and noise glitches from the output of that ic might haunt your circuit causing high variation in lm 35 output because as we know lm35 output is in mv range which is quite small and susceptible to noise.Try connecting decoupling capacitor across output pin of voltage regulator ic, back to back connected diodes etc.Hope this solution works........

      Delete
  11. Replies
    1. It's Atmel AT89S52,8051 compatible microcontroller.

      Delete
  12. This comment has been removed by the author.

    ReplyDelete
    Replies
    1. I already said it.Its Atmel's AT89S52.It is code and pin compatible with Intel 8051 microcontroller.It has 8kb of ROM. Here is the link to download pdf file:
      http://www.atmel.com/images/doc1919.pdf

      Delete
    2. Sir i am making this project for final year and i have some queries
      First can you tell me that every port connnected with which blocks the name of blocks

      Delete
    3. Sir please give me answer of above question its very important for me

      Delete
    4. Okay let me give you some insights into this project.
      Hardware Concepts:
      Following are the basic hardware required in the project:
      i.Microcontroller
      ii.LCD
      iii.ADC
      iv.LM 35 tempr sensor.......

      The basic objective of this project is to condition the air(maintain temperature...).i.e if temperature is hot it will try to cool the system and if temperature is cold it will try to heat the system until it maintains temperature within normal range(20-25 degree celsius in this case.You can easily change that though.)All we have to do is read analog data from lm 35 sensor which is analog voltage.Convert it into binary data by ADC.The binary data from ADC has to be ASCII encoded to display it in LCD.The data is fetched into uC.On the basis of data read uC performs the control operation....Whether to cool or to heat the system or neither heat nor cool.LCD is included for better user interface and some visual information.....These are all about hardwares....
      Now,
      Software(Program):
      The entire programs is divided into following functions:
      lcdCmd();to give command to lcd
      lcdData();to give data to lcd
      lcdReady();To determine whether or not LCD is busy or not so as to ensure that character sent by us will be displayed properly.
      msDelay();To generate delays in the program.
      adcRead();To read data from ADC,ie converted data.
      convert();To convert binary data into ASCII encoded digits.
      update();To update temperature value while the temperature is being changed.This prevents from displaying entire template tme and often.
      display();To display the ASCII encoded digits in proper decimal form in LCD.
      motorcontrol();The entire control function is done here....
      These are all about functions used.
      Also note that while listing I have omitted the function return type and argument required.For this look in source code.

      Explanation of Program Flow:
      i.Execution of program starts from main function.
      ii.First few line of the main function initializes ports and various other i/o pin values to ensure appropriate initial condition
      iii.Then it calls motorcontrol function
      iv.It reads data from adc using adcRead function.
      v.After data is read from ADC,it is determined which range temperature falls into.
      vi.after suitable range is known,the program control goes inside one of the while loop,
      vii.Lets consider a a specific condition of level one fan speed.
      viii.If temperature is in between 25-30 degree celcius,control enters inside associated while loop;
      ix.The template is first displayed to convey status like.
      TEMR:25 C FAN ON
      SPEED: LEVEL ONE
      Now agian updated temperature is read and is updated in the lcd by update function.This process maintains the status in LCD while temperature is changed.
      Also,the logic to control speed of the fan at the same time is done using PWM.
      The following code does rotate fan at certain minimum speed:
      msDelay(25);
      MTR=0;
      msDelay(75);
      MTR=1;

      MTR is the identifier for pin connected to motor circuit.PWM is obtained in MTR.It is used to drive optocoupler which in turn drives motor with the switching equipment TIP 122 darlington pair transistor.
      if MTR is low motor turns on.
      and if MTR is high motor turns off.
      This is because optocoupler turns on only when input to it is low.

      Lets suppose a time frame of 100ms.The time is just elapsing in a frame of 100ms continuously.If we make motor on for 25ms and make it off for 75ms and continue so on,because of inertia of rotor,the motor will appear moving with certain speed.
      Likewise following code runs motor with slightly higher speed;
      msDelay(50);
      MTR=0;
      msDelay(50);
      MTR=1;

      In this way until temperature is within 25-30 the while loop executes.Until temperature is within its range motor moves with speed level one(Which we designated) with changing temperature being updated.
      If temperature falls out,the control exits from while loop.
      The new temperature is again read.
      Now again it may enter any while loop.And associate task is carried out in similar way.....

      Delete
    5. Also understand while loop to implement heater control,and normal condition control.....Heater has been modelled by LEDs and we have connected LED so that thew will glow when 0 is output to pin.
      The Control pins like MTR,HTR1,HTR2,etc can be identified from commented source code and functional proteus circuit diagram.

      Also,ADC has three control pins,rd,wr and intr:
      wr command starts conversion
      intr notifies about conversion going on
      rd helps to latch data...


      LCD has three control pins;
      rs,rw,en
      They are used to command LCD.The provide certain timing pulses to give implementation of functions we defined.

      Delete
    6. Suggestions:
      1.Understand basics of 8051 C programming
      2.Basics of ADC
      3.Basics of LCD etc
      4.Do basic programs integrating above elements....
      5.Start doing project.
      6.Start from miniimum...
      7.Gradually build up your program....
      8.Until you reach your goal......

      Delete
    7. I hope it was helpful...........though it is so difficult to explain entire program.I just tried to highlight few important segments............If you have further confusions let me know.I will reply as soon as I acknowledge your question..............

      Delete
    8. Thank u so much sir
      Now i understood the project much better

      Delete
  13. Sry i have network problem so I posted it twice And thanks for information

    ReplyDelete
  14. could you please list the components of the circuit

    thanx

    ReplyDelete
    Replies
    1. Its quite easy and straight forward.
      8.2K, 33pF, crystal 12 MHz for Microcontroller.

      For driving LEDs any value works but be sure to use as low as possible just to prevent blowing LEDs.

      LCD: LM016L
      (Use appropriate resistors(or POTS) for brightness control).

      Temperature Sensor: LM 35

      ADC: 0804,resistor used 10K,capacitor 150pF

      Optocoupler: 4N35
      It is used to isolate motor control circuitry from Microcontroller circuit and temperature sensor circuit.
      Using it enabled us not to use motor driving IC and it is reallly cheap.

      Capacitors and Diodes in motor Circuit can have any value.They are just use to prevent from electromagnetic interference.
      Use different source for motor control circuit as far as possible if u r using batteries.

      Last but not least: Be sure to design a very nice power unit.If you design a power unit just using LM 7805 etc,and If you dont' use decoupling

      capacitor , back connected diodes across supply noise glitches will haunt our circuit and reading displayed will be random.So , once again , be sure to design a nice power supply unit.

      Delete
    2. If you have further queries feel free to ask.

      Delete
  15. Could you have projects which is done based on 8051 microcontroller

    ReplyDelete
  16. zip file u have uploaded thatz not opning with my proteus 8 ..and i dont have protues 6,7 ...i tried to design protues 8 using your circuit diagram with your code but ADC do not converting the data come from lm35....could you please send me image of your well designed protues circuit.

    ReplyDelete
  17. Check the following link.........
    http://bkladh.blogspot.com/2013/11/8051-based-temperature-controlled.html#comment-form
    i.Use the values mentioned in the comments above for simulation...just making circuit is not enough for circuit simulation......
    ii...use preoteus 7.7 as far as possible....because i used it.....
    iii.Also surf net for possible flaws in simulation while using cracked versions and how to overcome them.
    Regards,

    ReplyDelete
  18. Sorry check the following link:https://drive.google.com/file/d/0B446tlTlzFH8bFB6TV9mX08ycWc/view?usp=sharing

    ReplyDelete
  19. DO YOU HAVE ELECTRONIC VOTING MACHINE USING AT89C51

    ReplyDelete
  20. Replies
    1. Choose the appropriate value of capacitor and resistor for ADC. And if the converted value is random use capacitor between supply and ground of your circuit. If it is in simulation then try to use latest model.

      Delete
  21. hi sir, i want the code in asssembly level could u please help me.

    ReplyDelete
    Replies
    1. HI Ayyappu. Unfortunately I could not help you. I have a lot of other things to do sufficient enough to keep me busy. I would like to recommend you to read book on Microcontroller 8051 by Mazidi. Also once if you understand above code throughly the conversion will be handy.

      Delete
  22. sir, can u describe the specific name for all the component? and what softwares u used?

    ReplyDelete
  23. sir i am looking for embedded temperature based fan speed controller using 89c51 can u help me ?

    ReplyDelete
  24. why this necessary to define this in program?
    please explain
    FL3i 35 /*Defining set of constants for the temperature limits*/
    #define FL2ii 35 /*This approach makes changing the temperature limits very easy*/
    #define FL2i 30 /*This prevents from going deeper into the code.*/
    #define FL1ii 30
    #define FL1i 25
    #define NLii 25
    #define NLi 20
    #define HL1i 20
    #define HL1ii 10
    #define HL2i 10
    #define HL2ii 00

    ReplyDelete
    Replies
    1. These are for example: FL2ii means Fan speed 2 second limit is 35 degree celcius and FL2i means Fan speed 2 first iimit.
      These constants help to make code more organized. Had we directly used numbers program would be very difficult to debug and change.

      Delete
  25. You are welcome William. Thank you for your appreciation!

    ReplyDelete
  26. thank you for such an awesome project. i want to modify this project and extend the range of temperature below 0 degree celsius also. what can i do for it..
    thank you in advance

    ReplyDelete
  27. High temperatures for industrial processes will be produced with electricity and hydrogen, with hydrogen again produced with electricity. heating and air systems for homes

    ReplyDelete
  28. thank you very much ! but i cant seen to download the file

    ReplyDelete
  29. please share the links to the file at my email . i have no money to offer . and what am asking for is alot ! if you cant share the file then no problem please provide some alternative ! jaa !

    ReplyDelete
  30. my email is mohsankayani@gmail.com

    ReplyDelete
    Replies
    1. sir upr link dia hua ha ghor se dekho


      kayyyani Sahib

      Delete
  31. We are the famous and well known company in repair service center. Do you have any emergency requirement service for your refrigerator? We are here to service you at your doorstep. Call or mail Refrigerator repair centre in HyderabadOur professional expert technician will reach you at your location for giving best services for your refrigerator and other home appliances which needs to service in Hyderabad with the fewer prices 350/- at a warranty of 3 months.
    ================================================================
    Washing machine is one of the best and most needed home appliances at every home. Is your washing machine is faces any kind of problem then contact us our professional expert technician will solve all brands of services problems. We are expert to repair IFB Washing Machine Repair Hyderabad Service Center Secunderabad Telangana with the service charge 350/- at a warranty of 3 months. Just click the above link to approach us and you can know more details of our washing machine services.
    ==================================================================
    Is techno services provides quality of services for home appliances in Hyderabad. If your any brand of washing machine is troubling you then book your compliant to our service center Hitachi air conditioner repair center in Hyderabadour technicians will reach your location by checking your locality address and contact you with your mobile number. Service charge would be 350/- at a warranty of 3 months. Call us: 040-60506611, 040-60506622
    ==================================================================

    ReplyDelete
  32. there is a difference between input and the output at display by 10 for ex. if the input is 30 the output shows 3 but we expect both the values to be same please reply sir

    ReplyDelete
  33. I read your article. it’s really nice blog. Thank you for sharing such a informative and useful post.
    Heating and Cooling milton

    ReplyDelete
  34. Really your content is so informative. So please share some more content ..
    Microcontroller course in Delhi

    ReplyDelete
  35. This comment has been removed by the author.

    ReplyDelete
  36. An air conditioning channel ought to be changed each month or like clockwork for home air conditioning frameworks and each couple of weeks for certain business or modern air conditioning since it's running right around 24 hours per day, 7 days seven days. furnace repair brewster

    ReplyDelete
  37. We are providing you best home service include AC service, architecture, electrician etc. Keyvendors

    ReplyDelete