steckbrief dmx512dimmerpack

 

                        Firmware Version 4.6 (C++ Quelltext und vorkompiliert) | Minimal-DMX512-Sender für BASCOM

Die Hardware für den DMX512-Empfang sieht im Prinzip dem RS232-Dimmer sehr ähnlich. Das Grundprinzip der Ansteuerung ist sogar identisch, sodass lediglich der Empfangsteil etwas abgewandelt werden muss. Die Firmware verwendet die DMX512-Libraries von Hendrik Hölscher.

Es kommt bei dieser Schaltung der Atmel ATtiny2313 zum Einsatz, der mit rund 1,10 € sehr günstig in der Anschaffung ist. Aufgrund der lediglich 20 Pins kann allerdings ein reguläres DIP-Schalterfeld zu Startadresseinstellung nicht verwendet werden. Somit kommt ein einzelner Taster zum Einsatz. Wird er gedrückt, liest die Firmware die neue Adresse aus den Kanälen 511 und 512 aus. 511 gibt dabei an, ob der Wert von Kanal 512 die Adresse 1-256 oder 257-512 beschreibt. Die Firmware kann alternativ in der Header-Datei des Sourcecodes auch auf eine feste Adresse eingestellt werden.

 

 

 

Das Dimmerpack bedient sich wie viele andere Schaltungen der Phasenanschnitttechnik. Dabei wird das Sinussignal des Stromnetzes an einer variablen Stelle bis zum nächsten Nulldurchgang auf die Last geschaltet. Die folgenden Bilder zeigen die wichtigsten Signale des Dimmerpacks bei 25%, 50%, 75% und 100% Leistung.

 

Gelb zeigt das Synchronisationssignal, was für die Netzsynchronisation benötigt wird. Rot ist die errechnete Leistung aus Spannung und Strom an der Last, Blau ist das Gatesignal zur Ansteuerung der TRIACs und Violett/Grün sind Lastspannung und -strom.

 

DimmerpackSignals25

DimmerpackSignals50

DimmerpackSignals75

DimmerpackSignals100

 

 

 

Firmware

 

Es sind verschiedene Ausführungen der Firmware im Downloadbereich verfügbar, die sich alle lediglich durch verschiedene Compilerschalter innerhalb der DMX512-Dimmerpackfirmware (in der main.h) unterscheiden:

  • DMX512-Dimmerpack für 230V mit Phasenanschnitt
  • DMX512-Switchpack mit Schalten im Nulldurchgang für 230V
  • DMX512-Switchpack ohne Nulldurchgangserkennung für 230V
  • DMX512-Analogdimmerpack zur Erzeugung von 0-10V Spannungen über PWM-Glättung (Tiefpassfilter + OPV)

Es kann somit über die Headerdatei eine für den gewünschten Einsatz speziell angepasste Firmware kompiliert werden. Ich verweise auf das Forum, falls jemand diese Funktionen nutzen möchte, aber mit den Kommentaren im Quellcode nichts anfangen kann. Einige Optionen, die leicht in der Header-Datei (also die main.h) geändert werden können:

  • Zero-Crossing-Unit ein/aus
  • Art der Zero-Crossing-Detection (PLL, Timer)
  • Ausgänge als PWM (Dimmerpack) oder binär (Switchpack)
  • Adresse über Taster einstellbar oder fest Einprogrammiert

 

Die beiden Status-LEDs zeigen in der Originalfirmware den aktuellen Zustand der Firmware an. Es gibt derzeit (Firmware Version 4.3) folgende Kombinationen:

  1. Beim Einschalten des Mikrocontrollers leuchtet zunächst nur Gelb, dann nur Grün und nach erfolgreichem Start entsprechend des aktuellen Zustandes wie ab 2. beschrieben:
  2. Grün leuchtet dauerhaft: alles OK
  3. Grün leuchtet und Gelb blinkt gleichmäßig schnell: DMX512-Signal fehlt
  4. Grün leuchtet und Gelb blinkt/leuchtet: DMX-Werte werden geändert
  5. Grün und Gelb blinken gleichzeitig: AC-Netz fehlt oder ZC-Detection fehlerhaft
Beim programmieren der Startadresse über den Schalter leuchten die LEDs entsprechend dem folgenden Muster:
  1. Taster wird gedrückt: Grüne LED blinkt langsam um Beginn der Programmierung zu signalisieren. Hier kann der Vorgang durch Loslassen der Taste sofort abgebrochen werden, ohne eine Änderung vorzunehmen
  2. Nach wenigen Sekunden blinkt die Grüne LED schnell. Hier wird auf die Informationen des Kanals 511 und 512 gewartet, von denen die Startadresse gelesen wird
  3. Nach erfolgtem Auslesen der beiden Kanäle blinken Grün und Gelb gleichzeitig. Die Startadresse wurde erfolgreich ins EEPROM geschrieben. Der Taster kann nun losgelassen werden. Die grüne LED leuchtet nun wieder konstant.

 

 

Die Firmware steht im Downloadbereich kompiliert (einmal für Platinen mit Taster auf PD3 und einmal für Platinen mit Taster auf PD6) und natürlich mit Quellcode zur Verfügung. Dabei wurden Teile von Hendrik Hölschers DMX- und Phasenanschnitts-Library verwendet. Bitte entsprechend die Kopfzeilen des Quellcodes beachten.

 

 

Einstellen der DMX-Startadresse:

Die Startadresse wird von den beiden letzten DMX512-Kanälen eingelesen, sobald der Taster an PD3 (bzw. PD6 im älteren Layout) längere Zeit gehalten wird. Um den Controller auf Startadresse 7 einzustellen, muss Kanal 511 auf 0 und Kanal 512 auf 6 eingestellt werden. Möchte man Adresse 400 einstellen, muss Kanal 512 auf 144 und Kanal 511 auf einen Wert größer 0 eingestellt werden. Die Adresse wird im EEPROM abgespeichert, sodass auch nach einem Neustart und Ausschalten des Gerätes die Adresse gespeichert bleibt.

Startadresse 1 bis 256 DMX-Kanal 511 = 0 DMX-Kanal 512 = 0 bis 255
Startadresse 257 bis 512 DMX-Kanal 511 >=1 DMX-Kanal 512 = 0 bis 255

 

 

Fusebits des ATtiny2313

 

Die Fusebits sind sozusagen die Einstellungen des Mikrocontrollers. Hier kann man unabhängig vom Programm im Flash einstellen, welche Taktquelle der Prozessor verwenden soll, ob eine Brown-Out-Detection gewünscht ist, oder ob man bestimmte Startverhalten wünscht.

 

Für das DMX512-Dimmerpack werden eigentlich nur folgende Änderungen benötigt:

  1. Einstellen der Taktquelle auf externen Quarz (8MHz - 20MHz)
  2. Deaktivieren der Taktteilung (CKDIV/8 aus)
  3. Optional: Aktivieren, dass das EEPROM beim Flashen bestehen bleibt (damit bleibt die Startadresse gespeichert)

Somit ergeben sich folgende Fuse-Bits:

Low-Bits: 0xDF

High-Bits: 0x9F

Extended-Bits: 0xFF (einfach nichts ändern)

 

Für AVR-Dude ergibt sich folgendes Kommando: "-U lfuse:w:0xdf:m -U hfuse:w:0x9f:m"

 

 

 

 

Aufbau

 

Der hier gezeigte Prototyp ist auf Lochraster aufgebaut. Alle Triacs werden auf einen gemeinsamen Kühlkörper montiert, sodass bei entsprechender Belüftung 8x500W kein Problem darstellen (bitte darauf achten, dass die Triac-Kühlfläche isoliert ist, wie z.B. beim empfohlenen BTA16-600B).

 

Dimmerpack2009_1Dimmerpack2009_2

 

Das Dimmerpack fällt extrem kompakt aus, sodass die gesamte Schaltung sogar in einem Standard-Hutschienengehäuse von Reichelt platz findet:

Dimmerpack2009_3

 

 

 

Schaltplan

 

Die Schaltung fällt recht kompakt aus, da ein großteil der Technik in der Firmware des Mikrocontrollers steckt. Man benötigt lediglich den Atmel in seiner Grundbeschaltung und ein paar zusätzliche Komponenten: die Spannungsversorgung (Links) versorgt die Schaltung mit der notwendigen Energie. Die Netzsynchronisation (Oben) hält die Schaltung immer Synchron zum 50Hz-Versorgungsnetz, während der DMX512-Empfänder (Unten) die Steuersignale des Computers empfängt. Der Mikrocontroller (Mitte) steuert schließlich die 8-Ausgänge an, die die TRIAC-Schaltungen (Rechts) bei 230V Anwendung, oder ggfs. Operationsverstärker für 0-10V Anwendung ansteuert. Ein Beispiel für 0-10V Erzeugung findet sich etwas weiter unten in diesem Bericht.

 

(zum Vergrößern bitte auf das Bild klicken)
DMX512DimmerpackSchematic_thumb

Schaltplan ist im hier im Eagle 5.6.0-Format herunterladbar.

 

Beim Nachbau ist darauf zu achten, dass Sie hier mit der lebensgefährlichen Netzspannung von 230V~ zu tun haben, was bei unsachgemäßem Umgang für Sie aber auch für Andere lebensgefährlich sein kann. Bitte achten Sie auf ordnungsgemäße Absicherungen, Isolierungen und die sachgemäße Erdung von Gehäuse- und Steckerteilen.

 

 

0-10V Analogausgabe

Statt der TRIAC-Schaltungen kann man auch einfach Operationsverstärker anschließen und das PWM-Signal über einen Tiefpass glätten, sodass man am Ausgang eine stufenlos einstellbare Spannung zwischen 0V und z.B. 10V erhält:

Variante 1:

Demux

Variante 2:

Demux2

 

Alternative Nulldurchgangserkennungen

In diesem Fall entfällt der zusätzliche Transistor und es wird nun nur noch ein einfacher 4N33 Optokoppler verwendet. Der Aufwand ist deutlich einfacher und das Ergebnis ist vergleichbar.

ZCD2

Einfache Nulldurchgangserkennung Original-Nulldurchgangserkennung
zcd2_scope

zcd1_scope

 

Die im Schaltplan verwendete Nulldurchgangserkennung verwendet lediglich einen Transistor, eine Diode einen Optokoppler und ein paar Widerstände, um ein 50Hz Nulldurchgangssignal zu erstellen, wie es in den Oszi-Bildern am Anfang dieser Seite gezeigt wurde (gelbe Kurve). Wer ein wenig basteln möchte kann die Nulldurchgangserkennung noch verbessern, da die bisherige (sehr einfache) Schaltung besonders bei der steigenden Flanke sehr langsam auf HIGH schaltet (siehe Bilder am Anfang). Die hier gezeigte Nulldurchgangserkennung erzeugt bei jedem Nulldurchgang einen kleinen Spike, der zum Synchronisieren verwendet werden kann:

Nulldurchgangserkennung

Quelle: Finger, C., "Entwicklung, Aufbau und Erprobung eines Low-Cost-Steuergerätes mit Mikrocontroller für den universellen Einsatz zur Steuerung von Drehstrom-Asynchronmotoren", Diplomarbeit, FH Wilhelmshaven, 1999

 

 

8-Kanal DMX512 Dimmerpack als PCB

Es ist im Download ein PCB-Layout für das Dimmerpack verfügbar. Es werden einige SMD-Bauteile, aber auch Standardbauteile verwendet, sodass die Platine mit einer Abmessung von 8,5cm x 10cm extrem kompakt ausfällt. Feilt man die Kanten der Platine ein wenig ab, dann passt der Aufbau samt Kühlkörper wie oben gezeigt in ein Hutschienengehäuse.

Das Eagle 5.6.0-Projekt ist zum Download im Downloadbereich verfügbar.

Dimmerpack2009_PCB

 

Minimal-DMX512-Sender für Testzwecke

Um das Dimmerpack auch ohne PC testen oder ggfs. auch als Minimalsteuerung ohne PC betreiben zu können, habe ich für BASCOM-AVR eine Steuersoftware geschrieben, die oben heruntergeladen werden kann. Die Software ist für einen ATtiny2313 geschrieben und liest drei Taster ein. Sobald man einen Taster drückt, wird eine vorprogrammierte Szene aufgerufen und die DMX-Werte entsprechend ausgegeben. In der aktuellen Form werden zwar alle 512 DMX-Kanäle ausgegeben, jedoch werden nur die ersten 20 Kanäle verwendet. Kanal 21 bis 512 werden immer als 0 gesendet. Der DMX512-Sender wurde als Inline-Assembler-Code realisiert und funktioniert zuverlässig.