AquaGrow – Neue Platinen

Endlich ist es soweit! Heute trafen die neuen Platinen bei mir ein und Ich muss sagen: Ich bin direkt begeistert.

Nicht nur weil endlich die neuen KSQ und Controller gekommen sind, auch weil bei einem ersten Testlauf direkt alles stimmte und Ich so einem Großen schritt näher bin an einer sehr guten und dennoch günstigen LED-Steuerung.
Aber erst mal ein überblick was es neues gibt:

2013-07-25 12.03.40

Was hätten wir da? Oben sehen wir die neuen KSQ, Prototypen einer neuen Entwicklung daneben und rechts die LED Contoller. Unten wieder ein Nutzen der KSQ welche Ich die nächsten Tage noch löten werde…

Zu den einzelnen Platinen genau:

2013-07-25 12.06.22

Die neuen KSQ zeichnen sich vor allem durch 2 Dinge aus: Kabel sind nun Steckbar anstelle das man Stecker dran basteln muss und es wird Somit ein einseitiges Layout ermöglicht. Ausserdem ist auf der Unterseite eine Größere Kupferfläche um Wärme besser ab transportieren zu können. Anbringen kann man die KSQ durch das einseitige Layout sehr gut mit Wärmeleitpads auf Aluminium Profilen. Ich hab alle KSQ wieder ohne Widerstände bestellt damit Ich sie je nach bedarf bestücken kann und so 85-1200mA KSQ habe.

2013-07-25 12.06.41

Die Stecker Version der KSQ wurde aber auch nochmal bestellt. Einfach nur weil Ich noch genug Bauteile hier habe und sie Preisgünstiger ist. Es gab aber auch hier eine Verbesserung und so wurde das Design 2 Seitig gemacht und ebenfalls eine Kupferfläche zur besseren Kühlung eingebastelt. Theoretisch könnte man hier auch Mini Chipsatz Kühler aus dem PC Bereich aufkleben…

2013-07-25 12.04.01

Die LED-Controller! Endlich sind sie da… Mit 7,3 x 4,3cm sind Sie zwar noch größer als Ich das möchte, aber zum Testen der Hardware reicht es erstmal… Beim nächsten mal sollen Sie dann kleiner werden und auch einige andere nette Features bekommen. Im moment bastel Ich aber noch am Code und der PC Software dafür.
Im moment wird aber schon (Softwareseitig) unterstützt:

  • Echtzeituhr Temperaturgesteuert – Somit geht diese Platine weit weniger falsch als die ganzen billigen RTC’s die man aus China kennt.
  • Dimmen von 16 KSQ mit 12bit/4096 Schritten – Dies ist einfach einstellbar und nicht mehr Linear. Somit gibt es einen „echten“ Sonnenaufgang wie man Ihn kennt und das Auge ihn als schöner Empfindet.
  • Stromzufuhr über USB oder 6-12V möglich, Programmierung direkt über USB am PC

Zur Zeit im Test/Über Add-On Board:

  • Anschluss von 2-3 Dosierpumpen – Hier bin Ich mir noch nicht ganz sicher ob Ich 2 Softwareseitig ermögliche oder doch 3…
  • Temperaturüberwachung – Wenn es in der Abdeckung zu warm wird fahren automatisch alle LED’s runter.
  • Steckdosensteuerung – Anschluss von 1-2 Schaltrelais für Steckdosen, So kann man z.b. das LED Netzteil nachts abschalten wenn man kein Mondlicht hat.
  • Lüftersteuerung – Der kritischste Teil… Leider habe Ich nur 6 Anschlüsse, daher wären maximal 2 Lüfteranschlüsse möglich WENN Ich nur 2 Dosierpumpen und eine Steckdose schaltbar mache. Hier müsste Ich also definitiv nochmal abwiegen was nützlich/gut wäre. Möglich wären auch 2 Temperaturfühler so dass man Wassertemperatur und LED’s kontrollieren kann und dann dimmen und Heizung schalten…

AquaGrow Platine Software und Einstellungen

Der Letzte Schritt zum Funktionierenden Aquariencontroller: Software runter Laden und auf den Controller überspielen.

Hierzu brauchen wir erstmal die Arduino Umgebung und alle nötigen Treiber. Hierzu möchte Ich auf die Arduino Dokumentation unter http://arduino.cc/de/Guide/HomePage verweisen.

Den Code den man braucht um alle Komponenten steuern zu können findet Ihr unter http://svn.ravendev.de. Hierbei gibt es 2 wichtige Ordner:
Development -> Der Ordner an dem Ich immer mal wieder arbeite. Alles was hier drin ist ist evt nicht funktionsfähig.
Finals -> Lauffähiger und getesteter Code. Final steht hierbei nicht für Final, sondern nur dafür das es läuft. Der Code ist work in progress und wird evt immer mal wieder geändert und erweitert.

Wichtig ist zuerst einmal das Ihr euch die Ordner unter /Finals/arduino-1.0.4/libraries/ runter ladet und installiert. Diese libs werden Zwangsläufig benötigt.
Unter /Finals/MAQ/ ist das Eigentliche Programm/ der Code für den Controller. Diesen könnt Ihr komplett runter laden, entpacken und in Arduino öffnen.

Besondere Programmteile möchte Ich euch noch kurz erklären.

Zuerst einmal alle tabs die Ihr im oberen Rand seht. Hierbei steht jeder für eine Rubrik an Funktionssammlungen die zur Übersicht gesplittet wurden.

tabs

 

MAQ Ist der Hauptcode, Clock alles was unsere Uhr betrifft, Display die grafische Ausgabe, Duengung unsere Dosiereinheit, Functions Hilfsfunktionen ohne zugehörigkeit, Licht für alles was man dimmen kann (inc 10V Schnittstelle) und Menü mein Sorgenkind. ;)

Zuerst sollten wir mal schauen das die Parameter die wir einstellen müssen stimmen.

Display:
Hierbei ist wichtig das wir die richtige Adresse auswählen. Wir schauen also auf unsere Platine und suchen den IC2, neben dem Poti. Dieser trägt entweder die bezeichnung PCF8574P oder PCF8574AP.
Nun suchen wir die Zeile

1
LiquidCrystal_I2C lcd1( 0x38 ,20,4,LCD_BL); // LCD Adress / Chars / Rows / PWM Pin

Im Falle des PCF8574P muss 0x38 in 0x20 geändert werden.
Nun gibt es 2 Methoden um das Hintergrund Licht des Displays zu steuern: Automatisch und Manuell. Hierfür sind weiter unten die Zeilen

1
2
// lcd1.backlight(DaylightLevel*2.55);
lcd1.backlight(255);

zuständig. Die obere steht dafür für ne Automatische Anpassung nach „Tageslicht“, die untere für immer ganz an. Als Zahl kann man alles zwischen 1 und 255 eingeben, wobei 255 das Hellste ist.
Das was auf dem Display erscheint findet Ihr unter „Display“ und dann in der Funktion main_Screen(). Die könnt Ihr anpassen um sie nach euren wünschen zu gestalten.

Temperatursensoren:
Jeder Sensor ha teine eigene ID. Diese muss erstmal ausgelesen werden und dann eingetragen werden, so das der Controller bescheid weis. Öffnet am Besten den Beispiel Sketch ds18b20_demo. Ladet den auf euren Controller und schaut im Serial Monitor welche ID’s es gibt und welcher Sensor welche hat. Ihr müsst aber im Beispiel den Pin auf 44 ändern:

1
DS18B20_List ds18b20(44);

Dann sucht Ihr unter MAQ die Zeilen

1
2
#define TempOnBoard 0xC7B5
#define TempWater 0xBFAE

und ändert Sie passend ab.
Bisschen weiter unten finden wir noch die Temperatur.

1
2
//WasserTemperatur
float Water_Temp = 25.5;

Damit die Heizung nicht zu schnell schaltet wird immer +-1°C geregelt. 25.5 heist also das bei 25 geheizt wird und bei 26 es aus geht.

Relays: 
Nun geht es noch daran die Richtigen Pins den Relays zu zu ordnen.

1
2
3
4
5
6
7
8
const int RELAY1 = 23;  // Heizung
const int RELAY2 = 25;  // Netzteil LED
const int RELAY3 = 27;  // Filter
const int RELAY4 = 29;  // CO2
const int RELAY5 = 31;
const int RELAY6 = 33;
const int RELAY7 = 35;
const int RELAY8 = 37;

Licht und Dimmung: 
Die Dimmung ist etwas komplexer. Sie besteht aus 2 Teilen: Ein Array was alle gespeicherten Werte enthält und ein struct was die Werte interpretiert. Schauen wir uns zuerst einmal das Struct an:

1
2
3
4
5
6
7
8
9
10
typedef struct {
  boolean Active;    // Über diesen Kanal Dimmen
  float Sunrise;    // Zeit Sonnenaufgang
  float Sunset;    // Zeit Untergang (Dunkel)
  int Min;     // Minimum Helligkeit
  int Max;    // Max Helligkeit
  int Dim_in;    // Länge minuten eindimmen
  int Dim_out;    // Länge Minuten ausdimmen
  boolean Invert;  // Werte vertauschen
}LIGHT;

Was bedeutet das für uns? Jeder Kanal hat diese ganzen Einstellmöglichkeiten und wir können festlegen wann eine Lampe an/aus geht, wie hell die minimal/maximal ist und wie lange das ein/ausdimmen geht. Manche EVG’s und KSQ arbeiten nach anderen Prinzipien. So kann es passieren das 0 = ganz an und 100% ganz aus ist. Das legen wir über Invert fest. Doch wo stellen wir das Jetzt ein?

1
2
3
4
5
LIGHT light_channels[20] = { 
{ 0, get_ts(10,0,0), get_ts(23,0,0),0, 100, 30, 45,1}, 
{ 0, get_ts(10,30,0), get_ts(22,0,0),0, 100, 60, 120,1}, 
.....
.....

Genau hier. Die Reihenfolge ist gleich zum Struct oben. Doch anstelle von Zeiten ein zu geben benutzen wir ne kleine hilfsfunktion:
float get_ts(int h, int m, int s) macht nix anderes als eine Uhrzeit mit Komma getrennt in Sekunden um zu rechnen. also 10,0,0 steht für 10:00:00 Uhr, 10,30,0 für 10:30:00Uhr.
Noch wichtig ist die Zeile

1
2
3
4
5
6
7
//Abweichung für Tageslicht basierten Verlauf
int LightOffset[24]={
  0,0,0,0,0,0,
  0,0,0,0,0,0,
  0,0,0,0,0,0,
  0,0,0,0,0,0
};

Hiermit können wir einen Tagesverlauf festlegen. jede Zahl steht dabei für eine Stunde. Wenn man jetzt eine 10 an 12ter Stelle schreibt bedeutet das das es um 12:00Uhr 10% Heller ist. -10 bedeutet 10% dunkler. Beachtet das 110% nicht möglich ist. Also wer seinen Kanal schon auf max 100 gestellt hat wird nix regeln können.

Uhrzeit:
Bleibt noch die Aktuelle Zeit. Hierfür finden wir in Clock 2 Zeilen:

1
2
  TimeIsSet = 0xffff;
  RTC.setRAM(54, (uint8_t *)&TimeIsSet, sizeof(uint16_t));

Wenn wir den Sketch hoch laden wird automatisch die PC Zeit in die Uhr geschrieben. Es gibt aber einen Nachteil: Im Falle eines Resets wird diese Zeit wieder genommen. Da wir aber eine Backup Batterie haben und nicht immer diese Uhrzeit nehmen wollen, müssen wir den Sketch 2 mal hochladen. Einmal mit diesen Zeilen so wie sieh stehen, einmal mit auskommentierten Zeilen:

1
2
 // TimeIsSet = 0xffff;
 // RTC.setRAM(54, (uint8_t *)&TimeIsSet, sizeof(uint16_t));

Wer mal testen möchte wie das Licht um irgend eine andere Zeit ist oder einfach eine Falsche Zeit einstellen möchte, der kann im Block unter diesen Zeilen den Wert manuell setzen.

Dünger:Bleibt noch der Dünger. Hierfür müssen die Düngermengen und Düngerzeiten angepasst werden.

1
2
3
4
5
6
7
8
9
10
11
12
// Düngermengen
float duenger1 = 3.00;    // Spezial N 1ml/50L
float duenger2 = 1.00;    // Spezial Flowgrow 2ml/100L
float duenger3 = 2.00;    // Mikro Basis Eisen 2ml/100L
float duenger4 = 1.00;
float duenger5 = 3.00;    // Estimate Index 5ml/40l
//Dünger Zeiten
float d1Time= get_ts(9,0,0);    // 9:00
float d2Time= get_ts(10,0,0);
float d3Time= get_ts(11,0,0);    // 11:00
float d4Time= get_ts(20,0,0);    // 18:00
float d5Time= get_ts(21,0,0);    // 12:00

Das sind quasi meine Mengen die Ich täglich dünge. Für die Zeiuteinstellung nehmen wir wieder unsere funktion get_ts(). Mit kleiner anpassung kann man auch 2 mal täglich einen dünger düngen. Wir müssen nur eine neue Variable für die Zeit schaffen und dann die passende Funktion:

1
2
//Achtung, dies ist keine Standart Variable, Sie kommt von mir!
float d2Time1= get_ts(15,0,0);

Und unter dem Reiter/Tab Duenger

1
2
3
4
5
  if(Daystamp>=d2Time1 && Daystamp<d2Time1+duenger2&&digitalRead(TIP2)==LOW){
    digitalWrite(TIP2,HIGH);
  }else if((Daystampd2Time1+duenger2) && digitalRead(TIP2)==HIGH){
    digitalWrite(TIP2,LOW);
  }

AquaGrow Platine Inbetriebnahme

Alles ist verlötet, alle Komonenten Angeschlossen, jetzt wollen wir es natürlich auch in Betrieb nehmen.
Hierführ sind 2 Schritte nötig:
Strom Anschliessen, Jumper setzen.

Fangen wir mit dem Strom an. Ich empfehle ein 2 Spannungsnetzteil mit 5 und 12V zu verwenden. 1A bei 5V, 2A bei 12V sollten ausreichen. Dennoch empfehle Ich bei Neukauf ein Meanwell RD65A (Datenblatt).
Alternative kann ein 2Spannungs PC Netzteil oder getrennte 5V und 12V genommen werden. Hier ein Beispiel eines Zweckenfremdeten Netzteils einer Externen Festplatte:

Beim Anschluss habe Ich mich an eine Stanard Farbkodierung aus dem PC Bereich orientiert. Diese ist Ground (Minus) Schwarz, 5V Rot, 12V Gelb. 230V kommt an L,N. Ich rate dringend dazu ein 3 Adriges Kabel für Netzspannung zu verwenden und Gelb/Grün an Erde an zu schliessen! Ganz rechts mit ADJ kann man die Spannung an 5V zwischen 4.75 und 5.5V Einstellen. Dreht den Regler ganz gegen den Uhrzeigersinn und dann im Uhrzeigersinn bis Ihr am Multimeter 5V ablesen könnt. Wer kein Multimeter hat sollte sich eins zulegen, es geht aber auch indem er ca die Mitte wählt. +/- paar Volt ist niocht schlimm und alle Chips sind Voltage tollerant bis 6V.

Den Platinenanschluss findet Ihr oben Links. Hierbei muss Rot, Gelb,Schwarz von oben Nach unten angeschlossen werden. Nun geht es darum die Jumper auf dem Board zu verteilen. Der erste ist Optional:
Der Arduino kann über ein 6-12V Netzteil am Board betrieben werden, allerdings auch über Vin, auf dem Mega zu finden neben den Grd. Dies berücksichtigt auch die Platine. Wer also kein Extra Netzteil verwenden möchte für seinen Mega muss unter den Schraubklemmen, über der Batterie den Jumper setzen.

Nun gibt es 2 verschiedene Konfigurationen:
Wir möchten den TLC5940 verwenden und/oder die 0-10V Dimmung oder wir möchten die Ports frei halten/geben um sie anders zu nutzen. Für den TLC5940 der die LED Dimmung übernimmt sind die Jumper TLC_J1 – TLC_J3 im oberen Bereich zuständig.
Für die 10V Dimmung sind die Jumper DIM1-DIM4 nötig.
TLC Aktivieren/Nutzen:
J1, J2, J3 zwischen 2 und 3 setzen.
0-10V Dimmung Aktive:
DIM1-DIM4 zwischen 1 und 2 setzen.
Die Bilder zeigen wie alle gesteckt werden müssen um TLC und Dimmung zu aktivieren.

2013-06-05 15.18.54

TLC deaktivieren/nicht nutzen:
J1, J2, J3 zwischen 1 und 2 setzen.
0-10V Dimmung deaktivieren:
DIM1-DIM4 zwischen 2 und 3 setzen.

ACHTUNG: Wer den TLC5940 UND andere Geräte nutzen möchte die den SPI Bus benötigen (z.B. Ethernet Module) muss alle TLC Jumper kurz schliessen, d.h. 1,2 und 3 miteinander verbinden. Damit können die Pins ganz normal verwendet werden und auch doppelt belegt werden. Zusätzlich ist für ein Ethernet Modul eine 3,3V Spannung nötig und ein zusätzlicher Pin. Das ist auf der Platine zwar schon berücksichtigt (Ethernet Connector, IC7 und Jumper ETH J1), wird aber von mir noch nicht unterstützt da der Test und die Software fehlt.

AquaGrow Platine Komponenten anschliessen

Wir haben inzwischen unseren Controller zusammen gebaut und wollen nur auch Dinge Steuern, Messen und Regeln.

Fangen wir mit dem Temperatursensor an. Der bei mir mitbestellte Wasserdichte DS18B20 Sensor hat 3 Kabel: Weiss -> Daten, Rot->Plus, Schwarz->Minus. Auf der Platine muss Weiß in die Mitte, Rot nach Links (an den Rand) und Schwarz nach Rechts.
2013-06-05 14.48.432013-06-05 14.52.03

Weiter geht es mit den Schaltrelais. Hierfür sind 2 verschieden Anschlüsse nötig: Einmal die Versorgungsspannung der Relais und einmal die Steuersignale.
Versorgungsspannung findet Ihr oben, unter dem Display Port, gekennzeichnet mit GRD_5V. Pin 4 und 3 sind – oder Ground, Pin 2 und 1 5V oder VCC. einen Grd und 5V müsst Ihr mit Grd und 5V auf dem Relais Board verbinden. Für die Steuerleitungen kann man eigentlich jeden Digital IO Port nehmen. Ich empfehle aber die Ports 22 und aufwärts (22-30 für 8er Relais) oder einen Stecker auf jeden 2ten Port (sprich einen 4er oder 8ter auf 20,22,24 usw). Diese sind rechts auf der Doppelleiste. Laut Arduino Reference Design müssen die obersten beiden 5V sein. So sind die auch auf der Platine. Dadrunter sind die Ports die wir brauchen. Verbindet einfach einfach Pin 22 mit In1, 23 mit In2 usw oder lötet den Stecker ein. Zur besseren Orientierung solltet Ihr auf den Mega2560 schauen. Dort sind die Pins markiert.

Weiter geht es mit dem Display. Hier kann man entweder Litze nehmen oder ein Flachbandkabel was Ich normalerweise bei lege. Da es allerdings kein 12 Adriges gibt müssen wir uns ein 10+2 Kabel Basteln. Verbunden wird es fast 1zu1. Auf der Platine links (bei LCD 1) das Kabel muss zu LCD1, 6 an 6 und dann 4 frei lassen, also Platine 7 an LCD11, 8 an 12 usw.

2013-06-05 14.56.41 2013-06-05 14.57.31 2013-06-05 14.57.41

 

Dann hätten wir noch den Reset Switch und das Keypad. Der Switch wird einfach mit den linken beiden am Stecker neben der Batterie verbunden. Wie rum ist egal da er bei drücken nur nen durchgang schaffen muss.
Das Keypad wird so angeschlossen wie auf dem Bild zu sehen.

2013-06-05 14.11.05 2013-06-05 15.06.20

 

Im Oberen Bereich finden wir noch die Anschlüsse für 0-10V. Hierbei gehören die ersten beiden zum DIM Kanal 1 und dann immer Paarweise weiter. Wer dort z.B. einen Lüfter anschliessen möchte kan 1, 3, 5, 7 als + Verwenden und 2, 4, 6, 8 als Minus. Bei Anschluss eines Dimmbaren EVG’s bitte die Polung und Anschluss des Herstellers beachten.

2013-06-05 15.10.10

Zum Abschluss dann nochmal das Board mit allen nötigen Anschlüssen und werten:

Platine

Zum Anschluss von KSQ komme Ich an anderer Stelle.

AquaGrow Platine Zusammenstellung

Was Brauch man für welchen Zweck und was soll man bestellen wenn man sich an einer Sammelbestellung beteiligt?
Eine Schwere Frage, da das System so aufgebaut ist das es sich nach belieben kombinieren lässt. Ich möchte dennoch versuchen nen kleinen LKeitfaden zu geben:

Definieren wir unsere Einsatzzwecke.

1. Aquariendimmung nur über Netzteile mit 1-10V Schnittstelle, Messen der Wassertemperatur, Steuern eines Heizstabs
2. Aquarienbeleuchtung über LED direkt mit KSQ, Messen Wassertemp, Steuern Heizstab
3. Display für Anzeige aller Werte, Keypad zur bequemen Einstellung über Menü
4. Zusätzlich 5 Dosierpumpen für Dünger/Mineralien
5. Komplette Techniksteuerung, geplanter Ausbau für Leitwert, PH, Redox Messung, Ethernet, Anschluss eines 2ten Beckens

 

  Für 1 Für 2 Für 3 Für 4 Für 5
Arduino x x x x x
Platine x x x x x
Standart Bauteile x Besser Nachricht das nur Uhr gebraucht wird. x x x
LED Chip   x     x
Display     x   x
Keypad     x   x
Extra Wasserrsensor         x
Schaltrelay x x   x x
Netzteil x     x x
Dosierpumpen       5 Stück x
Preis  73,50€  44,50€  58,50€ 133,00€ 149,00€

 

AquaGrow Platine Erweiterungskomponenten

Wo eine Basis ist, da ist es denkbar das es auch erweiterbar ist.

So Ist es natürlich auch beim AquaGrowController. Neben allen komponenten die von Arduino unterstützt werden habe Ich mich dran gesetzt und habe einige nützliche Komponenten gefunden die unser Aquarieaner Leben leichter machen:

LED Dimmer:
Hierbei handelt es sich nicht wirklich um einen LED Dimmer, aber wir können Ihn sehr gut dafür missbrauchen. ;) Der verwendete IC ist ein TLC5940 aus dem Hause Texas Instrument. Eigentlich handelt es sich um einen LED Treiber Chip der LED’s mit bis zu 120mA direkt treiben kann. Hierbei wird die Anode (+ oder "Ankommend" wie ich es mir merke) an ein Netzteil angeschlossen und die Kathode (-) an den IC. Dieser Senkt die eingestellte mA und dadurch leuchtet die LED (sehr simpel ausgedrückt…). Vorteil dieses Chips ist das er 16 mal 16bit PWM (PulseWeitenModulation) fähig ist, auf deutsch, er kann sehr schnell an und aus schalten (in 4096 Schritten einstellbar). Wir können also entweder direkt kleine LED’s direkt anschliessen oder den CHip komplett Zweck entfremden um High Power LED’s zu dimmen.

LED KSQ Treiber:
Was nützt uns die Möglichkeit LED’s zu dimmen wenn man sie nicht an schliessen kann? Nix, also wurden auch passende Konstantstromquellen gesucht und gefunden. Bei der Wahl der anzuschliessenden KSQ ist wichtig das Sie PWM fähig ist UND einen Dim Ausgang/Anschluss hat an dem eine Spannung anliegt. Ob die KSQ geeignet ist lässt sich einfach herrausfinden indem man ein Kabel an den DIM anschluss lötet/steckt und dann an Ground/Minus hält. Wenn die angeschlossenen LED’s so an/aus zu schalten sind, können wir die KSQ nutzen, wenn nicht -> Schade…
Um das suchen und testen ein wenig einfacher zu machen kann man Erweiterungsbausätze mit Passenden Chips von 100-1200mA dazu bestellen. Auch diese Kaufe Ich nach Bedarf in größeren Stückzahlen ein und gebe die Einzelkomponen weiter.

PH:
Eine wichtige Sache, grade im Süßwasserbereich ist die Steuerung und Reglung des PH Werts über CO². Leider ist da noch keine möglichkeit gefunden worden diese Benutzerfreundlich selber zu bauen. Da es für mich aber auch eine große wichtigkeit hat habe Ich nach fertiglösungen gesucht und diese in dem PH Modul von Atlas-Scientific gefunden. Dieses sehr kleine Modul Miss sehr genau den PH wert und lässt sich leicht automatisch kalibrieren. Ich verwende es selber und die Steuerung kann es auch mit einer kleinen Code anpassung.

EC/Redox:
2 Werte die grade im Salzwasser Bereich sehr wichtig sind. Auch hier kann Ich im moment leide rnur auf die LLösungen von Atlas Scientific verweisen. Ich arbeite dran diese in den Code zu integrieren und an einer besseren Lösung die günstiger wird. Leider brauch dies noch ein paar Wochen.

Ethernet:
Netzwerkzugang fürs AQ? Ok jetzt kommen wir in den Bereich spiellerei, aber es hat einen Interesannten nebeneffekt: Wir könnten alle Einstellungen über eine Webseite konfigurieren. Auch daran wird z.Z. gearbeitet und WAHRSCHEINLICH in 1-2 Monaten ne fertige Lösung präsentiert.

Touchscreen:
Ein Feature für den Nerd in uns… Aber etwas was ebenfalls in Planung ist. Da die Integration allerdings nicht sehr einfach ist, ist dies noch nicht fest im Zeitplan integriert.

 

Wie Ihr seht, es gibt viele Möglichkeiten was man machen könnte. Wer glaubt er hätte ein "Must have" für den Controller der setzt sich bitte mit mir in Verbindung. Evt. wird es dies ja in kürze dann geben.

AquaGrow Platine Basiskomponenten

Die gesammte Steuerung Basiert im Grunde auf Einzelteilen die man in vorgeschriebener Art und weise kombinieren kann um an Sein Resultat zu kommen. Teilweise sind es fertige Stücke die man Stecken oder zusammen löten kann, Teilweise sind es aber auch ganze Platinen wo man die Teile die man braucht drauf fest lötet. Meine ersten Versuche beim Entwickeln sind auf einem Breatboard entstanden und auch wenn Ich es nie versucht habe, so kann Ich mir doch vorstellen das man das Gesammte System auf eben diesen zusammensteckt. Ob es sinn macht ein so großes Steckbrett zu kaufen lasse ich mal im Raume stehen. ;)

Also, aus welchen Komponenten setzt sich der Controller nun zusammen?

Als erstes Natürlich aus dem Microcontroller. Hier ist ein Arduino Mega verwendet wurden. Ich setze zu 90% Arduino Mega2560 R3 wein und Empfehle die auch gerne weiter, es sollte aber auch ein Mega1280 seinen Zweck erfüllen und natürlich alle nachbauten aus dem fernen Osten die Pin kompatibel sind. Hier haben wir auch direkt das erste Problem: Woher bekommen? Die Arduinos die Ich Privat kaufe hole Ich mir fast imme rin China, aus den bekannten Platformen. Da das Porto meist umsonst ist bestelle Ich immer einzeln so 3-4 Wochen bevor ich das nächste Aquarium einrichte. Auf die Art ist dann sogar der Zoll mein Freund und zickt meist nicht rum. ;)

Nächste wichtige benötigte Bauteil ist die Controller Platine. Diese kann man sich natürlich selber auf Lochraster löten, da ich dazu aber zu Faul bin bestelle ich fertige Leiterplatten sobalt über 10 Leute einen Controller bauen möchten. So teilen wir uns die Porto und Herstellungskosten.

Jetzt geht es auch schon an die Einzelteile:
Ich spreche ganz gerne immer von einem Basissystem, welches Grundfunktionen Liefert. Diese habe Ich irgendwann mal an meinen bedürfnissen festgelegt und mit anderen Usern erweitert.

0-10V Steuerung:
Diese ist dazu da um zum Beispiel dimmbare EVG’s zu Steuern. Hierbei wird ein EVG an einen der DIM Kanäle angeschlossen und über Arduino eigene PWM Kanäle mit 0-10Volt versorgt. die 4 Ausgänge kommen einfach daher das der verwendete LM324N 4 ausgänge liefert. Wer auf diese Dimmung verzichtet kann auch Handelsübliche PC Lüfter hier anschliessen um im Sommer das Wasser zu kühlen.

Wassertemperatur:
Ein wasserdichter Sensor, nen Widerstand, mehr braucht es nicht und wir wissen wie Warm unser Wasser ist. Die Steuerung einer Heizung ist da nur ein netter Nebeneffekt der mithilfe von einer Steckdose passiert.
Ähnlich ist auch die Lufttemperatur. Hier wird sogar exakt der gleiche Sensor verwendet, nur nicht Wasserdicht. Wer möchte kann rechnerisch gesehen über 50 Sensoren anschliessen…

Display:
Zur Ausgabe dienen so genannte HD44780 Controller Displays. Diese sind Günstig (ab 2€) und recht einfach an zu Steuern. Für die Grundversion habe Ich mich irgendwann mal auf etwas größere Displays mit 4 Reihen und 20 Zeichen pro Reihe fest gelegt und dadrauf auch meinen Code optimiert. Normalerweise empfehle Ich hier einen EU-Verkäufer da dieser nicht nur die Standart Grün/Schwarzen sondern auch Weisse, Blau/Schwarze und anders Farbige für 8-9€ hat. Leider ist das Porto hier Teurer weswegen auch da gerne gesammelt bestellt wird.

Uhr:
Auf dem Board kommt eine so genannte RTC (Real Time Clock) zum Einsatz. In der Konfiguration im moment läuft diese bis auf 5 Sekunden die Woche genau und sollte doch mal der Strom weg sein hat sie eine Batterie um nach dem Neustart wieder einwandfrei zu funktionieren.

Dosierpumpen für Dünger:
Einfach aber wirkungsvoll: Man nehme einen Transistor, paar Widerstände, eine Diode und schon kann man bis zu 60V Schalten… Die Pumpen bei mir am Aquarium kommen aus Refill-Stationen von Druckertinte, sind so genannte Persikalpumpen und "in der Bucht" ab 10€ zu erhalten. Sie laufen auf 12V, was optimal ist da wir so nur ein Netzteil für die 10V und die Pumpen brauchen. Wer Allerdings möchte der kann auch Pumpen mit anderer Spannung betreiben.

Tastenfeld:
Kein Controller der sich nicht auch bedienen lässt. Die gesammte Steuerung ist darauf ausgelegt dass alles automatiesiert läuft. Ein eingreiffen ist also Im Prinzip nicht nötig. Dennoch gibt es Standartmäßig ein Tastenfeld mit 12 Tasten. Warum so viele? 4 Tasten sind für eine 4-Wege Navigation (Hoch, Runter, Links, Rechts) Reserviert um durch das Einstellungsmenü zu navigieren. 2 weitere Knöpfe sind für Bestätigungen (Enter/Speichern, Cancel/Zurück) vorgesehen. Die verbleibenden 6 Knöpfe sind Frei programmierbar. So ist zum Beispiel ein Reinigungsmodus (Filter, Heizstab, CO2, Lichtsimulationen aus), eine 24Stunden in 24 Minuten Licht-Simulation und Sonderfunktionen zum Anpassen des Lichtes direkt anwählbar. 

AquaGrow Platine Funktionen

Was kann es? Was soll es? Wozu brauch man es?

Naja, die Frage nach dem Sinn einer Aquarienautomatisierung ist nicht wirklich sinnvoll. Hier entscheidet bequemlichkeit über vernumpft. ;)

Der Sinn besteht also einfach darin uns unser Leben leichter zu machen und Dinge ab zu nehmen die uns unser Hobby verschönern. Warum soll man das machen? Grade die tägliche Pflege ist doch der schönste Teil am Hobby. Stimmt, aber warum hat man dann einen Regelheizer dran anstelle das man die Heizung ein und aus schaltet nachdem man die Temperatur kontrolliert hat?

Nachdem dies nun geklärt ist kommen wir zu dem wichtigsten:
Was kann die Steuerung? Also im Prinzip alles was man sich vorstellen kann. Durch die Microcontroller Basis sind wir nur Speicher und kreativitätsbegrenzt…
Dennoch müssen wir unterscheiden zwischen dem was Ich mir vorgestellt habe und dem was überhaupt möglich wäre. Zudem handelt es sich hier immernoch um ein Hobby und Freizeitprodukt was leider sehr viel Geld und nochmehr Zeit kostet.

Um den Umfang ein wenig Deutlicher zu machen habe Ich mir einmal erlaubt Produkte bzw kauflösungen zu listen und die Version von mir gegenüber zu stellen.

 

Computertyp ProfiLux II ProfiLux 3.1A  IKS AQUASTAR BlueTWILED 2.x AquaGrowControl  AquaGrowControl
(Teilausbau)
AquaGrowControl
(Vollausbau)
AquaGrowControl
(Minimal)
Anschaffungspreis/ Teilekosten 170 € 319 € 369 € 99 € 63,50 € 170 € 250 € 51,50  €
Kanäle Beleuchtungs-
steuerung
8 16 Optional 12 (Nur LED mit max 1200mA, 30V) 16 (PWM, Zusätzliche Treiber nötig) 8 (Nur LED, max 1200mA,30V)
16 möglich (3€ Stück zusätzlich)
16 (Nur LED, max 1200mA,30V)
(In Planung max 2A, 60V)
6 (8bit, 256 Stufen)
1-10V- Schnittstellen 4 (Optional 8) 6 (Optional 20) Optional 4 4 4 4
Ansteuerbare Schaltsteckdosen 24 48 16 30+ ink. 8 Steckdosen ink. 8 Steckdosen ink. 4Steckdosen
Display 16×2 20×3 20×2 16×2 20×4 20×4 20×4 Optional
Dosierpumpen-
steuerung
Optional 5 (erweiterbar) 5 (Inklusive Pumpen) (10€ Stück) 5 (Inklusive Pumpen) 5 (erweiterbar)
Strömungspumpen-
steuerung
Optional √
Webserver Optional Optional Optional Optional
pH-Wert Optional Optional Optional √ (Ohne Sonde) √ (Ohne Sonde) Optional
Wassertemperatur Optional Optional √
Redox-Potenzial Optional Optional Optional Optional Optional √ (Ohne Sonde) Optional
Leitwert Optional Optional Optional Optional Optional √ (Ohne Sonde) Optional
Sauerstoff Optional Optional Optional Optional Optional Optional Optional
Lufttemperatur Optional Optional Optional √
Sensoren im
Lieferumfang
Wassertemperatur Platine Wassertemperatur,
Platinentemperatur
Wassertemperatur,
Platinentemperatur
Wassertemperatur,
Platinentemperatur
Wassertemperatur,
Platinentemperatur
Tag/Nacht
Simulation
√
Mondphasen-
simulation
√
Bluetooth Optional Optional Optional

Wie man sieht unterscheiden sich umfang und und Leistung der einzelnen Systeme sehr stark. Wenn man mal auf den Preis schaut findet man schnell herraus das gekaufte Systeme viel zu teuer sind! Aus dem Grund habe Ich zusammen mit einigen Usern von Flowgrow.de und später auch Nanoriffe.de die AquaGrowControl entworfen und möchte euch zeigen wie, wo Ihr die Teile bekommt um Sie nach zu bauen.

Bevor hier ein falsches Bild entsteht:
Ich möchte das System weder in einzelteilen noch im gesammten verkaufen und damit Gewinn machen. Auch werde ich kein fertiges System anbieten. Einzige was Ich mache ist Sammelbestellungen zu organisieren, Einzelteile in größeren Stückzahlen beschaffen und weiter zu leiten. Ich verkaufe weder Geräte im Sinne der ElektroG noch bringe Ich sonstige Bauteile als erster in Umlauf! Ich bin kein Gewerbetreibender (nicht mal Kleingewerbe) und verkaufe auch nicht meine Arbeitskraft. Ich hege und pflege dieses Projekt als ein Hobby und entwickel einzig und alleine den Quellcode (Mittlerweile auch mit Unterstützung von Timo aus dem Nanoriffe Forum) für die Steuerung und bringe diesen in umlauf.

AquaGrow Platinen Aufbau

Hier möchte Ich euch einen kleinen Überblick geben was auf euch zukommt wenn Ihr euch an einer Sammelbestellung beteiligt und euch die Angst vor dem Aufbau nehmen.

Bitte beachtet das der Umgang mit Strom gefährlich sein kann und nur unter aufsicht oder mit Fachwissen erfolgen sollte. Besonders der Umgang mit Schaltrelays ist gefährlich. Hier wird mit 230V hantiert und wie ich immer so gerne sage:

Immer dran denken: Strom ist böse, kann kribbeln und Fische mögen keine Lagerfeuerromantik!

Aber wie geht es nun Los: Als erstes solltet Ihr euch den Arbeitsplatz einrichten, Lötkolben, Zinn, Pinzette (Antistatisch), Seitenschneider und Multimeter bereit legen.

Danach geht es los mit dem Einlöten der Bauteile. Ich fange mit den Widerständen an. Zuerst die 22K wie in dem ersten Bild, dann die  1K links und rechts sowie bei Iref, als letztes  die 10K zwischen die 22K und 4,7K rechts bei R1-R3.

 2013-05-28 16.58.102013-05-28 16.58.392013-05-28 17.41.562013-05-28 17.58.162013-05-28 18.03.372013-05-28 18.25.21

Der letzte Widerstand ist der LCD Ref oben links von 3,3ohm.

Weil das grade so gut klappt kommt in einem noch der Quarz rein (das kleine Silberne) und auf die Rechte Seite bauen wir noch die Dioden ein. ACHTUNG!!! Achtet auf die richtige Polung. der silberne Streifen muss mit dem auf der Platine überein stimmen.

Das war der erste Zeitpunkt das Ich die Platinen umgedreht habe und alles durchgelötet. Wer natürlich möchte kann auch jeden Widerstand einzeln einbauen.

Wenn wir uns dann warm gelötet haben machen wir mit dem nächsten weiter: 100nf Widerstände. Hier kommt eine an so ziemlich jeden IC, also c8,c7,c6,c13,c5 (Uhrzeigersinn ;) ). C14 und C15 bleiben leer. Die sind für nen evt späteres update und extra Spannungsversorgung (der kleine dazwischen), wird aber erstmal garnicht bestückt.

2013-05-28 20.01.102013-05-28 20.39.16

 

Die letzte Aktion in dieser runde werden die IC’s sein: Steckt ie nach Beschriftung auf und achtet dabei auf die Kerben. Bitte nicht falsch rum auflöten. ;) Man kann vorher die Beinchen leicht auf der Tischkante biegen damit Sie einfacher rein gehen. Der Sockel ist für den TLC5940, da der Optional ist löte Ich nur immer nen Sockel ein.

Wer schlau ist macht jetzt mit den Jumpern weiter. die sind noch relative klein und sollten eingelötet werden solange die noch auf dem Tisch auf liegen. Nehmt einfach einen der Header und klipped 7x3er ab. Die dann oben bei TLC und DIM einlöten.

Machen wir weiter mit den 10uf Kondensatoren. Auch diese Haben Polung und das lange Beinchen ist + Orientiert euch an der Beschriftung auf dem Board und Lötet alle ein. C12 ist ein 100uf Kondensator und nicht wirklich nötig. Wer größere Lasten an die 10V Schnittelle hängt und Schwankungen feststellt sollte diesen Nachlöten. Ansonsten frei lassen.

Letzte Aktion bevor wir erstmal Kaffee Pause machen sind die 2 Bauteile die fast gleich aus sehen: BC547 und DS18B20. Der BC547 ist ein NPN Transistor und gehört oben zum Display. Der DS18B20 unten Rechts hin bei IC6.

2013-05-29 14.20.172013-05-29 14.54.202013-05-29 15.00.10

So, Kaffee getrunken, hände zittern wieder, dann können wir weiter löten.

Es geht zuerst an den Spindeltrimmer rechts der für den Display Kontrast sorgt. Bitte aufpassen, die Bohrlöcher sind sehr eng, also gefühlvoll einstecken. Wenn wir das geschafft haben können wir auch direckt die Schraubklemmen Links einstecken und dann alles zusammen festlöten. Auch hier aufpassen, die klemmen haben nen 5,08er Raster, die Platine aber 2.54er. Das ist damit, wenn man die Schraubklemmen nicht verwenden möchte, man immer + und – Pole nebeneinander hat. Die Klemme gehört aber so das oben einer leer bleibt und der unterste Pin bei der 12 ist.

Bevor wir nun die Größten Bauteile einlöten fangen wir noch an alle Stecker ein zu löten. Wierum ist eigentlich egal da wir später die Kabel anpassen können. Dann gehts an die TIP122 links. Diese bitte auch nicht falsch rum einsetzen. Achtet auch drauf das sie sich nicht berühren. Im dauerbetrieb können die warm werden und somit sollten sie Luft haben zur Kühlung.

2013-05-30 12.05.22 2013-05-30 13.58.02

Es geht dem Ende zu, aber es kommt npoch ein Lötmarathon: Wir stecken zunächst recht viele Pins in den Arduino (Achtung beim R3 bleiben paar frei) damit wir direkt den richtigen Abstand haben und dann setzen wir vorsichtig die Platine auf um alles zu verlöten. Wer merkt das die Platine leicht ab steht der muss leider auf der Unterseite die Pins der Schraubklemmen über dem 12Volt Jack etwas kürzen.

2013-05-30 13.58.11 2013-05-30 14.34.25 2013-05-30 14.34.43

 

Als letztes müssen wir dann nur noch den Batteriehalter und den Jumper daneben befestigen und wir sollten diesen Schritt geschafft haben. Zum Abschluss aber nochmal ein Bild von einer Platine mit allen Steckern zur einfachen Montage von anderen Komponenten.

(Hier noch in bearbeitung… fortsetzung folgt)

Wenn Ich nix vergessen habe sind wir hiermit FERTIG!

Ich habe was vergessen: Das Keypad. Nun dies ist recht Simpel aufgebaut: Zuerst einmal alle 200ohm Widerstände einstecken, dann die 1K widerstände, Alles verlöten, Tasten einklemmen, Wider verlöten und schon kann der Stecker dran. ;)
2013-06-05 13.44.08 2013-06-05 13.46.22 2013-06-05 13.50.36 2013-06-05 13.57.45

 

Ich wünsche viel Spaß beim Nachlöten und sobalt fragen auftauchen bitte direkt bei mir melden. ;)