Sterownik termoprasy

Masz problem z Arduino? Tutaj możesz szukać pomocy.
ODPOWIEDZ
Seb_Sp
Młodszy majsterkowicz
Posty: 1
Rejestracja: 2 lut 2019, 15:44

Sterownik termoprasy

Post autor: Seb_Sp » 2 lut 2019, 15:56

Witam, jako że jest to mój pierwszy temat na forum chciałbym pozdrowić szanownych kolegów forumowiczów.

Proszę o pomoc, konstruuję termoprasę i potrzebuje drobnej pomocy z kodem w adruino.
Zamysł jest taki:
na wejściu czujnik temperatury

na wyjściu:
- przekaźnik do elektrozaworu pneumatycznego,
- przekaźnik do grzałki

Cykl ma się rozpocząć po naciśnięciu przycisku,
jeżeli temperatura zadana została osiągnięta, naciskamy przycisk, przekaźnik uruchamia elektrozawór na określony czas np 20s po odliczeniu czasu wraca do stanu pierwotnego i czeka na kolejne naciśnięcie przycisku.

Kod planuje powiększyć o zmianę temperatury i czasu z przycisków dołączonych do płytki.

Próbowałem ustawiać czas na różnych bibliotekach np timers, lecz niestety nie wyszło.
Proszę o pomoc, z góry dziękuję.

Kod: Zaznacz cały

#include <LiquidCrystal.h>
#define grzalka 7
#define przekaznik 6
#define przycisk 5 // start

LiquidCrystal lcd(34, 32, 30, 28, 26, 24, 22);


int data = 0;
int ThermistorPin = 0;
int Vo;
float R1 = 10000;
float logR2, R2, T, Tc;
float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;
float temperatura_zadana=1;
float czaspracy=10;



void setup() {
//Serial.begin(9600);


lcd.begin(20, 4);
pinMode(grzalka, OUTPUT);
digitalWrite(grzalka, HIGH);
pinMode(przekaznik, OUTPUT);
digitalWrite(przekaznik, HIGH);
pinMode(przycisk, INPUT_PULLUP);


}

void loop() 

{
lcd.setCursor(0, 3);
lcd.print("Czas pracy ");
lcd.print(czaspracy);


  Vo = analogRead(ThermistorPin);
  R2 = R1 * (1023.0 / (float)Vo - 1.0);
  logR2 = log(R2);
  T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
  Tc = T - 273.15;
 
lcd.setCursor(0, 0);

  lcd.print("Temp = ");
  lcd.print(Tc);   
  lcd.print(" C");
  
lcd.setCursor(0, 1);
  lcd.print("Zadana = ");
  lcd.print(temperatura_zadana);
  lcd.print(" C");

delay(500);


if (digitalRead(przycisk) == HIGH and temperatura_zadana<=Tc )
{
 
      digitalWrite(przekaznik,HIGH); 
     
   }else {
      digitalWrite(przekaznik,LOW); 

// brakuje czasu




 
  // lcd.noDisplay();
   delay(250);
   
   }                   
  

  
 lcd.clear();

 if(temperatura_zadana+1<=Tc) //Histereza 2 stopnie- grzałka grzeje do temp. zadanej + 2
 //Taki zapis zapobiega nadmiernemu zalączania/wyłączaniu przekaźnika
 {
  digitalWrite(grzalka, HIGH); //Wyłączenie grzałki
}

 if(temperatura_zadana>=Tc)
 {
  digitalWrite(grzalka, LOW); //Załączenie grzałki
  lcd.setCursor(0, 2);
  lcd.print("Nagrzewanie");
  delay(300);
  lcd.clear();
  
  
  }
  
    

//delay(200);            
  
}

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


Awatar użytkownika
Marhef
Złota rączka
Posty: 1143
Rejestracja: 18 lis 2011, 02:18

Re: Sterownik termoprasy

Post autor: Marhef » 8 lut 2019, 10:38

Sterownik ma działać jak termostat? Znaczy, ma dbać o utrzymanie odpowiedniej temperatury?
Chcesz, żeby program działał nieblokująco?
A co się stanie, jeśli nacisnę przycisk, ale temperatura zadana nie zostanie osiągnięta?
ODPOWIEDZ

Strony partnerskie: