Forum: Projekte & Code AVR-Moodlight mit 6 Modi (ATmega128, FreeRTOS)


von FrankB (Gast)


Angehängte Dateien:

Lesenswert?

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

von FrankB (Gast)


Angehängte Dateien:

Lesenswert?

Bild vom Entwicklungsboard

von FrankB (Gast)


Angehängte Dateien:

Lesenswert?

Mögliche Übergänge zwischen zwei Farben.

von st2000 (Gast)


Lesenswert?

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!

von FrankB (Gast)


Angehängte Dateien:

Lesenswert?

Falls du Interesse hast: Zwei neue 40cm Kühlkörper (für 13x Seoul P5) 
stehen zum verkauf. Die beiden fertigen Module ebenfalls...

von FrankB (Gast)


Angehängte Dateien:

Lesenswert?

Und da fällt mir gerade ein: Ich hielt im März darüber noch eine kurze 
Präsentation. (siehe Anhang) Dem Dozenten hats auch gefallen :-)

von Marc (Gast)


Lesenswert?

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

von FrankB (Gast)


Angehängte Dateien:

Lesenswert?

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.

von FrankB (Gast)


Angehängte Dateien:

Lesenswert?

Siehe Anhang

von Marc S. (m_arc)


Lesenswert?

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

von FrankB (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Frank (Gast)


Lesenswert?

Das Originalgerät incl. LEDs ist nun bei ebay zu ersteigern:
http://cgi.ebay.de/AVR-Moodlight-Stimmungslicht-26-Seoul-P5-RGB-LEDs-/250716917769

von Nippey (Gast)


Lesenswert?

Nanu? Angebot schon wieder beendet?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.