Temparaturgesteuerte Lüfter über Relais-Modul und DHT22

Hallo Zusammen!

Ich verauche es jetzt noch einmal...

Ich habe mir einen Verteiler in die Garage gebaut, in dem ein 12V30A Netzteil seinen Dienst verrichtet. Da ich viel mit Holz arbeite, ist der Verteiler auch staubgeschützt. Jetzt möchte ich mit einen Arduino Nano, ein DHT22 Sensor und ein Relais Modul die erzeugte Wärme vom Netzteil über einen Temparaturgesteuerten Lüfter ableiten.

Ich habe einen Code von knopers gefunden, der eigentlich genau das macht, was ich möchte! Meine Frage ist nun ob ich ihn einfach so verwenden kann, da ich ja ein Relais Modul verwenden möchte? Im Prinzip müßte es doch egal sein was ich an dem Ausgang dranhänge, oder?

Hier mal der Code von knopers!

 #include "DHT.h"
     
    #define DHTPIN 2     // what pin we're connected to
    #define DHTTYPE DHT22   // DHT 22  (AM2302)
    #define fan 4
     
    int maxHum = 60;
    int maxTemp = 40;
     
    DHT dht(DHTPIN, DHTTYPE);
     
    void setup() {
      pinMode(fan, OUTPUT);
      Serial.begin(9600);
      dht.begin();
    }
     
    void loop() {
      // Wait a few seconds between measurements.
      delay(2000);
     
      // Reading temperature or humidity takes about 250 milliseconds!
      // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
      float h = dht.readHumidity();
      // Read temperature as Celsius
      float t = dht.readTemperature();
     
      // Check if any reads failed and exit early (to try again).
      if (isnan(h) || isnan(t)) {
        Serial.println("Failed to read from DHT sensor!");
        return;
      }
     
      if(h > maxHum || t > maxTemp) {
          digitalWrite(fan, HIGH);
      } else {
         digitalWrite(fan, LOW);
      }
     
      Serial.print("Humidity: ");
      Serial.print(h);
      Serial.print(" %\t");
      Serial.print("Temperature: ");
      Serial.print(t);
      Serial.println(" *C ");
     
    }

Vielen Dank
Gruß Stephan

Grundsätzlich sollte das mit dem Sketch funktionieren.
Allerdings fehlt eine Angabe über das von dir verwendete Relais.
Die üblichen Relaismodule sind Low-Aktiv, was bedeutet, die schalten bei Low am Steuerpin.
Das müsstest du bei deinem Sketch berücksichtigen.

Hallo,.
Danke für die schnelle Antwort!
Ich habe da mal ein Foto von dem Relais Modul gemacht. wie erkenne ich ein solches Modul?

Im Prinzip müßte es doch egal sein was ich an dem Ausgang dranhänge

Im Prinzip schon.

Zusätzlich zu HotSystems Einwand:
Da du ja ein delay(2000); drin hast, ist das Relais klackern auch nicht gar so wild, so ohne jede Hysterese.

   float maxHum = 60;
    float maxTemp = 40;
    float minHum = 55;
    float minTemp = 38.5;

...

      if(h > maxHum || t > maxTemp) {
          digitalWrite(fan, HIGH);
      } else if (h < minHum && t < minTemp {
         digitalWrite(fan, LOW);
      } else {
      // dazwischen bleibt der Ventilator wie er war
      }

Statt (oder auch zusätzlich zur) Hysterese wäre auch überlegenswert, minimale Lauf- und Pause-Zeiten zu definieren. Aber du willst ja so wenig wie möglich programmieren.

Hoffen wir mal, dass der Betrieb des Ventilators nicht nur die Temperatur, sondern auch die Feuchtigkeit am Sensor verringert.

Traube:
Hallo,.
Danke für die schnelle Antwort!
Ich habe da mal ein Foto von dem Relais Modul gemacht. wie erkenne ich ein solches Modul?

Erkennen ist meist schlecht.
Man muss sich das Datenblatt dazu ansehen.
Da du es vor dir hast, kannst du es doch leicht ausprobieren.

Vermutlich schaltet es mit Low am Steuerpin, wie schon geschrieben.

Der Einwand mit der Hysterese von michael_x ist nicht zu vernachlässigen, das könntest du ja noch im Probeaufbau integrieren.

wie erkenne ich ein solches Modul?

Wenn es sofort schaltet bei

pinMode(fan,OUTPUT);

ist es LOW-Aktiv.

Wenn ja, dann kannst du entweder den Ventilator am NC - Anschluss anschließen,
oder die Logik im Sketch umdrehen. Und in setup()

   digitalWrite(fan, HIGH); // Relais aus
   pinMode(fan, OUTPUT);

einbauen

Hallo,

such mal nach Schaltschrank Thermostat, die brauchen keine Hilfsenergie und bieten belastbare Kontakte für Lüfter.

Heinz

Rentner:
Hallo,

such mal nach Schaltschrank Thermostat, die brauchen keine Hilfsenergie und bieten belastbare Kontakte für Lüfter.

Heinz

Nun nimm doch einem Arduino-Bastler" nicht die Freude am Hobby. :wink:

Hi

Neben der Arduino-Lösung hätte ich aber ebenfalls ein konventioneller Thermostat vorgeschlagen.
Die 12V sind vorhanden - der Lüfter ist vorhanden - fehlt nur Einer, Der den Kram schaltet.
Hysterese hat das Thermostat Bauart bedingt bereits integriert.
Auch wird's dem Arduino im Winter dann in der Garage nicht 'anders', wenn Er Sich mit drückender Luftfeuchte rumschlagen muß und Ihm die Füße anfangen, wegzugammeln.

Ich sehe hier keinen Vorteil durch den Arduino (von einer Temepratur-Messung für's benachbarte Haus wurde noch Nichts gesagt) - somit klarer Gewinner: das Thermostat.

MfG

Hallo!
vielen Dank für das viele Feedback!
Ich werde die nächste Tage mal einen Versuchsaufbau zusammenbasteln! Ich habe die Sachen alle da und deshalb möchte ich sie auch nutzen. Klar, Thermostat wäre vielleicht langfristig gesehen die bessere Lösung, aber wie gesagt, ich habe schon alles und wenn es die Zeit mal zuslassen würde, würde ich mich da ganz sicher näher mit beschäftigen, denn die Möglichkeiten find ich es klasse!
Der Lüfter ist auch ein 12V Lüfter, also halten Sie die Ströme wohl in Grenzen!
Klasse Unterstützung hier! Danke

Hallo ich klink mich mal hier mit ein ich habe ein ähnliches vorhaben unzwar einen Badlüfter zu steuern aber mit einem Nodemcu und einem DHT22 weil ich alles noch rum liegen habe und vom bild her würde ich sagen auch die selben relais.

Ich habe den Sketch ein wenig abgeändert und wollte fragen ob das so funktionieren könnte das der Lüfter bei 80% an geht und bei 50% wieder aus?

#include "DHT.h"
     
    #define DHTPIN 2     // what pin we're connected to
    #define DHTTYPE DHT22   // DHT 22  (AM2302)
    #define fan 4
     
    int maxHum = 80;
    int minHum = 50;
     
    DHT dht(DHTPIN, DHTTYPE);
     
    void setup() {
      pinMode(fan, OUTPUT);
      Serial.begin(9600);
      dht.begin();
    }
     
    void loop() {
      // Wait a few seconds between measurements.
      delay(2000);
     
      // Reading temperature or humidity takes about 250 milliseconds!
      // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
      float h = dht.readHumidity();
      // Read temperature as Celsius
      float t = dht.readTemperature();
     
      // Check if any reads failed and exit early (to try again).
      if (isnan(h) || isnan(t)) {
        Serial.println("Failed to read from DHT sensor!");
        return;
      }
     
      if(h > maxHum) {
          digitalWrite(fan, HIGH);
      } else(h < minHum) {
         digitalWrite(fan, LOW);
      }
     
      Serial.print("Humidity: ");
      Serial.print(h);
      Serial.print(" % ");
     
    }

Hi

Was hindert Dich am Ausprobieren?
Der Sketch sollte ungefähr machen, was Dir vorschwebt.
Allerdings sehe ich nicht, daß Du die Feuchtigkeit wirklich um diese Differenz gesenkt bekommst.
Spätestens, wenn's wirklich so feucht ist (schwüler Sommertag), macht der Lüfter Überstunden!

DHT22:
Hätte hier 5 Stück, wovon 4 dieser Dinger noch in Original-Verpackung - lst den Tiefen des WWW ist die Langzeitstabilität 'für die Füße'.
Man kann diese Sensoren wohl wieder 'kalibrieren' - ist aber mit Aufwand verbunden und hält dann wieder nicht ewig.

Selber nur ganz zu Anfang Mal mit Einem gespielt, bin aber schnell auf BME280-5V umgestiegen.
Wobei 'umgestiegen' jetzt schon etwas übertrieben ist - fertig ist der entsprechende Sensor-Arduino nämlich noch nicht (bzw. nicht im aktivem Einsatz).
Egal - laut WWW ist der BME280 um Längen besser, als ein DHT (vom 11er ganz geschwiegen).
Auch liefert Der neben Temperatur und Feuchte auch noch den Luftdruck.
Meine Überlegung war, außerhalb des Bad eine Art Referenz-Feuchte zu erfassen (umgerechnet in absolute Feuchte) - wenn's dann in Bad/Garage/Keller wirklich feuchter ist, lohnt Lüften wenigstens.
Wenn man nur 'relativ trockene Luft' in einen kälteren Raum bläst, kann's darin durchaus wesentlich feuchter werden, da die Luft im kalten Raum abkühlt und dann nicht mehr die Menge Wasser halten kann - Oberflächen schwitzen.

MfG