OpenPlayer - OpenDecoder4 - Digitaldecoder für DCC
- In Entwicklung
Eigenschaften
- Prozessor AVR90can128
- DCC-Eingang inkl. BiDi (Railcom®) Sendestufe
- Steckplatz für MicroSD-Karten
- mp3-Dekoderchip mit integriertem DAC
- 3,5mm Klinkenausgang und/oder Stereo-Endstufe mit 2x10 Watt an 4Ohm, Lautsprecher-Anschluß mit Schraubklemmen
- Doppelte(!) H-Vollbrücke mit Sensoren für Strommessung und Lastregelung (BEMF) zum Anschluß von zwei Motoren oder Steppermotor.
- 8 Schaltausgänge mit ULN2803 (300mA), steckbar mit Standard-Stiften 2,54mm Raster
- 8 Eingänge mit 5V-Versorgungsmöglichkeit (z.B. für Taster, Drehgeber, Sensoren, Lichtschranken), steckbar mit Standard-Stiften 2,54mm Raster
- Displayanschluß für Graphikdisplay 128x64 oder Textdisplay inkl. Schaltregler für die LED Hintergrundbeleuchtung.
- Einspeisemöglichkeit einer zusätzlichen Stromversorgung
- Doppelter Servo Ausgang
- Verlustarme Spannungsregelung mit Schaltreglern inkl. Linearnachregelung für beste Audioqualität, alternativ normaler Längsregler
- Firmware-Update über USB (mittels FTDI-TTL-Kabel), Konfiguration über USB
- CAN oder XPressnet über Aufsteckbaugruppe mit Buchse und Treiber. Realisiert ist das auf 50 x 80mm und einer zweilagigen Leiterplatte unter Verwendung von SMD-Bauteilen bis zu 0603.
OpenDecoder4 beinhaltet sehr viel Intelligenz innerhalb des Dekoders und arbeitet daher mit einem großen AVR Prozessor. Die Hardware bietet folgende Funktionsblöcke:
Anwendung
-
Mit diesen Funktionsblöcken lassen sich umfangreiche Steuerungsaufgaben innerhalb des Dekoder erledigen. Beispiele:
- SoundDekoder: Es werden mp3-Dateien aus dem internen Speicher des Atmel oder aus der eingesteckten SD Card auf einen DCC-Befehl hin abgespielt.
- Eigenständiger mp3-Player mit Bedienfeld. (OpenPlayer)
- Elektronische Klingel
- Sequenzsteuerungen (das sind kleine Programmabläufe innerhalb des Dekoders)
- Kransteuerungen, mit Eingabe und Überwachung der Kranbahn z.B. mittels Gabellichtschranken.
- Schrittmotoransteuerungen, z.B. für Drehscheiben.
- Komplette Funktionssteuerung von Kirmesmodellen.
- Eigenständige Modellbahn-Zentrale
- Zusammen mit der Xpressnet / CAN Erweiterung ist auch der Einsatz als Bedienpult möglich.
Software
- Beim OpenDecoder4 habe ich zum ersten Mal ein Echtzeit-Betriebssystem auf einem Decoder eingesetzt.
Verwendet wird ein kleiner kooperativer Kern (cortos), also kein echtes RTOS mit Time Slicing, sondern
ein Kern, der auf kooperatives Verhalten der Tasks angewiesen ist - eine Task darf also nicht auf
Ereignis aktiv warten, sondern muß bei einer Wartebedingung die Kontrolle abgeben.
Die Kontrolle über die CPU kann sie automatisch nach einer gewissen Zeit wieder erlangen oder besser durch eine Benachrichtigung von der Ereignisquelle. Harte Echtzeitanforderungen werden durch Interrupts abgedeckt. Die Latenz und Performance einer solchen Struktur ist besser als bei vollständigen Taskwechseln, jedoch müssen sich alle Teile kooperativ verhalten, was manchmal zu schlechter lesbaren Code und zu verkünstelten switch-Anweisungen führt.
Die Vorteile dieser Implementierung: Der simultane Betrieb von DCC, Steuerung per USB und Steuerung über die externen Eingänge wird möglich. Zudem können leicht weitere (lokale) Steuerungsebenen eingezogen werden: denkbar ist z.B. das Zwischenschalten eines Nockenschaltwerkes zwischen DCC-Eingang und entsprechender Ausgangsaktion.
Timing:
Der Echtzeitkern läuft mit einer Interruptrate von 1,6ms, also ca. 600 Int. je Sekunde. Kritisch könnte hierbei das Streamen der mp3-Daten auf den VS1011 Chip sein. Der VS1011 verfügt über einen Eingangs-Fifo von 16384 Bits und fordert bei 16128 Bits ein Nachladen an. Vom Zeitpunkt der Anforderung bis zum Leerlaufen des VS1011e sind also 16kBit. Dies bedeutet bei 128 kbit/s eine Vorhaltezeit von 125ms. Zusätzlich verfügt der VS1011e noch über einen 512 Sample tiefen Ausgangsfifo, was bei 44100 Hz einer Zeit von 11.6 ms entspricht. (->Weitere Details)
Unterlagen / Links
- SoundDecoder:
DCC:
DCC Konfigurationsvariablen inkl. CV-Rechner
PID:
PID Code
Regler (wikipedia)
Takahashi (Einstellregeln)
NIBO Robotor, Motorcontroller Motorregelung mit Attiny44 (SRC)
Motor BEMF allgemein
H Brückenansteuerung gut
OpenModelica Simulationssoftware
DingelDein (VS1011-Projekt)
FAT: Holger Klabunde