Temperature controller with LCD, LM35


hi guys
i had post similar in design section got no help.
please quite new patient. did control unit in

       circuits4you.com arduino temperature controller

i copied , pasted code , i'm trying add set points 2 push buttons , add hysteresis. have looked every post, tutorial etc , cannot find carry on.
please @ code , let me know.

code: [select]

/*
   circuits4you.com
   digital temperature controller
*/
#include <liquidcrystal.h>

// initialize library numbers of interface pins
liquidcrystal lcd(9, 8, 7, 6, 5, 4);

const int led_red = 10;       // red led
const int led_green = 11;     // green led
const int relay = 12;         // 220v 10amp fan relay

//key connections arduino
const int up_key = 3;         // key
const int down_key = 2;       // down key

int setpoint = 30;

void setup() {
  pinmode(led_red, output);
  pinmode(led_green, output);
  pinmode(relay, output);
  pinmode(up_key, input);
  pinmode(down_key, input);

  digitalwrite(up_key, high);    // pull setpoint button
  digitalwrite(down_key, high);  // pull setpoint button

  lcd.begin(16, 2);              // set lcd's number of columns , rows:
  lcd.print("ejhg. artois.");    // print message lcd.
  lcd.setcursor(0, 1);           // move coursor second line
  lcd.print("temp. controller"); // print message lcd.
  digitalwrite(led_green, high); // green led off
  digitalwrite(led_red, low);    // red led on
  digitalwrite(relay, low);      // turn off fan relay
  delay(5000);
}

void loop() {

  double temperature = ((4.6 / 1024.0) * analogread(a0)) * 100; //10mv per degree 0.01v/c.
  lcd.setcursor(0, 0);
  lcd.print("temperature:");
  lcd.print(temperature);

  //get user input setpoints
  if (digitalread(down_key) == low)
  {
    if (setpoint > 0)
    {
      setpoint--;
    }
  }
  if (digitalread(up_key) == low)
  {
    if (setpoint < 150)
    {
      setpoint++;
    }
  }

  lcd.setcursor(0, 1);
  lcd.print("set point:");         //display set point on lcd
  lcd.print(setpoint);
  lcd.print(" cel");

  if (temperature > setpoint)      //check temperature in limit
  {
    digitalwrite(relay, low);      // turn off fan
    digitalwrite(led_red, low);
    digitalwrite(led_green, high); // turn on green led
  }
  else
  {
    digitalwrite(relay, high);     // turn on fan
    digitalwrite(led_green, low);  // turn off green led
    digitalwrite(led_red, high);   // turn on red led
  }

  delay(500); //update @ every 500mseconds

  if ((temperature - 2) > setpoint)   //check temperature in limit
  {
    digitalwrite(relay, low);          // turn off fan
    digitalwrite(led_red, low);        // turn off red led
    digitalwrite(led_green, high);     // turn on green led
  }
  if ((temperature + 2) < setpoint)
  {
    digitalwrite(relay, high);       // turn on fan
    digitalwrite(led_green, low);    //turn off green led
    digitalwrite(led_red, high);     // turn on red led
  }
}

hi all
sorry guys code there , managed working had re-adjust.
what i'm trying find out make adjustable hysteresis set point.  
(temperature - 1) > setpoint)
(temperature +1) < setpoint)
if possible using same 2 keys, 2 , 3 please guide me how

code: [select]


/*
   ejhg. artois
   digital temperature controller
       20161217
  with "(circuits4you.com) basic project code and
  all arduino forum team mwmbers help.    
*/

#include <liquidcrystal.h>
#include <inputdebounce.h>
      // initialize library numbers of interface pins
liquidcrystal lcd(9, 8, 7, 6, 5, 4);

const int led_red = 10;          // red led
const int led_green = 11;        // green led
const int relay = 12;            // 220v 10amp fan relay
const int temp_sensor = a0;      // lm 35dt temperature sensor
const int up_key = 2;            // adjust key
const int down_key = 3;          // adjust down key
int vin = a0;                    // variable read value pin a0
float temperature;   // variable receives converted voltage
int setpoint = 25;   // start-up,setpoint adjustable push keys 2 , 3

void setup() {

  pinmode(led_red, output);
  pinmode(led_green, output);
  pinmode(relay, output);
  pinmode(up_key, input);
  pinmode(down_key, input);

  digitalwrite(up_key, high);           // pull setpoint button
  digitalwrite(down_key, high);         // pull setpoint button

  lcd.begin(16, 2);                     // lcd's number of columns , rows:
  lcd.print("ejhg. artois.");           // print message lcd.
  lcd.setcursor(0, 1);                  // move coursor second line
  lcd.print("temp. controller");        // print message lcd.
  digitalwrite(led_green, high);        // green led off
  digitalwrite(led_red, low);           // red led on
  digitalwrite(relay, low);             // turn off fan relay
  delay(2000);
}

void loop() {

  vin = analogread(0);    //tell arduino read voltage on pin a0
  temperature = (5.0 * vin) * 93.10 / 1024; // convert read value voltage
  delay(200);
  lcd.setcursor(0, 0);                   // move coursor first line
  lcd.print("temperature:");             // print message lcd.
  lcd.print(temperature);

  if (digitalread(down_key) == low)   // input setpoint
  {
    if (setpoint > -8)
    {
      setpoint--;
    }
  }
  if (digitalread(up_key) == low)     // input setpoint
  {
    if (setpoint < 40)
    {
      setpoint++;
    }
  }
  lcd.setcursor(0, 1);
  lcd.print("set point:");           // display set point on lcd
  lcd.print(setpoint);
  lcd.print(" cel");                 // display degree celcius

  if ((temperature - 1) > setpoint)  //check temperature in - limit
  {
    digitalwrite(relay, low);        // turn off fan
    digitalwrite(led_red, low);      // turn off red led
    digitalwrite(led_green, high);   // turn on green led
  }
  if ((temperature + 1) < setpoint)  //check temperature in + limit
  {
    digitalwrite(relay, high);      // turn on fan
    digitalwrite(led_red, high);    // turn on red led
    digitalwrite(led_green, low);   // turn off green led
  
  if (temperature > setpoint)        // check temperature in limit
    {
      digitalwrite(relay, low);      // turn off fan
      digitalwrite(led_red, low);    // turn off red led
      digitalwrite(led_green, high); // turn on green led
    } else {
      digitalwrite(relay, high);     // turn on fan
      digitalwrite(led_red, high);   // turn on red led
      digitalwrite(led_green, low);  // turn off green led
    }
  }
}


Arduino Forum > Using Arduino > Sensors > Temperature controller with LCD, LM35


arduino

Comments

Popular posts from this blog

DHT11 Time out error using v0.4.1library

Sketch upload fails with Java error (___REMOVE___/bin/avrdude)!

Arduino Uno + KTY81/210 temperature sensor