Hallo. ich möchte mal aus meinem DCC Projekt, den DCC Signal und LED Decoder vorstellen.
Der DCC Decoder kann über 2 Kanäle (WS2811 Datenbus) 84 und 42 LEDs schalten. Ich habe dazu auch zwei HEX Programme zum Flashen zur Verfügung gestellt. Das Flashen geht über meine Modellbahnverwaltung (Hex Loader) in wenigen Minuten. Zur Modellbahnverwaltung Download-Seite https://bluethners.de/zweite/ModelBahnDownlad.html
Mit einem Materialwert von ca. 25 € können 126 LEDs mit beliebigen DCC Adressen geschaltet werden. Zum Vergleich: Ein herkömmlicher DCC Decoder > 22€ hat nur 8 oder 16 Ausgänge, kann daher ohne besondere Schaltungen max. 16 LEDs schalten. Der Decoder kann daher mehr als 10 herkömmliche Schaltdecoder ersetzen. Ideal für Eigenbau - Lichtsignale, da keine Widerstände für die LEDs nötig sind.
Die Software für den NANO: DCC_WS_SignaldecoderBlink.hex ist speziell für Signale gedacht. Die hat am Kanal 1 ein Gedächtnis , so das die aktuellen Signalbilder resttfest gespeichert werden. So bleiben die letzten Signalschaltungen erhalten, wenn die Gleisspannung bei Betriebsende ausgeschaltet wird.
DCC_WS_LED_DecoderBlink.hex startet immer mit ausgeschalteten LEDs was für Beleuchtung von Häusern usw. geeignet sein könnte. Über eine Lichtsteuerung z.B. aus Rocrail können auch Zeitgesteuert, Leuchtmittel geschaltet werden, und auch kleine Animationen sind möglich. Die Leuchtstärke 0 bis 18,5mA kann über 255 Stufen für alle LEDs gemeinsam für Tag und über DCC Adr. auf Nachtbetrieb geschaltet werden.
Es sind keine Programmierkenntnisse erforderlich !
Der DCC WS Decoder: Kann leicht auf eine Lochrasterplatine oder Steckbrett aufgebaut werden. Ich habe auch eine kleine kostengünstige Platine entworfen, die erleichtert die Handhabung und den Zusammenbau.
Der DCC Decoder
Es werden nur wenige Bauteile benötigt. ca. 15€ Materialkosten 1 NANO 328 16Mhz ( z.B. Arduino-Nachbau ab 7€) 4 Widerstände 2X 100 1X470 1X 3K3 Ohm 1 Diode oder LED 1 Optokoppler PC817 5 X2 Schraubklemmen 1 Optional Decoder-Platine 1,50€ Optional Knoten Plättchen für 6 LEDs 0,60€
Da der Decoder recht kostengünstig ist, können mehrere Decoder ortsnahe am Verbraucher stationiert werden. Als Spannungsquelle reicht da jeweils ein einfaches 5V 1,5A bis 2A Schaltnetzteil (z.B. Handylader) .
Leuchtmittel mit WS2811/2812 Knoten: Normal werden RGB LED-Streifen, Matrix. oder RGB WS2812 Leuchtmittel verwendet. Es ist aber für Lichtsignale sinnvoller einzelne farbige LEDs anzusteuern. Dafür gibt es WS2811 Knoten die jeweils 3 LEDs Steuern können. Kostengünstig (ab14€ 100Stück) sind Paneele mit bis zu 100 Knoten = 300 LEDs zum abbrechen zu bekommen. Die Handhabung ist aber etwas umständlich. Ich habe selber Platinen entwickelt die bis zu 10 Knoten =30 LEDs ansteuern können. Besonders praktisch sind die 2 Fach Platinen für 6 LEDs, zum abbrechen mit 2,54mm Raster Lötbohrungen . (LEDs ohne Widerstand anschließen) Bild mit 2 Plättchen für 12 LEDs 1 Plättchen 16X27mm Die zwei Plättchen würden für 4 Signale mit 3 Signalbildern (Begriffe) ausreichen. Die Plättchen können direkt am jeweiligen Signal oder in der Nähe verbaut werden.
Um den DCC WS Decoder mit den möglichen 168 DCC Adressen und 126LEDs zu Konfigurieren habe ich ein Programm entwickelt. Die DCC Adressen und LED Nr. können dort einfach in eine Tabelle (Keine Excel ) eingetragen werden. Die Tabelle kann zur späteren Weiterverarbeitung unter einen beliebigen Name abgespeichert werden. Über den USB Bus werden die Daten auf dem Decoder übertragen, und es kann auch gleich ohne DCC Gleisanschluss über USB getestet werden.
Hallo ich hatte eine E Anfrage wie man z. B. ein Signal mit 6 LEDs Anschließen kann.
Ich bin leider nicht so gut über Signalsteuerung informiert, ich denke aber das mein Beispiel zumindest das Schaltprinzip vom Decoder beschreibt.
Anschlussbelegung als Beispiel für 2 und 6 LEDs:
Die gezeigten 6 X2 WS2811 Knotenträger für 36 LEDs sind nur als Beispiel von anderen Möglichkeiten.
An LED1 und 2 (Erstes Plättchen) zeige ich zunächst, eine einfache Rot/Grün Schaltung mit der DCC Adresse 100
Nicht in der Zeichnung eingetragen! DCC 100 Ausgang A = LED1 (Rot) AN + LED2 Grün Aus DCC 100 Ausgang B = LED2 (Grün) An + LED1 Rot Aus
Wenn jetzt der Decoder die Zubehör-Adresse 100 empfängt schaltet er das dann einfach so. Es ist aber durchaus möglich die Adresse 100 weiter unten in der Tabelle für noch andere LEDs zu definieren. Die Tabelle wird bei jedem Schaltvorgang mit einer gültigen Zubehöradresse kpl. abgearbeitet. Bei widersprüchlichen Befehlen, ist der letzte Befehl in der Tabelle gültig,
Die LED Nummern und DCC Adressen können in beliebiger Reihenfolge in der Tabelle eingetragen werden. Zu beachten ist nur, das die LED Nummern hardwareseitig vorlaufende -- Adressen Nummern haben.
In der Tabelle habe ich noch das gewünschte Beispiel mit 6 LEDs ab Zeile 7 eingetragen. Tabelle aus dem Konfiguration und Testprogramm Blinken.exe
Wie man sieht, kann die Tabelle an einer beliebigen Zeile (max. 168) bearbeitet werden. Ich empfehle aber mit der kleinsten LED Nr. anzufangen. Die Tabellenfarben sind nur für RGB LEDs gültig!
Ich hoffe das ich das auf der Schnelle richtig definiert habe. Prinzipiell brauchen nicht immer alle LEDs von einem Signal bei bestimmten Signalschaltungen gelöscht werden, aber so ist das übersichtlicher.
Siehe in der Spalte Beschreibung Am einfachsten geht das, wenn man zunächst mal alle 6 LED-Nummern für eine Schaltung einträgt. Dann einfach die gewünschte LED Nr. auf AN Markieren (ein Haken machen) in der letzten Spalte kann eine LED Nr. auch als Blinken definiert werden. (einfach die LED Nr. dort eintragen Die Rechenfolge ist auch in der Spalte egal Auch hier können die zwei anderen Spalten leer bleiben.
Dann die DCC Adresse eintragen z. B. 200
Zur Auswahl steht dann Ausgang A = ohne Haken (wäre bei einer Weiche gerade) oder Ausgang B = mit Haken (wäre bei einer Weiche abbiegen)
Wie die Zentrale oder Modellbahn-Software das Schaltet, ist unterschiedlich. Die Einstellung muss über Zubehöradressen (Weichen) geschaltet werden. Falls die Schaltfolge mit den Adressen abweicht, einfach die DCC Adressen in der Tabelle untereinander tauschen.
Ich hoffe das ich das einigermaßen gut erklären konnte. Ich habe auf meiner Webseite auch ein kleinen Testaufbau beschrieben. Das Testen geht auch ohne Zentrale und DCC Anschluss direkt über den USB-Anschluss.
Zum minimalen testen, reicht ein Steckbrett und ein Nano , RGB WS2812 Streifen und 5Volt. Um einzelne LEDs zu testen, muss mindestens ein WS2811 Knoten mit 3 LED Ausgänge vorhanden sein. Aber das habe ich schon im ersten Beitrag ausführlich beschrieben.
Natürlich beschränkt sich der Decoder, nicht nur auf Signale, LEDs werden auch zur Beleuchtung usw. verwendet. Interessant ist es auch, das über die Rocrail zeitgesteuerten Lichtsteuerung zu machen. Rocrail und die Licht-Steuerung: https://wiki.rocrail.net/doku.php?id=lightctrl-de
ich nehme an, du nutzt für deinen Sketch die FASTLed Library und die NMRA DCC Library.
Wie schaffst du es, dass trotz laufender Aktualisierung der LEDs zusätzlich noch DCC-Befehle sauber empfangen werden können? Die LEDs müssen ja vom Timing her ziemlich exakt aktualisiert werden, dazu wird meines Wissens der Interrupt für eine bestimmte Zeit deaktiviert. In dieser kurzen Zeitspanne ohne Interrupt gibt es auch keinen DCC-Empfang.
Bei ein paar LEDs geht es wahrscheinlich noch, aber irgendwann wird das zeitkritisch.
Ja, das ist nicht so einfach. Dann muss auch noch die Tabelle mit den 168 Möglichen DCC und LED - Nummern ständig abgefragt werden. Der DCC Datenstrom muss aber ohne Unterbrechung eingelesen werden. Sonst gehen schnell mal Befehle verloren. Bei bis zu 168 DCC Adressen wäre das schnell mal möglich. Weiter musst Du beachten, falls Du die Schaltzustände in EE Prom speicherst, ist der Mikrocontroller bis zu 3,4 ms inaktiv für andere Befehle.
Ich habe daher alles selber in Assembler programmiert. So habe ich die volle Kontrolle über den Microcontroller. Aber viel mehr als 84 bzw. 28 RGB LED sind nicht mehr in allen Betriebssituationen Fehlerfrei. Ich habe mich daher auf 84 LED beschränkt. Dann ist noch eine Sicherheitsreserve vorhanden.
Mit mehreren Kanäle und jeweils 84 LED wären mehr LEDs möglich. Da ich die Konfigurationstabelle aus Blinken.exe im EE-Prom schreibe, ist der Speicherplatz zu klein. Ich müsste dann den MEGA2860 verwenden. Das hätte auch den Vorteil, das ich jede LED einer eigene Leuchtkraft 0 bis 255 geben könnte. Ich habe daher an Kanal 2 nur zusätzlich 42 LED realisiert. Mein Ziel war es , das so kostengünstig und einfach wie möglich zu machen. Weil teurer gibt es ja schon!
Man sollte auch beachten, das für 127 LED bis 2,4 Ampere nötig sind. Daher auch der Kabelquerschnitt immer größer gewählt werden muss. Weiter kann es vorkommen, das mal ein WS28XX Knoten ausfällt. Dann fallen oft alle LED dahinter auch aus, oder flackern. Daher kann es vorteilhaft sein mehre separate Datenleitungen oder Decoder mit getrennter Versorgung zu verwenden. Und es können so auch leichter LED nachgerüstet werden. Verwende keine überdimensionierte Schaltnetzteile bzw Netzteile. Egal was dort angeschlossen wird. Nach meiner Meinung sind mehr als 4 Ampere bei einer Modellbahn mit erhöhte Vorsicht zu verwenden!
Im Moment programmiere ich ein DCC Servo Schaltdecoder, der zusätzlich pro Weiche zwei Lichtsignale (6 LED) über den WS2811 Bus steuern soll. Ob das in der wirklich Sinn macht.
Das eigentliche Problem sehe ich darin, dass die Signalstellungen nicht immer mit der Weichenstellung übereinstimmen muss. Aber eventuell ist das dennoch für einfache Modellbahnanlagen oder Weichensignale eine kostengünstige Lösung. Und wenn man an jedem Decoder noch bis zu 6 LED über eine zentrale Adresse 1998 schalten kann ist das auch nicht so falsch.
Ich würde mich über Deine Meinung und auch über die, anderer Modellbahner freuen.
Ein super interessantes Projekt und durch die Verwendung nur einer MCU für die LEDs und DCC natürlich auch sehr elegant! Ich hatte mir aber schon gedacht, dass das nichts mit Arduino zu tun hat, sondern bestimmt nativ programmiert ist!
Ich habe auch ein eigenes Projekt am Start und erst überlegt, den MoBaLedLib Arduino für die LEDs als "Slave" an meine Lösung anzubinden, doch inzwischen habe ich mich dafür entschieden, erstmal zu versuchen ob man nicht beides in einen STM32F411 ("Blackpill" Modul) integrieren kann. (mit nativem Code) Mal gucken, wie weit ich komme!
Hallo, ich möchte noch berichten, wie man die Signalbilder (Begriffe) aus der Blinken.exe Tabelle mit Rocrail anwenden kann. Für manche Anfänger ist das nicht immer so leicht zu verstehen. Eventuell kann meine Anleitung auch von einigem erfahrenere Modellbahnern ergänzt oder richtig gestellt werden Ich kenne mich nur ein wenig mit Rocrail aus, daher ist auch eine Anleitung für andere Programme willkommen.
Zu beachten ist, das DCC Zubehör (Weichen) Adressen verwendet werden müssen.
Ich habe mit meiner Eigenbau DCC Zentrale getestet, daher weiß ich nicht, wie kommerzielle Zentralen das in Rocral umsetzen! Es werden manchmal auch spezielle DCC Signalformate gesendet, die nicht mit den Weichenadressen funktionieren.
Jetzt aber zu dem Beispiel: Signal mit 4 Begriffen in Rocrail Konfigurieren.
Ich verwende mal als Beispiel die Tabelle weiter oben aus diesem Beitrag #2 .
Die DCC Adressen 200A, 200B, 201A, 201B Die 6 LED mit den Nummern 25 bis 30
In Rocrail - Gleisplan lege ich ein Signal mit 3 "Leuchten" an.
In Signal Eigenschaften Schnittstelle mach ich die Einstellungen.
Ich habe dort Linear für Adressen ausgewählt. Daher trage ich als Start-Adresse nur 200 A Rot ein. Rocrail addiert dann beim Schalten der Signaladressen so oft. wie in Anzahl Begriffe steht. Daher ist es wichtig das die DCC Adressen für das eine Signal vorlaufend in der Tabelle definiert werden. Das soll dann als Zubehör/Weiche schalten.
Die Anzahl der Begriffe wird in Einzelheiten bestimmt.
Unter NummerWert wird die Reihenfolge der 4 Begriffe eingestellt.
0 = die DCC Startadresse 200A , 3 = Adresse 201B
Daher kann hier die Schaltabfolge bestimmt werden. Falls die Signalbegriffe falsch angezeigt werden, einfach die NummerWert vertauschen.
z. B. 1, 0, 2,3 , dann braucht in der Tabelle von Blinken.exe nichts nachgebessert werden. Natürlich müssen dort die LEDs für ein Begriff richtig sein. Es werden ja nur die DCC Adressen anders sortiert.
Damit das Signal auch im Automatik - Modus geschaltet wird, muss es noch in dem zugehörigen Block oder Fahrstraße eingetragen werden.
Ich habe hier in Rocrail Weichenadressen verwendet. Manche Zentralen verwenden in Rocrail auch Decoderadressen bzw. Moduladressen. Dann muss das als Decoderadresse eingetragen werden Weichenadresse 200 A = Decoder-Adresse 50 Port 4 Ausgang A Ich habe dazu eine Webseite zum umrechnen erstellt. Dort werden auch die zusammenhänge beschrieben.
Im Prinzip sind Weichenadressen und Moduladressen gleich, nur die werden anders berechnet. Die Zentrale sendet im beiden fällen die gleiche DCC-Adresse.
Ich habe hier nur ein Beispiel beschrieben, um das Prinzip zu beschreiben. Über die Signaltechnik in einzelnen habe ich wenig Ahnung. In der MOBA Blinken.exe - Tabelle können aber alle Signalbilder definiert werden.