Der Flowgrow Aquacomp

MajorMadness

Active Member
So, Ich hab mir nochmal gedanken gemacht wegen dem Scheiss licht. :lol:
Problem:
10V werden über 256 Schritte gesteuert. Der TLC5940 kann aber 4096. Die einzustellen und abzufangen was der user jetzt wie grade sspeichert raubt mir im moment den Verstand. Ausserdem gib es zusätzlich 2 Methoden wie KSQ und Netzteile gedimmt werden: Die einen erwarten 0 um aus zu sein, die anderen 255 bzw 4095 um (fast) aus zu sein. Beispiel: Ich hänge eine LED an die Pins. bei normalen 5V PWM ist 0 aus. Wenn Ich die LED aber an eine KSQ mit dim anschluss setze wäre sie bei 0 an...
Also meine Idee:
Ich erwietere
Code:
typedef struct {
  boolean Active;
  float Sunrise;  //34200;    // 9:30
  float Sunset;   //77400;    //21:30
  int Min;  // Inverse Schaltung! 4095 = off
  int Max;  // Wir wollen ja nicht übertreiben, daher LED's nicht voll ausfahren
  int Dim_in;
  int Dim_out;
}LIGHT;
um den Wert "boolean invert=0" Was soviel bedeutet wie invitiere (mach andersrum) die Steuerung und Min und Max werden nur noch über 1% schritte zwischen 0 und 100 eingegeben. Also minimum = 0%, maximum = 83% Wenn z.b. eine XP-G an einem 1000mA KSQ hängt, die aber nicht voll Leuchten soll.
Den ganzen Rest feiere ich dann innerhalb des Codes ab und dreh mir alles so wie der Controller es erwartet. Ich denke müsste besser sein als Wenn user noch mit 4096 schritten und/oder 255 invertiert, nicht invitiert ect arbeiten und einstellen müssen. 0-100%, damit kann jeder was anfangen und wenn bei 100% die lampe aus ist, dann weis man auch das man an dem Kanal bei "Signal invitieren" auf Ja stellen muss.
 

MajorMadness

Active Member
kurz entschlossen beschlossen das es sinnvoll ist:
Code:
void setLight(int Value){
  boolean SetRelay=false; 
  int Min,Max; 
  if(Value==0){ 
    Tlc.clear(); 
    for( int i=0;i <  16; i++){
      if(light_channels[i].Active==1){
        if(light_channels[i].Invert==1){
          Min= int(4095/100*(100-light_channels[i].Min));  // 4095 = 0%... 
          Max= int(4095/100*(100-light_channels[i].Max));  // 80% von 4095 sind 3276
        }else{
          Min= int(4095/100*light_channels[i].Min);  // 0 = 0%... 
          Max= int(4095/100*light_channels[i].Max);  // 80% von 4095 sind 3276
        }
        int c_PWM = PWM_Licht(RTC.daystamp, light_channels[i].Sunrise, light_channels[i].Sunset, light_channels[i].Dim_in, light_channels[i].Dim_out, Min, Max);
        c_PWM= int(float(c_PWM/100*(100+LightOffset[RTC.hour])));
        
        // Speicher dir den Wert für manuelles anpassen halbewchs genau zwischen, auch in %...
        if(light_channels[i].Invert==1){
        DaylightLevel=int(DaylightLevel+int((4095-c_PWM)/4095*100))/2;  // 80%=>819 also 4095-c_PWM sind "echte" 80%. also das / 4095*100
        }else{
        DaylightLevel=int(DaylightLevel+int(c_PWM/4095*100))/2;
        }
        
        // Stell sicher das Relay an ist
        if(c_PWM!=0){
          SetRelay=true;
        }
        Tlc.set(i, c_PWM);
      }
    }
    Tlc.update();
Wenn ich mich nicht vertippert habe auf die schnelle dann müsste es stimmen das bei 23% Die LED's zu 67%, sprich 1/2743 tel impulse aus sind :eek:

Gute Nacht dann :D
 

MajorMadness

Active Member
Scheiss schlaflosigkeit.... :pfeifen:
Code:
// PWM soll sein: sekunden am tag, morgen, abend, eindimmen, ausdimmen, minimum licht, max licht, umdrehen, vonwas
//  PWM_Licht(37000sek, 36000sek , 72000sek , 45 min      , 30 min       ,    10%    , 95%        , ja                 , 4095|255)
int PWM_Licht(float time, float Start, float Ende, int  Dim_in, int Dim_out, int oMin, int oMax, boolean Invert,int s){
  int pwm,Max,Min;
  
  if(Invert==false){
    Min=int(s/100*oMin);  // 0 = 0%... 
    Max=int(s/100*oMax);  // 80% von 4095 sind 3276
    pwm=0;
  }else{
    Min=int(s-(s/100*oMin));  // 0%=4095-(4095/100*0) = 
    Max=int(s-(s/100*oMax)); // 80% von 4095-(4095/100*80) sind 819
    pwm=s;
  }
  
    // Starten der Dimmung von Min
    if (time >= Start  && time <= Start+float(Dim_in*60)){ 
      Serial.println ("Raufdimmen");
      float s = time-Start+0.5;    // vergangene Sekunden ~1620Sek ~ 27min
      int m = Max-Min;    //3000-200=2800
      float f= float(Dim_in*60)/float(m);    // 45*60/2800=0,96
      float p = s/f;    // 1620 / 0,96=1680 
      pwm=Min+int(p); //1880
      
      return pwm;
    }
  
    // Voll an keine Dimmung
    if (time > Start+float(Dim_in*60)  && time < Ende-float(Dim_out*60)){
   	return Max;
    }
  
    // Ende der Dimmung
    if (time >= Ende-float(Dim_out*60)  && time <= Ende){
      Serial.println ("Runterdimmen");
      float s = time+float(Dim_out*60)-Ende+0.5;    // vergangene Sekunden ~1616
      int m = Max-Min;     // 135
      float f= float(Dim_out*60)/float(m);    // 3000/135 ~22
      float p = s/f;    // 1616 / 22
      pwm = Max-int(p);
      
      return pwm;
    }
  
    // Der Rest
    return pwm;
    
}
Hab alles rechnerische in die funktion gepackt. Der aufruf:
Code:
    for( int i=0;i <  16; i++){
      if(light_channels[i].Active==1){
        int c_PWM = PWM_Licht(RTC.daystamp, light_channels[i].Sunrise, light_channels[i].Sunset, light_channels[i].Dim_in, light_channels[i].Dim_out, light_channels[i].Min, light_channels[i].Max, light_channels[i].Invert,4095);
        c_PWM= int(float(c_PWM/100*(100+LightOffset[RTC.hour])));
        
        // Speicher dir den Wert für manuelles anpassen halbewchs genau zwischen, auch in %...
        if(light_channels[i].Invert==1){
        DaylightLevel=int(DaylightLevel+int((4095-c_PWM)/4095*100))/2;  // 80%=>819 also 4095-c_PWM sind "echte" 80%. also das / 4095*100
        }else{
        DaylightLevel=int(DaylightLevel+int(c_PWM/4095*100))/2;
        }
        
        // Stell sicher das Relay an ist
        if(c_PWM!=0){
          SetRelay=true;
        }
        Tlc.set(i, c_PWM);
      }


////////////
oder
////////////

    if(light_channels[16].Active==1){
      int c_PWM = PWM_Licht( RTC.daystamp, light_channels[16].Sunrise, light_channels[16].Sunset, light_channels[16].Dim_in, light_channels[16].Dim_out, light_channels[16].Min, light_channels[16].Max,light_channels[16].Invert,255);
        c_PWM= int(float(c_PWM/100*(100+LightOffset[RTC.hour])));
        // Speicher dir den Wert für manuelles anpassen halbewchs genau zwischen, auch in %...
        if(light_channels[16].Invert==1){
        DaylightLevel=int(DaylightLevel+int((255-c_PWM)/255*100))/2;  
        }else{
        DaylightLevel=int(DaylightLevel+int(c_PWM/255*100))/2;
        }
        
        if(c_PWM!=0){
          SetRelay=true;
        }
      analogWrite(DIM1, c_PWM);
    }

Ic hgölaube jetzt stimmt alles, egal wannwir wie wo dimmen :D
 

_1973_

New Member
Hallo zusammen

ich habe gerade hier alles gelesen (und das obwohl ich nur 50% davon verstehe :roll: ).

Ich muss sagen größten Respekt v.a. vor Moritz, aber auch allen anderen Ideengebern. Toll wie das hier abläuft.

Habe ich das richtig verstanden, dass die geätzten Prototypplatinen nicht mehr verfügbar sind? Oder könnte man die sich noch nachbestellen (also bei dem bulgarischen Kontakt und nicht bei Moritz)?
Ist nur eine grundsätzliche Frage, da ich jetzt erst mal die großen Wissenslücken schließen muss/will. Irre für was Aquaristik alles gut ist, jetzt beschäftige ich mich deswegen schon mit E-Technik :D.

Auf gutes gelingen werde alles gespannt mitverfolgen!
 

MajorMadness

Active Member
Richtig, die Prototypen Bestellung ist raus und auch alle anderen Teile bei mir oder auf dem Weg zu mir. Die Schalt/Platinenpläne werde ich z.Z. nicht rausgeben, da Ich nicht weis ob alles wie gehofft funktioniert und es gegen mein Prinzip ist evt. fehlerhaftes Material zu publizieren. Wenn alles aber Planmäßig läuft bekomme Ich diese Woche die Prototypen und Ich habe genug Einzelteile hier um zumindest 2-3 fertig zu bauen.
Ich werde also erstmal eine Testplatine für mich fertig löten und diese in mein AQ einbauen wärend Ich auf die letzten Teile warte um allen die sich beteiligt haben Ihre Packete fertig zu packen.
Wenn die Platine funktiiert (was wir alle hoffen) wird schnellstmöglich das design minimal geändert (aufgrund von 2 weiteren Ideen) und dann werde Ich wieder sammeln für die nächste Bestellung. Hierbei kann dann jeder wieder sein Interesse bekunden. Wer will kann natürlich auch alles selber bestellen, das ist nur leider recht Sinnfrei da eine Platine inc Shipping das gleiche kostet wie mich 3 Platinen kosten wenn ich 10+ bestelle. (gleiche gilt auch für alle anderen Teile.)

Ich verstehe mich bei dieser Aktion nicht als Händler oder Vertriebspartner, sondern lediglich als der jenige der Einzelbestellungen zusammenfast und Bausätze sowie Komponenten zum Portosparen weiter verschickt. Ich verdiene daran leider nix, bei der ersten Bestellung mache Ich sogar noch Minus da Ich aufgrund der Preise Teils 20-30 Teile kaufen musste damit es sich lohnt.
 

_1973_

New Member
Hallo Moritz

Danke für die schnelle Antwort. Dann hoffe ich für euch (und mich), dass alles so klappt wie erhofft!

Und für die Zukunft kannst du mich als Interessenten im Hinterkopf behalten.
 

Odin

Member
Damit es jetzt auch offiziell wird, melde ich ebenfalls Interesse an.
Wenn das noch ne Weile dauert, ist das auch nicht schlimm. Da hat Moritz Zeit, nen AQUACOMP Rev. 3 zu entwickeln. :flirt:
(interaktiver Touchscreen, Edelstahlgehäuse mit Nanoshield Beschichtung, natürlich ne fernsteuerungs App für iPhone und Android...) :gdance: Aber wenn damit bloß das licht an und aus geht, reichts auch.
Die gewünschten CREE´s müßen erst in den DayTrade. :D
Macht es eigentlich nen Unterschied, ob ich XP-G R5 auf Star, Keramik, oder XP-G2 R5 auf Star nehme? Klar, die G2 sind etwas sparsamer, aber steht der Preis dazu im Verhältniss? Eher nicht, oder? Wie verhält es sich mit der Wärmeleitung bei der Keramikversion? Ist die besser, oder schlechter, als bei den Starplatinen?
 

@ster

New Member
Hallo Moritz

Habe den ganzen Beitrag gelesen. Alle Achtung. Von der Idee bis zur Durchführung wurde top Leistung erbracht. :thumbs:
Habe im Beitrag auch von einer PH - Messung gelesen. Dieser Punkt würde mich besonders interessieren. Mein Sohn hat als Projektarbeit für die Schule den Bau einer PH - Messung, aber ein richtiger Ansatz ist noch nicht da.
Falls weitere Platinen bestellt werden, möchte ich mich auch voranmelden.

Gruß, Robert
 

MajorMadness

Active Member
Also unbestätigten Gerüchten zur folge :pfeifen: wird der Touchscreen wirklich erst zur V3 kommen... Ich kann aber behaupten, er wird kommen. :paket: :lol:

Zur V2 habe Ich gehört dass das haupt update darin liegen wird das paar Layout schwächen beseitigt werden um besserr an manche dinge zu kommen und anschliessen von anderen Dingen zu erleichtern. Mag evt dran liegen das komischerweise grade an der Entwicklung von direkt steuerbaren KSQ Platinen gearbeitet wird... :roll:
Mit der Erweiterbarkeit im Kopf wird auch an nem PH-Controller gesessen welcher gesonderte anschlüsse benötigt. auch diese sollen besser erreichbar sein...
Zum letzten werden dann wohl paar dinge aus dem Layout gestrichen und ebenfalls auf eigenständige Platinen verbannt. Hierzu muss dann der Code (wenn er dann endlich mal fertig ist) umstrukturiert werden um die Modulbauweise der Komponenten und die integration der einzelnen dinge auch für nicht Nerds zu gewährleisten...

Also einen Tiefen blick in die Glaskugel: :glaskugel:
- V2 mit kleineren änderungen, Grundsystem bleibt gleich.
- KSQ erweiterung mit LED Treibern in 100mA bis 1200mA, wenn alles gut geht, Stückpreis unter 4€
- Erweiterung um PH Messung

- V3 umbau auf Module, kauf nur das was du wirklich brauchst
- Besserer Anschluss der Einzelnen Karten/Erweiterungen
- Modularer Quellcode, Schnelle integration in eigenen Code

Zudem suche Ich momentan nach Möglichkeiten den Controller in Käuflich erwerbbare LED Lampen zu nem Vernümpftigen Preis zu integrieren oder jemanden zu finden der Bereit ist Lampen her zu stellen die dem deutsczhen Gesetz entsprechen UND billig sind... :keule:
Solange dies aber nicht ist wird es erstmal keine andere Möglichkeit geben als das ganze als Einzelteile zum selberbauen als Sammelbestellung zu organisieren. :irre: Wenn man es richtig und für "normale" Menschen komfortabel/einfach machen möchte steht einem leider das deutsche Gesetz im Wege...


@Robert:
Zum PH Controller für deinen Sohn:
http://www.google.de/imgres?hl=de&sa=X& ... =0&ndsp=61
Schaltpläne und Code sind OpenHardware/OpenSoftware License. Darf er also Privat, nicht kommerziel kopieren.
 

woldeu

New Member
Hallo
Ich habe vor einigen Tagen diese Seite entdeckt.Ich bin begeistert.Ich habe schon mit Moritz gepostet.
Ich habe mir eine Lampe mit 5 LED 10 Watt gebaut. Ist erst mal der Anfang. Regelbar gebaut mit einer
PWM Steuerung mit ne 555 Schaltung und LDD-1000mA Mean Well angesteuert.

Ich habe jetzt einen Arduino und bin sehr Interessiert.

Für die PWM habe ich jetzt einen LM2596 DC-DC Step Down Schaltregler Power Supply Modul LM2596S
bekommen 2,80 € Diesen kann man für jede Led gebrauchen weil man den Strom einstellen kann.
Pin 5 habe ich abgelötet um die PWM dort anzuschließen.Klappt super.

Ich werde dies weiter verfolgen weil ich mich erst in C Programmieren einarbeite.

MFG Wolfgang
 

oophaga

Member
hallo miteinander,
habe gestern mal mit nem bekannten bastlern geredet (auch arduino freak :D ), der gab mir nen tipp zwecks keypad..
was haltet ihr von einer folientastatur?
wär im endeffekt leichter zu verwirklichen als die lasergeschichte denk ich..
grundplatte aus alu fertigen > löcher bohren > gummischeiben einfügen > folie spiegelbildlich bedrucken, evtl noch schutfolie unten drauf kleben > auf pad kleben > fertig
 

woldeu

New Member
Anbei mein Aquarium
Die obere Beleuchtung für die Pflanzen habe ich mit 5 x 3 Watt laufen.



Wolfgang
 

Anhänge

  • Foto 1.JPG
    Foto 1.JPG
    101,5 KB · Aufrufe: 420
  • Foto 5.JPG
    Foto 5.JPG
    109,1 KB · Aufrufe: 427
Ähnliche Themen
Themenersteller Titel Forum Antworten Datum
Tobias Coring Flowgrow - das gelebte Miteinander in der Community Ankündigungen 0
Ewald Flowgrow Forum Uhr - der Zeit voraus? Kein Thema - wenig Regeln 2
HaManFu HaManFu grüßt den Rest der Welt@Flowgrow Mitgliedervorstellungen 15
Tobias Coring Der Flowgrow Dünger ist da ;) Nährstoffe 127
D Neu in der Aquaristik (Benjamin aus Raum Köln/Bonn) Mitgliedervorstellungen 4
D Was kann der Sera CO2-Dauertest (nicht)? Technik 2
Maj.Monogwam Hilfe bei der Geschlechtsbestimmung, Königssalmler. Fische 2
Heiko Muth (Sumpfheini) Leptochilus pteropus, der Javafarn... Pflanzen Allgemein 0
T Weiß jemand, wer der Hersteller des Harzes ist, das sich "Purigen" nennt? Technik 11
Benjamin87 Der Zustand meiner Aquarium Pflanzen Pflanzen Allgemein 4
Benjamin87 Klares Wasser nach der Einlaufphase Technik 2
Benjamin87 Unerfahren in der Düngung Nährstoffe 1
Benjamin87 Trübung in der Einfahrphase Erste Hilfe 8
T In Zeiten der sog. Klimakrise ... Was ist Eure Sicht auf das "Teufelszeug" CO2? Kein Thema - wenig Regeln 10
S Optimierung der Düngung Nährstoffe 40
E Kalium Mangel (meine Pflanzen sagen ja der Test sagt nein) Nährstoffe 42
T Hilfe bei der Namenssuche Artenbestimmung 1
S Düngen in der Einfahrphase Nährstoffe 315
J Tropica Dünger in der Einfahrphase Nährstoffe 19
B4m8i Aquarium in der Arbeit - Proxima 250 ohne allem Aquarienvorstellungen 12

Ähnliche Themen

Oben