Digital temperature controller

Overall rating

This paper presents one of the controlling application mainly based on temperature for ex: a house that uses information technology to monitor the environment, control the electric appliance and communicates with the outer world.. The system can monitor the temperature of the house.

The whole system is a cheaper one, but it provides the full-scale home device monitor and control function. By using the embedded system technique, it is convenient to use and allows simple installation in existing homes, it provide a safe, convenient home to us. The shortage of the system is only can turn on/off the electric appliances and the lack of the wireless function. With the Development of the smart electric appliances, the system must make much progress. This Project is used to control the AC Machine controlled according to the temperature and it also Indicates the temperature. The system will get the temperature from the Temperature sensor and fed it to microcontroller. When temperature exceeds normal level then it automatically enables/Turn’s on AC Machine.

Block Diagram



This system is based on Temperature Controller it monitors the room temperature this analog signal is amplified by signal conditioning circuit. The analog value is converted into digital by means of Analog to Digital converter. The digital value corresponding to temperature is stored in the embedded microcontroller. Microcontroller monitors the temperature whenever there is raise in room temperature the microcontroller switch ON the Relay where the AC machine is connected to the device control section. And the message will be sent to the People can control person. People can enjoy the high technology and simplicity modern life style. By using the embedded system technique, it is convenient to use and allows simple installation in existing homes, it provide a safe, convenient home to us.



The LM35 series are precision integrated-circuit temperature sensors, whose output voltage is linearly proportional to the Celsius (Centigrade) temperature. The LM35 thus has an advantage over linear temperature sensors calibrated in ° Kelvin, as the user is not required to subtract a 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 of ±¼°C at room temperature and ±¾° raj C over a full -55 to +150°C temperature range. Low cost is assured by trimming and calibration at the wafer level. The LM35's low output impedance, linear output, and precise inherent calibration make interfacing to readout or control circuitry especially easy. It can be used with single power supplies, or with plus and minus supplies. As it draws only 60 µA from its supply, it has very low self-heating, less than 0.1°C in still air. The LM35 is rated to operate over a -55° to +150°C temperature range, while the LM35C is rated for a -40° to +110°C range (-10° with improved accuracy). The LM35 series is available packaged in hermetic TO-46 transistor packages, while the LM35C, LM35CA, and LM35D are also available in the plastic TO-92 transistor package. The LM35D is also available in an 8-lead surface mount small outline package and a plastic TO-220 package.

Hardware requirements

  • ARM 7 (LPC 2148) Microcontroller (ARM7 Evaluation Board)
  • Power Supply (9V Adaptor, 5V Adaptor)
  • Temperature Sensor LM35
  • Relay interface (user can interface any devices according to their needs / Application)

Software requirements

  • Programming Language: Embedded C
  • KEIL U Vision IDE
  • Flash magic
  • Orcad 16.3

Source Code


#define CR     0x0D

#include <LPC214x.h>

#include <stdio.h>


#define DONE   0x80000000

#define START  0x01000000

#define PRESET 0x00230600

void send_sms();

void delay(unsigned int);

void Delay ()


       unsigned int i,j;

       for (i=0;i<50;i++)

                 for (j=0;j<500;j++);



void Welcome ()


       printf ("-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.\n\r");

       printf (" Developed By :  R&D Wing \n\r");

       printf (" © 2009 Pantech Solutions Pvt Ltd \n\r");

       printf ("--------------------------------------------------------\n\r");

       printf ("*** Temperature Sensor Interfacing with Tyro Kit ***\n\r");

       printf ("--------------------------------------------------------\n\r");

       printf (">> Put Jumper J in 'E' Mode to Enable Temp Sensor Block \n\r");

       printf (">> Connect UART1 to COM Port @ 9600 Baud Rate\n\n\r");

       printf ("********************************************************\n\r");

       printf ("************************* Result ***********************\n\r");

       printf ("********************************************************\n\n\r");



  void serial_isr (void)  __irq                  //UART0 Interrupt



       delay(250);                   //printf("AT+CNMI=\"2,2,0,0,0\"%c",13);

       if(printf("AT+CNMI=\"2,2,0,0,0\"%c",13) =='2')



                 IOCLR1       |= 0xFF0080;



       VICVectAddr = 0;



void Serial_Init ()


  PINSEL0          = 0x00000005; 

       U0LCR        =        0x83;

       U0DLL        =        195;

       U0LCR        =        0x03;


       VICIntSelect        = 0<<6;                                                       //UART0 ('0' - irq   '1'-fiq)

       VICVectCntl0       = 0x020 | 6;                                     //VIC slot enabled

       VICVectAddr0     = (unsigned long)serial_isr;//pass address of UART0

       VICIntEnable       = 0x00000040;                                //Enable  UART0 Interrupt



void main ()


       unsigned long Val;

       VPBDIV      =        0x02;                                      //pclk @ 30MHz

       Serial_Init ();

       PINSEL1     =        0x01 << 24;                            //P0.28 configure as ADC0.1


//    IODIR0 = 0XFFFFFFFF; //PORT [P0.16--P0.31] output

       IODIR1 = 0X00Ff0000; //PORT [P1.20--P1.23] output

       //IODIR0    |=      0xFF << LED;                          //Configure P1.24 - P1.31 as Output


       Welcome ();

       AD0CR        =        PRESET | 0x02;            //ADC Config: 10bit/9Clock | BURST = 1 | CLKDIV = 0x06

       AD0CR        |=      START;                                    //Start Conversion NOW


       while (1)




                          Val = AD0GDR;

                 }while ((Val & DONE) == 0);           //Check if Conversion is DONE


                 Val = ((AD0GDR >> 6) & 0x3FF);    //Extract Result from Bits AD0GDR.15 - AD0GDR.6


                 printf (">> Current Temperature :  %d ", Val);

                 printf ("\xF8\F \r");               



                                    IOSET1       |= 0x300080;


                                    IOCLR1       |= 0x300080;




                                    //U0IER      = 0x01;





int putchar (int ch)  {                  /* Write character to Serial Port    */


  if (ch == '\n')  {

    while (!(U0LSR & 0x20));


    U0THR = CR;                          /* output CR */



  while (!(U0LSR & 0x20));


  return (U0THR = ch);




int getchar (void)  {                    /* Read character from Serial Port   */


  while (!(U0LSR & 0x01));


  return (U0RBR);





//              Delay Routine


void delay(unsigned int n)


       int i,j;







void send_sms()


                 VPBDIV = 0x02; 


                 printf("AT+CMGF=1%c",13);                                                 delay(100);         //Text Mode       | hex value of 13 is 0x0D (CR )

                 printf("AT+CMGS=\"9600292363\"%c",13);  delay(100);          //Type your mobile number Eg : "9884467058"

                 printf("Hi :-) Temperature Exceed");                          delay(100);          //Type text as u want

                 printf("%c",0x1A);                                                                  delay(100);         //line feed command

       //      printf("AT+CNMI=\"2,2,0,0,0\"%c",13);

       //      delay(100);





The Digital Temperature controller could be developed further by making it more stable and put more effort on the visual design of the product. We could reduce the size of the product by replacing the power supply module and ARM microcontroller with much smaller pieces. A lot of improvements could be done in the computer program as well. It should be more customizable for an end user.


Digital Temperature controller which can make a home environment automated. People can control their electrical devices via Digital Temperature controller and set up the controlling actions in the computer. We think this product have high potential for marketing in the future.

Join the World's Largest Technical Community

we respect your privacy.