OpenDCC - Raumlichtsteuerung

    No english page available - this feature is depracted, anyway!
    Achtung: ab V0.23 nicht mehr enthalten, im Quellcode auskommentiert!

Details zur Software, Raumlichtsteuerung über DMX

    Langsam neigt sich der Tag dem Ende zu, am Horziont verfärbt sich der Himmel rot und mit dem Beginn der Nacht gehen auf der Modellbahn nach und nach die Lichter an. Für diese optische Illusion braucht man neben einer Unzahl beleuchteter Häuser, Straßenzüge, Bahnsteige und Autos auch die Kontrolle des Raumlichtes von der Modellbahnsteuerung aus. Bei den Decodern ist passende Schaltung für die Modellbahn beschrieben, um das Licht in den Häusern anzusteuern.

    Mit OpenDCC und handelsüblichen DMX-Dimmern gelingt diese Raumlichtsteuerung sehr preiswert: Zentrale und 4 Lichtkanäle kommen etwa auf 120 Euro, wobei die Zentrale natürlich noch mehr kann als das Licht steuern.
    Mittlerweile ist diese Ansteuertechnik auch als Einzeldecoder verfügbar. So kann auch mit anderen Zentralen das Licht gesteuert werden. Ab Version 0.23 entfällt die DMX-Ansteuerung in der Zentrale.

Funktionsweise

    DMX erlaubt die Ansteuerung von bis zu 512 Leuchten (Kanäle), wobei jedem Kanal ein Helligswert von 0 bis 255 zugewiesen werden kann. Das DMX-Signal wird über eine einfache 2-Draht Verbindung von der Zentrale zum ersten Empfänger, von dort weiter zum nächsten Empfänger usw. gesendet. OpenDCC unterstützt z.Z. 16 DMX-Kanäle; das ist aber leicht änderbar (siehe config.h).

    In der Zentrale OpenDCC werden für die DMX-Ansteuerung 64 virtuelle Zubehördecoder (sog. Accessory Decoder gemäß DCC) definiert. Diese haben wie auch reale Decoder eine Adresse, unter der sie angesprochen werden und sogenannte Configuration Variablen (CV), mit denen sich die Eigenschaften des jeweiligen virtuellen Decoder einstellen lassen. Geschaltet wird so ein virtueller Decoder dann ganz normal mit den üblichen Befehlen, wie z.B. Signal rot oder grün.

    Für die Lichtansteuerung gibt es diese virtuellen Decoder (DMX-CTRL) mit folgenden CVs:

    CV513DMX-Kanal, auf den dieser Decoder wirkt;
    Wertebereich 0..15
    CV514Helligkeitswert, der eingestellt werden soll;
    Wertebereich 0..255
    CV515Zeitdauer (unterer Teil, Erläuterung s.u.); Einheit 0,1s
    CV516Zeitdauer (oberer Teil, Erläuterung s.u.); Einheit 0,1s

    CV515 und CV516 bilden zusammen die Zeitdauer, die vergeht, bis der in CV514 eingestellte Helligkeitswert erreicht wird. Die Zeitdauer errechnet sich wie folgt:
      Zeit [s] = (CV516 * 256 + CV515) * 0,1
    Beispiel: CV516 = 1; CV515 = 44; Zeitdauer ist dann 30s.

    Mit diesen DMX-CTRLs lassen sich nun also beliebige Dimmvorgänge definieren. Sinnvollerweise legt man Licht an und Licht aus auf zwei aufeinander folgende virtuelle Decoder, damit kann dann ganz einfach mit "Signal rot" und "Signal grün" das Licht in dem zugewiesenen DMX-Kanal langsam an- bzw. abgeschaltet werden.
    Natürlich ist es auch zulässig mehrere DMX-CTRL auf den gleichen DMX-Kanal wirken zu lassen, der jeweils zuletzt betätigte Decoder wirkt. Das Licht wird immer von der zum Zeitpunkt des Schaltens eingestellten Helligkeit mit der angegebenen Zeitdauer zum neuen Helligkeitswert gedimmt wird.

Macro Progammierung

    Ein Dämmerungsverlauf erfordert ein genau ausgeklügelte Folge solcher Dimmvorgänge. Das Raumlicht muß beginnend an einer Seite des Raumes langsam runter gefahren werden, dann setzt das Rot der Dämmerung ein und wird langsam dunkler, zugleich beginnt sich der Himmel dunkelblau zu färben. Man braucht also mehrere verschiedene Dimmvorgänge, die dann zu der jeweils eingestellten Zeit gestartet werden.

    Hierzu gibt es in OpenDCC eine weitere Art von virtuellen Decodern, den DMX-MACRO-Decoder. Jeder DMX-MACRO-Decoder arbeitet nach seiner Betätigung eine definierbare Liste von DMX-CTRL Betätigungen zu programmierbaren Zeiten ab. Eine solche Liste enthält 16 Einträge. Diese Liste wird wie oben über CVs programmiert.

    CV1DMX-CTRL, der betätigt werden soll.
    Wertebereich: 0=Eintrag ist ungültig
    1..32: Nummer des DMX-Ctrl+1
    CV2Zeitpunkt, wann betätigt werden soll.
    Wertebereich: 0=254: Zeit ab Macroaufruf in s
    255: reserviert
    CV3- " - CV4- " -
    :- " - :- " -
    CV31- " - CV32- " -


    Durch das einfach Schalten dieses Macro Decoders kann nun die ganze programmierte Sequenz gestartet werden. Für das Steuerprogramm (z.B. Traincontroller) genügt ein einzelner Schalter, welcher z.B. von Fahrplan aus gesteuert wird, um das Raumlicht in die Nacht zu steuern bzw. umgekehrt es wieder Tag auf der Modellbahn werden lassen.

Adress-Zuordnung der Lichtsteuerung

    Damit OpenDCC weiß, welche Decoderadressen real (d.h. auf dem Gleis) sind oder in der Software auf DMX übersetzt werden sollen, gibt es im EEPROM eine Basisadresse, ab dieser Adresse werden Weichenstellbefehle (accesssory commands) auf die o.g. virtuellen Decoder umgelenkt. Diese Basisadresse ist per config.h oder als Sonderoption 03 (low byte) und 04 (high byte) einstellbar.

    Die Normalkonfiguration ist wie folgt eingestellt:

    Basisadresse: 900
    Anzahl Macro Decoder: 2 (d.h. es gibt 4 Listen)
    Anzahl DMX Decoder: 64 (d.h. es gibt 32 Zubehördeocder, jeweils rot/grün)

    Damit bewirkt der Stellbefehl "Adresse 900 - rot" das Macro 0 (es wird Nacht), der Stellbefehl "Adresse 900 - grün" startet Macro 1 (es wird Tag). Die Adresse 901 steuert Macro 2 und 3 (sind z.Z. nicht belegt), Adresse 902 fortfolgend steuern dann die einzelnen DMX-Kanäle direkt an.

Beispiel: Raumlichtsteuerung Modelleisenbahnfreunde Mühldorf


    Auf dem obigen Raumplan sieht man die Anlage und schematisch die installierte Beleuchtung und die Zuordnung zu den DMX-Kanälen. DMX 0,1,4,5 steuern die großen Tagscheinwerfer, DMX 2,6 das Morgen- bzw. Abendrot und der Nachthimmel wird von DMX 3,7 angesteuert.

    Helligkeitsverlauf
    Nun werden die gewünschten Helligkeitsverläufe in einer Graphik festgelegt. Daraus ergeben sich die Einstellung für die einzelnen DMX-CTRL Decoder; Hier sind 18 Decoder wie folgt definiert:

    Nr.DMX-KanalHellk.Zeit lowZeit highKommentar
    00 01441dmx 0 off in 40 sec
    102551441dmx 0 on in 40 sec
    21 01441dmx 1 off in 40 sec
    312551441dmx 1 on in 40 sec
    42 01000dmx 2 off in 10 sec
    522551000dmx 2 on in 10 sec
    63 0 500dmx 3 off in 5 sec
    73255 500dmx 3 on in 5 sec
    84 301441dmx 4 off in 40 sec
    942551441dmx 4 on in 40 sec
    105 301441dmx 5 off in 40 sec
    1152551441dmx 5 on in 40 sec
    126 01000dmx 6 off in 10 sec
    1362551000dmx 6 on in 10 sec
    147 0 500dmx 7 off in 5 sec
    157255 500dmx 7 on in 5 sec
    1631301200dmx 3 middle in 10 sec
    1771301200dmx 7 middle in 10 sec


    Als letzter Schritt werden nun die Listen für die Übergänge Tag->Nacht und Nacht->Tag zusammengestellt.
    Hinweise: In der Macroliste sind die Adressen der virtuellen Decoder DMX-CTRL um plus 1 versetzt einzutragen, damit der Macroprozessor unbenutzte Einträge erkennen kann; diese sind mit 0 einzutragen. Es gibt keine feste Reihenfolge, die Liste kann beliebig angeordnet sein.

    Macro 0: Tag -> Nacht
    DMX-CTRLZeitKommentar
    0+1 0decoder 0 nach 0s (dmx0 - day east off)
    2+1 5decoder 2 nach 5s (dmx1 - day west off)
    8+1 0decoder 8 nach 0s (dmx4 - day east off)
    10+1 5decoder 10 nach 5s (dmx5 - day west off)
    7+130decoder 7 nach 30s (dmx3 - night on)
    15+130decoder 15 nach 30s (dmx7 - night on)
    13+120decoder 13 nach 20s (dmx6 - red evening on)
    12+142decoder 12 nach 42s (dmx6 - red evening off)
    16+150decoder 16 nach 50s (dmx3 - dimm down night)
    17+150decoder 17 nach 50s (dmx7 - dimm down night)
    Macro 1: Nacht -> Tag
    DMX-CTRLZeitKommentar
    1+117decoder 1 nach 17s (dmx0 - day east on)
    3+112decoder 3 nach 12s (dmx1 - day west on)
    9+117decoder 9 nach 17s (dmx4 - day east on)
    11+112decoder 11 nach 12s (dmx5 - day west on)
    6+122decoder 6 nach 22s (dmx3 - night off)
    14+122decoder 14 nach 22s (dmx7 - night off)
    5+1 5decoder 5 nach 5s (dmx2 - red morning on)
    4+127decoder 4 nach 27s (dmx2 - red morning off)
    4+1 0decoder 12 nach 0s (dmx6 - red evening off)
    7+1 0decoder 7 nach 0s (dmx3 - night on)
    15+1 0decoder 15 nach 0s (dmx7 - night on)

    Durch den Aufruf dieser Macros wird ein jeweils etwa 60 Sekunden langer Übergang Tag -> Nacht bzw. umgekehrt ausgelöst. Man beachte z.B. den Verlauf des blauen Nachtlichtes: mit Beginn der Dämmerung nach 30s wird blau voll angesteuert. Wenn dann das Abendrot vorbei ist, wird das Nachtblau noch etwas weiter abgesenkt.

    Ausblick: Wünschenswert wäre hier natürlich eine Software, welche es erlaubt, die Helligkeitsverläufe zu graphisch einzugeben und am PC zu "simulieren". Die Software soll dann die notwendigen CV's errechnen und an OpenDCC überspielen. Also, lieber Leser, frisch ans Werk! (Hinweis 02.02.2008: für den Decoder wird diese Software kommen!)