DCC-MP3-Dekoder - OpenPlayer

Überblick

    Neben der Nachbildung des Vorbildes in klein wird auf anspruchsvollen Modellbahnen auch das Umgebungslicht gesteuert und gezielt Töne und Geräusche zur Schaffung einer virtuellen Welt eingesetzt. Neben Sounddekodern in Lokomotiven sind auch stationäre Geräusche (z.B. Bahnhofsdurchsagen, Vogelzwitschern im Wald, Kirchturmuhren, ..) von Interesse. Zum einfachen Erzeugen dieser Töne dient die nachfolgend vorgestellte Software, welche auf der Plattform OpenDecoder4 einen mp3-Decoder realisiert.

Wie wird der 'Sound' erzeugt?

    Zum Speichern von Tönen hat sich das mp3-Format durchgesetzt. Töne können einfach am Computer bearbeitet werden und als Dateien abgespeichert werden. OpenDecoder4 verwendet eine microSD-Karte als Datenträger. Beim Eintreffen eines Weichenstellbefehls (DCC Accessory Command) wird einfach die zugehörige Datei von der Speicherkarte gelesen und auf den Ausgang ausgegeben. Damit man das auch gut hören kann, ist eine kräftige Audioendstufe auf dem Dekoder vorgesehen.
    Der Decoder kann mit dieser Software 8 verschiedene (frei wählbare) mp3-Dateien abspielen, die Dateinamen, Lautstärke und Balance Einstellung werden mit CVs definiert.

Kurzanleitung

    Nachfolgende Anleitung beschreibt die schnelle Inbetriebnahme des Dekoders, ohne groß an den CVs was einstellen zu müssen.
  • Zuerst muß man die gewünschten Audiodateien auf eine MicroSD-Karte kopieren. Der Dekoder gibt bis acht verschiedene Dateien aus, auf der SD-Karte dürfen aber auch mehr Dateien liegen. Die Namen der einzelnen Dateien sind wie folgt vorgegeben: 0.mp3, 1.mp3, 2.mp3, 4.mp3, 5.mp3, 6.mp3, 7.mp3 und 8.mp3.
  • Diese SDcard wird nun einfach in den Dekoder einsteckt und DCC sowie Stromversorgung eingeschaltet.
  • Durch Drücken des Programmiertaster (bzw. kurzes Schließen der Pins PROG und GND mit einem Schraubendreher) gelangt der Dekoder in den Programmiermode. Diese ist durch schnelles Flackern der Kontroll-LED erkennbar.
  • Nun wird eine Zubehöradresse an der DCC-Zentrale aufgerufen. Der Dekoder lernt diese Adresse (siehe hierzu auch die Erläuterungen beim normalen Schaltdekoder).

Sequenzen / Sound komibieren mit anderen Aktionen

    Der Decoder enthält neben der reinen mp3-Funktion auch die Möglichkeit, verschiedene Dekoderaktionen zu kombinieren. Beispiel und Erläuterungen.

Konfiguration mit Configurationsvariablen (CV)

    Im Grundzustand ist bereits eine sinnvolle Belegung für die CVs enthalten, man muß normalerweise bis auf die Adresse keine weiteren CV's einstellen!
    Die allgemeine Einstellung des Decoders (wie z.B. Adresse, BiDi-Verhalten, Einschaltzeit) ist identisch zum normalen Opendecoder und dort nachzulesen. Auch hier ist die vereinfachte Programmierung mittels Taster (zwischen PROG und Masse) und anschließendem Weichenstellbefehl möglich.
    Allgemeine Vorbemerkung: Um die Vielfalt des OpenDecoder4 besser kontrollieren zu können, sind die CVs in Funktionsblöcke gegliedert. Diese sind wie folgt auf den Speicher abgebildet:
    CV-Bereiche
    1-39Allgemeine Decodereinstellungen wie z.B. Adresse und Mode
    40-295Einstellungen für Servos: Endanschläge, Umlaufkurven, Geschwindigkeit, ..
    296-315Einstellungen für Motoren: Wiederholfrequenz, Regelparameter, Vmin, Vmax, ..
    316-415Einstellungen für Sound: Lautstärke, Dateinamen, ...
    416-823Einstellungen für Schaltwerke: Laufgeschwindigkeit, Nockenaktionen und Positionen ...

CV für das allgemeinen Verhaltens

    Das gewünschte Verhalten des Decoders kann einfach durch CV (=Konfigurationsvariablen) eingestellt werden. Darüber hinaus kann konventionell die Adresse auch mit Programmiertaster definiert werden - dabei werden die wichtigsten CV's sinnvoll vorbelegt.
    Die CV's sind bei OpenDecoder gemäß der Normung der NMRA vergeben, wobei OpenDecoder4 wegen der Anzahl an CVs nicht vom sogenannten CV-Remapping Gebrauch macht: Die CVs beginnen bei CV1 und reichen bis CV1024.
  • CV 1: Decoder Adress Low (*=1)
  • CV 3: ON TIME Function 1 (*=300ms)
    Einschaltzeit des Ausgangspaares 1. Diese wird in Einheiten von 20ms angegeben. Somit sind Zeiten bis zu 5s möglich. Z.B. entspricht ein Wert von 5 einer Zeit von 100ms, was für die meisten Spulenantriebe sicher ausreicht. Bei Programmierung mit 0 bleibt der Ausgang permanent eingeschaltet. Wird von der Zentrale ein Abschaltbefehl vor Erreichen der programmierten Pulslänge empfangen, so erfolgt das Abschalten sofort.
    Zusätzlich schalten sich die Ausgänge immer paarweise gegenseitig ab, so daß nie zwei Spulen oder zwei Signalzustände gleichzeitig aktiv sind.
    Warnung: Bei Weichen ohne Endabschaltung bzw. mit defekter Endabschaltung kann eine lange Pulszeit bzw. ein permanentes Schalten zu unlässiger Erwärmung des Weichenantriebes führen - im einfachen Fall mit innovativer Verformung, im schlimmen Fall mit Brandgefahr.
  • CV 4: ON TIME Function 2
    Einschaltzeit des Ausgangspaares 2. Ansonten wie CV515.
  • CV 5: ON TIME Function 3
    Einschaltzeit des Ausgangspaares 3. Ansonten wie CV515.
  • CV 6: ON TIME Function 4
    Einschaltzeit des Ausgangspaares 4. Ansonten wie CV515.
  • CV 7: Version
    Dieses Register enhält die Softwareversion: 0x40; nur Lesezugriff möglich
  • CV 8: Herstellerkennung (VID Vendor ID)
    In diesem Register ist eine Kennzahl für den Hersteller hinterlegt. Es gibt eine Übersicht dieser Kennzahlen bei der NMRA OpenDecoder benutzt: 0x0D = 13 = Selbstbau Decoder.
    Dieses Register ist fest eingestellt und kann nur gelesen werden.
    Durch einen Schreibzugriff auf dieses Register kann der default-Zustand aller CV's wieder hergestellt werden.
    Wichtig: Die Ausführung (Überschreiben aller CVs) dauert länger, als die NORM für einen Schreibzugriff vorsieht. Es wird daher zuerst eine Quittung zurückgesendet, anschließend erfolgt die Restaurierung des default-Zustandes. Während dieser Operation blinkt der Decoder (und darf dabei nicht abgeschaltet werden!).
  • CV 9: Decoder Adress High (*=0)
    Hinweis: wenn die Adresse noch nicht programmiert wurde, dann blinkt der Decoder 5 mal schnell, Pause, 5 mal schnell, Pause, usw.; Der Decoder funktioniert jedoch normal.
  • CV 29: Decoder Configuration
    Hier wird die Konfiguration des Decoders eingestellt:
      CV 541: DECODER CONFIGURATION
      7 Decoderart:
      0 = Multifunction Decoder - die Bits 6..0 sind wie bei CV29 definiert.
      1 = Accessory Decoder.
      6 Adressierung Mode:
      0 = Decoderbezogene Adressierung
      1 = Ausgangsbezogene Adressierung
      5 Decodertyp:
      0 = Basic Accessory Decoder
      1 = Extended Accessory Decoder
      0..4 reserviert
    Dieses Register ist fest auf 1000 0000 eingestellt und kann nur gelesen werden.
  • CV 33: DECODER MODE
    Diese CV legt die Betriebsart des Decoders fest. Je nach nach Betriebsart kann sich die Bedeutung der folgenden CV's komplett ändern! Achtung - es muß auch das passende File geladen sein, welche die gewählte Betriebsart auch unterstützt. Eine bestimmte Software unterstützt nicht alle Modi (siehe Download). Sollte ein Mode eingestellt werden, den die geladene Software nicht unterstützt, so blinkt der Decoder 6*schnell-Pause.
    Im folgenden sind nur die CV's für den MODE 40 beschrieben!
  • CV 34: MANUAL CONTROL
    Hier wird die Art und Weise einer eventuellen Handbedienung eingestellt. Handbedienung erfolgt über den 8-bit breiten Eingangsport.
      CV 34: MANUAL CONTROL
      0 Handbedienung abgeschaltet
      1 (*) Direkte Zuordnung, jeder Eingang entspricht einem DCC-Befehl. Dieser Mode entspricht quasi einer mehrkanaligen Klingel.
      2 Lautstärkeregelung über Taster (reserviert, z.Z. noch nicht implementiert)
  • CV 35: MANUAL CONTROL MASK
    Wenn Handbedienung freigeschaltet ist, dann wird mit dieser Maske eingestellt, welche Eingänge als Bedieneingänge funktionieren. Eine 1 markiert den jeweiligen Eingang als aktiv. Wenn dieser Eingang dann gegen Masse geschlossen wird, dann wird intern ein zugehöriges Event ausgelöst (wie wenn ein DCC Befehl mit diesem Adress-Offset eingetroffen wäre).
    Unabhängig von dieser Einstellung können Eingänge im Sequenzer-Mode auf 0 oder 1 abgefragt werden.
      CV 35: MANUAL CONTROL MASK
      0 Handbedienung abgeschaltet
      255 (*) Direkte Zuordnung der Bits, jeweils eine 1 kennzeichnet den Eingang als für Handbedienung freigegeben.
  • CV 36: Errorcode (reserviert)
    Bestimmte interne Fehler werden hier abgelegt.
  • CV 37: VS1011 Status (reserviert)
    Hier wird (bei Abspielproblemen) der Status des mp3-Chips abgelegt.

Fehlercodes

  • Der Decoder blinkt .. was bedeutet das?
    Mit Hilfe der LED wird ein interner Zustand des Decoders angezeigt. Dabei wechseln sich eine Reihe schneller Pulse mit einer Pause ab. Es gibt folgende Blinkcodes:
     1  ----x----x---- reserved
     2  ----x-x----x-x---- reserved
     3  ----x-x-x----x-x-x--- reserved
     4  ----x-x-x-x----x-x-x-x--- Der VS1011 arbeitet nicht.
     5  ----x-x-x-x-x---- Es wurde noch keine Adresse programmiert. Das ist der normale Zustand nach dem Laden der Firmware bzw. nach einem Decoder-Reset.
     6  ----x-x-x-x-x-x---- Falscher Mode, der gewählte Mode wird von der geladenen Firmware nicht unterstützt. (also z.B. wenn beim ServoDecoder DMX gewählt wird).
     X  --|--|--|--|-- schnelles Blinken: Programmiermode aktiv.
     X  -|-|-|-|- sehr schnelles Blinken: es werden intern gerade Werte umkopiert, z.B. nach einem Preset oder Reset-Befehl. Dabei darf der Decoder nie stromlos geschaltet werden.
  • Der Decoder piept .. was bedeutet das?
    Die per DCC-Kommando aufgerufene mp3-Datei wurde nicht gefunden.

CV für den mp3-Block im Decoder

    Vorbemerkung: diese CVs sind als Block aufzufassen. Die tatsächliche Adresse ergibt sich, wenn man die Basisadresse des Block zur Teiladresse addiert. Deswegen sind die CV-Adressen hier mit einem '+' - Vorzeichen angegeben. Je nach integrierten SW-Modulen kann eine andere Basisadresse gelten, bitte daher bei CV-Steuerprogrammen diese Möglichkeit vorsehen.
  • CV [Base] + 0: VOLUME
    Hier wird die allgemeine Lautstärke eingestellt, welche zusätzlich zur Lautstärke der einzelnen mp3-Dateien berücksichtigt wird.
      CV [Base] + 0: VOLUME
      255 volle Lautstärke.
      254 .. 1 reduzierte Lautstärke, jedes Digit bedeutet eine Pegeländerung um 0,5dB. Hierbei ist zu beachten, dass der Höreindruck einen großen Wertebereich von bis zu 100dB umfasst.
      0 Lautstärke 0, Ton ist aus.
  • CV [Base] + 1: BALANCE
    Hier wird die allgemeine Balance eingestellt, welche zusätzlich zur Balanceeinstellung der einzelnen mp3-Dateien berücksichtigt wird.
      CV [Base] + 1: BALANCE
      0 links und rechts gleich laut.
  • CV [Base] + 2: BASS
    Hier wird die Bassanhebung einsgestellt.
      CV Base+2: BASS
      0 normale Lautstärke
      1 .. 15 Bassanhebung
  • CV [Base] + 3: TREBLE
    Hier wird die Höhenanhebung/Absenkung einsgestellt.
      CV Base+3: TREBLE
      0 normale Lautstärke
      1 .. 7 Höhenanhebung
      -1 .. -7 Höhenabsenkung (-1 = 255, -2=254, usw.)
  • Definition der einzelnen Töne
    Für jeden Ton existieren Steuer-CVs, welche Abspielmode, Lautstärke, Balance und Dateinamen vorgeben. Diese CV sind je mp3-File zusammengefasst, der Decoder kann 8 verschiedene mp3-Files abspielen, es gibt also 8 solcher Gruppen von Steuer-CVs. Jede Gruppe ist dann einem DCC-Befehl (=[Cmd] zugeordnet.
    • CV [Base] + 4: MP3-SOURCE
      Hier wird der Wiederholungsmodus eingestellt (für Befehl 0).
        CV [Base] + 4: MP3-SOURCE
        0 internal flash
        1(*) sd-card
        Normalerweise wird die mp3-Datei von der SD-Karte gelesen. Bei bestimmten Anwendungen kann es aber erwünscht sein, direkt aus dem Programmspeicher des Dekoders zu agieren: hierbei muß die mp3-Datei bereits beim Kompilieren des Decoders mit eingebunden werden, nähere Hinweise siehe Quelltext.
    • CV [Base] + 5: LOOP CONTROL
      Hier wird der Wiederholungsmodus eingestellt (für Befehl 0).
        CV [Base] + 5: LOOP CONTROL
        0 Das mp3-file wird in einer Endlosschleife abgespielt.
        1(*) Das mp3-file wird einmal abgespielt.
        2 .. 255 Das mp3-file wird die angegebene Zahl mal abgespielt.
    • CV [Base] + 6>: FILE VOLUME
      Hier wird die individuelle Lautstärke dieser Datei eingestellt. Diese Lautstärke wird zusammen mit der allgemeinen Lautstärke verwendet.
        CV [Base] + 6: FILE VOLUME
        255 Das mp3-file wird mit voller Lautstärke abgespielt.
        254 .. 1 Das mp3-file wird mit reduzierter Lautstärke abgespielt.
        0 Lautstärke 0.
    • CV [Base] + 7: FILE BALANCE
      Hier wird die individuelle Balance (Links/Rechts) dieser Datei eingestellt. Diese Balance wird zusammen mit der allgemeinen Balance verwendet.
        CV [Base] + 7: FILE BALANCE
        -100 .. -1 Der rechte Kanal ist leiser, links ist ungedämpft.
        0 Links und Rechts gleich laut.
        1 .. 100 Der linke Kanal ist leiser, rechts ist ungedämpft.
      Hinweis: normalerweise kann man in Digitalsystemen keine negativen Werte programmieren. Es ist dann anstelle der negativen Zahl die entsprechende Darstellung im Zweierkomplement einzugeben: -1 entspricht 255, -100 entspricht 156
    • CV [Base] + 8 ... [Base] + 15: FILE NAME
      Hier wird der Dateiname für das mp3-File bei Stellbefehl 0 eingestellt. Die Software verwendet (aus Vereinfachungsgründen) klassische 8.3-Namen, d.h. der Dateinamen darf auf bis zu 8 Zeichen bestehen, die Dateierweiterung (manchmal auch Dateityp genannt) aus bis zu 3 Zeichen, beides getrennt durch einen Punkt. Die Dateierweiterung ist fest als .mp3 vorgegeben.
        CV [Base] + 8 ... [Base] + 15: FILE NAME
        32 ... 128 Eingabe Dateiname als ASCII-Zeichenkette z.B. '123'.
      Hinweise:
      Die Umwandlung von Zeichen in Zahlen wird gemäß der ASCII Tabelle vorgenommen.
      Wenn der Dateinamen kürzer als 8 Zeichen ist, so sind die restlichen Zeichen mit Leerzeichen (=32) oder 0 aufzufüllen.

      Voreinstellung: "0.mp3"
    • CV [Base] + 4 + [Cmd] * 16: MP3 SOURCE
      Hier wird der Wiederholungsmodus eingestellt (für Befehl [Cmd]).
    • CV [Base] + 5 + [Cmd] * 16: LOOP CONTROL
      Hier wird der Wiederholungsmodus eingestellt (für Befehl [Cmd]).
    • CV [Base] + 6 + [Cmd] * 16: FILE VOLUME
      Hier wird die individuelle Lautstärke dieser Datei eingestellt.
    • CV [Base] + 7 + [Cmd] * 16: FILE BALANCE
      Hier wird die individuelle Balance (Links/Rechts) dieser Datei eingestellt.
    • CV [Base] + 8 + [Cmd] * 16 ... [Base] + 15 + [Cmd] * 16: FILE NAME
      Hier wird der Dateiname für das mp3-File bei Stellbefehl 1 eingestellt. Voreinstellung: "#.mp3", wobei # den DCC-Befehl [Cmd] bezeichnet. Bei Befehl 1 wird also 1.mp3 abgespielt.
  • mp3-Testmode

      Zur Inbetriebnahme und zum Test der Audioendstufe gibt es einen Testmode, dieser wird mit CV33 = 49 und anschließendem Neustart aktiviert. Im Testmode werden keine mp3-Dateien abgespielt, sondern es werden die Sinusfunktionen des VS1011e aufgerufen.
        Taste Wirkung
        1 Ton abgeschaltet, Kontroll-LED leuchtet kurz auf.
        2 Sinuston mit 281,25 Hz, Kontroll-LED leuchtet etwas länger auf.
        3 Sinuston mit 375 Hz, Kontroll-LED leuchtet auf.
        4 Sinuston mit 468,75 Hz, Kontroll-LED leuchtet auf.
        5 Sinuston mit 562,5 Hz, Kontroll-LED leuchtet auf.
        6 Sinuston mit 1031,25 Hz, Kontroll-LED leuchtet auf.
        7 Sinuston mit 1500 Hz, Kontroll-LED leuchtet auf.
        8 Sinuston mit 2531,25 Hz, Kontroll-LED leuchtet auf.

    Unterlagen / Links