Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

Der Einstieg in die MobaLedLib:

Stammtische

Workshops

aktuell verwendete Versionen


Verwendung mit der MoBa-Zentrale

Steuerung der MobaLedLib-Effekte

Erste Hilfe

Bewegung mit der MLL

Servoplatine

Relaisplatine

WS2811-BiPol


Sound mit der MLL

JQ6500

MP3-TF-16P

Hauptplatine

Sounddateien

Anwendungsbeispiele:

3D-Druck

Entwicklungen MoBa-Universum

Platinen van Theo

MobaLedLib Sonderplatinen

Drehscheibensteuerung LocoTurn V 1.2

Drehscheibe (V0.6)

Lok-Platinen

OLED Displays

Infrared to Z21 Bridge

Hilfereiche Themen

Wissen für Fortgeschrittene

Impressum & Datenschutz

Für Wiki-Editoren:

Server online

anleitungen:spezial:codevorlagen:warnleuchte

In Bearbeitung — Michael 2022/04/25

Die integrierte Warnleuchte

Ausgangsbasis für die folgende Anwendung war eine fixe Idee:
Dort existiert ein Gleisanschluss, der zeitweise zum Programmieren der Lokomotiven genutzt wird, aber zu 99% dem Spielbetrieb dient. Um das zu realisieren, muss dieser Gleisanschluss zweipolig getrennt werden und ganz wichtig: Nach erfolgreicher Programmierung muss er wieder an die Anlage gekoppelt werden. Um diesen letzten Schritt nicht zu vergessen, sollte in unmittelbarer Nähe ein nicht zu übersehendes Warnsignal blinken.

Warum also nicht einfach die RGB-LEDs eines in der Nähe stehenden Gebäudes nutzen und z. B. die Neonröhren einer Werkhalle rot blinken lassen?

Die Herausforderung:
Zur Generierung des Flackerns einer Neonröhre braucht man jedoch einen Speicher, in dem abgelegt wird, wie viele Zündversuche schon gemacht wurden und ob die Lampe endlich richtig gezündet hat. Diese Daten werden im roten Kanal der LED abgelegt, um Speicher im Arduino zu sparen. Bei jedem Zündversuch wird die rote LED um ein kleines bisschen heller. Das sieht dann so aus als wäre es die Glimmlampe des Starters. Zur Erkennung, ob die Lampe gerade hell ist, weil ein Zündversuch stattfindet, leuchtet sie nicht mit der vollen Helligkeit, sondern ein kleines bisschen weniger. In diesem „Weniger“ werden wieder die Zündversuche gespeichert. So spart die Programmierung ein zusätzliches Byte. Das ist wichtig, weil der Arduino nur 2000 davon hat und bereits knapp 800 für die LEDs benötigt werden.

Dieser Sparfimmel führt aber zu einem ungewollten Effekt. Die House Funktion (hier mit Neonröhren) prüft die Helligkeit der roten LED, sobald das Licht angeschaltet werden soll. Wenn die LED durch das Blinken bereits leuchtet, dann kommt das Programm durcheinander. Um das zu verhindern, nutzt man als Warnsignal einfach den Fotoblitz. Da dieser nur einen sehr kurzen Impuls sendet, kommt die House-Funktion beim Wiedereinschalten nicht mehr durcheinander. Man kann somit die RGB-LEDs eines Gehäuses sowohl als belebtes Haus, als auch als Warnleuchte in den Farben Rot (C1), Grün (C2), Blau (C3), Gelb (C12), Cyan (C23) und Weiß (C_All) nutzen.

Insgesamt stünden also sechs unterschiedliche Farben für sechs unterschiedliche Warnsignale zur Verfügung. Im Falle des unten gezeigten Programmiergleises sind das:

  • Grün für die Programmierung mit der Z21
  • Cyan für die Programmierung mit dem ESU LokProgrammer
  • Gelb für die Programmierung mit dem Zimo MXDECUP/MXULFA
  • Weiß als Reserve für die Programmierung mit einem vierten Programmiergerät
  • Rot als Warnleuchte, wenn fälschlicherweise zwei oder mehr Programmiergeräte aktiv sind



Um das Ganze per DCC zu steuern, werden im Programmgenerator als erstes die DCC-Adressen mit den Schalternamen verknüpft. Im Beispiel ist das Adresse #1 für die Aktivierung des normalen Lichts („Licht_Main“). Die Adressen #11 bis #14 werden zum Umschalten der oben genannten Relais und gleichzeitig zum Aktivieren des Fotoblitzes genutzt. Ihnen werden die Namen „Licht_Z21“, „Licht_ESU“, „Licht_Zimo“ und „Licht_Res“ zugeordnet.

Als nächstes benötigt man eine Logische Verknüpfung,

  • welche „Licht_OutN“ aktiviert, wenn „Licht_Main“ eingeschaltet ist aber nicht „Licht_Z21“, „Licht_ESU“, „Licht_Zimo“ oder „Licht_Res“.
  • welche „Licht_OutG“ aktiviert, wenn „Licht_Z21“ eingeschaltet ist aber nicht „Licht_ESU“, „Licht_Zimo“ oder „Licht_Res“.
  • welche „Licht_OutB“ aktiviert, wenn „Licht_ESU“ eingeschaltet ist aber nicht „Licht_Z21“, „Licht_Zimo“ und „Licht_Res“.
  • welche „Licht_OutY“ aktiviert, wenn „Licht_Zimo“ eingeschaltet ist aber nicht „Licht_Z21“, „Licht_ESU“ oder „Licht_Res“.
  • welche „Licht_OutW“ aktiviert, wenn „Licht_Res“ eingeschaltet ist aber nicht „Licht_Z21“, „Licht_ESU“ oder „Licht_Zimo“.
  • welche „Licht_OutR“ aktiviert, wenn „Licht_Z21“ und „Licht_ESU“, „Licht_Z21“ und „Licht_Zimo“, „Licht_Z21“ und „Licht_Res“, „Licht_ESU“ und „Licht_Zimo“ oder „Licht_ESU“ und „Licht_Res“ eingeschaltet ist.

Die letzte logische Verknüpfung muss nicht berücksichtigen, dass auch versehentlich drei Programmer aktiviert sein können. Selbst wenn alle vier Programmer über die Adressen 11-14 aktiviert werden, ist eine der Bedingungen für „Licht_OutR“ wahr.

Die passende Relaisschaltung

Die gezeigte Relaisschaltung schleift das DCC-Signal der Zentrale durch alle inaktiven Relais durch. Das hat einen entscheidenden Vorteil gegenüber einer aufeinander folgenden Schaltung: Es muss für jedes Programmiergerät nur das jeweils zugehörige Relais geschaltet werden und nicht alle davor liegenden zusätzlich. Werden versehentlich zwei Relais aktiviert, wird nur das am ersten Relais angeschlossene Programmiergerät durchgereicht, weil die Kette zu den folgenden Relais unterbrochen ist.

Schließt man hingegen das DCC-Signal der Zentrale am ersten Relais an die geschalteten Ausgänge und die Programmiergeräte ebenfalls an die geschalteten Ausgänge ihrer zugeordneten Relais, müssen bspw. für das Programmiergerät an Relais 3 die ersten drei Relais aktiviert werden.

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
anleitungen/spezial/codevorlagen/warnleuchte.txt · Zuletzt geändert: 2022/04/25 09:25 von 127.0.0.1