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:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Lüftersteuerung ala Arduino
17.02.2020, 10:52 (Dieser Beitrag wurde zuletzt bearbeitet: 17.02.2020 10:54 von Mango94.)
Beitrag #1
Lüftersteuerung ala Arduino
Hi.
Seit einigen Tagen hänge ich schon hinter dem Bildschirm und durchforste Google und andere Suchmaschinen nach einer Abluft Steuerung.

Mein vorhaben hört sich erstmal simpel an, jedoch habe ich Probleme, die verschiedenen Sketches richtig zu kombinieren.

Komponenten:
1x Arduino Uno
1x DHT 22 Sensor
1x LCD 1602 (kaufe mir eventuell die andere Version, wo man nur 4 Kabel anstecken muss, jedoch für den Anfang sollte das aktuelle reichen)
1x Relaiskarte
3x Taster

An die Relaiskarte an den Wechsler kommt nur ein Stufentraffo der entweder 150V oder 100V an den Lüfter weitergibt.

Am LCD hätte ich gerne die aktuellen Daten oben. Wenn man Taster 1 Drückt, dann soll man in auf die nächste Seite kommen, um die Werte der Raumluftfeuchte und der Temperatur ändern zu können (z.B.: Ab 25°C oder 70% RFL Stufe 2(150V). Geändert werden soll dies mit Taster 2 (+)und 3(-), dann Taster 1 zum Speichern für 3 sek drücken, danach wieder zurück auf Seite 1 zu den Aktuellen Anzeigen.

Aktuell hab ich es leider nur bis zur Anzeige der Daten geschafft.
Ich habe zwar einige Steuerungen gefunden, jedoch fehlen mir dazu einige Teile, oder es wurden grundlegend andere Bauteile verwendet.
Hier ist mein zusammengestellter Sketch:

Code:
// include the library code:
#include <LiquidCrystal.h>
#include "DHT.h"

// set the DHT Pin
#define DHTPIN 7

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
int PINOUT = 13;

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  dht.begin();
  
  // Print a message to the LCD.
  lcd.print("Temp:  Humidity:");
  pinMode(PINOUT, OUTPUT);
}

void loop() {
  delay(500);
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
  lcd.setCursor(0, 1);
  // read humidity
  float h = dht.readHumidity();
  //read temperature in Fahrenheit
  float f = dht.readTemperature();

  if (isnan(h) || isnan(f)) {
    lcd.print("ERROR");
    return;

  }

  lcd.print(f);
  lcd.setCursor(7,1);
  lcd.print(h);  
}


Hab schon einige Tutorials auf Youtube auch durch, jedoch ohne das richtige gefunden zu haben.
Hat hier vielleicht jemand einen Tipp für mich, wie ich hier weiterkomme - ist es überhaupt möglich??

Würde mich riesig freuen. LG
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.02.2020, 11:04
Beitrag #2
RE: Lüftersteuerung ala Arduino
(17.02.2020 10:52)Mango94 schrieb:  Hat hier vielleicht jemand einen Tipp für mich, wie ich hier weiterkomme?

Ich würde Dir empfehlen gleich ein I2C-Backpack für das LCD aufzulöten, das erspart Dir Arbeit.

Du verfügst über die nötigen Fachkenntnisse um mit den Spannungen >= 100V zu arbeiten? Dein Relais ist für diese Spannungen ausgelegt? Nicht nur der Aufdruck, auch die Ausfräsungen in der Leiterplatte?

Baue Dein Projekt schrittweise auf.
Nächster Schritt könnte die 2-Punkt-Regelung sein:
Pseudocode:
Code:
if (istTemp >= sollTemp) {
  // Relais ansteuern
}
else if (istTemp < solltemp - Hysterese) {
  // Relais abschalten
}
Dabei sollte Hysterese ca. 2...5 °C sein, damit das Relais nahe der Solltemperatur nicht flattert.

Dann Taster einlesen und entprellen (Beispiele in der IDE), Sollwert verändern (Taster hoch, Taster runter, Taster Speichern).
Wenn der Sollwert auch über den Neustart erhalten bleiben soll, musst Du Dich noch in EEPROM einlesen.

Als Basis ist es wichtig, die Grundlagen zu lernen und nicht einfach fremde Sketche zu kopieren, ohne sie zu verstehen.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.02.2020, 11:35
Beitrag #3
RE: Lüftersteuerung ala Arduino
Danke für den Tipp.

Ja, die Fachkenntnisse hab ich als Mechatroniker, und die Oktokoppler Relais sind ja eh bis 230V ausgelegt.
Aktuell hab ich das alles über einen Raspberry gesteuert. Ich will das aber alles offline kompakt verbauen, somit muss ich zum Arduino wechseln, und interessieren tuts mich auch Big Grin

Ja, die Daten sollte er schon behalten, auch wenn der Controller mal vom Strom genommen wird.

Ist mir auch klar, dass ich mit Copy and Paste nicht weit komme. Ich versuche natürlich die Sketches zu verstehen.


Nun ist mir aber noch nicht wirklich klar, wie ich mir die Daten vom DHT Sensor hole. istTemp hab ich ja noch nicht definiert... oder ist eben das der Befehl, um sich vom DHT Sensor den aktuellen Wert zu holen?

Danke für den Denkanstoß, jetzt weiß ich wieder etwas, wonach ich suchen sollCool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.02.2020, 11:47 (Dieser Beitrag wurde zuletzt bearbeitet: 17.02.2020 11:49 von Tommy56.)
Beitrag #4
RE: Lüftersteuerung ala Arduino
Nochmal zu dem Relaismodul: Wenn da keine Ausfräsungen um die Kontaktanschlüsse sind, ist die Spannungsfestigkeit nicht sicher gestellt. Da hilft Dir dann auch der Optokoppler nicht mehr.

Grundlegend: C++ hat keine Befehle, sondern Funktionen (in Klassen heißen die Methoden) und Operatoren. Bei den Suchmaschinen helfen die richtigen Schlagworte oft wunder Wink

Du holst doch schon die Ist-Temperatur:
Code:
//read temperature in Fahrenheit
  float f = dht.readTemperature();
// in °C
  float istTemp = dht.readTemperature(true);
In °C wäre schon günstiger. Schau mal in die DHT.h/ DHT.cpp (da sind die Kommentare zu den Parametern).

Gruß Tommy

Edit: Der Ansatz ist auf diese Lib bezogen.

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.02.2020, 11:53 (Dieser Beitrag wurde zuletzt bearbeitet: 17.02.2020 17:29 von Mango94.)
Beitrag #5
RE: Lüftersteuerung ala Arduino
(17.02.2020 11:47)Tommy56 schrieb:  Nochmal zu dem Relaismodul: Wenn da keine Ausfräsungen um die Kontaktanschlüsse sind, ist die Spannungsfestigkeit nicht sicher gestellt. Da hilft Dir dann auch der Optokoppler nicht mehr.

Grundlegend: C++ hat keine Befehle, sondern Funktionen (in Klassen heißen die Methoden) und Operatoren. Bei den Suchmaschinen helfen die richtigen Schlagworte oft wunder Wink

Du holst doch schon die Ist-Temperatur:
Code:
//read temperature in Fahrenheit
  float f = dht.readTemperature();
// in °C
  float istTemp = dht.readTemperature(true);
In °C wäre schon günstiger. Schau mal in die DHT.h/ DHT.cpp (da sind die Kommentare zu den Parametern).

Gruß Tommy

Danke. dht.readTemperature() ist für °C - hab ich gestern schon mal nachgesehen... Und dass das C++ ist, hab ich auch nicht wirklich gewusst. Big Grin
Dann schmeiß ich mich wieder in die Suchmaschine.


Edit:
Nach einigen versuchen bin ich noch nicht wirklich weitergekommen. Bei mir hagelt es Fehlermeldungen, wahrscheinlich weil irgendwas im Ablauf absolut nicht passt. xD

Hier mein aktueller Sketch. Ich würde hier nur gerne zusätzlich einen Button schalten, der ein Licht angehen lässt, um das ganze zu verstehen, jedoch bekomme ich dauernd einen Error "compiling for board Arduino Uno" - Fehler


Code:
// include the library code:
#include <LiquidCrystal.h>
#include "DHT.h"

// set the DHT Pin
#define DHTPIN 7

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
const int PINOUT = 7;
const int buttonPin1 = 8;
const int buttonPin2 = 9;
const int buttonPin3= 10;

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  dht.begin();
  
  // Print a message to the LCD.
  lcd.print("Temp:  Humidity:");
  pinMode(PINOUT, OUTPUT);
  pinMode(buttonPin1, INPUT);
  pinMode(buttonPin2, INPUT);
  pinMode(buttonPin3, INPUT);
  pinMode(13, OUTPUT);
}
void loop() {
  delay(500);
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
  lcd.setCursor(0, 1);
  // read humidity
  float h = dht.readHumidity();
  //read temperature in Fahrenheit
  float f = dht.readTemperature();

  if (isnan(h) || isnan(f)) {
    lcd.print("ERROR");
    return;
  }
   if (buttonPin1 = HIGH){
    digitalWrite(13, HIGH);
    delay(500);
    } else {
    digitalWrite(13, LOW);
    delay(500);
    return;
  }

  lcd.print(f);
  lcd.setCursor(7,1);
  lcd.print(h);  
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.02.2020, 22:47 (Dieser Beitrag wurde zuletzt bearbeitet: 17.02.2020 23:14 von senseman.)
Beitrag #6
RE: Lüftersteuerung ala Arduino
Code:
}
  lcd.print(f);
  lcd.setCursor(7,1);
  lcd.print(h);  
}
Sollte wohl ehr

Code:
}
}

  lcd.print(f);
  lcd.setCursor(7,1);
  lcd.print(h);  
}
da fehlt eine geschwungene Klammer.

dann must du dir das lcd.print (h); nochmal anschauen dort kommt dann der nächste Fehler

Ich würde es z.b. so machen
Code:
float h  = dht.readHumidity();                //  Sensor DHT1 Feuchtigkeit auslesen  
  float t = dht.readTemperature();              //  Sensor DHT1 Temperatur auslesen  
  if (isnan(h) || isnan(t));                      //      Sensor Fehler 1 abfragen
  {
    lcd.setCursor(0, 0);                            //      Cursor setzen auf Position 0,0
    lcd.print("ERROR SENSOR 1!");                   //      Sensor Fehler 1 ausgeben
  }
  lcd.setCursor(0, 0);  
  lcd.print(h);  
  lcd.setCursor(0, 1);  
  lcd.print(t);
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.02.2020, 23:17 (Dieser Beitrag wurde zuletzt bearbeitet: 17.02.2020 23:18 von Tommy56.)
Beitrag #7
RE: Lüftersteuerung ala Arduino
Das ist eben das Problem, wernn der Code nicht vernünftig eingerückt ist.
Dann findet man die Fehler schwieriger.

Mit <Strg>+T in der IDE kann man sich helfen lassen.
Wenn das dann immer noch blöd aussieht, fehlen Klammern oder sind falsch gesetzt.

Wenn man den Cursor aud eine Klammer setzt, beleuchtet die IDE das Gegenstück. Da kann man schauen, ob es passt.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.02.2020, 08:23 (Dieser Beitrag wurde zuletzt bearbeitet: 18.02.2020 10:11 von Mango94.)
Beitrag #8
RE: Lüftersteuerung ala Arduino
Danke für die vielen Tipps. Ihr habt mir schon sehr weiter geholfen.
Habe jetzt schon Taster eingefügt, und schreibe gerade das Menü. Mal sehen, was dabei rauskommt. Gefällt mir definitiv, wie das alles funktioniert =D

Edit:
Nun hab ich wieder ein neues Problem:
Das Relais schaltet schon bei der richtigen RFL, jedoch bei der Temperatur kann ich eingeben was ich will, tut sich da nichts. Hat zufällig jemand eine Idee?

Code:
// include the library code:
#include <LiquidCrystal.h>
#include "DHT.h"

// set the DHT Pin
#define DHTPIN 7

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
const int PINOUT = 7;
const int buttonPin1 = 8;
const int buttonPin2 = 9;
const int buttonPin3 = 10;
const int Relais1 = 13;
const int MaxTemp = 20.00;
const int MaxRFL = 70.00;

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  dht.begin();

  // Print a message to the LCD.
  lcd.setCursor(6, 0);
  lcd.print("^C");
  lcd.setCursor(6, 1);
  lcd.print("%RFL");
  lcd.setCursor(9, 0);
  lcd.print("Soll:");
  lcd.setCursor(14, 0);
  lcd.print(MaxTemp);
  lcd.setCursor(14, 1);
  lcd.print(MaxRFL);

  pinMode(PINOUT, OUTPUT);
  pinMode(buttonPin1, INPUT);
  pinMode(buttonPin2, INPUT);
  pinMode(buttonPin3, INPUT);
  pinMode(Relais1, OUTPUT);
}
void loop() {
  delay(500);
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
  lcd.setCursor(0, 1);
  // read humidity
  float h = dht.readHumidity();
  //read temperature in Fahrenheit
  float f = dht.readTemperature();
  if (isnan(h) || isnan(f)) {
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
    lcd.setCursor(0, 0);                            //      Cursor setzen auf Position 0,0
    lcd.print("ERROR SENSOR 1!");                   //      Sensor Fehler 1 ausgeben

  }
  lcd.setCursor(0, 0);
  lcd.print(f);
  lcd.setCursor(0, 1);
  lcd.print(h);

  if (dht.readHumidity() > (MaxRFL)) {
    digitalWrite(Relais1, HIGH);
    delay(500);
  } else {
    digitalWrite(Relais1, LOW);
    delay(500);
    return;
  }
  if (dht.readTemperature() > (MaxTemp)) {
    digitalWrite(Relais1, HIGH);
    delay(500);
  } else {
    digitalWrite(Relais1, LOW);
    delay(500);
    return;
  }
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Wert von einem Arduino zu einem zweiten Arduino senden Thorsten_S 9 2.322 14.10.2019 14:48
Letzter Beitrag: Thorsten_S
  Lüftersteuerung mit dem gewissen Extra (Haken?) ank0m 4 800 06.09.2019 16:43
Letzter Beitrag: ank0m
  Firmata (Daten senden an den Arduino und empfangen vom Arduino) comfan 6 5.283 29.04.2017 14:29
Letzter Beitrag: hotsystems
  Arduino Ethernet mit USB 2 Serial Converter/Welche Einstellungen im Arduino-Sketch lociluke 1 4.491 05.05.2015 13:40
Letzter Beitrag: Bitklopfer
  Arduino Mega-Projekt mit EEPROM auf Arduino Due portieren Foto-Ralf 17 11.884 16.03.2015 12:06
Letzter Beitrag: Foto-Ralf

Gehe zu:


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