kapazitiver Wasserstandsmesser

Hallo zusammen Kann mir eventuell jemand helfen, ich habe jetzt den Ultraschallsensor verbaut, leider bleibt das Problem bestehen. Die Sensorwerte werden zur Steuerung der Relaiskarte nicht erkannt. Ein einfaches Skript für die Relaiskarte habe ich getestet, das funktioniert. Es soll ja der wasserstand in einem Tank geregelt werden. Ist er leer, zeit der Sensor 9cm an, ist der voll sind es 3 cm. Hier mein script:

int trigger = 7;
int echo = 6;
long dauer = 0;
long entfernung = 0;
const int wasserpumpe = 8;       
void setup()
{
 Serial.begin (9600);
 pinMode(trigger, OUTPUT);
 pinMode(echo, INPUT);
 pinMode(wasserpumpe, OUTPUT);
}
void loop()
{
 digitalWrite(trigger, LOW);
 delay(5);
 digitalWrite(trigger, HIGH);
 delay(10);
 digitalWrite(trigger, LOW);
 dauer = pulseIn(echo, HIGH);
 entfernung = (dauer / 2) * 0.03432;
 if (entfernung >= 12 || entfernung <= 0)
 {
   Serial.println("Kein Messwert");
 }
 else
 {
   Serial.print(entfernung);
   Serial.println(" cm");
 }
 //Es wird eine weitere IF-Bedingung für den Sensor erstellt:
if(entfernung < 9){
digitalWrite(wasserpumpe, HIGH);
}
else if (entfernung > 10){
digitalWrite(wasserpumpe, LOW);
}
// Bedingung2
if(entfernung < 3){
digitalWrite(wasserpumpe, LOW);
}
else if (entfernung >3){
digitalWrite(wasserpumpe, HIGH);
} 
 delay(1000);
}

Setze Deinen Code bitte in Codetags (-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *). Das kannst Du auch noch nachträglich ändern.

Entferne bitte vorher die unnötigen Leerzeilen und formatiere den Sketch ordentlich. + T in der IDE hilft Dir dabei.

Gruß Tommy

hab ich, so ok ? sorry

Danke. Deinen Bedingungen sehen komisch aus. Warum einmal mit < / > 9 und dann nochmal das Gleiche mit 3? Wo soll da der Sinn sein?

Gruß Tommy

Hallo
na ich versuche die beiden Grenzwerte einzubeziehen. und das <> soll das schnelle schalten der Relais beim erreichen der Grenze verhindern.

Dann male Dir mal von 0 - 12 Vcm auf, was bei jeder SpannungEntfernung passiert.

Gruß Tommy

Spannung

Das mit der Spannung verstehe ich nicht. Es passiert genau das was soll. Am seriellen Monitor kann ich die Entfernung in cm ablesen. Ist der Behälter leer, sind es 9 cm, ist er voll sind es 3 cm. Jetzt soll das Relais halt die pumpe zuschalten wenn 9 cm, also leer erreicht ist und abschalten wenn der Überlauf aktiv wird und 3cm erreicht sind.

Ok, Schreibfehler. Ich meinte Entfernung von 0 bis 12 cm.

Gruß Tommy

das ist leicht, es passiert nix :confused:

Bist Du so begriffsstutzig oder tust Du nur so?

Schreib auf, welche Deiner 4 Bedingungen wie erfüllt/nicht erfüllt ist und was deshalb bei Deiner Wasserpumpe für ein Signal geschaltet wird.

Immer für alle Bedingungen in einem Loopdurchlauf, dann die nächste Entfernung.

Gruß Tommy

beim vorgänger script ohne hysterese klickte das Relais immer um den Schwellenwert. Also wenn voll da immer an und aus wenn der wasserstand um die 3cm schwankte. das Gleiche bei leer. ich schaffe es nicht einen "vollen" Zyklus zu programmieren.

Weil Du Dir nicht verdeutlichst, was Dein Sketch macht.

Gruß Tommy

Das mag sein, deshalb frage ich ja hier nach, weil ich es nicht verstehe.

Und warum ignorierst Du meine Vorschläge?

Gruß Tommy

Das tue ich nicht. Das Script macht wie schon geschrieben nichts durchgängiges. Dann erklär mir doch bitte anhand des scripts wo das Problem liegt.

ok, ich bin raus.
Viel Spaß noch.

Gruß Tommy

danke, trotzdem

Hi

Dann will ich Mal mein Glück probieren: Wieso hast Du Deine IFs so gemacht, wie Du Die gemacht hast?

Ja, auf diese ernst gemeinte Frage möchte ich eine ernst gemeinte Antwort - zu allen IFs.

MfG

Na weil ich keine Ahnung habe und auf Seite 1 zu meiner Frage steht, benutze eine hysterese. Dann hab ich Google benutzt und hier im Forum diese Variante gefunden.