Total Pageviews

reducere

Wednesday, May 20, 2015

Arduino thermostat on 7-segment LED display

   I designed a thermostat with few components using an Arduino board.
   I use LM35DZ for temperture sensor, KW4-563ASA display (4 digit 7-segment with common anode), RGB led, 3 button (push button) for select and change the value for desired temperature and for hysteresis.
   I designed this schematic:
who is used also for an thermostat with 2 thesholds (must change the sketch).
   If measured temperature is less than desired temperture, blue led is on:
and if is to much, red led is on:
   If I push the MENU buton, display is change in:
(in right side, is "c" instead "C"). 
   If I push "-" button, temperature value decrease with 0.1 degree Celsius for each push, if I push "+" button, temperature increase with 0,1 degree Celsius for each push.
   After that, if I push again MENU button, I will see:
and I can change the value with 0.1 degree, like at desired temperature.
   Values for desired temperature and hysteresis are write and stored in internal EEPROM memory of microcontroler (any Arduno board has an microcontroller on it.)
   For easy understund this, I made a movie named Arduino thermostat
   Skech for this thermostat is put on https://github.com/tehniq3/thermostat !!!

PS:  Fist time when upload the sketch, must write default value for desired temprature and hysteresis:
after that, must comment the 3 lines:
   Actual sketch work with Arduino Uno board and you can see:
but for work with Arduino Mega board you must comment first line and uncomment second line:
PS2: If you want to connect a relay for control a heater system, subroutine leduri() must be changed in:
void leduri() {
 digitalWrite(CALD, LOW);
 digitalWrite(RECE, LOW);

if ( t0*10 < tset ) 
{  digitalWrite(RECE, HIGH);
   digitalWrite(CALD, LOW);
   pornire = 1;
}
if ( t0*10 > tset + dt ) 
{  digitalWrite(CALD, HIGH);
   digitalWrite(RECE, LOW);
   pornire = 0;
}

if (( t0*10 <= tset+dt ) && ( t0*10 >= tset )) {
if (pornire == 1)
{  digitalWrite(CALD, LOW);
   digitalWrite(RECE, HIGH);
}
if (pornire == 0)
{  digitalWrite(CALD, LOW);
   digitalWrite(RECE, LOW);
}
}
}
and at begin of sketch must define int pornire; and in setup must put pornire = 0; !!
   You can download changed sketch from https://github.com/tehniq3.
   In movie namend Arduino thermostat (2) you can see the changed style, like usual thermostat for a heater:

6 comments: