DALI

Aus Ethersex_Wiki
Version vom 15. August 2011, 02:00 Uhr von Gvegidy (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

DALI steht für Digital Addressable Lighting Interface und ist ein Bussystem, mit dem vor allem Elektronische Vorschaltgeräte für Leuchtstoffröhren (EVGs) gesteuert, gedimmt und überwacht werden.

Zum Dimmen von EVGs gibt es als Alternative noch den 1-10V-Standard (=Analoge Steuerspannung) und die einfacher als DALI aufgebaute DSI-Schnittstelle (Digital Serial Interface). DALI hat den Vorteil, daß einzelne Leuchten oder Gruppen gezielt über den Bus angesteuert werden können und daß es ein 2-Wege-Bus ist bei dem Lampen so Fehlerzustände etc. zurückmelden können.

2 DALI EVGs

Der Bus

  • Ein Master (Ethersex) und bis zu 64 Lampen an einem Bus
  • 2 Drähte, keine komplexen Topologievorschriften, keine Terminierung
  • Lampen dürfen nur auf Anfrage des Master antworten
  • Master ist für Stromversorgung des Bus zuständig
  • Bus ist Basisisoliert, aber keine Schutzkleinspannung -> eigentlich sollte noch ne galvanische Trennung in den Master
  • 1200 Baud, Manchester-Encoding
  • 22,5V bis 9,5V (16V nominell) sind high
  • 6,5V bis -6,5V (0V nominell) sind low
  • Bus wird von Master normal auf High gehalten
  • wollen die Slaves ein Low-Wert übertragen, schliessen sie den Bus kurz
  • der Master muß den Strom auf 250mA begrenzen

Schaltung

Senden

unisolierte Sende-Stage

  • Es wird der Einfachheit halber 12V verwendet. Wenn man den Verlust durch den Transistor abzieht, kommt man schon sehr nahe an die für den Master minimal erlaubten 11,5V. Da der Slave aber ab 9,5V high erkennen muß, geht das noch wenn die Verkabelung nicht allzu wild ist.
  • Es fehlt jegliche extra Isolierung. Bei einer Störung im EVG oder Kabelriss bei gemeinsamer Verlegung liegt die Schaltung also auf Netzspannung.
  • Der Q2 verbrennt im Fehlerfalle dauerhaft 3W und sollte das abkönnen. Der nächst-passende in meinem Vorrat war der BD679 - der ist sicher etwas überdimensioniert, da tut es auch ein kleinerer (aber eben keiner in SOT23 wie die BC817er)
  • Der C10 ist für die EMV damit die Flanken nicht so steil werden
  • Die D4 zum Schutz gegen Überschwinger etc.
  • Q2 steuert den Strom über den Bus, normal auf High
  • Wenn Q1 durchschaltet, wird der Strom in den Bus abgeschnürt (High am Controllerpin zieht also den Bus auf Low)
  • Wenn über R14 und R15 ca. 220mA fließen, ist die Basis-Emitter-Spannung von Q3 hoch genug daß dieser durchschaltet und die Basis von Q2 abschnürt. Dadurch wird der Strom über den Bus begrenzt.

Empfangen

unisolierte Empfangs-Stage

  • Es fehlt jegliche extra Isolierung. Bei einer Störung im EVG oder Kabelriss bei gemeinsamer Verlegung liegt die Schaltung also auf Netzspannung.
  • Über den Spannungsteiler R16 und R17 werden 8,8V eingestellt
  • Ist die Spannung höher, legt der Pullup R13 den Ausgang des LM393-Komparators auf High
  • Ist die Spannung niedriger, zieht der Komparator den Ausgang auf Low
  • Der LM393 ist recht unempfindlich gegen Spannungen höher Vcc etc.
  • Nur sollten die 12V einigermaßen stabil sein. Wenn man eine ungeregelte Versorgung nimmt, muß man sich statt dem Spannungsteiler was anderes ausdenken (z.B. Z-Diode oder ein TL431).

ECMD-Befehle

Beschreibung

Kommando Funktion
dali raw Byte1 Byte2 Sendet ein Frame mit 2 Bytes (in Hex). Wenn man weiß was man tut...
dali dim Target Level Das angegebene Ziel wird auf ein Dimm-Level (0-254) gestellt, 0 ist aus, 254 voll an.
dali cmd Target Command [!] [?] Sendet einen Befehl an ein Ziel, Befehlscodes in Dezimal, Liste siehe NXP Appnote oder Standard. Ein ! am Ende wiederholt den Befehl automatisch (bei manchen Befehlen notwendig). Ein ? am Ende bedeutet, dass auf eine Antwort vom Ziel gewartet wird. Diese wird dezimal ausgegeben. Nur bei manchen Befehlen sendet das Ziel eine Antwort.
dali scmd Command Data [!] [?] Sendet einen Spezialbefehl an alle, Befehlscodes in Dezimal (256-287), Liste siehe NXP Appnote oder Standard. Ein ! am Ende wiederholt den Befehl automatisch (bei manchen Befehlen notwendig). Ein ? am Ende bedeutet, dass auf eine Antwort vom Ziel gewartet wird. Diese wird dezimal ausgegeben. Nur bei manchen Befehlen sendet das Ziel eine Antwort.

Werte für den Target-Parameter:

Targetcode Bedeutung
all Alle / Broadcast
snn Kurzadresse (short address) 0 bis 63 (dezimal)
gnn Gruppe 0 bis 16 (dezimal)

Beispiele

Beispiel ECMD
Alle Lampen voll an dali dim all 254
Lampe 12 aus dali dim s12 0
Lampen in Gruppe 3 auf 50% dali dim g3 127
Alle Lampen in Zukunft innerhalb von ca. 5,6 Sekunden auf- und abdimmen (t=1/2*SQRT(2^x), x=1-15) dali scmd 257 7

dali cmd all 46 !

Das aktuelle Dimm-Niveau von Lampe 4 abfragen dali cmd s4 160 ? Antwort: 180
Ist eine Lampe an Adresse 8? dali cmd s8 145 ? Antwort: 255 (bedeutet Ja)
Störung an Lampe 8? dali cmd s8 146 ? Antwort: READ TIMEOUT (Keine Antwort, bedeutet Nein)
Der einzigen angeschlossenen Lampe Adresse 3 zuordnen dali scmd 257 3

dali cmd all 128 !

Externe Quellen

Wenn man Glück hat, findet man bei Google auch den eigentlich kostenpflichtigen IEC 60929. Da ist es nochmal besser drin erklärt...

Sourcecode

Der Code ist im normalen Ethersex-Git unter protocols/dali/ zu finden.