Aquarium nachfüllautomatik

Hi hi zusammen…
Wie würdet ihr am besten eine nachfüllautomatik realisieren?
Ein Board, 2 Becken…
Hab 2 Schlauchpumpen 12v.
welchen arduino und was sonst?
Braucht man zwingend ein motorshield

Welche Sensoren, welche Nachfüllmengen, was ist sonst noch geplant, damit da keine Salamitentwicklung draus wird.

Gruß Tommy

kkz89:
Wie würdet ihr am besten eine nachfüllautomatik realisieren?

Füllstand im „Zielbecken“ messen und - wenn der zu niedrig ist - nachfüllen.

Braucht man zwingend ein motorshield

Kommt darauf an :wink:

Gruß

Gregor

Ein Anfang dazu findest du in diesem Thread.

kkz89:
Braucht man zwingend ein motorshield

nein

Tommy56:
Welche Sensoren, welche Nachfüllmengen, was ist sonst noch geplant, damit da keine Salamitentwicklung draus wird.

Gruß Tommy

Hab an so schwimmschalter gedacht.
Geht immer drum das verdunstet Wasser aufzufüllen.. Genaue Menge kann ich gar nicht sagen..
Sonst ist nichts geplant.
Nur 2 Becken befüllen.
Hab schon so 12v Schlauchpumpen.

Eine Idee wäre es 2 Sensoren. (maybe 2 Drähte jeweils in ein kunstoffteil eingelassen)
Einen unten einen oben.
Wenn unten kein Kontakt dann Pumpe an.
Wenn oben Kontakt Pumpe aus.
Oder aber nen Ultraschallsensor der mir ja die Distanz zurück geben kann

kkz89:
Eine Idee wäre es 2 Sensoren. (maybe 2 Drähte jeweils in ein kunstoffteil eingelassen)
Einen unten einen oben.
Wenn unten kein Kontakt dann Pumpe an.
Wenn oben Kontakt Pumpe aus.
Oder aber nen Ultraschallsensor der mir ja die Distanz zurück geben kann

Wenn es mit einfachen Drähten funktionieren soll, dürfen die nicht isoliert sein und müssen aus V2A oder V4A sein.
Und du brauchst 3 Drähte als Sensoren.

Ultraschall könnte funktionieren. Wie groß ist der Tank ?

den oberen Sensor brauchst du nicht. Kann man über die Laufzeit der Nachfüllpumpe regeln.

Hat nicht viel.. Glaube sind Maße 40x25x20 (BxLxH) ist vom Kumpel..

Er möchte oben halt 1,5cm wasserabstand haben..

Ja Laufzeit hab ich auch überlegt... Aber die Genauigkeit lang.. Muss mal gucken was bei der Pumpe an Durchsatz ist

Ich vermute mal, dass das Aquarium nicht leer werden wird - das wäre ungünstig für die Fische.
Also sollte nam einen Schwimmerschalter oben haben, der die Pumpe bei unterschreiten des Füllstandes anschaltet und bei Erreichen der oberen Grenze ausschaltet.

Da braucht man eigentlich nicht mal einen Arduino dafür, höchstens einen Inverter.

Gruß Tommy

Hey.
Ja aber dann würde sie immer an aus an aus gehen..
Hab so nen schwimmschalter hier. Der schaltpunkt ist ziemlich klein.
Mit gewissen nach lauf wäre das dann besser.
Aber davon abgesehen, sehen die schwimmschalter auch nicht so toll aus und sich auch recht groß für son kleines Becken. Deswegen die Idee mit den v2a Drähten.
Da kann ich ein kleines Teil drucken wo die drin sitzen..
Warum braucht man da 3

Ob die Fische das mögen?

Gruß Tommy

Was genau meinst du?
Und frische sind da auch eh nicht drin. Nur Pflanzen..

Kann man nicht iwie mit 2 oder 3 Drähten sich ausgeben lassen ob Kontakt ist? So ne Art Widerstands Messung oder so?

Das geht mit 2 Drähten, Pullup empirisch ermitteln und auf Analogeingang. Dann empirisch ermittelte Pumpenlaufzeit abwarten und fertig. Somit hast du automatisch eine Hysterese drin, damit die Pumpe nicht dauernd an und aus geht. Lauft bei mir so schon 1,5 Jahre, aber nur anders rum. Wasser kommt an die Edelstahldrähte, Pumpe schaltet 15 Minuten ein und leert dei Grube.

kkz89:
...
Warum braucht man da 3

Das hängt dann von deiner vorhandenen Logik ab.
Einer ist Bezugspotential (GND), der zweite prüft ob der Tank voll ist und schaltet bei Bedarf die Pumpe ein.
Und ein dritter, wenn erforderlich, schaltet die Pumpe wieder aus. Ein vierter Kontakt ist oberhalb des zweiten montiert und kommt zum Tragen, wenn die Pumpe ausfällt und nicht mehr pumpt.

Natürlich arbeitet das nur bei entsprechend vorhandener und richtig funktionierender Logik. Ich verwende diese Technik in meinem Drainageschacht schon etliche Jahre ohne Probleme.

Muss nur zur Sicherheit diese Kontakte alle 2 Jahre etwas reinigen, da es unsauberes Drainagewasser ist.

Ob es nach der Beschreibung von EIEspanol bei dir funktioniert, musst du prüfen.
So hat jeder seine eigenen Techniken. :wink:

Also ich hab mir sowas mir einem Ultraschallsensor gebaut... verdunstet zu viel Wasser aus dem Becken, wird automatisch nachgefüllt, bis die maximale von mir definierte Füllhöhe erreicht ist...

so.
Läuft soweit erstmal.
Allerdings hätte ich gern, dass wenn unten Kontakt bekommt, er nach X sekunden aufhört.
Klar Delay ginge, aber dann achtet er ja nicht auf den eingang oben.

Wie setz ich das um?

const int Unten1 = 2;
const int Oben1 = 3;
const int Pumpe1 = 4;
const int Unten2 = 5;
const int Oben2 = 6;
const int Pumpe2 = 7;


int Pumpe1State = 0;
int Unten1State = 0;
int Oben1State = 0;
int Unten2State = 0;
int Oben2State = 0;

unsigned long off_time1;
unsigned long off_time2;
void setup() {

  pinMode(Pumpe1, OUTPUT);
  pinMode(Unten1, INPUT_PULLUP);
  pinMode(Oben1, INPUT_PULLUP);
  digitalWrite(Pumpe1, LOW);

  pinMode(Pumpe2, OUTPUT);
  pinMode(Unten2, INPUT);
  pinMode(Oben2, INPUT);
  digitalWrite(Pumpe2, LOW);
  Serial.begin(9600);
}
void loop()
{
  Pumpe1State = digitalRead(Pumpe1);
  Unten1State = digitalRead(Unten1);
  Oben1State = digitalRead(Oben1);
  Unten2State = digitalRead(Unten1);
  Oben2State = digitalRead(Oben1);

  delay(50);
  if (Unten1State == true && Oben1State == true)
  {
    digitalWrite(Pumpe1, HIGH);
    off_time1 = millis() + 5000;

  }
  if (Unten1State == false && Oben1State == false)
  {
    digitalWrite(Pumpe1, LOW);
  }



  if (Unten1State == true && Oben1State == false)
  {
    digitalWrite(Pumpe1, LOW);
  }

  if (Unten2State == true && Oben2State == true)
  {
    digitalWrite(Pumpe2, HIGH);
    off_time2 = millis() + 5000;
    //delay(2000);

  }
  if (Unten2State == false && Oben2State == false)
  {
    digitalWrite(Pumpe2, LOW);
  }



  if (Unten2State == true && Oben2State == false)
  {
    digitalWrite(Pumpe2, LOW);
  }
  Serial.print("Pumpe:");
  Serial.println(Pumpe1State);

  Serial.print("Unten:");
  Serial.println(Unten1State);

  Serial.print("Oben:");
  Serial.println(Oben1State);
  Serial.println(millis());
  delay(200);
}

kkz89:
so.
Läuft soweit erstmal.
Allerdings hätte ich gern, dass wenn unten Kontakt bekommt, er nach X sekunden aufhört.
Klar Delay ginge, aber dann achtet er ja nicht auf den eingang oben.

Wie setz ich das um?

Das verstehe ich nicht.
Was soll aufhören, wenn unten Kontakt ist ?

Eine Pumpe sollte nur starten, wenn unten und oben Kontakt ist.

Sorry, aber dein Sketch ist sehr merkwürdig.

Du verwendest die Funktion millis() um den Inhalt in off_time1 und off_time2 zu kopieren, nutzt diese Variablen aber weiter

Wozu machst du das ?