DIY Arduino Dosierpumpe

  • Also


    wnn ich die software auf das Arduino Spiele mit deinen Einstellungen dann habe ich wenn ich das datum einstellen will dort 85.85.2165 stehen. und kann keine Einstellung vornehmen


    Ich habe DIE RTC an: A2-->SCL an RTC und 10K an 5V
    A3-->SDA an RTC und 10k an 5V
    auch wenn SCL und SDA tausche gleiches Phänomen



    und ich nutze ein Mega 2560


    Mit freundlichen Grüßen
    Jens

    Mit freundlichen Grüßen


    Jens


    200l Mischbecken
    120l Artenbecken
    3 Stöckige Aufzucht Anlege für Ocellaris Mokka, LSD Mandarin und Korallen

    Einmal editiert, zuletzt von Onenation ()


  • Geht auch etwas kürzer :)
    Bzw auch eleganter bei mehreren ein/ausgängen

    Dirk

  • Ok, und wie kommst Du dann auf die Port-Nr.-Änderung auf 94 und 95?


    Hast Du die wirklich auf A2 und A3 gelötet? Meine nachskizzierte Leitung auf dem Foto seite 10 oder 11 ist leider seitenverkehrt also falsch angezeichnet.
    Kontrollier das nochmal.



    Viele Grüße,


    Volker

  • Ich mache das erst einmal auf einem steckbrett


    da leider noch nicht alle teile da sind


    auf 94 und 95 bin ich gekommen da ich irgendwo im netz ein portmappin gefunden habe wo es so stand
    habe aber alles schon wieder geändert geht aber trotzdem nicht

    Mit freundlichen Grüßen


    Jens


    200l Mischbecken
    120l Artenbecken
    3 Stöckige Aufzucht Anlege für Ocellaris Mokka, LSD Mandarin und Korallen

  • So hab es zum laufen bekommen aber auf den pwm Kanälen die analogen scheinen defekt zu sein :)

    Mit freundlichen Grüßen


    Jens


    200l Mischbecken
    120l Artenbecken
    3 Stöckige Aufzucht Anlege für Ocellaris Mokka, LSD Mandarin und Korallen

  • Ach noch etwas, Du kannst im Übrigen nicht jedes der angebotenen PWM Ports für Deine Uhr benutzen, weil wir 8 Stück davon für die Pumpen über das Motorshield verwenden. Nimm lieber 2 von den höher liegenden Digitalports. Du wirst ansonsten evtl. Probleme bekommen wenn Du dann die Pumpen in Betrieb nehmen möchtest.



    Viele Grüße,


    Volker

  • Guten Morgen Volker,


    danke für deine Antwort.
    Zitat:
    Oder möchtest Du die direkt bei den 24 V Motoranschlüssen dran machen?


    Ja ich dachte das ich sie direkt mit der Pumpe zusammen anschließe.
    Wenn das geht?

    Gruß

    :search:

  • Ich werde mir wohl ein neues arduino Bord holen da ich nicht jedes mal im Programm rum schreiben will wenn du ein eine neue Version raus bringst :)



    Sent from my iPhone using Tapatalk

    Mit freundlichen Grüßen


    Jens


    200l Mischbecken
    120l Artenbecken
    3 Stöckige Aufzucht Anlege für Ocellaris Mokka, LSD Mandarin und Korallen

  • Gestern mir mal ein eigenes Keypad_Shield (für meine Lampe) gebaut.


    Wer es nachbauen möchte, man benötigt:


    1. Lochrasterplatine die man sich nach Wunsch zurechtschnitzt
    2. Widerstände: 1 x 2k, 1 x 330, 1 x 620, 1 x 1k, 1 x 3,3k
    3. 5 x Drucktaster: z.B. hier
    4. 3er Stiftleiste


    Dann einfach nur die Leiterbahnen nach dem Layout nachlöten. Fertig! Hat mich 1/4 Stunde gekostet.


    Es ist zu beachten, dass es eine durchgehende GND-Leitung gibt. Die 5V (VCC)-Leitung ist über die Widerstände verbunden, und nach dem 2k Widerstand auch mit AD0.
    Bei 4 Pinnigen Tatsern auch bitte darauf achten, dass nur Durchgang ist, wenn der Knopf gedrückt ist.


    Finde das Teil ziemlich gut, vor allem weil man selber bestimmen kann wie es aussehen soll. Ich habe halt die oben genannten Taster verwendet. Sieht dann so aus wie bei den ATI-Lampen. Man kann sich natürlich jeden beliebigen Drucktatser holen. Je nachdem welche Bauform lötet man sie dann halt nicht direkt auf der Platine Fest (z.B. bei Bauformen mit Gehäuseverschraubung), sondern lötet sich kleine Drähtchen dran bis zum Gehäuse.


    Gesamtpreis in der oben genannten Ausführung bei Einzelanfertigung ca. 1-5€.


    Viel Spaß beim Nachbauen.

  • Ich habe mir eine Fernbedienung für Funksteckdosen so umgebaut das ich Sie mit einem Signal von 5V steuern kann . Das heist ich hab ne Funksteckdose von Elpro genommen (mit HX2262 chip) hab mir die Leitungen für ein/aus und die Leitungen für Kanal A-D rausgefürht.Dann hab ich mit mit hilfe von Transistoren und Dioden eine Platine gebaut . Jetzt bin ich in der Lage jeden Kanal also A-D einzeln ein und aus zu schalten mit einem 5V signal ( jeder Kanal hat eine Steuerleitung für ein und eine für aus.


    Mein Problem ist jetzt das ich abhängig von meinem code die Funksteckdose steuern möchte.


    Es geht auch alles so wie ich möchte nur muss ich das Signal zum Steuern zeitlich begrenzen (ca. 0,5-1 sec)


    Ich weis aber nicht wie ich das umsetzen soll.


    hier mal ein teil meines Codes


    void loop() {


    RTC.getTime();
    mydaystamp = get_daystamp();


    ds18b20.update(); // Temperatur update



    keypad(); // Tasten abfragen



    if( digitalRead (RELAY[1])==HIGH){ // steuersignal für funke a
    digitalWrite(35,LOW); // Ausgang zur Funke Kanal A einschalten
    delay(500);
    digitalWrite(35,HIGH);
    }


    if( digitalRead (RELAY[1])==LOW){
    digitalWrite(35,HIGH);
    delay(500);
    digitalWrite(35,LOW);
    }



    Fals es mit eurer hilfe Funktioniert werde ich den Schaltplan für alle hier reinsetzen , kann dan jeder nachbauen wenn bedarf da ist



    Hoffe bis bald


    mfg
    addi

  • Hallo Addi,
    das geht genauso wie ich das weiter oben veschrieben habe.


    Setzte ein Signalswitch einmal (1 oder 0). Dann nimmst Du eine neue Funktion, bei dem der Zustand solange geschaltet bleibt bis die Zeit abgelaufen ist.


    Ich habe dasselbe bei meinem Riffcompi so gemacht, bei dem ich auch eine Funksteckdose einsetze. Lade Dir mal meinen letzten Riffcompi SW-Stand herunter und schaus Dir mal an.



    Viele Grüße,


    Volker

  • hab nda noch ein Problem , hab das oben angegebene in mein code eingabaut aber leider bekomme ich fehler.
    ich benutze den code von moritz bei flowgrow und der benutzt andere angaben zur zeit .
    kannst du mir das programm mit erklärung geben damit ich die zeitvariablen für mein code ändern kann?

  • Eigentlich steht das wichtigste direkt im Sketch drinnen. Schau dir einfach mal ein Auszug an, z.B. den ersten Teil der Kalkwasser-Regelung (Umwälzpumpenaktivität):


    Mit einem genaueren Blick in den Code solltest Du klar kommen. Eine Doku für mein Riff-Compi zu schreiben habe ich jetzt kein Bock und keine Zeit! Sorry! Das ist viel zu aufwendig!



    long Umwaelzlaenge;
    long Dosierlaenge1;
    long Dosierlaenge2;
    int umwaelzSwitch;
    int prevUmwaelzSwitch;
    int kalkSwitch;
    int prevKalkSwitch;


    void setup(){


    //Kalkwasser
    UmwaelzzeitK.min = 10; //welche Minute aus der jeweiligen Stunde
    Umwaelzlaenge = 60 ; //Sekunden
    DosierzeitK1.min = 15; //welche Minute aus der jeweiligen Stunde
    Dosierlaenge1 = 60 ; //Sekunden
    DosierzeitK2.min = 15; //welche Minute aus der jeweiligen Stunde
    Dosierlaenge2 = 60 ; //Sekunden
    umwaelzSwitch = 0;
    prevUmwaelzSwitch = 0;
    kalkSwitch = 0;
    prevKalkSwitch = 0;





    //Initial sollen alle Funksteckdosenwerte auf Aus gesetzt werden
    mySwitch.switchOff("10001", 1); //Kalkwasserdosierung
    }



    void loop(){


    //++++++++++++++++++++++++++++++++++++++++++++++++++++++ A K T U E L L E Z E I T ++++++++++++++++++++++++++++++++++++++++++++++++++
    lTime = (time.hour * HOUR) + (time.min * MINUTE) + time.sec;
    Sekunde = time.sec;
    Minute = (time.min * MINUTE);
    HourTime = Sekunde + Minute;



    //+++++++++++++++++++++++++++++++++++++ K A L K W A S S E R - R E G E L U N G +++++++++++++++++++++++++++++++++++++++++++++++++++
    //Umwälzzeit in Sekunden umrechnen
    Umwaelzzeit = (UmwaelzzeitK.min * MINUTE);

    //Dosierzeit in Sekunden umrechnen
    Dosierzeit1 = (DosierzeitK1.min * MINUTE);
    Dosierzeit2 = (DosierzeitK2.min * MINUTE);

    //In welchem Zeitfenster sollen andere Mengen dosiert werden?
    long StundenfensterAnfang = 24 * HOUR;
    long StundenfensterEnde = 7 * HOUR;

    //--------------------------------------Erster Teil: Umwälzpumpenaktivität---------------------------------------------------------
    if (((HourTime >= Dosierzeit1) && (HourTime <= (Dosierzeit1 + Dosierlaenge1))) || (Umwaelzmanuell == true))
    {
    umwaelzSwitch = 1;
    }
    else
    { //Serial.println ("here2_kalk");
    umwaelzSwitch = 0;

    }

    if (umwaelzSwitch != prevUmwaelzSwitch){
    if (kalkSwitch == 1)
    {
    for (int i = 0; i < 5; i++)
    {
    mySwitch.switchOn("10001", 1);
    delay(100);
    }

    }
    else if (kalkSwitch == 0)
    {
    for (int i = 0; i < 5; i++)
    {
    //mySwitch.switchOff("10001", 1);
    delay(100);
    }

    }
    else
    {
    for (int i = 0; i < 5; i++)
    {
    //mySwitch.switchOff("10001", 1);
    delay(100);
    }

    }
    prevUmwaelzSwitch = umwaelzSwitch;
    }
    //--------------------------------------bis hierhin!------------------------------------------------------------------------------



    }

  • Dann hab ich mit mit hilfe von Transistoren und Dioden eine Platine gebaut .

    Solche 433MHz Sender/Empfänger gibt's für 70ct pro Paar bie Abnahme von 10 Paaren:


    http://forum.hobbycomponents.com/viewtopic.php?f=25&t=1324


    Der MX-05V springt mit dem 3,9KOhm-Basiswiderstand bei etwa 2,5V an, den kann man also direkt am GPIO anschließen.


    Das Prokokoll ist schnell programmiert, läuft bei mir seit einigen Tagen:


    http://avr.börke.de/Funksteckdosen.htm


    Ich hatte auch erst 'ne Fernbedienung umgebaut, hab´ den Plunder dann aber in die Ecke geschmissen.

    Einmal editiert, zuletzt von TorstenC ()

  • Hey danke , hab es hinbekommen .Musste aber was ändern und hab es so gelöst.



    long aktuelleZeit;
    long zeitStempel;
    long stroemungsPausenzeit;
    int timerSwitch[8]={35,36,37,38,39,40,41,42};
    int prevTimerSwitch[8]={25,36,37,38,39,40,41,42};
    int val1=digitalRead(23);









    //---------------------- KANAL A aus ----------------//

    if(digitalRead(RELAY[1])==HIGH){
    digitalWrite(36,LOW);

    timerSwitch[1]=1;
    }
    else
    {
    timerSwitch[1]=0;
    }
    if(timerSwitch[1]!=prevTimerSwitch[1]){
    if(timerSwitch[1]==1)
    {
    digitalWrite(36,HIGH);
    }
    else if(timerSwitch[1]==0)
    {
    digitalWrite(36,LOW);
    }

    prevTimerSwitch[1]=timerSwitch[1];
    }

    //---------------------- KANAL A ein ----------------//

    if(digitalRead(RELAY[1])==LOW){
    digitalWrite(35,LOW);

    timerSwitch[0]=1;
    }
    else
    {
    timerSwitch[0]=0;
    }
    if(timerSwitch[0]!=prevTimerSwitch[0]){
    if(timerSwitch[0]==1)
    {
    digitalWrite(35,HIGH);
    }
    else if(timerSwitch[0]==0)
    {
    digitalWrite(35,LOW);
    }

    prevTimerSwitch[0]=timerSwitch[0];
    }

    vielen lieben dank Aquafish007

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!