DHT 11 Sensorwert verarbeiten

Hallo, ich möchte analoges eingangssignal eines Potis mit dem Luftfeuchtigkeitswert des DHT 11 abgleichen ( steuerung für eine Getreidetrocknung). Was muss ich in Zeile 16 " if (poti > ???? ) eintragen, um den Potiwert (0-100) mit der gemessenden Luftfeuchtigkeit abzugleichen? Ich Hoffe mir kann jemand zeitnahe helfen. Vielen Dank schonmal im vorraus. PS. Ich habe auf die schnelle leider keinen analogen Luftfeuchtigkeitssensor gefunden. Damit wäre es für mich einfacher gewesen.

tippe oder füge den Code hier ein

void setup() {
Serial.begin(9600);
Serial.println("DHT11 Testprogramm");
dht.begin();
pinMode(pinPoti, INPUT);
pinMode (13,OUTPUT);

}
void loop() {

int messWert=analogRead(pinPoti);
Serial.println("messWert");
int poti=map(messWert, 0, 1023, 0, 100);
Serial.println(poti);

if (poti> ???? )

{

digitalWrite(pinled,HIGH);
}

else
{

digitalWrite(pinled,LOW);
}
// Wait a few seconds between measurements.
delay(1000); // Hier definieren wir die Verweilzeit die gewartet wird
// bis der Sensor wieder ausgelesen wird. Da der DHT11
// auch ca. 2 Sekunden hat um seine Werte zuaktualisieren
// macht es keinen sinn ihn schneller auszulesen!

float h = dht.readHumidity(); // Lesen der Luftfeuchtigkeit und speichern in die Variable h
float t = dht.readTemperature(); // Lesen der Temperatur in °C und speichern in die Variable t

/( Überprüfen ob alles richtig Ausgelesen wurde )/
if (isnan(h) || isnan(t)) {
Serial.println("Fehler beim auslesen des Sensors!");
return;
}

// Nun senden wir die gemessenen Werte an den PC dise werden wir im Seriellem Monitor sehen
Serial.print("Luftfeuchtigkeit: ");
Serial.print(h); // Ausgeben der Luftfeuchtigkeit
Serial.print("%\t"); // Tabulator
Serial.print("Temperatur: ");
Serial.print(t); // Ausgeben der Temperatur
Serial.write('°'); // Schreiben des ° Zeichen
Serial.println("C");
}

Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.

mfg ein Moderator.

Gehe mall in die IDE uf bearbeiten, für Forum kopieren hier mit STRG + V einfügen :blush:

Abgleichen oder vergleichen?

Im Prinzip so…

  float h = 37.5;               // luftfeuchte
  unsigned int poti = 45;       // Potiwert
 
  unsigned int vergleichsWert = static_cast<unsigned int>(h + 0.5); // float wert ggf. aufrunden und zu unsigned int casten
 
  if (poti > vergleichsWert) {
    Serial.println(F("Potiwert ist größer als Luftfeuchtewert"));
  } else {
    Serial.println(F("Potiwert ist kleiner oder gleich Luftfeuchtewert"));
  }

Wäre nur gut, wenn die Luftfeuchte vom DHT vor dem Potiwert bzw. vor dem ersten Vergleich ermittelt wird.

Ein Vergleich von float und int per > geht natürlich auch
(in float, also Vorsicht bei ==).

Das Ergebnis (true/false) kann auch gleich weiterverwendet werden. Z.B. so:

void setup() {
   pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  uint16_t vergl = analogRead(A0)*100UL/1024;  // 0 .. 99 ( incl. )
  float messwert = analogRead(A1)/10.0 ; // 0 .. 102.3  ( z. Test )
  digitalWrite(LED_BUILTIN, messwert > vergl);
}

Vielen Dank schonmal,
der Sketch soll letzten endes die luftfeuchtigkeitsgehalt ermittelt und dann ein relais schalten (brenner der trocknung deaktivieren) , wenn der ermittelte Wert kleiner ist, als die am poti eingestellten z.b. 65%.

Ich würde eine Hysterese vorsehen, mindestens wenn der Feuchtigkeitswert auch mal zappeln kann: ( Trocknung ein > 65% / Trocknung aus < 60%, dazwischen unverändert lassen )

Das klingt plausible :+1:t2:könnte mir jemand einen sketch anhand der beschreibung schreiben? ich bin da leider noch nicht so sicher und morgen müsste die Trocknung wieder laufen​:grimacing:

Du kannst ja mal in der verlinkten Simulation herumspielen. Nach dem Start kannst du durch Klick auf den DHT22 die Luftfeuchte ändern und oder den Schiebepoti verstellen.
Es wurde angenommen, dass das Relais schließt, wenn der Steuerpin auf HIGH geschaltet wird.
Ob das bei Dir so ist, keine Ahnung. Das Programm ist mal so schnell zusammengeklöppelt, aber vielleicht reicht es ja als Beispielgeber...

Wenn das Relais "EIN" Schaltet geht die LED an...

Eine Displayausgabe ist auch nicht dabei... musst Du selber machen... weiß ja keiner was Du im Detail zusammen bastelst. Ansonsten könnte das im Prinzip sein, was Du haben willst.

Schön, aber worum du gebeten wurdest, ignorierst du einfach. Warum ?

Das tut mir leid, ich war nicht zuhause und konnte da nicht drauf zugreifen.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.