kapazitiver Wasserstandsmesser

uwefed:
@ar182
Ich verstehe Dein Nachfragen nicht.

Weil man dann Alternativen vorschlagen kann.
Und weil die kapazitive Messung mit einen Arduino extrem unzuverlässig ist.

Das mit dem Pegelschalter finde ich auch gut, da hat man einen exakten Schaltpunkt.

Ich würde es mit zwei Edelstahlelektroden realisieren.
Eine mit GND verbunden und die Andere mit einen Analogeingang und 22 kOhm Pullup.
Zusätzlich verbindest du den Analogeingang mit einen Digitalausgang.
Mit dem ziehst du die Elektrode am Analogeingang während der Messpause auf GND.
Das verhindert die Elektrolyse, weil die Messung in weniger als einer ms durchgeführt ist.
Wenn du dann nur einmal pro Sekunde misst dürften die Elektroden ziemlich lang halten.

Gruß Aron

Hallo zusammen Danke für die vielen Antworten. das mit dem längern delay und der blinkenden LED verstehe ich nicht. Also ich verstehe was ihr mir sagen wollt, aber wenn die Relaiskarte meien pume zuverlässig im 5 Sekundentakt an und aus schaltet (wie oben geschrieben) dann funktioniert die ganze Sache doch. Lediglich die Verwendung der Messwerte als Schaltpunkt klappt nicht. Schwimmerschalter hatte ich auch am Anfang auf dem Plan aber es ist wenig Platz. Ich versuche mal ein Foto hochzuladen.

anbei 2Bilder

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