INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 1 Bewertungen - 4 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Luftfeuchtigkeitsregulierung mit Arduino
13.02.2014, 10:23 (Dieser Beitrag wurde zuletzt bearbeitet: 24.07.2014 19:23 von apex.)
Beitrag #1
Luftfeuchtigkeitsregulierung mit Arduino
Ich möchte meine Software zur Regelung der Luftfeuchte in meinem Keller vorstellen.
Die Steuerung besteht aus einem Arduino Uno, einem Ethernetshield und einem Relais + Ansteuerung, zwei DTH22 sensoren und einem Lüfter der durch die Kellerwand nach außen führt.
Wenn im keller die absolute Luftfeuchte höher als draußen ist, so läuft der Kellerlüfter an. Bei höherer Luftfeuchte draußen schaltet der Lüfter aus.

Das System ist seit ca. 1 jahr im Einsatz und läuft recht erfolgreich. Ich koann meine Luftfeuchtigkeit unter 70% halten, was für einen alten Gewölbekeller mit Lehmboden ganz gut ist.

Die Sensorergebnisse werden für mich zur Funktionskontrolle getwittert.
Die ergebnisse könnt ihr hier sehen womble.de

Hier der Code:

Code:
// Written by Mark Kingery (Mark(AT)Kingery.de), GPLV3
// DHT22 Library written by ladyada, public domain
//https://github.com/adafruit/DHT-sensor-library

// Abs. Feuchte=13,233*rel.Feuchte*((10^((7,5*T)/(237+T)))/(273,16+T))
//T=Lufttemperatur
// Sensor 1 indoor
// Sensor 2 outdoor
// this program may not be good looking but I`m staisfied

#include "DHT.h"
#include <math.h>
#include <SPI.h> // needed in Arduino 0019 or later
#include <Ethernet.h>
#include <Twitter.h>
#define DHTPIN1 6   // what pin we're connected to
#define DHTPIN2 7   // what pin we're connected to
// Uncomment whatever type you're using!
//#define DHTTYPE DHT11   // DHT 11
#define DHTTYPE DHT22   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)
// Ethernet Shield Settings
byte mac[] = { 0x00, 0x80, 0x41, 0x3F, 0x1E, 0xED }; //Robotron MAC Adresse

// If you don't specify the IP address, DHCP is used(only in Arduino 1.0 or later).
byte ip[] = { 192, 168, 1, 10 };

// Your Token to Tweet (get it from http://arduino-tweet.appspot.com/)
Twitter twitter("xxx"); //xxx durch eigenen Token ersetzen


// Connect pin 1 (on the left) of the sensor to +5V
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor
int led = 5;
DHT dht1(DHTPIN1, DHTTYPE);
DHT dht2(DHTPIN2, DHTTYPE);

char tmp[10];
char tosend[140];

void setup() {
  Serial.begin(9600);
  Serial.println("DHTxx test!");
pinMode(led, OUTPUT);

  dht1.begin();
  dht2.begin();
}

void loop() {
  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h1 = dht1.readHumidity();
  int t1 = dht1.readTemperature();
float h2 = dht2.readHumidity();
  float t2 = dht2.readTemperature();
float hA1 = 0;
float hA2 = 0;

  // check if returns are valid, if they are NaN (not a number) then something went wrong!
  if (isnan(t1) || isnan(h1)) {
    Serial.println("Failed to read from DHT");
  } else {
    
  double x = 0;
  double y = 0;
  double z = 0;
  x= 13.233*h1;
  y=7.5*t1;
  z = 237+t1;
  y = y/z;
float m = pow(10,y);
  z = 273+t1;
  m=m/z;

  hA1=m*x;
    Serial.print("Humidity1: ");
    Serial.print(h1);
    Serial.print(" %\t");
    Serial.print("Temperature1: ");
    Serial.print(t1);
    Serial.println(" *C");
    Serial.print("HumidityA1: ");
    Serial.print(hA1);
    Serial.println(" g");
  }





  if (isnan(t2) || isnan(h2)) {
    Serial.println("Failed to read from DHT");
  } else {
  
  double x = 0;
  double y = 0;
  double z = 0;
  x= 13.233*h2;
  y=7.5*t2;
  z = 237+t2;
  y = y/z;
float m = pow(10,y);
  z = 273+t2;
  m=m/z;

  hA2=m*x;
    Serial.print("Humidity2: ");
    Serial.print(h2);
    Serial.print(" %\t");
    Serial.print("Temperature1: ");
    Serial.print(t2);
    Serial.println(" *C");
    Serial.print("HumidityA2: ");
    Serial.print(hA2);
    Serial.println(" g");
  }



  if (hA1 > hA2)
  {
  Serial.println(" fan on !");
  strcat (tosend, "fan K1 on !!! ");
  digitalWrite(led, LOW);   // turn the LED on (HIGH is the voltage level)
  } else {
    Serial.println(" fan off !");
    strcat (tosend, "fan K1 off !!! ");
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  }
  //strcat (tosend, "                                                                                                                                        ");

  strcat (tosend, "Temp. inside ");
  itoa((int)t1, tmp, 10); strcat (tosend, tmp);
  strcat (tosend, "°c ");
  strcat (tosend, "Hum. inside ");
  itoa((float)h1, tmp, 10); strcat (tosend, tmp);
  strcat (tosend, "% ");
  strcat (tosend, "H2O ");
  itoa((float)hA1, tmp, 10); strcat (tosend, tmp);
  strcat (tosend, "g/m^3 ");

    strcat (tosend, "Temp. outside ");
  itoa((float)t2, tmp, 10); strcat (tosend, tmp);
  strcat (tosend, "°c ");
  strcat (tosend, "Hum. outside ");
  itoa((float)h2, tmp, 10); strcat (tosend, tmp);
  strcat (tosend, "% ");
    strcat (tosend, "H2O ");
  itoa((float)hA2, tmp, 10); strcat (tosend, tmp);
  strcat (tosend, "g/m^3 ");
  Serial.print(tosend);
  delay(86400);//1000 mal am Tag Twittern
  //delay(10000);
  Ethernet.begin(mac, ip);
  // or you can use DHCP for autoomatic IP address configuration.
  // Ethernet.begin(mac);

  if (twitter.post(tosend)) {
    // Specify &Serial to output received response to Serial.
    // If no output is required, you can just omit the argument, e.g.
    // int status = twitter.wait();
    int status = twitter.wait(&Serial);
    if (status == 200) {
      Serial.println("OK.");
    } else {
      Serial.print("failed : code ");
      Serial.println(status);
    }
  } else {
    Serial.println("connection failed.");
  }
tosend[0] = '\0';
}


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.02.2014, 13:37 (Dieser Beitrag wurde zuletzt bearbeitet: 13.02.2014 13:58 von Sloompie.)
Beitrag #2
RE: Luftfeuchtigkeitsregulierung mit Arduino
Big Grin
Klasse und sinniges Projekt Smile
wäre einfacher zu lesen, wenn Du die Code Funktion nutzt:
Code:
das ist ganz einfach oben mit der # Taste im Menu zu schaffen...

Damit ist der Code in so einem Thread einfach zu lesen und macht es überschaubarer auch für andere Leser.

Ansonsten gute Arbeit
und ich bin sicher, dass ich das mit dem Code für Dich gar nicht so ausführlich hätte erklären müssen. Der Pinguin lässt auf Deiner Webseite grüssen. Cool

Greetz Slommpie

(13.02.2014 13:37)Sloompie schrieb:  Big Grin
Klasse und sinniges Projekt Smile
wäre einfacher zu lesen, wenn Du die Code Funktion nutzt:
Code:
das ist ganz einfach oben mit der # Taste im Menu zu schaffen...

Damit ist der Code in so einem Thread einfach zu lesen und macht es überschaubarer auch für andere Leser.

Ansonsten gute Arbeit
und ich bin sicher, dass ich das mit dem Code für Dich gar nicht so ausführlich hätte erklären müssen. Der Pinguin lässt auf Deiner Webseite grüssen. Cool

Greetz Slommpie

noch ein rechtlicher Tipp - auch wenn viele Webseitenbetreiber es unsinnig finden:

Mach aus Kontakt IMPRESSUM - Deutsche Seite da greifen alle Punkte des TMG - nicht nur die europäischen und man hätte hier nun mal gerne Impressum stehen - auch wenn die Daten, die Du dort hast nicht viel anders sind.

Sehr praktische Hilfe findest Du hierzu sogar kostenlos von Anwälten. Der Impressumsgenerator wird von denen auch regelmässig angepasst. Fragen durchlaufen und schon hast Du Dein Impressum für Deine kleine Seite auch rechtlich auf der sicheren Seite.

Impressumsgenerator

Dimidium facti, qui coepit, habet: SAPERE AUDE, incipe!©Horaz

Vor allem sapere aude! oder wie Immanuel Kant sagt:
"Habe Mut, dich deines eigenen Verstandes zu bedienen!"

Es tut auch nicht weh! Daher: incipe! oder Tu es! wie Yoda sagen würde.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.02.2014, 14:27 (Dieser Beitrag wurde zuletzt bearbeitet: 13.02.2014 14:42 von apex.)
Beitrag #3
RE: Luftfeuchtigkeitsregulierung mit Arduino
danke für die Hinweise.
Kontakt wurde auf Impressum geändert und beim nächsten mal werde ich den code gleich richtig posten.

my code may not be good looking
but I am satisfied
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.02.2014, 14:42
Beitrag #4
RE: Luftfeuchtigkeitsregulierung mit Arduino
(13.02.2014 14:27)apex schrieb:  danke für die Hinweise.
Kontakt wurde auf impressum geändert und beim nächsten mal werde ich den code richtig posten.

Smile

bitte

Dimidium facti, qui coepit, habet: SAPERE AUDE, incipe!©Horaz

Vor allem sapere aude! oder wie Immanuel Kant sagt:
"Habe Mut, dich deines eigenen Verstandes zu bedienen!"

Es tut auch nicht weh! Daher: incipe! oder Tu es! wie Yoda sagen würde.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.02.2014, 12:25 (Dieser Beitrag wurde zuletzt bearbeitet: 20.02.2014 12:26 von Stefan.)
Beitrag #5
RE: Luftfeuchtigkeitsregulierung mit Arduino
noch ein kurzer Hinweis zum Inhalt: Bei normalen Wohnhäusern reicht bereits die passive Lüftung aus, um die Luftfeuchte drastisch zu senken. Elektrisch Antriebe, die 2 Fenster in unterschiedlichen Hauswänden in Abhängigkeit von der absoluten Luftfeuchtte öffnen und schließen, reichen. Bei einem Gewölbekeller wird das wohl eher nicht gehen, denn da gibt es in der Regel nur einen Zugang.

Gruß, Stefan . . . . . . //Wo mein Kölbchen dampft, da bin ich unverkrampft.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.07.2014, 11:54 (Dieser Beitrag wurde zuletzt bearbeitet: 24.07.2014 12:04 von Troff.)
Beitrag #6
RE: Luftfeuchtigkeitsregulierung mit Arduino
Hallo apex,

bin ich der erste den es auffällt?

Im Coding ist ein Cut&Past-Fehler:

In der Formel steht 237+T und 273,16+T:

// Abs. Feuchte=13,233*rel.Feuchte*((10^((7,5*T)/(237+T)))/(273,16+T))
//T=Lufttemperatur
// Sensor 1 indoor
// Sensor 2 outdoor
// this program may not be good looking but I`m staisfied


Im Coding wird allerdings zweimal mit 237 gerechnet.

z = 237+t1;
y = y/z;
float m = pow(10,y);
z = 237+t1;
m=m/z;

Auch beim zweiten Sensor:

y=7.5*t2;
z = 237+t2;
y = y/z;
float m = pow(10,y);
z = 237+t2;


Gruß Troff

Ich will auch eine feuchtegesteuerte Belüftung für meinen Keller bauen.

Mir fehlt hier allerdings noch einen min. Außentemperatur (=> Frostschutz) beim Lüften und eine Hysterese beim Ein- und Ausschalten.

Wenn die Grundschaltung läuft werde ich die Funktion zum Ein- und Ausschalten des Lüfters entsprechend erweitern.

Auf jeden Fall erspart mir die Vorarbeit von apex viel Arbeit.

(Die wichtigsten Tasten beim Programmieren sind nunmal <STRG>-C und <STRG>-V)

Gruß Troff
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.07.2014, 19:32 (Dieser Beitrag wurde zuletzt bearbeitet: 24.07.2014 19:33 von apex.)
Beitrag #7
RE: Luftfeuchtigkeitsregulierung mit Arduino
Hey Troff,

danke für die Info. Hier habe ich es bereits korrigiert.
Es freut mich zu lesen, dass mein Programm von anderen genutzt wird und vor allem, dass es von anderen auf Fehler kontrolliert wird.
Eine Hysterese hatte ich mir ursprünglich auch überlegt es läuft bei mir aber ganz gut so ohne ständig umzuschalten (fast immer an).
Wenn dein Programm läuft würde es mich freuen, wenn du es veröffentlichen würdest.

Grüße
apex

my code may not be good looking
but I am satisfied
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.07.2014, 20:32
Beitrag #8
RE: Luftfeuchtigkeitsregulierung mit Arduino
Hallo apex,

möglicherweise ist die Zeitverzögerung in der Regelstrecke auch so groß, dass keine Hysterese notwendig ist.

Bis ich fertig bin, kann es aber noch etwas dauern.

Wahrscheinlich werde ich erst im September anfangen.

Gruß Jens
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Arduino Neuling: Zugeklappten Laptop mit Arduino aufwecken + Kiste aufklappen? Ikearegal 2 2.529 02.02.2014 07:59
Letzter Beitrag: Ikearegal

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste