DMX zu WS2812 / NeoPixel Adapter

Dieses Miniprojekt hat zum Ziel, WS2812 / Neopixel LEDs via DMX ansteuern zu können.
In Verbindung mit einer Lichtsteuerungs Software können so 170 LEDs je DMX Universum adressiert werden.

WS2812, auch als NeoPixel LEDs bekannt, sind mehrfarbige LEDs, die individuell adressierbar sind.
Jedes LED Modul besteht aus drei LED Chips (rot. grün, blau) und einem Controller.
Die Farben werden eingestellt, indem ein Datenstrom aus 3 Byte in den Dateneingang des LED Chips geschoben wird.
Werden weitere Daten gesendet, werden die Daten wie bei einem Schieberegister aus dem Datenausgang "weitergeschoben" und an die nächste LED weitergegeben.
In Reihe geschaltet können so lange LED Bänder hergestellt werden.
Das Datenprotokoll ist sehr einfach, aber zeitkritisch!
Details hierzu können dem Datenblatt des WS2812 LED Chips entnommen werden.

Das DMX Protokoll ist ein Protokoll zur Steuerung von Lichttechnik in der Bühnen- und Veranstaltungstechnik.
Der Datenbus überträgt mit 250 KBaud und kann bis zu 512 Geräte adressieren.

In diesem Projekt wird mit den Kanälen recht verschwenderisch umgegangen, da jede LED einzeln ansprechbar sein soll.
Eine RGB LED belegt drei Kanäle. Für jede Farbe wird also je ein Kanal benötigt.
Für die DMX Steuersoftware ist jede LED ein RGB Scheinwerfer.

Die Schaltung besteht nur aus wenigen Bauteilen:

Beschreibung:
Ein SN75176A Bus Transceiver wandelt das Signal des differentiellen DMX Busses in ein TTL Signal für den Mikrocontroller um.
Die PC Software DMXControl 3 kann einen DMX Datenstrom mit einem simplen FT232R USB <> TTL Adapterkabel erzeugen.
Sofern man keine anderen DMX Geräte bedienen möchte, kann man den Adapter direkt mit RXD Eingang des Controllers verbinden.
Der Datenstrom wird von dem USART des Mikrocontrollers empfangen und in einen Datenstrom für WS2812 / NeoPixel LEDs umgewandelt.
Die erste RGB LED belegt die DMX Kanäle 1 - 3, die zweite 4 - 6 usw.

Damit der Mikrocontroller mit der Baudrate des DMX Busses klarkommt, ist ein passender Quarz erforderlich.
Übliche "Baudratenquarze" mit krummen Werten passen für 250 KBaud nicht.
Um einen Datenstrom für die WS2812 LEDs zu erzeugen, ist weiterhin eine relativ hohe Taktrate erforderlich.
10 oder 16 MHz sind gut geeignet.

Es werden lediglich zwei Pins des Controllers benutzt.
Der Mikrocontroller benötigt relativ viel RAM um die DMX und RGB Daten zu speichern.
Weiterhin benötigt der Controller einen USART, der die Baudrate des DMX Busses unterstützt.
Der ATmega328 hat 2 KByte RAM und einen geeigneten USART.

Die Software gestaltet sich dank entsprechender Bibliotheken sehr schlank.
Mit "Config Dmxslave" wertet der Mikrocontroller einen eingehenden DMX Datenstrom aus und speichert die Werte in einem Array.
"Config Rainbow" aktiviert die Bibliothek zur Steuerung von RGB LEDs.
In der Hauptschleife überträgt das Programm ständig die DMX Daten in das Array für die RGB LEDs und sendet sie letztendlich mit dem Kommando "Rb_send" an die LEDs.

Downloads:

DMX_WS2812_170_Kanal.bas

DMX_WS2812_170_Kanal.hex (ATmega328, 16 MHz Quarz, 170 LEDs, 510 DMX Kanäle

 

 

© klaus(at)taeubl.de