• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Wielokanałowy sterownik pieca gazowego.
#1
Witam
Z kilku dostępnych w sieci projektów "ulepiłem" sobie wielokanałowy sterownik pieca gazowego.
Krótki opis działania: w dwóch (na razie) pokojach umieszczone będą czujniki DS18b20 i na grzejnikach lub przy rozdzielaczu zamontowane elektrozawory. W przypadku spadku temperatury poniżej zadanej, załączany jest przekaźnik sterujący danym grzejnikiem i po ustalonym czasie załączany piec. Program działa jak należy, ale nie wiem co dopisać do kodu, żebym dostępnymi 2 przyciskami p1/p2 (+/- zadana temp) mógł ustawiać oddzielnie temperaturę T1 i T2 (oddzielnie dla pokoi). Domyślam się, że trzeba dołożyć chociaż jeden dodatkowy przycisk "setup" którym będę wybierał "pokój" ale co dopisać do kodu ... nie mam bladego pojęcia. Na razie ustawiana jest tylko T1. 
No i kwestia histerezy. Co i gdzie dopisać, żeby przekaźnik był załączany przy T, a wyłączany przy T+h?
Arduino mam od tygodniaSmile więc proszę o wyrozumiałość. Z góry dziękuję za pomoc. 
Kod:
#include <LiquidCrystal.h>
#include <OneWire.h>
#include <DallasTemperature.h>

int p1 = 7; // przycisk  zwiekszajacy nastawe temperatury T1
int p2 = 6; // przycisk zmniejszajacy nastawe temperatury T1
int p1state = 0;
int p2state = 0;

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

#define ONE_WIRE_BUS A0

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int nastaw1 = 22; // zadana temperatura T1
int nastaw2 = 23; // zadana temperatura T2
int przekaznik1 = 8;  // pin przekaznik elektrozaworu z czujnika T1
int przekaznik2 = 9;  // pin przekaznik elektrozaworu z czujnika T2
int przekaznik3 = 10; // pin przekaznik pieca


 
void setup(void)


{
pinMode(przekaznik1,OUTPUT);
pinMode(przekaznik2,OUTPUT);
pinMode(przekaznik3,OUTPUT);

pinMode (7, INPUT_PULLUP); // przycisk zwiekszajacy nastawe temperatury
pinMode (6, INPUT_PULLUP); // przycisk zmniejszajacy nastawe temperatury

 lcd.begin(16, 2);
 sensors.begin();
 Serial.begin(9600);
}

void wys(void){
sensors.requestTemperatures();
lcd.setCursor(0, 0);
lcd.print("T1=");
lcd.print(sensors.getTempCByIndex(0));
lcd.print("  ");
lcd.print("NT1=");
lcd.print(nastaw1);
lcd.setCursor(0, 1);
lcd.print("T2=");
lcd.print(sensors.getTempCByIndex(1));
lcd.print("  ");
lcd.print("NT2=");
lcd.print(nastaw2);

if (sensors.getTempCByIndex(0) < (nastaw1)) {
     digitalWrite(8,HIGH);
  } else {
     digitalWrite(8,LOW);
  }

 if (sensors.getTempCByIndex(1) < (nastaw2)) {
     digitalWrite(9,HIGH);
  } else {
     digitalWrite(9,LOW);
  }

 
}
void loop(void)  
{
p1state = digitalRead(p1);
p2state = digitalRead(p2);
 if(p1state == LOW){nastaw1=nastaw1+1;}
 if(p2state == LOW){nastaw1=nastaw1-1;}
 wys();
 
 if (digitalRead(8) == HIGH || digitalRead(9) == HIGH) {  //
     delay(3000);
     digitalWrite(10, HIGH);
 }      
     else {
     digitalWrite(10, LOW);
     }

       
     
 
}
 
Odpowiedź
  


Wiadomości w tym wątku
Wielokanałowy sterownik pieca gazowego. - przez zamber - 15-01-2017, 22:26

Skocz do:


Przeglądający: 1 gości