Skip to content

Latest commit

 

History

History
57 lines (45 loc) · 4.47 KB

File metadata and controls

57 lines (45 loc) · 4.47 KB

DCC-Funktionsdekoder mit ATtiny85

Ursprungs-Version

Die erste Dekoder-Software für die Arduino wurde abgeleitet von einem Sketch, der für ein kleines Digispark-Board mit ATtiny85 entworfen wurde.
https://jo-fri.github.io/Eisenbahn/DCC_ATtiny85/index.html\ Die feste Adressierung und Konfiguration wurde geändert auf die Nutzung von CVs.

Der Sketch verwendet die NmraDcc-Bibliothek von MRRWA, die über die Arduino-Bibliotheksverwaltung eingebunden werden kann.

Zum Digispark-Board wurde von mir eine kleine Zusatzplatine entwickelt, mit der die Anschaltung an das Gleissignal erfolgt. Dies enthält weiterhin 3 Transistoren für die Funktionsausgänge, um z.B. die gleichgerichtete Gleisspannung zu schalten, und ein 4. Transistor zur Erzeugung des ACK-Signals. Damit sind jedoch nur noch drei der in der Ursprungsversion verfügbaren vier Ausgänge nutzbar.

Modifizierte Version

Für den Einsatz in einer LED-Lichtleiste als Ersatz für die vorhandene Beleuchtung mit zwei Birnchen in vierachsigen PIKO-DR-Rekowagen habe ich die Dekoder-Hardware mit auf die Beleuchtungsplatine gebracht. Die Wagen sind jetzt auf dem Programmiergleis konfigurierbar. Die Beleuchtung ist jetzt auch dimmbar.
Auf der Beleuchtungsplatine ist ein Steckverbinder für einen ISP-Programmer vorhanden, damit kann auf den Bootloader wie beim Digispark-Board verzichtet werden, was Speicherplatz und Bootzeit spart.

Einen Dekoder mit dem Digispark-Board und der Zusatzplatine habe ich in einem Packwagen eingebaut.

Folgende Funktionen sind möglich:

  • F0 schaltet richtungsabhängig PB0 (LV) und PB4 (LR), z.B. Schlusslichter beider Seiten
    • PB4 (LR) kann auf eine andere Funktionstaste gemappt und damit einzeln geschaltet werden
  • F1 schaltet PB1 (AUX1), z.B. Innenraumbeleuchtung

Jetzt sind folgenden Konfigurationsvariablen (CVs) sind vorhanden:

  • CV1 DCC-Adresse, default 3
  • CV7 Versionsnummer
  • CV8 Hersteller-ID
    • Schreiben auf CV8 führt einen Decoder Reset mit Default-Werten aus
  • CV17/CV18 erweiterte DCC-Adresse (zusammen mit CV29-Bit5)
  • CV29 Konfigurationsbyte
    • Bit0=1 Richtungsumkehr
    • Bit1=1 28/128 Fahrstufen (default
    • Bit5=1 erweiterte Adresse nutzen
  • CV33-CV46 Funktionsmapping für PB0 (LV), PB4 (LR), PB1 (AUX1)
    • CV33 default 1, F0-Vorwärts steuert PB0 (LV, Ausgang Vorwärtsfahrt)
    • CV34 default 2, F0-Rückwärts steuert PB4 (LR, Ausgang Rückwärtsfahrt), Mapping auf F1 ... F4 möglich
    • CV35 default 4, F1 steuert PB1 (AUX1, z.B. Innenbeleuchtung), Mapping auf F0 ... F12 möglich
  • CV49, CV50 für Steuerung der Ausgänge PB0 und PB4 (Schlussbeleuchtung)
    • Bit7=1 immer an
    • Bit6=1 aus, wenn vorwärts
    • Bit5=1 aus, wenn rückwärts
  • CV51, CV52, CV53 für Dimmung der Ausgänge PB0, PB1, PB4
    • Bit0 ... Bit4 (0 ... 31), 0 wird auf 1 gesetzt

Option 4 Ausgänge

Wenn auf das ACK-Signal zum Lesen der Konfigurationsvariablen verzichtet oder dieses zeitweilig mit einem Jumper/Schalter aktiviert werden kann, dann kann auch der Port PB3 als AUX2 genutzt werden. Die dafür gewählte Schaltung liegt im Ordner "hardware".

Für die 4-Port-Variante wurde auch eine komplette Leiterplatte mit dem ATtiny85 entwickelt. Diese Baugruppe hat kein USB-Anschluss und muss mit einem ISP-Programmer programmiert werden.

Dieser 4. Port ist nicht über PWM nicht dimmbar, das unterstützt der ATtiny85 an PB3 nicht. Es wurde aber eine Softwar-Dimmung in der loop-Funktion realisiert.

  • F2 schaltet AUX2 (default), Funktionsmapping mit CV36 (default 8)
  • CV54 ist für die Dimmung

Ich nutze aber nur die Variante ohne Bootloader mit ISP-Programmierung. Ich habe teilweise Konflikte mit dem Bootloader festgestellt, die den Chip resetten und der Bootloader muss neu aufgespielt werden.
Die Dekoder-Hardware ohne das Digispark-Board hat für die ISP-Programmierung 6 Kontakteflächen.

Die 4-Port-Hardware kann auch für die Software der 3-Port-Variante verwendet werden. Dazu ist der Anschluss ACK zu überbrücken, der letze Ausgang ist nicht verwendbar.

Eine gute Informationsquelle zur Programmierung des ATtiny85 ist hier zu finden.