DCC Dekoder

From Digital Modellbahn

Eigenbau | Allgemein | Railcom | DCC-Dekoder | Servo-Dekoder | Spezialdekoder

DCC Sniffer

Mit dieser Hardware kann der Arduino das DCC-Signal dekodieren. Dazu wird der Interrupt 0, welcher sich beim Arduino UNO an Pin 2 befindet und der Timer 1 genutzt. Der Timer startet nach einer ansteigenden Flanke am Pin 2 und läuft für 70µs. In einer Auswerteroutine wird dann der Zustand (High/Low) des Pin 2 abgefragt. Diese Daten, beginnend bei der Präambel, werden zu je 8 Bit zusammengefasst und ergeben ein DCC Datenpaket.

Hardware

Anschluss DCC Sniffer (Eagle)

Die Hardware kann in drei verschiedenen Varianten aufgebaut werden.

  1. Der Aufbau mit einem PC817 Optokoppler ist sehr klein, allerdings gibt es keinen passenden Sockel für diesen 4 Pin Optokoppler. Das Signal wird durch den Optokoppler ohne Signalaufbereitung etwas flach und hat keine steile Flanke mehr.
  2. Ein 6N136 oder 6N137 Optokoppler besitzt einen interne Signalverstärkung. Hier wird die Flanke weitergegeben die auch für einen Booster mit Brückengleichrichter nutzbar ist.
  3. Der Einfachste Aufbau ohne optische Trennung für Dekoder welche auch direkt vom Gleis mit Spannung versorgt werden. Hier kann Wahlweise eine Diodenkombination oder ein Gleichrichter verwendet werden. Um den Mikroprozessor zu schützen wird das Signal über einen Widerstand geführt.

Download

Die Software ist für die Arduino IDE geschrieben.

Mini 4x DCC-Decoder

Mini 4x DCC Dekoder (Open-Collector)
Mini 4x DCC Dekoder mit Treiber

Der kleine multifunktions Dekoder für vier Ausgänge auf Basis des Arduino ATTiny85 kann bei einer vielzahl von Anwendungen genutzt werden. Durch seine flexiblen Ausgangsansteuerung und Programmierung mit dem DCC-Tiny-Programmer (Lesebaustein) ist die Konfiguration sehr einfach. Blinkmuster werden dabei über zwei Register programmiert. Diese bilden 16bit um den Status des Ausgang anzugeben. Durchlaufen werden diese 16bit über einen Zähler dessen Geschwindigkeit (CV# x8) sich regulieren lässt. So lässt sich zum Beispiel ein "STROBE" Blitz darstellen (CV# x4 = "10101000" und CV# x3 = "00000000"). Es kann aber auch ein Flackern für den Start einer Leuchtstofflampe in diesem Bitmuster umgesetzt werden. Mit der globalen Einstellung CV# 6 = "0x01" wird dann das Bitmuster nur beim Starten einmal durchlaufen. Bei der Steuerung mittels Lok Adresse und den Funktionen (F0 bis F12) wird die Lokadresse mittels CV#1 (kurze Adresse) oder CV#58 und CV#57 (lange Adresse) die CV# x1 mit dem setzten des BIT 6 und BIT 7 auf "1" aktiviert. Die Abhängigkeit der Fahrrichtung kann für alle Funktionen optional mit aktiviert werden. Durch die CV# x7 kann diese dann auch Invertiert werden, so das ein Einsatz in einem Steuerwagen möglich ist.

DCC CV-Programmierung

Ausgang Konfiguration:

  • CV# 1 - kurze Lok Adresse (1..127)
  • CV# 5 - "1" = Bit 0: führt zum Shift der Adressen um "4" für IntelliBox (default 0)
  • CV# 5 - "2" = Bit 1: Index Bit für Ausgangsadressierung (default 0)
  • CV# 6 - "1" Blinkmuster nur einmal durchlaufen, wenn Ausgang auf "ON" wechselt
  • CV# 7 - "1" = Bit 0: Synchronisierung aller Bitmusterzähler mit dem 1. Ausgang (z.B. Lauflicht)
  • CV# 7 - "2" = Bit 1: Syncronisierung aller Zubehöradressen auf den Ausgang 1
  • CV# 7 - "4" = Bit 2: Ausgang erst abschalten wenn Muster ihn anschaltet (belebtes Haus). Achtung: nicht in Verbindung mit aktiver CV# 6 nutzen!
  • CV# 8 - Softwareversion (Firmware) Dekoder - "nur lesen"
  • CV# 9 - Softwareidentifikation (ID) Dekoder - "nur lesen"
  • CV# 57 (CV#17) - Loco Adresse HIGH byte (192..255)
  • CV# 58 (CV#18) - Loco Adresse LOW byte
  • CV# 69 (CV#29) - Activate with Bit 5 long Loco Adresse

Für jeden Ausgang 1..4 über x=[5..8] können folgende Parameter eingestellt werden:

  • CV# x0 - [0,0,0,A13,A12,A11,A10,A9] Zubehöradresse HIGH (0..64) - default: 0
  • CV# x1 - [A8,A7,A6,A5,A4,A3,A2,A1] Zubehöradresse LOW (0..255) - default: 10+Ausgang
  • CV# x2 - PWM Frequenz ON - Helligkeit (0..255) - default: 255
  • CV# x3 - [S16,S15,S14,S13,S12,S11,S10,S09] Slots Blinkmuster HIGH (0..255)
  • CV# x4 - [S08,S07,S06,S05,S04,S03,S02,S01] Slots Blinkmuster LOW (0..255)
  • CV# x5 - Geschwindigkeit Dimmen zu Position ON (0..255) - default: 5
  • CV# x6 - Geschwindigkeit Dimmen zu Position OFF (0..255) - default: 5
  • CV# x7 - [A4,A3,A2,A1,0,0,0,I] I = "1" (Bit 0) Invertieren der Position ON und OFF des Ausgangs und über A1-A4 erfolgt die Aktivierung des Ausgang in Abhängigkeit vom gewählten Ausgang 1 (Bit 4) bis Ausgang 4 (Bit 7) für Lichtsignale - default: 0
  • CV# x8 - Geschwindigkeit Blinkmuster (0..255)
  • CV# x9 - Pause nach Ablauf des Blinkmusters (0..255) oder CV# 6 aktiv - Zeit bis Ausgangs abschaltet - default: 0
Zur Steuerung über Lok F0 bis F12 muss CV# x0 bei BIT 5 und BIT 6 auf "1" gesetzt werden:
CV# x0: DIR, 1 , 1 ,F0,F4,F3,F2,F1 
CV# x1: F12,F11,F10,F9,F8,F7,F6,F5
Über das "DIR" Bit kann die Richtungsabhängigkeit aktiviert werden. 
Die Angabe der Fahrtrichtung erfolgt über Invertierung "I" (CV#7 Bit 0).

Eine Programmierung des DCC 4x mini Dekoders kann über DCC direct am Programmiergleis erfolgen. Damit ein unabsichtliches Ändern der Werte durch die Programmierung eines anderen Dekoders verhindert wird, kann diese Funktion in der Software nach dem Programmieren deaktiviert werden.

Ein Auslesen der programmierten CV# Werte, ist nur mit dem DCC-Tiny-Programmer (Lesebaustein) und 
einer vorherigen Hochspannungsprogrammierung (High-Voltage-Programming) möglich!

Hardware

DCC 4x Dekoder (Eagle)

Der Dekoder verfügt über einen 5-poligen Programmierstecker J1 für den DCC-Tiny-Programmer (Lesebaustein). Für den normalen Betrieb ist bei diesem Stecker der PIN 4 und PIN 5 (DCC-Signal) mit einem Jumper zu brücken. Wenn der Tiny Programmer (4-polig nur PIN 1 bis 4) aufgesteckt wird, muss der Jumper vorher entfernt werden, da dann das DCC-Signal durch den Programmer und nicht durch die Digitalzentrale erzeugt wird!

Aufgebaut werden kann der Dekoder je nach Anforderung individuell. Der Ausgang kann direkt eine LED mit max. 20 mA ansteuern. Es kann aber auch ein Transistor (Open-Collector-Ausgang) oder ULN2007/8 am Ausgang als Treiber eingesetzt werden.

Download

  • v20: Überarbeitung der Erzeugung des Ausgangsignals. Grundeinstellungen des EEPROM für verschiedene Anwendungen integriert.
  • v14: Optimierung der DCC Erkennung. Entfernung Spannungsimpuls (alle Ausgänge kurz aktiv) für CV# lesen. Lesen nur über RST I/O Pin möglich.

Motorweichen Treiber

Motorweichenadapter

Für die Weichenansteuerung nutze ich die 4x Ausgänge Schaltdecoder, welcher oben erklärt wurde.

Motorweichenantrieben können mit einem Relais gesteuert werden. Diese Schalten eine Phase der 16V~ für die Motorantriebe. Mit einem Doppelumschaltkontakt am Relais, kann der zweite Kontakt zum Beispiel für eine Herzstückpolarisierung eingesetzt werden.

Soll kein Relais verwendet werden kann der Adapter für Motorweichen ORM-1 von Rocrail verwendet werden. Vergleichbar ist dieser auch mit dem hier dargestellten LENZ 11010 (LA 010). Der mittlere PIN (Klemme JP7) wird dabei mit VCC(+) verbunden. An den Klemmen JP6 und JP8 wird der Ausgang(-) des Digitaldekoder angeschlossen. So lassen sich mittels zwei Dekoderausgängen eine Motorweiche (Klemme X4) schalten.