Arduino - Programar relés con respecto a temperaturas

 
Vista:

Programar relés con respecto a temperaturas

Publicado por Julio (4 intervenciones) el 19/10/2019 19:41:17
Saludos y gracias por vuestro tiempo. Estoy estancado con un problema y no sé como solucionarlo, estoy con un proyecto de control de zonas para la calefacción central. En el código de abajo quiero que 2 sensores DHT22 me hagan lecturas, y al seleccionar una temperatura, que se me activen los relés de los radiadores y el de la caldera, ejemplo:

- Despacho, lo quiero a 23 grados, al estar a 21 se activa el relé del radiador y el relé de la caldera.
- Salón, lo quiero a 22 grados, al estar a 22.5 el relé del radiador no se activa y el relé de la caldera se desactiva.

¿Cómo hago para que el relé de la caldera, mientres haya un radiador en marcha no se desactive?


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
void loop() {
 
  if (millis() > anteriorRefreshDatos + 2000){
    anteriorRefreshDatos = millis();
    float tempDespacho = dhtDespacho.readTemperature();
    float tempSalon = dhtSalon.readTemperature();
      if (isnan(tempDespacho) || isnan(tempSalon)){
      Serial.println("Fallo en lectura de temperatura");
      return;}
        if (calderaHabilitada = 1){
          if (tempDespacho + histeresis >= tempDeseadaDespacho && tempDespacho > 0 ) {
            digitalWrite(releDespacho, LOW);
            digitalWrite(releSalon, LOW);
            digitalWrite(releCaldera, LOW);
            }
            if (tempSalon + histeresis >= tempDeseadaSalon && tempSalon > 0 ) {
            digitalWrite(releDespacho, LOW);
            digitalWrite(releSalon, LOW);
            digitalWrite(releCaldera, LOW);
            }
        else if (tempDespacho < tempDeseadaDespacho && tempDespacho > 0 )
        {
        digitalWrite(releDespacho, HIGH);
        digitalWrite(releSalon, HIGH);
        digitalWrite(releCaldera, HIGH);}
        else if (tempSalon < tempDeseadaSalon && tempSalon > 0 )
        {
        digitalWrite(releDespacho, HIGH);
        digitalWrite(releSalon, HIGH);
        digitalWrite(releCaldera, HIGH);}
      else
      {
        digitalWrite(releDespacho, LOW);
        digitalWrite(releSalon, LOW);
        digitalWrite(releCaldera, LOW);
      }
 
      }
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder