Hallo zusammen!
Nicht schon wieder ein Moodlight? Dieses ist siecherlich etwas größer
als das, was bisher hier in der Richtung zu finden ist. Es ist bereits
die vierte Version und eigentlich mein erstes Controller-Projekt. Auch
mein erstes mit einem Echtzeitbetriebssystem. Ich habe die letzten
Wochen versucht, es möglichst weit voran zu treiben, da ich bald keine
Zeit mehr für sowas haben werde. Ich stelle das Gesamtprojekt gern im
"Geben-und-nehmen"-Gedanken zur Verfügung (CC-Lizenz) und freue mich
wenn es jemanden weiter bringt. Ich hoffe das geht auch mit den Leuten
in Ordnung, von denen ich mir Anregungen geholt habe (siehe ganz unten).
Alle Farben sind mit 16 Bit-PWM geregelt und werden über TP-Kabel und
RJ45-Buchsen verteilt (nicht in den Switch stecken ;-) Ich bin auf die
Idee gekommen, weil die Kabel einfach billig sind und eine einfache
Steckverbindung bieten. Für ein ganz paar LEDs kann man auch direkt den
Saft mitliefern. Im Anhang findet sich auch ein eagle-Projekt für ein
anschliessbares Modul. Da sind in der letztendlichen Größe natürlich
keine Grenzen gesetzt und eine tatsächliche Raumbeleuchtung sollte damit
gut möglich sein.
Alles in allem kann man, glaube ich, beinahe sämtliche Wünsche - von
Saunabeleuchtung bis Stroboskop - durch Voreinstellungen (Presets)
erschlagen. Derer kann man 20 pro Modus in einem externen EEPROM
speichern.
Es gibt sechs verschiedene Modi:
* Fixed
- 20 Presets (22 bytes RAM, 440 bytes ROM)
+ Titel
+ Farbe
* Fade
- 20 Presets (326 bytes RAM, 6520 bytes ROM)
+ Titel
+ Geschwingkeit
+ 25 Farben
- je Farbe
+ aktiv (j/n)
+ Farbe (HSV)
+ Dauer
+ Übergangsdauer
+ Übergang
* Random (basierend auf akt. Timestamp)
- 20 Presets (35 bytes RAM, 700 bytes ROM)
+ Titel
+ Grundfarbe
+ Variation der Farbanteile (1 - 100%)
+ feste/variable Farbanteil
+ min/max Dauer
+ min/max Übergangsdauer
+ Übergang
* Temperatur
- 20 Presets (267 bytes RAM, 5340 bytes ROM)
+ Titel
+ 25 Farben
- je Farbe
+ aktiv (j/n)
+ Farbe
+ Temperatur
+ Übergang
* Tageszeit
- 20 Presets (316 bytes RAM, 6320 bytes ROM)
+ Titel
+ 25 Farben
- je Farbe
+ aktiv (j/n)
+ Farbe
+ Uhrzeit
+ Übergang
* Analogeingang
- Kanalzuweisung RGB oder HSV
Es gibt ein Menü, dessen Struktur gänzlich im Flash liegt:
+ Mode [ Fixed | Fade | Random | Temperature | TimeOfDay | Analog in ]
+ Settings
| + Output
| | + Linearization [ On | Off ]
| | + Brightness
| | + Source [ Fixed | Analog in (Ch4) ]
| | + Set [ 1 - 100% ]
| + Display
| | + Contrast [ 0 - 100% ]
| | + Backlight
| | + Mode [ off | first keypress | on ]
| | + Brightness
| | | + Minimum [ 0% to (< Maximum) ]
| | | + Maximum [ (> Minimum) to 100% ]
| | + Duration
| | + On demand [ 0.1 - 60.0s ]
| | + Fade in [ 0.0 - 60.0s ]
| | + Fade out [ 0.0 - 60.0s ]
| + Date/Time
| | + Set [ Date, Time ]
| | + Time format [ 24 h | 12 am/pm ]
| | + Date format [ DD.MM.YYYY | MM/DD/YYYY ]
| + Temperature
| | + Sensor
| | | + Browse [ Edit ]
| | | + Auto-detect
| | | + Clear all
| | + Scale [ Kelvin | °Celsius | °Fahrenheit ]
| + Analog reference [ 5V (VCC) | 2.56V (internal) ]
| + Configuration
| + Save
| + Load
| + Defaults
+ System
+ Info
+ Digital in/out
+ Analog in
+ Temperature
+ Internal Flash
+ Internal EEPROM
+ External EEPROM
Bei jedem Modus wird dann noch ein Menü eingeblendet, das etwa so
aussieht:
Preset
+ Colors
| + Browse [ Edit | Copy to | Swap with | Clear ]
| + Clear all
+ Title
+ Load
+ Save
+ Save as
+ Clear
+ Clear all
Einiges hiervon steht auch in der (enthaltenen) TODO.txt drin. Ebenso
die Tastenbelegungen, einige andere Hinweise und Fotos. Ich habe es nur
herauskopiert, um (voller Stolz g) darzustellen, was das Gerät kann.
Ich habe insgesamt viel gelernt, aber auch sehr sehr... sehr viel Zeit
dabei verbrannt und werde versuchen, das Ganze auch mal in ein Gehäuse
zu packen und ordentliche Batterien von LEDs anzuschliessen. Irgendwohin
muss das Weihnachtsgeld ja ;-) Machts gut
DANK AN:
- Karl Heinz Buchegger: Funktion zur Erzeugung von Zufallszahlen mit
Obergrenze.
(Beitrag "zufallszahl mit rand() erzeugen")
- Benedikt K.: Basis für Umrechnung von HSV zu RGB
(Beitrag "Re: HSV RGB Led Dimmer, C Code & Video & Doku")
- Peter Dannegger (danni@specs.de): Zeit- und Datumsumrechnung
(Beitrag "Berechnung Datum + Uhrzeit + Sommerzeit")
- mikrocontroller.net AVR-GCC-Tutorial (u.A Einführung in HD44780)
- Peter Fleury: i2c Grundfunktionen
(http://jump.to/fleury)
- Hannes Mayer: Grundlegende Infos zum Ansprechen von Atmel i2c-EEPROMs
(http://www.captain.at)
- Wikipedia und viele andere, von denen ich mir Anregungen geholt habe
Ich muss sagen :"TOP" !!
Dein Projekt ist mega geil und es lässt kaum wünsche offen.
(Das ist genau das was ich immer gesucht habe)
Weiter so und großes LOB für deine MÜHE!
Hallo Frank,
ich hoffe Du liest noch mit, oder hast die E-Mail-Benachrichtigung
aktiviert.
Steht das Modul zufällig noch zum Verkauf?
Oder ist vielleicht sogar noch eine Fertigung von Platinen geplant?
Da würde ich mich dann anschließen.
Noch etwas anderes:
Warum ist auf den Treibermodulen noch ein Schmitt-Trigger drauf? Quasi
als Treiber, um Leitungsverluste aufzuholen? Könnte man bei kurzen
Kabelwegen doch weglassen, gell?
Viele Grüße
Marc
Hey Marc,
wie im ersten Post erwartet, konnte ich durch private Gründe das Projekt
bisher nicht weiter verfolgen. Das Komplettpaket steht zum Verkauf.
- Moodlight Platine mit Controller und Display
- eine neue, nicht aufgebaute Platine (Prototyp! - Display-Beleuchtung
verpolt anschließen; hatte ich in den hier hoch geladenen Layouts
korrigiert, sonst 100% identisch)
- 2 LED Module mit je 13x Seoul P5 und stromgeregelter Ansteuerung. (330
mA je Farbe). Die LEDs sind mit verdünntem (!) ArticSilver
Wärmeleitkleber befestigt. Das 50:50 Mischverhältnis mit ArticSilver
Wärmeleitpaste soll laut Hersteller die Möglichkeit bieten die LEDs
wieder entfernen, wenn gewünscht. Ich habe das natürlich nicht getestet
;-) Laufzeit bisher ca 100h (also quasi nichts).
- 2 maßgefertigte Strangkühlkörper, noch originalverpackt (von Fischer
Elektronik)
- 7 unbestückte doppelseitige Ansteuerungsplatinen (unbestückt, fertig
gebohrt), wie auf dem Modulfoto zu sehen. Sie sind nicht zum
Durchschleifen gedacht und enthalten deswegen auch keine
Schmitt-Trigger. Layout und Schaltung (einfach...) kann hänge ich hier
an.
- 1 Schaltnetzteil MeanWell SP-100-48 (neuwertig), (sollte evtl. durch
low ESR-Elkos gestützt werden, da die Schaltfrequenz zu hören ist... ;-)
- 2 Kabelsätze zum Verbinden der LEDs (je 10m)
- 1 kleines Testmodul mit 3x P5 ohne Ansteuerungselektronik; mit
Silikonfolie befestigt, bish. Laufzeit etwa 500h
- Debug-Platine mit LEDs für den DIO-Port, AD-Eingang-Testplatine mit
drei Trimmern
- sonstige Kleinteile die ich noch hier finde ( habe noch neue größere
Taster für eine neue Tastatur etc)
Man wäre ziemlich schnell am Ziel und könnte die Firmware nach
persönlichem Gutdünken anpassen :-)
Interesse -> spam.frank@ich-war-hier.de!
===
Die Schmitt-Trigger dienen der Signalaufbereitung bei langen Leitungen -
kann man je nach Einsatzzweck auch weglassen. Die Module waren ja zum
Durchschleifen gedacht, da macht eine Aufbereitung schon Sinn.
Zu den Leitungstreibern auf dem Controller-Board: Das Gerät ist durchaus
für eine ambitionierte Raumbeleuchtung gedacht. Unterschätze nicht die
Kapazität einer längeren Leitung und den Einfluss auf das Signal. Bei
einem dauerhaften Leitungsschluss werden - sofern die Widerstände es
nicht schon verhindern - die billigen Treiber beschädigt, nicht der
teure Controller. Zudem ist das Signal so sauberer, belastbarer und die
einzelnen Leitungen unabhängig.
Bei Fragen usw. ich gucke hier noch ab und an hinein.
Was in der Zwischenzeit geschah: Ich habe mir eine Platine bei Frank
geordert und bin nun fleißig am Bestücken und Programmieren.
Folgende Frage habe ich in der Zwischenzeit gestellt:
Du hast ja für die Module eine 48V Stromversorgung vorgesehen. Warum so
eine hohe Spannung? Was müsste ich anpassen, um bspw. eine 12 V
Stromversorgung verwenden zu können? Doch nur die Widerstände oder, den
Transistoren sollte das ja egal sein.
Diese Antwort kam von Frank:
Die Spannung hatte ich aus folgenden Gründen vorgesehen:
- Es sollten leistungsstarke Module möglich werden, ohne
dass der Strom "durch die Decke schiesst". So kann selbst
bei den 50W Modulen bei 10m Leitungslänge gut mit billigem
0,5mm2 Kabel leben.
- Stromregelung funktioniert nur (vernünftig) wenn man LEDs
nicht auf irgendeine weise versucht parallel zu schalten.
Deswegen müssen möglichst viel in Reihe geschaltet werden.
- Betriebsspannung sollte eine Standardspannung werden, die
sich kostengünstig aus Industrienetzteilen beziehen lässt.
- Die Spannung musste gut zu einem Vielfachen der Uf der
LEDs passen um die Verluste an der Mosfets, die hier ja
als Vorwiderstände agieren und Leistung umsetzen, gering
zu halten.
Daraus kannst du im Prinzip schon ableiten was du anpassen
musst: die Anzahl der LEDs unter Beachtung der größten Uf
anpassen. Incl. aller anderen Abfälle (für den Strommesswider-
stand, Luft für den Mosfet, Leitungsverluste) sollte die
Summe 2V unter der Versorgungsspannung bleiben.
Je nach LEDs hat ja meist die blaue LED die größte Vorwärts-
spannung. Nehmen wir an die beträge bei If=20mA 3,5V. Mit
drei Stück in Reihe würdest du auf 10,5V kommen. Addiere
den Spielraum von 2V und du bist auf 12,5V. Das lässt sich
mit Schaltnetzteile durch den Einstelltrimmer meist noch
gut realisieren. Du erkennst aber auch, dass der Anteil
der "genutzten" Spannung bei höher werdender Betriebs-
spannung besser werden wird.
Den Strom durch die LEDs musst du mit dem Strommesswider-
stand am Source des Fets einstellen. Hier werden 0,55
bis 0,6V abfallen, dann zieht der Transistor das Gate
des Fets Richtung Source - der Strom pendelt sich auf
den gewünschten Wert ein. Welcher Strom das sein wird
kannst du dir mit dem Ohmschen Gesetz ausrechnen. Problem
hierbei ist, dass auch die Schwellspannung der Transistoren
von Charge zu Charge und Modell zu Modell unterscheiden.
Wenn du ausprobierst, welche Widerstände passen, fange
also zuerst mit einem - rechnerisch - etwas zu großem
an und Messe nach. Du solltest bedenken, dass es viel
besser ist etwas Luft nach oben zu lassen, als das letzte
mA herauszuholen, was laut Datenblatt der LEDs möglich
wäre. Du gewinnst Betriebssicherheit da Bauteiltoleranzen
kein Problem mehr wären, die Lebensdauer der LEDs ver-
längert sich während die Helligkeit, z.B. bei 15 statt
20 mA, nur unwesentlich ändern wird.
Jetzt hätte ich noch eine Frage:
Hab jetzt soweit alles zusammengelötet und versucht den Controller zu
programmieren. Leider erschließt sich mir noch nicht so ganz, welche
Fuse-Bits gesetzt werden müssen. Hättest Du da noch einen heißen Tipp
für mich?
Grüße
Marc
Fuse Bits bleiben an sich alle in Standard-Stellung. Anpassen musst du:
* Mega103 Compatibilitätsmodus deaktivieren
* Clock-Source anpassen (externes Quarz)
Ich hänge ein Bild an, wo zu erkennen ist, wie ich diese Fuses gesetzt
habe.