OpenDCC NeoControl NC1

Vorbemerkung

    Hier auf opendcc.de werden mehr die technischen Aspekte, Schaltungen und Details einer Baugruppe beschrieben, Anwendungsinformationen zur Baugruppe finden Sie im wiki bzw. auf fichtelbahn.de.

Geschichte

    Im Zusammenhang mit großen offentlichen Videoveranstaltungen und den dafür nötigen riesigen Displays entstanden diverse Lösungen, um ein solches Display mit einer Unmenge an RGB-LEDs ansteuern zu können: i.d.R. erfolgt das durch verteilte Chips, welche über ein schnelles serielles Protokoll die jeweils darzustellenden Werte des jeweiligen Farbkanals erhalten. Diese Chips werden entweder als Die (also nur das Silizium) direkt in die RGB-LED gebondet oder sind separat erhältlich.
    Ein verbreitetes Protokoll für diese Art von Ansteuerung ist in den Bausteinen WS2811 und WS2812 von WorldSemi enthalten. Das sind sehr preiswerte Chips, welche in den Datenstrom eingebunden werden und für drei Ausgangskanäle die Pulsweitenmodulation zur Helligkeitssteuerung realisieren. Vermarktet werden diese Chips / LEDs auch unter dem Namen Neopixel. Bei den bekannten Internetversendern gibt es sowohl die Chips, vorbestückte Platine und auch Klebebänder mit in RGB-LEDs integrierten Chips zu kaufen.

    Technisch erfolgt die Datenübertragung bei den WS28xx-Bausteinen durch eine bitweise, phasenmodulierte RZ Kodierung. Dabei werden alle Bausteine in Serie geschaltet. Der Datenstrom geht zum ersten Baustein, dieser entnimmt je 8 Bit für die drei Ausgänge R, G, B und sendet den Rest weiter. Es erfolgt als keine Adressierung, schlicht die Position im Datenstrom bestimmt, welche Bits der jeweilige Baustein vom Datenstrom entnimmt.

    Ausgehend vom ersten Versuchsträger OneWS entstand diese Platine. Die NC1 ist aus der Verschmelzung von BiDiBOne und OneWS enstanden.

    Für die NeoControl gibt es mittlerweile 3 Firmwarepakete:

Eigenschaften

    Daten NC1
    2 WS2811 / WS2812-Stränge
    8 frei programmierbare Schaltausgänge mit 300mA - z.B. für klassische Glühbirnen
    8 universelle Eingänge (für lokale Taster / Optokoppler)
    1 BiDiBus-Anschluß
    2 Integrierte leistungsfähige Schaltwandler mit 2A Ausgangsleistung (geringe Erwärmung)
    Möglichkeit zur Makroprogrammierung. Schaltvorgänge und Licht lassen sich universell zu Abläufen kombinieren. Freie (und einfache!) Zuordnung von Schaltvorgängen zu PC-Befehlen
    Flexible, menugeführte Konfiguration mit den BiDiB-Tools
    FW-Update über BiDiB.
    Kompakt: Baugröße 50mm x 80mm.
    Montagefreundlich: Befestigungslöcher an allen Ecken, alle Anschlüssen leicht vom Rand zugänglich.
    Verschiedene Firmwareversionen verfügbar.


    Einsatzbeispiele:
    Die NeoControl kommt überall dort zum Einsatz, wo es um Beleuchtung oder Signale geht - bevorzugt natürlich mit LEDs. Dabei werden an den WS2812-Ausgängen der NeoControl einfache, verkettete Stränge von WS2811/WS2812 LEDs oder Chips angeschlossen.
  • Signale mit Einzel-LEDs
    Hier ordnet mal unter jedem Signal eine WS2811-Platine an und verbindet alle Signalchips mittels eines 3-poligen Steckkabels. Die Firmware Neo_Signal kann 32 solcher WS2811-Platine ansteuern. Damit ergibt sich ein 'Dekoderpreis' je Signal von nur ca. 2,50€.
  • Signale mit RGB-LEDs
    Im Schattenbahnhof braucht man keine vorbildgerechten Signalmasten. Hier kann man auf fertige RGB-Streifen zurückgreifen und z.B. quer über der Ausfahrt einfach so einen Streifen aufkleben.
  • Belebtes Haus
    Hier kommt in jedes Zimmer, über der Haustür usw. eine LED. Diese werden je Haus an einen oder mehrer WS2811-Chips angeschlossen. Von Haus zu Haus geht dann einfach eine 3-polige Leitung (wie sie auch bei Servos verwendet wird). Die NC1 kann mit der Firmware Neo_Light 120 solcher Leuchtstellen einzeln ansteuern.
  • Hier ein Video, wie die NeoControl für Signale eingesetzt wird und wie einfach die Konfiguration ist:

Download

      NeoControl   Version Erläuterung
      Bootloader: 
      V0.04.01  
    16.01.2014
        Der Bootloader ermöglicht das Erneuern der Firmware im eigenbauten Zustand und das permanente Speichern von Makros. Muß einmal mit einem Atmel-Programmer geladen werden und bleibt dann immer drin.
    Der Programmer ist anschließend nicht mehr erforderlich.
    (Dieser Bootloader ist indentisch zum Bootloader des BiDiBOne)
      Firmware 
    Applikation NeoControl Light/Signal 

      V1.03.04  
    04.05.2017

      V1.02.02  
    18.11.2016
      Die eigentliche Applikationsfirmware. Sie besteht aus zwei Teilen:
    NeoControl_Signal_version.000.hex für den Flashspeicher der NC1
    NeoControl_Signal_version.001.hex für den EEPROM-Speicher der NC1.
    (statt Signal kann auch entsprechend Light verwendet werden)
      Bauanleitung   
      V1.00  
        (noch fehlend)
      Schaltplan   
      V1.02  
         
      Bestückungsplan   
      V1.02  
         
    Hinweise:

Versions-History

  • Bootloader:
      14.02.2016 V0.01 Erste Freigabe
  • NeoControl Light / Signal:
      18.11.2016 V1.02.02 Erste Freigabe

Schaltplan

    Kern der NeoControl ist ein ATXmega128A3 (atxmega128a3u-au im TQFP64 Gehäuse). Dieser Prozessor bietet hinreichend viel Speicher und mit seinen 64 Pins auch hinreichend viel I/O, um die Funktionen der NeoControl realisieren zu können. Versorgt wird der Prozessor mit 3,3V.
    Die Clockversorgung erfolgt mit einem SMD Quarz mit 8MHz (Größe 5 x 3,2mm), z.B. www.geyer-electronic.de KX-9A 8MHz oder Euroquarz MJ (reichelt) oder Mouser 405I35E08M00000 .

    Stromversorgung:
    Die Platine kann mit einer geregelten Gleichspannung von 8 bis 20V versorgt werden (aus einem Schaltnetzteil), auf der Platine sind zwei moderne Schaltregler mpm3620 vorgesehen, welcher aus dieser Spannung je eine stabilisierte 5V-Versorgung mit 2A erzeugt. Damit lassen sich dann an einem Strang bis zu 100 LEDs mit 20mA betreiben (wenn alle gleichzeitig mit voller Helligkeit eingeschaltet sind).
    Der Schaltregler hat die Spule und die Fets bereits integriert, extern sind nur noch Abblock-Kondensatoren (keramische MLCC mit 10uF/25V) erforderlich. Der Spannungsteiler für den Regler errechnet sich zu V(out) = 0,798V * (R(a) / R(b) + 1); Dieses Teilverhältnis kann z.B. mit 150k/28k5 erreicht werden. Um eine einfach Bestückung zu erreichen, wurde 102k2 / 19k5 gewählt und diese beiden Widerstände je mit einer Reihen- bzw. Parallelschaltung realisiert.

    Die 3,3V für den Prozessor werden mit dem LM3480-3v3 in SOT23 erzeugt.

    Eingespeist wird die Gleichspannung (z.B. von einem Laptopnetzteil oder vom Powerboard) über zwei Klemmen, am Eingang ist ein Verpolschutz mit ein Leistungs-P-FET sowie eine Polyfuse mit 1.1A vorgesehen. Beide Sicherungsglieder können für Spezialanwendungen per Lötbrücken SJ1 und SJ2 geschlossen werden. Bei der Polyfuse ist alternativ auch eine THT Version verwendbar, entsprechende Vias sind vorhanden.


    BiDiB-Interface:
    BiDiB basiert auf dem RS485-Standard, der verwendete Bustransceiver muß mind. 500kBaud Rate haben und sowohl 'failsafe' als auch 'slew rate limited' sein. Gewählt wurde der ISL3175 im SOIC8.
    Eine Schutzdiode SM712 ist optional vorgesehen. Die Schutzdiode ist dann sinnvoll, wenn ein besonders großes Netz mit langen Leitungen betrieben wird.

    Schaltausgänge:
    Als Ausgangstreiber für Glühlampenausgänge findet der übliche ULN2803 Verwendung. Es sind 8 Ausgänge verfügbar, jeder darf bis 300mA belastet werden, die Gesamtsumme muß unter 500mA bleiben.

Layout


    Die Platine ist 79 x 49mm groß, die Ein-Ausgänge sind als Steckkontakte im Raster 2,54mm ausgeführt (16-polige Wannenstecker). Die Anschlüsse für die Leuchtdiodenstreifen sind alternativ als Schraubklemmen im Raster 3.5mm bestückbar.

    Die RJ45-Buchsen werden als THT bestückt.

Software

    WS2811-Ansteuerung:
    Das schnelle serielle Protokoll ist in den Datenblättern zum WS2811 und WS28112 beschrieben. Da es in den Prozessoren keine direkte Hardwareunterstützung dafür gibt, muß man versuchen, die Ausgangskurvenform möglichst trickreich mit Hilfe der CPU oder vorhandener Peripherie (siehe hierzu Tipps zum Atxmega) zu erzeugen.
    Die NC1 verwendet einen besonders pfiffigen Ansatz, welcher sowohl geringe CPU-Last als auch moderate Speicherauslastung ermöglicht. Damit sind selbst auf dem beschränktem Speicher des 8-bit Prozessors lange Lichtketten von über 100 LEDs möglich, ohne die Abarbeitung des Busprotokolls und der Makros zu behindern. Alle Effekte und Dimmvorgänge lassen sich unabhängig voneinander auch in unterschiedlichen Geschwindigkeiten einstellbar.

    BiDiB:
    Der BiDiBus wird über einen RS485-Transceiver empfangen. Der UART ist auf 9 Bit eingestellt. Wenn ein Byte mit gesetzem 9. Bit kommt (d.h. es ist ein Token für die Sendeerlaubnis), wird noch in der ISR überprüft, ob der Token die eigene Knotenadresse adressiert. Falls ja und falls eine abzusendende Nachricht vorliegt, wird direkt in der ISR auf Senden umgeschaltet, die TX-ISR freigegeben und auch gleich das erste Datum in den UART geschrieben.
    Wenn das letzte Byte der Nachricht geschrieben wird, dann wird der TX-Complete Interrupt aktiviert, welcher dann nach dem letzten Byte innerhalb von 2µs - 5µs wieder auf Empfangen umschaltet.

Bauanleitung

    Der Aufbau ausgehend von der SMD-vorbestückten Version ist ausführlich auf fichtelbahn.de beschrieben. Die Informationen auf dieser Seite richten sich an erfahrene Selbstbauer. Insbesondere der mpm3620 ist eine gewisse Herausforderung bei Handlötung.
    Sinnvoll ist es, die Bestückung mit Spannungsregler, R und C sowie den LEDs zu beginnen. Diese werden dann auch zuerst geprüft, erst dann kommt der Prozessor und die Buchsen. Die Platine unbedingt abschließend reinigen. Neben dem Bootloader und Files im Download muß man auch eine Seriennummer einspielen, diese kann man sich hier generieren. Die generierte Seriennummer bitte auf der Baugruppe vermerken. Seriennummer sind vierstellige Hexzahlen, im hier dargestellten Beispiel (eep-file) fett markiert:
    :0207fe000001f8
    Bitte beachten: Im AVR-Studio 4 gibt es ein Häkchen 'erase chip before programming', das muß man nach dem Einspielen des Bootloaders rausnehmen, sonst löscht man den Bootloader beim Einspielen des Flashes wieder weg. In AVR Studio 6 erreicht man das durch Wahl von 'incremental programming'. Wenn direkt in die Applikation gesprungen werden soll, dann ist FUSEBYTE2 = 0xFA.

Inbetriebnahme

    Nach dem Bestücken der 5V und 3,3V-Regler überprüft man die Spannungspegel.
    Die Software hat verschiedene Selbsttestroutinen:
  • Wenn nur das Flash bespielt wird und EEPROM noch leer ist, dann blinken alle 4 LEDs parallel (hektisch), Timing ist 50ms on, 150ms off.
  • Wenn Flash und EEPROM bespielt sind, jedoch die Seriennummer noch fehlt, wird und EEPROM noch leer ist, dann blinken 2 LEDs parallel (STATUS und POWER), Timing ist 100ms on, 100ms off.
  • Im Regelbetrieb leuchtet die Power-LED mit halber Helligkeit (10ms on, 30ms off)
  • Wenn die NeoControl mit BiDiB verbunden ist, dann leuchtet zusätzlich die LED_BIDIB auf.

Makros

    Kern der Ansteuerung ist eine Makromaschine, diese umfaßt Level 2 gemäß BiDiB-Spezifikation. Eine Erläuterung hierzu finden Sie bei der LightControl.
    Zusätzlich besteht ab Wizard 1.9-20161117 die Möglichkeit, Makros per Befehlsdatei (script) zu konfigurieren. Das ist eine wesentliche Erleichterung gerade bei sehr vielen LED Ausgängen.

Debugschnittstelle

    Die NC1 verfügt über einen seriellen Debugport, dieser paßt für die FDTI-RS232-TTL-Kabel mit 6-poliger Stiftbuchse im Raster 100mil (2,54mm). Das Kabel wird so angesteckt, dass die schwarze Ader (GND) zum Anschluß B zeigt (markiert mit Pin 1). Die Debugschnittstelle kann über eine Terminalprogramm wie hterm angesprochen werden und wird mit 115200, 8N1 betrieben.

    Mit dem Befehl ?<cr> kann man sich eine Übersicht der Funktionsaufrufe ausgeben lassen. Bedienungsbespiele finden sich auf fichtelbahn.de.

Bootloader

    Der Xmega128a3 verfügt über eine separate Bootloader-Section mit 8k Speicherplatz. In diesem Speicher ist ein BiDiB-Bootloader implementiert. Dieser wird aktiviert, wenn während des Einschaltens der NC1 der Identify-Taster (ID) gedrückt gehalten wird. Die Firmware startet dann den Bootloader.
    Der Bootloader wird auch beim Speichern von Makros benötigt: ohne Bootloader funktioniert die NC1, ein permanentes Speichern ist aber nicht möglich. Bei Power-Up wird durch zehnmaliges schnelles Blinken auf das Fehlen des Bootloaders hingewiesen.

    Der FW-Update läßt sich komfortabel mit dem BiDiB-Wizard durchführen. Dort wird in der Knotenliste der Knoten mit der der rechten Maus angeklickt und der Menupunkt FW-Update gewählt.
    Namensregeln: Eine Firmware besteht aus einer Datei für den Flashspeicher (Beispiel: nc1_v0.09.02.000.hex) und aus einer Datei für das EEPROM (nc1_v0.09.02.001.hex). Dieses Beispiel ist also die Version 0.9.2, 000 bezeichnet den Flashteil, 001 den EEROM-Teil. Wenn nur die Datei *_update*.000.hex eingespielt wird, dann wird die Firmware erneuert, Makros und Einstellungen bleiben erhalten.

FAQ

  • Soll ich OneWS oder die NC1 verwenden?
    Die Firmware in beiden Baugruppen ist fast komplett identisch.
    Die NC1 ist für automatische Bestückung optimiert (kleine Bauformen) und daher für den Selbstbau anspruchsvoll. Allerdings liegt der Preis dann auch niedriger als BiDiBOne + OneWS.
  • Meine NC1 merkt sich die Makros nicht, nach dem Ausschalten sind sie weg.
    Zum Speichern der Makros braucht die LC einen sog. Read-Write-Zugriff auf das Flash, und dieser geht nur mit Bootloader. Wenn der Bootloader fehlt, dann blinkern die LEDs beim Starten (als Warnung) und auch die Möglichkeit zum FW-Update wird in den Tools nicht angezeigt. Abhilfe: Bootloader mit dem Programmer einspielen.
  • Wie ist das mit der Farbzuordnung bei WS2811 und WS2812
    Unglücklicherweise haben WS2811 und WS2812 eine andere Reihenfolge, wie die Daten im Bitstrom auf die zugeordneten Ausgänge (RGB) abgebildet werden.
    DatenstromWS2811WS2812
    Position 1Ausgang RLED G
    Position 2Ausgang GLED R
    Position 3Ausgang BLED B

Versionshistory

  • V 1.03.00, 13.03.2017
    - INPUT-Ports können wahlweise als Belegtmelder verwenden. (per CV 1033); jedes Bit in CV 1033 schaltet den jeweiligen Port auf Belegtmeldung um (=1)
    - Unterstützung BiDiB-Systemzeit.

Links