Automatische Wasserbefüllung

Hallo zusammen.
Ich bin neu im Forum und habe erst vor ein paar Tagen angefangen mich mit Arduino zu beschäftigen.
Jetzt bin ich soweit, dass ich die Grundprinzipien verstehe. Jetzt hab ich mein Projekt (Automatische Wasserbefüllung Kaffeevollautomat) umgesetzt und es funktioniert soweit auch alles.
Heute Morgen war dann aber eine leichte Überschwemmung (ca. ein Liter) in der Küche.
Meine Konstruktion hat also von allein geschaltet obwohl der Vollautomat aus war, er konnte also gar kein Signal ans Arduino geben.
Jetzt brauche ich eure Hilfe... Warum hat das Relais geschaltet? Und was muss ich ändern damit das nicht mehr passiert.

Bauteile:
Stromversorgung 12V - 1A
Spannungswandler 12V -5V
1Kanal Relais 5V
12V Magnetventil
Arduino UNO R3

Edit:
Sketch:

int ventilPin = 4;

int kaffeePin = A0;
int kaffeeValue;

void setup() {
pinMode(ventilPin, OUTPUT);
pinMode(kaffeePin, INPUT_PULLUP);
}

void loop() {
kaffeeValue = digitalRead(kaffeePin);

if (kaffeeValue == HIGH) {
digitalWrite(ventilPin, LOW);
delay (48000);
}
else {
digitalWrite(ventilPin, HIGH);
}
}

chrissavas:
.....Warum hat das Relais geschaltet? Und was muss ich ändern damit das nicht mehr passiert.

Weil dein unbekannter Sketch einen Fehler hat.

Was du ändern musst, können wir nicht sagen, da wir deinen Sketch nicht kennen.

Warum hat das Relais geschaltet?

Als Ursache bieten sich ein Fehler in der Schaltung und/oder ein Programmierfehler an.

Und was muss ich ändern damit das nicht mehr passiert.

  • Diagnose
  • Ursache erkennen
  • Lösung entwickeln
  • Lösung umsetzen

Wie lang ist denn die Leitung zum A0? Das ist eine schöne Antenne. Was sendet der Automat wenn zu wenig Wasser da ist?

Zu Deiner Schaltung:
5V vom DC/DC Wandler auf die DC-Hohlbuchse geht nicht. Da müssen dann mindestens 6,5V drauf. Sonst mit dem 5V Anschluss vom Wandler direkt auf 5V Anschluss auf dem Arduino.

Gruß, Jürgen

Willkommen im Forum!

Deine Schaltung bräuchte doch überhaupt keine Versorgungsspannung wenn die Maschine aus ist, kannst du das nicht irgendwie kopplen? Zum Beispiel mit einer Master/Slave Steckdose oder ähnlichem... Dann könnte die meiste Zeit und vorallem in deiner Abwesenheit nichts pasieren.

Katsumi_S:
Wie lang ist denn die Leitung zum A0? Das ist eine schöne Antenne. Was sendet der Automat wenn zu wenig Wasser da ist?

Zu Deiner Schaltung:
5V vom DC/DC Wandler auf die DC-Hohlbuchse geht nicht. Da müssen dann mindestens 6,5V drauf. Sonst mit dem 5V Anschluss vom Wandler direkt auf 5V Anschluss auf dem Arduino.

Gruß, Jürgen

Hallo Jürgen.

Die Leitung vom Automat bis zum A0 ist etwa 1 - 1,5 m lang. Es liegt alles unter der Küchenzeile.
Im Wassertank ist ein Magnetschwimmer. Der löst den Kontakt im inneren der Maschine aus und schaltet 5V und im Display erscheint Wassertankfüllen. Da habe ich zwei Leitungen angelötet und das der Maschine geführt. 1x GND u. 1x A0.
Wenn also die Maschine aus ist, dann kann A0 kein 5V Signal bekommen.

Warum kann ich keine 5V auf die Hohlbuchse geben? Meinst du den 5V Anschluss neben den analogen PIN´s da wo ich jetzt das Relais dran habe?

Mein Sketch:

int ventilPin = 4;
int kaffeePin = A0;
int kaffeeValue;

void setup() {
pinMode(ventilPin, OUTPUT);
pinMode(kaffeePin, INPUT_PULLUP);
}
void loop() {
kaffeeValue = digitalRead(kaffeePin);

if (kaffeeValue == HIGH) {
digitalWrite(ventilPin, LOW);
delay (48000);
}
else {
digitalWrite(ventilPin, HIGH);
}
}

Warum kann ich keine 5V auf die Hohlbuchse geben?

Klar, kannst du das tun!
Nur läuft dein Arduino dann mit Unterspannung.

Wenn du das willst, ok....

combie:
Klar, kannst du das tun!
Nur läuft dein Arduino dann mit Unterspannung.

Wenn du das willst, ok....

Achso. Ich dachte Arduino braucht nur 5V.
Dann sollte ich wohl einen regulierbaren Spannungswandler einsetzen. Z.b. 12V Eingang und 12V Ausgang, wobei man dann den Ausgang mittels Stellschraube runter regulieren kann.

Achso. Ich dachte Arduino braucht nur 5V.

Input Voltage (recommended) 7-12V

Doku
Den Grund siehst du im Schaltplan

chrissavas:
Achso. Ich dachte Arduino braucht nur 5V.
Dann sollte ich wohl einen regulierbaren Spannungswandler einsetzen. Z.b. 12V Eingang und 12V Ausgang, wobei man dann den Ausgang mittels Stellschraube runter regulieren kann.

Der Mikrokontroller auf der Platine braucht wirklich nur 5V und der USB/seriell Wandler auch. Aber zwischen der Hohlbuchse und den ICs ist noch ein Spannungsregler verbaut und der unterschlägt einen Teil der Spannung. Je nach Regler irgendwo zwischen 0,3 (Low-Drop) und 1,2V.

chrissavas:
Die Leitung vom Automat bis zum A0 ist etwa 1 - 1,5 m lang.

Schöne Antenne. Wenn da was in der Umgebung ein wenig kräftiger strahlt, reicht die Spannung das der Arduino ein HIGH-Signal erkennt. Vor allem weil Du dazu noch den PullUp Widerstand aktiviert hast und nach HIGH abfragst. Das macht das Teil noch empfindlicher. Mach das INPUT_PULLUP zuerst mal zu INPUT. Dann eventuell noch einen Widerstand gegen GND. Voraussetzung ist natürlich auch das der Kaffeeautomat mit sowas zurecht kommt.

Gruß, Jürgen

Vor allem weil Du dazu noch den PullUp Widerstand aktiviert hast und nach HIGH abfragst. Das macht das Teil noch empfindlicher.

Das verstehe ich nicht!

OK, der Wert des Pullup oder Pulldown ist wichtig.
Klarer Fall!

Aber ob Pullup oder Pulldown?
Ist das nicht völlig egal?
Beim ATMega328P.

Oder gar genau anders herum, wie beim ATMega32U4.

Scherheinz:
Willkommen im Forum!

Deine Schaltung bräuchte doch überhaupt keine Versorgungsspannung wenn die Maschine aus ist, kannst du das nicht irgendwie kopplen? Zum Beispiel mit einer Master/Slave Steckdose oder ähnlichem... Dann könnte die meiste Zeit und vorallem in deiner Abwesenheit nichts pasieren.

Hallo Scherheinz.
Du meinst ich sollte die 12V Hauptversorgung von der Maschine anzapfen? Also nur wenn Maschine an ist, gibt es auch Saft am Arduino usw!?

combie:
Doku
Den Grund siehst du im Schaltplan

Also brauch ich gar keinen Spannungswandler und kann direkt mit den 12V ans Arduino?

Katsumi_S:
Der Mikrokontroller auf der Platine braucht wirklich nur 5V und der USB/seriell Wandler auch. Aber zwischen der Hohlbuchse und den ICs ist noch ein Spannungsregler verbaut und der unterschlägt einen Teil der Spannung. Je nach Regler irgendwo zwischen 0,3 (Low-Drop) und 1,2V.

Schöne Antenne. Wenn da was in der Umgebung ein wenig kräftiger strahlt, reicht die Spannung das der Arduino ein HIGH-Signal erkennt. Vor allem weil Du dazu noch den PullUp Widerstand aktiviert hast und nach HIGH abfragst. Das macht das Teil noch empfindlicher. Mach das INPUT_PULLUP zuerst mal zu INPUT. Dann eventuell noch einen Widerstand gegen GND. Voraussetzung ist natürlich auch das der Kaffeeautomat mit sowas zurecht kommt.

Gruß, Jürgen

Ich werde es mal auseinander bauen und einfach auf dem Tisch liegen lassen über Nacht und mit ner Kamera aufnehmen.

chrissavas:
Ich werde es mal auseinander bauen und einfach auf dem Tisch liegen lassen über Nacht und mit ner Kamera aufnehmen.

Warum?
Nur um zu sehen, das irgendwann nen Liter Wasser über die Zeile läuft?

Bau in den Sketch nen paar serielle Ausgaben ein. Insbesondere, wenn sich der PIN-Zustand ändert.
Also sowohl für den Eingang, als auch den Ausgang.
Las das ganz normal auf'm Laptop mitloggen.
Dann hast Du nicht nur die Zustandsänderungen, sondern auch die Zeiten im SerMon und brauchst nicht nen ganzes 8 Stunden-Video durchspulen.
Dann kannst überlegen, ob irgendwo eine Neoröhre oder ein Motor, z.B. vom Kühlschrank, oder what ever, ausgelöst haben könnte.

chrissavas:
Ich werde es mal auseinander bauen und einfach auf dem Tisch liegen lassen über Nacht und mit ner Kamera aufnehmen.

Vergiss es! Es kann sein es tritt wieder auf, es kann aber auch sein das rennt jetzt 2 Wochen problemlos und einen Tag danach kannst Du morgens 5 Liter Wasser aufputzen.

Mal ganz langsam zum Mitschreiben:

pinMode(kaffeePin, INPUT_PULLUP);

Pin wird als Eingang gesetzt und der PullUp aktiviert. Soweit theoretisch ok.

   if (kaffeeValue == HIGH) {
        digitalWrite(ventilPin, LOW);
        delay (48000);
    }
    else {
        digitalWrite(ventilPin, HIGH);
    }

Und da kommt dann die Katastrophe.
1.) Wenn beide Leitungen zur Kaffeemaschine angeschlossen sind, kein Problem weil dann der Eingang auf LOW gezogen wird. Wenn eine Leitung unterbrochen wird, geht das Ventil so lange auf bis Du morgens den Strom abklemmst. Weil der Eingang dann wegen dem PullUp immer auf HIGH ist.
2.) Wenn durch irgendein Gerät das eingeschaltet wird, oder sich wie der Kühlschrank von alleine einschaltet, ein kurzer genügend großer Impuls verursacht wird, ist Deine if Bedingung ganz kurz wahr und Dein Sketch öffnet munter das Ventil und wartet gemütlich bis 48 Sekunden abgelaufen sind.
Es reicht eventuell auch ein Handy in der Nähe der Leitungen.

Deshalb:

  1. Das "PULLUP" entfernen. Wenn möglich PullDown Widerstand vorsehen.
  2. Im Sketch dann die ganze Sache noch ein wenig sicherer aufbauen. Wenn der Eingang auf HIGH geht, den Zustand in einer Variable merken. Nach z.B. 10 Sekunden nochmal prüfen. Wenn dann der Eingang immer noch auf HIGH Signal liegt Ventil öffnen. Wenn er auf LOW liegt, den Zustand Deiner Variable wieder zurücksetzen.

Gruß, Jürgen

Edit: Über das delay(48000) wollen wir mal nicht streiten. Ist zwar nicht schön, aber solange der Arduino nichts anderes machen muss kann man es dabei belassen. Gewöhne es Dir aber nicht an. Der Arduino macht in der Zeit nichts anderes als nur die Zeit totschlagen. Wenn z.B. noch auf ein anderes Signal reagiert werden muß, würde die Reaktion erst erfolgen wenn die Zeit abgelaufen ist. Du kannst Dir ja mal "BlinkWithoutDelay" in den Beispielen der IDE anschauen und die "Nachtwächtererklärung" BlinkwithoutDelay - Die Nachtwächtererklärung - Deutsch - Arduino Forum

my_xy_projekt:
Warum?
Nur um zu sehen, das irgendwann nen Liter Wasser über die Zeile läuft?

Bau in den Sketch nen paar serielle Ausgaben ein. Insbesondere, wenn sich der PIN-Zustand ändert.
Also sowohl für den Eingang, als auch den Ausgang.
Las das ganz normal auf'm Laptop mitloggen.
Dann hast Du nicht nur die Zustandsänderungen, sondern auch die Zeiten im SerMon und brauchst nicht nen ganzes 8 Stunden-Video durchspulen.
Dann kannst überlegen, ob irgendwo eine Neoröhre oder ein Motor, z.B. vom Kühlschrank, oder what ever, ausgelöst haben könnte.

Nein. Ich hätte das Magnetventil samt Wasserleitung weg gelassen und und das ganze störungsfrei auf dem Tisch liegen lassen. Und die kamera auf das relais gerichtet. Aber ja, hast recht. Den Sketch so verändern das es aufzeichnet, macht mehr Sinn. Bin noch blutiger Anfänger auf dem Gebiet, verzeiht mir...

chrissavas:
Bin noch blutiger Anfänger auf dem Gebiet, verzeiht mir...

Alles gut - ich bins auch noch...

PS: Nur drauf achten, das der Rechner nicht in den Ruhezustand geht :wink:
Monitor abschalten ist ok - mehr nicht...

chrissavas:
Also brauch ich gar keinen Spannungswandler und kann direkt mit den 12V ans Arduino?

Richtig. Die empfohlene Eingangsspannung ist 7-12 V. Den Spannungswandler kannst Du streichen.

Gruß

Gregor

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