top of page

Project Name : Temperature Control with relay.

 

Project Description :

  1. This is an ON OFF temperature Control.

  2. The relay change over let you actuate an  AC 220V device to control the temperature.

  3. You can adjust the SetPoint to the range of 10 to 99 Degree C. with the left button (decrease by 1 C) or the right button (increase by 1 C)

 

Components :

  • 1 - LCD 1602 I2C.

  • 1 - Temperature sensor LM35.

  • 2 - 12X12 Push Buttons.

  • 2 - 10K Ohm Resistors.

  • 2 - 330 ohm Resistors.

  • 2 - Leds.

  • 1 - one channel relay.

 

 

The code

======

/*
Testing LM36 thermometer
Signal leg connected to ANALOG Input AO

RElay IN leg connected to pin 9.
By Yohi Zucker
March 18th 2016
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
const int button1Pin = 2;  // pushbutton 1 pin
const int button2Pin = 3;  // pushbutton 2 pin
float Temp;//Temperature variable
int Sensorpin = A0;//Read the temp sensor output
const int ledPin1 =  12;    // LED pin1
const int ledPin2 =  13;    // LED pin2
const int relayPin = 9;     // Pin to actuate the relay
int SetTemp = 10;


void setup() {
  pinMode(button1Pin, INPUT);
  pinMode(button2Pin, INPUT);
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(relayPin, OUTPUT);
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.backlight();
  lcd.setCursor(2, 0);
  lcd.print ("Temperature");
}

void loop() {
  int button1State, button2State;  // variables to hold the pushbutton states
  button1State = digitalRead(button1Pin);
  button2State = digitalRead(button2Pin);

  if (button1State == LOW)
  {
    SetTemp = SetTemp - 1;
  }
  if (button2State == LOW)
  {
    SetTemp = SetTemp + 1;
  }
  if (SetTemp == 9)
  {
    SetTemp = 10;
  }
  if (SetTemp == 100)
  {
    SetTemp = 99;
  }
  lcd.setCursor(10, 1);
  lcd.print("Set=");
  lcd.setCursor(14, 1);
  lcd.print(SetTemp);

  //Serial.print( button1State);
  //Serial.println( button2State);
  delay(250);
  lcd.setCursor(0, 1);


  Temp = (5.0 * analogRead(Sensorpin) * 100.0) / 1024;
  lcd.print(Temp);
  lcd.print("C");
  //  Serial.print("Temperature= ");
  //Serial.print(Temp);
  //Serial.println("C");
  //delay(1000);
  if (Temp > SetTemp)
  {
    digitalWrite(ledPin2 , HIGH);
    digitalWrite(ledPin1 , LOW);
    digitalWrite(relayPin, HIGH);
  }
  else
  {
    digitalWrite(ledPin2 , LOW);
    digitalWrite(ledPin1 , HIGH);
    digitalWrite(relayPin, LOW);
  }
}

bottom of page