Aquariumsteuerung

OP #3320159
Lesenswert?

Hallo erstmal

ich meldete mich an, um Hilfe, Feedback und Vorschläge über mein etwas 
größeres Projekt (an dem ich schon lange Zeit arbeite) zu bekommen. 
Sollte villeicht erwähnen das ich von der Ganzen Programmiererei keine 
zu große Ahnung habe, da es erst mein zweites Programm ist. Was ich vor 
habe ist eigentlich ganz schnell gesagt: es soll ein Deckel für mein 
140L Meerwasseraquarium sein mit folgendem features:

-ATmega 32-16 (8Mhz)
-LCD 4x20
-RTC
-90 VA LED-Licht (10xWeiß,Blau,RGB)
-10 PWM Kanäle (über software)
-Sonnenauf/untergang
-Mondphasen
-Temperaturerfassung des Wassers und der LED (Lüfter)
-Kommunikation mit dem Unterschrank um Pumpen unw. zu schalten
-evtl. Leitwert und PH-Messung
-evtl. bluetoothvervindung zum PC (UART)

und nun gehts schon los. Geplant sind 50 Zeiten pro tag an dem sich das 
Licht ändert. Meine Frage:

z.B: Wenn ich um 10:07

Weiß1   0%
Weiß2   5%
Blau1   10% (je nach Mondphase)
Blau2   7%
usw......

und um 10:12


Weiß1   12%
Weiß2   8%
Blau1   15% (je nach Mondphase)
Blau2   9%
usw......

haben möchte, wie berechne ich -bzw der Controller- welcher "Dimmwert" 
zu vewenden ist um einen vernünftigen Farbverauf hinzubekommen?

ach ja übrigens Programmier ausschlieslich assembler.....

Wäre für jegliche Hilfestellung sehr Dankbar

Grüße
Angehängte Dateien:
Gast #3320191
Lesenswert?

Zum Thema programmieren kann ich dir nicht helfen aber ich möchte dich 
drauf hinweisen das du das ding Extrem dicht verkleiden solltest.

Ich hatte auch ne ähnliche Beleuchtung für mein Becken gebastelt nach ca 
6-7 Monaten war keine einzige LED mehr am brennen

Kontakte komplett zerfressen trotz das es komplett mit Plexiglas 
abgedeckt war und Spritzwasser überhaupt nicht dran kommen konnte.

Die Luftfeuchtigkeit und der erhöhte Salzgehalt haben mir die LED 
zerstört

meine jetziger aufbau hebt dagegen schon länger ohne Probleme (LED Chips 
komplett mit Silikon versiegelt bis zur LED ran inklusive 
Anschlussdrähte und mit Epoxidharz noch drüber gepinselt)

mfg
OP #3320227
Lesenswert?

Danke für den Tipp

Habe den Deckel momentan mit T5 Röhren bestückt.... bis jetzt gehts...
da ich als Spengler Arbeite  hab ich zugänglichkeit zu Dicht und 
Klebemassen
die eigentlich im Flugzeugbau verwendet werden, mit diesen ist es 
möglich das Ding von Untenher auf jeden Fall Dicht zu bekommen.... und 
zum Metall:
die Trägerplatte für die LED´s ist aus 3mm Alu gefräßt, und da ich sehr 
viel mit Aluminium zu tun hab kann ich beruhigt sagen, wenn die 
Legierung passt passiert da gar nix weiß nicht ob du ***** kennst, die 
kommen aus östereich, machen unter anderem Fasaden und Dächer in 
Küstengebieten..... von daher müsste es eigentlich funktionieren......

Gruß
Gast #3322348
Lesenswert?

Andreas Günther schrieb:
> Meine Frage:
>
> z.B: Wenn ich um 10:07
>
> Weiß1   0%
> Weiß2   5%
> Blau1   10% (je nach Mondphase)
> Blau2   7%
> usw......
>
> und um 10:12
>
> Weiß1   12%
> Weiß2   8%
> Blau1   15% (je nach Mondphase)
> Blau2   9%
> usw......
>
> haben möchte, wie berechne ich -bzw der Controller- welcher "Dimmwert"
> zu vewenden ist um einen vernünftigen Farbverauf hinzubekommen?

Das kommt darauf an, wie der Verlauf genau ist. Meist sind Farbverläufe 
als Lookup-Tables im Mikrocontroller realisiert weil die Verläufe nicht 
linear sind. Wie das bei dir ist weiß nicht nicht. Irgendwie wirst du ja 
auf die Dimmwerte kommen. Ansonsten für lineare Interpolation Stichwort 
Bresenham Algorithmus.
Fürs Fading http://www.mikrocontroller.net/articles/LED-Fading
OP #3323655
Lesenswert?

Danke für die antwort....

den Artikel http://www.mikrocontroller.net/articles/LED-Fading
hab ich mir schon mehrmals durchgelesen, aber werde aus dem C-Code nicht 
schlau. Habe eine 8bit PWM wollte diese auf 10bit erweitern aber bei 256 
Schritten bleiben. Und das nächste ist, das ich von Tabellen noch keine 
Ahnung hab und ich ja irgendwie mitten in der Tabelle 10bit Werte 
rauspicken muss....
#3323881
Lesenswert?

> z.B: Wenn ich um 10:07
> Weiß1 0%
> Weiß2 5%
> Blau1 10% (je nach Mondphase)
> Blau2 7%
> usw......
> und um 10:12
> Weiß1 12%
> Weiß2 8%
> Blau1 15% (je nach Mondphase)
> Blau2 9%
> usw......
> haben möchte, wie berechne ich -bzw der Controller- welcher "Dimmwert"
> zu vewenden ist um einen vernünftigen Farbverauf hinzubekommen?

Definiere 'vernünftig'.

In erster Linie würde ich mal so vorgehen.
von 10:07:00 bis 10:12:00 sind es 5 Minuten oder 300 Sekunden.

In diesen 300 Sekunden sollen sich die Werte ändern für
1
Weiß1     12%    (12 - 0)
2
Weiß2      3%    (8 - 5)
3
Blau1      5%    (15 - 10)
4
Blau2      2%    (9 - 7)
d.h. vom Begin (10:07:00) an gerechnet, ist zum Zeitpunkt x (gerechnet 
in Sekunden ab 10:07:00) jeweils einzustellen (wobei x von 0 bis 300 
läuft)
1
  weiß1 =   0 + x * 12 / 300
2
  weiß2 =   5 + x * 3 / 300
3
  blau1 =  10 + x * 5 / 300
4
  blau2 =   7 + x * 2 / 300
5

6
oder allgemeiner
7

8
  wert_zum_zeitpunkt_x =  Wert am Intervallanfang + x * werte_differenz / zeitdifferenz_des_intervalls
d.h. das sind erst mal lineare Interpolationen. Mittels Timer und ISR 
wird eine Uhr realisiert, mit der aktuellen Uhrzeit geht man dann in die 
Zeittabelle. Aus dieser Tabelle kriegt man den Anfangszeit, die Endzeit 
sowie die jeweils gültigen Heligkeitswerte am jeweiligen Anfang/Ende des 
Intervalls, zwischen denen dann linear interpoliert wird. Ein Update pro 
Sekunde ist wohl ausreichend.
Mal sehen, ob da was annehmbares rauskommt, ehe man sich etwas 
Komplizierterem zuwendet.


> ach ja übrigens Programmier ausschlieslich assembler.....
mein Beileid.
#3326069
Lesenswert?

Na einwandfrei..... so vesuch ich das mal. Danke
Naja Assembler is das einzige was mittlerweile so halbwegs klappt und 
nach knapp 3000 Zeilen steig ich bestimmt nicht mehr um ;-) Das 
Sekündliche Update werde ich aber wahrscheinlich auf eine Halbe Sec 
herabsetzen da ich gerade bei "sonnenauf- bzw. untergang" das rot 
ziemlich schnell auf meinetwegen 80% Dimme.... mal sehen...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren