Hallo zusammen
Ich bin neu hier im Forum und habe erste Schritte mit den uno gemacht. Jetzt habe ih aber ein Problem bei dem ich nicht weiter komme. Die Praxisbeispiele im Netz helfen mir leider nicht (weil sie nicht funktionieren).
Das ist mein Problem:
Ich möchte in einem Wasserbecken den Wassstand über einen Pegelmesser realisieren. Die üblichen "Kupferdrähte" funktionieren auf dauer nicht da sie sich mit der Zeit auflösen. Daher habe ich mich für die kapazitive Messung entschieden. Bei einem bestimmten Messwert soll die Wasserpumpe (Relaiskarte steuert 230 Pumpe) eingeschaltet und bei einem anderen wieder ausgeschaltet werden. Hier mein Code:
genau das ist mein Problem
Ich haben einen einfachen sketch für die steuerung der Relaisplatine verwendet. mit delay schaltet der die pumpe alle x Sekunden ein und aus.
Wenn ich den sketch um die Messwerte und um digtialwrite erweitere schaltet die Platine nicht mehr.
Der TO hat digitalWrite(13, HIGH); bzw digitalWrite(13, LOW); in seinem Sketch und der funktioniert seiner Meinung nicht.
Wie vorgeschlagen sollte er das Blink-Beispiel der IDE auf den Arduino laden und kontrollieren ob das LED L blinkt.
@maik0815
Mach mal probeweise das delay() länger zB 2000. So siehst Du wenn die LED angeht und gleich beim nächsten Durchlauf aus.
Du solltest eine Hysterese programmieren. zB
s > 350 && s <= 500) trocken; LED aus
s < 250 naß, LED ein
So hast Du kein sschnelles Ein-Ausschalten wenn der Meßwert um den Grenzwert liegt.
Es handelt sich bei dem Gesamtprojekt um ein Aquaponik-System. Ich will im Beet mit den Maßen 80cm x 40 cm und einer Höhe von 10 cm das Wasser über die Pumpe einlaufen lassen und wenn die Höhe des Überlaufs erreicht ist wieder ausschalten.
Mein Ansporn war die Messung der relaen Füllstände (um eventuelles "verdrecken" der Pumpe zu berücksichtigen).
Aktuell schaltet das Relais ein, wartet mittels delay 2 Minuten und geht wieder aus. warten 60 Minuten und geht wieder für 2 Minuten an. Es funktioniert also.
Aber warum verdammt, geht es nciht mit dem Messfühler
Warum nimmst du nicht ganze einfach einen Pegelschalter? diese können minimale wasserstände erkennen. also die 8 cm die du hast auf jedefall. (sind auch einstellbar) diese gibt es Kunstoff oder Edelstahl.
Dort programmierst du den high Eingang der eine Zeitverögerung drinne hat z.b 1 min. Liegt das signal 1 min an soll er die Pumpe einschalten.
nun den Low eingang der z.b nach 10sec den ausgang wieder abschaltet. Ist das einfachste was du machen kannst und das auch noch funktioniert da die pegelschalter mit einem Readkontakt arbeiten, also nichts mechanisches.
Ich frage so auch meinen Pumpensumpf im Keller ab wenn high dann Pumpe ein und wenn low dann eine Minute nachlauf der Pumpe, da der pegelschalter nicht bis zum Boden reicht. Fertig mit dem ganzen.
Die Teile bekommst du schon für 2 euro beim Chinesen.*gg
Auch ich sehe besser die Überwachung mittels Schwimmsschalter zu realisieren. Wenn Du dann anzeigen willst wieviel Wasser da ist dann kannst Du eine zusätzlichen Pegelmessung machen.
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.
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.
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.