Automatic Temperature Control System using PIC Microcontroller – XC8

Automatic Temperature Control System using PIC Microcontroller – XC8

Watch The Video Tutorial part 1:

An automatic temperature control system has the ability to monitor and control the temperature of a specified space without human intervention. The primary purpose is to manage the temperature of a given area based on settings by a user of the system.

This project uses a PIC microcontroller to automatically control the temperature of an area. This area could be a small plant, a house or any place or device that require a controlled temperature like an incubator (egg) for example. Figure 1 shows the block diagram of the system to be designed. The desired temperature setting is entered using a keypad. The temperature of the area is measured using an analog temperature sensor, the LM35 precision integrated-circuit temperature sensor is used for this.

Automatic Temperature Control

Figure 1: Automatic Temperature Control Block diagram

The microcontroller reads the temperature every 10 s and compares it with the desired value. If the desired value is higher than the measured value, then the heater is turned ON to heat the area. The heater is switched OFF once the desired temperature is reached. If on the other hand the measured value is higher than the desired value, then the fan is switched ON to cool off the area until the required temperature is reached. An LCD display shows the measured temperature continuously.

Figure 2 shows the circuit diagram of the project. The LCD is connected to PORTB. The LM35 precision analog temperature sensor chip is connected to the analog input pin AN0 (RA0). A 3×4 keypad is connected to PORTC. The ‘*‘ key of the keypad is used to clear the value entered during the temperature setup and the ‘#‘ key is used to ENTER (save) the setting. The heater and the fan are controlled using transistors and relays connected to pins RA1 and RA2 of the microcontroller respectively.

Figure 2: Automatic Temperature Control Circuit diagram

Note: The Terminals ratings of the relay should depend on the power of the Heater and the Fan. If you decide to use 220V Heater and Fan, use appropriate relays which can handle that voltage and current. The low voltage DC of the coil should be preferably 5V and with low current for the BC108 transistor to handle, or you can use a different transistor. Please observe the safety precaution as 220V (or 110V if you are living in the USA) is very dangerous, if you have never worked with high voltage before, please seek assistance, don’t attempt to do it on your own. 

Buy the components used in this Project form our Online Store

To learn more, please read these tutorials first:

Interfacing a Relay with PIC Microcontroller

Interfacing Matrix Keypad with PIC Microcontroller

Interfacing LCD Display with PIC Microcontroller

Digital Thermometer using PIC Microcontroller and the LM35 Temperature sensor

                        MPLAB XC8 Code


If you are using XC8 compiler v1.35 or a later version, the Peripheral Libraries which include the LCD and other peripherals like ADC, SPI, I2C libraries are no longer included in the installation file as with previous versions. You can use MPLAB code configurator to configure your peripherals or you can download the Peripheral Libraries as a separate download and install them. You can download them at microchip website under the MPLAB XC Compilers downloads tab. They are now called PIC18 Legacy Peripheral Libraries.

Download: PIC18 Legacy Peripheral Libraries

If you want to use mikroC compiler, you may be interested in this project:

Automatic Temperature Control System with mikroC compiler

Watch The Video Tutorial part 2:

Watch The Video Tutorial part 3:

You can download the full project files (MPLAB XC8 source code and Proteus Schematic design) below here.
All the files are zipped, you will need to unzip them (Download a free version of the Winzip utility to unzip files).

MPLAB XC8  Project Source Code:  Automatic_Temp_Control_MPLAB_XC8.X

Proteus Schematic: Automatic_Temp_Control_Proteus_XC8

Share this post

You've just added this product to the cart:

Select your currency
ZARSouth African rand
EUR Euro