DCC Servo Dekoder: Unterschied zwischen den Versionen

Aus Digital Modellbahn
K
Zeile 76: Zeile 76:
 
* [http://sourceforge.net/projects/pgahtow/files/DCC/TinyDekoderProgrammer/DCCTinyDekoder_Conf_v15.ino Sketch v15 (14.08.20)] - DCC TinyDekoderProgrammer (Multifunktion)
 
* [http://sourceforge.net/projects/pgahtow/files/DCC/TinyDekoderProgrammer/DCCTinyDekoder_Conf_v15.ino Sketch v15 (14.08.20)] - DCC TinyDekoderProgrammer (Multifunktion)
 
:* v15: Erweiterungen für Index Bit bei der Anwahl für CVs.
 
:* v15: Erweiterungen für Index Bit bei der Anwahl für CVs.
 +
* [https://sourceforge.net/projects/pgahtow/files/DCC/TinyDekoderProgrammer/ ältere Versionen]
 
* [http://sourceforge.net/projects/pgahtow/files/Arduino%20%28v1.0%29%20libaries/Adafruit_SSD1306.zip Arduino OLED SSD1306 I2C Display Library]
 
* [http://sourceforge.net/projects/pgahtow/files/Arduino%20%28v1.0%29%20libaries/Adafruit_SSD1306.zip Arduino OLED SSD1306 I2C Display Library]
  

Version vom 18. September 2021, 21:07 Uhr

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

Sprachen:
Deutsch • ‎English

4x mini Servo Dekoder

Attiny85 Servo Dekoder
Universalplatine Digital oder Servo Dekoder
Arduino DCC 4x Servo Dekoder schematic (Eagle)

Sehr kleiner Servodekoder basierend auf dem Attiny85 Prozessor, welcher auch über die Arduino IDE programmiert werden kann (Arduino Programmierung). Vor der ersten Programmierung muss der Bootloader des Tiny Uber die Arduino IDE geschrieben en werden. Die Frequenz wird dazu auf 16 MHz PLL mit eingestellt. Das Konfigurieren der Endlagen erfolgt ausschließlich über CV Programmierung.

Hinweis: Dekoder muss auf folgende Fuse programmiert werden: 
* HFuse:D5 LFuse:F1 EFuse:FF (ohne RST: HFuse:55 LFuse:F1 EFuse:FF)

DCC CV-Programmierung

Servo Konfiguration:

  • CV# 5 - "1" als Wert führt zum Shift der Adresse um "4" für IntelliBox (default 255)
  • CV# 6 - Millisekunden Servo PWM minimal (default 54 = 540ms)
  • CV# 7 - Millisekunden Servo PWM maximal (default 240 = 2400ms)
  • CV# 8 - Softwareversion (Firmware) Dekoder - "nur lesen"
  • CV# 9 - Softwareidentifikation (ID) Dekoder - "nur lesen"

Für jeden Servo x=[1..4] können folgende Parameter eingestellt werden:

  • CV# x0 - Zubehöradresse (high)
  • CV# x1 - Zubehöradresse (low)
  • CV# x2 - Position 1 (0..180)
  • CV# x3 - Position 2 (0..180)
  • CV# x4 - Aktive Zeit für Servo; Wenn Parameter null, dann Power immer aktiv! (0..255)
  • CV# x5 - Geschwindigkeit zu Position 1 (0..255)
  • CV# x6 - Geschwindigkeit zu Position 2 (0..255)
  • CV# x7 - Bit 0 invertiert die Position 1 und 2 des Servos; Abhängigkeit mittels Bit 4 - 7 für Servo 1 - 4
  • CV# x8 - Anzahl der Wiederholungen bei automatischer Bewegung (Bit 0-3); Pausenzeit nach jeder Bewegung (Bit 4-7); (default: 0)
  • CV# x9 - Pause nach Wiederholungen bis Bewegung neu startet (default: 0)

Eine Programmierung des DCC Tiny Servo 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!

Der Dekoder verfügt über einen 5-poligen Programmierstecker (PROG) 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!

Download

  • v4.0: Abhängigkeiten zwischen den Servos können über CV# x7 aktiviert werden. Fehler wurden behoben.

Tiny Dekoder Programmer

Programmer für Attiny85 Dekoders
Schaltplan des Programmers (Eagle)

Um ein einfache Handhabung bei der Programmierung der DCC Tiny Dekoder (4x mini oder Servo) bereitzustellen habe ich einen Arduino UNO in der breadboard Variante, ein I2C Display und 4x Taster als Konfigurierlösung ethabliert. Über die im Dekoder vorhandende Software-ID kann der Programmer feststellen um welchen Dekoder es sich handelt.

Als Display wird ein 0,96" OLED SSD1306, welches eine Auflösung von 128x64 hat und per I2C gesteuert wird, genutzt. Mittels der 4x Taster für hoch (UP), runter (DOWN), Okay und Umschalten (SWITCH) können alle CV#s des Dekoders geändert werden. Der Programmer erkennt dabei den Typ des Dekoder und stellt die Konfigurationsvariablen je Ausgang übersichtlich dar. Über ein separates Menü kann aber auch jede einzelne CV# individuell gelesen und geschrieben werden. Mittels der Tasten hoch(+) und runter(-) können die Variablen in schritten oder durch langes Drücken "schnell" geändert werden.

Als Prozessor wird ein Arduino UNO in der "breadboard" Variante eingesetzt. Hierbei arbeitet der ATmega328p, nicht wie üblich beim Arduino, mit dem internen Quarz von 8Mhz, was einen platzsparenden Aufbau ermöglicht. Der ATmega328p muss dazu vorher mit einem speziellen Bootloader beschrieben werden. Das kann mittels eines Arduino UNO und dem Sketch "Arduino as ISP" durchgeführt werden.

Schnittstelle

Der Tiny Dekoder Programmer nutzt zur Kommunikation mit dem Dekoder das DCC Protokoll. Zur Verbindung mit dem Dekoder verfügt der Programmer über eine 4-polig Schnittstelle. Bei dem Dekoder (5-polig) wird zuvor der Jumper zwischen PIN 4 und PIN 5 für den "normalen Betrieb" entfernt. Jetzt kann der Tiny Programmer (PIN 1 bis PIN 4) mit einem Kabel an den Dekoder angeschlossen werden. Die gesamte Kommunikation arbeitet mit DCC Befehlen und die Rückmeldung erfolgt mittels Bestätigen (Acknowledge) durch den Dekoder. Beim Lesen ist es dabei notwendig jedes einzelne Bit abzufragen. Weil der ATTiny45/85 nur über 6 I/O Ports verfügt (4x Ausgang, 1x DCC, 1x Ack[Reset]) und einer davon standardmäßig als Reset genutzt wird, ist es notwendig den Dekoder mittels Hochspannungsprogrammierung (High-Voltage-Programming) zu programmieren. Nur so kann der Reset-Pin als Ausgabe (I/O) für die Bestätigung (Ack) genutzt werden!

Download

  • v15: Erweiterungen für Index Bit bei der Anwahl für CVs.

Weichendekoder 6x Servo

Arduino DCC 6x Servo Dekoder schematic (Eagle)

Als MCU arbeitet ein Arduino UNO welcher sechs Servos ansteuert. Programmiert werden die Endlagen und Stellgeschwindigkeiten mittels drei Knöpfen auf der Schaltung.


Programmierung

Ablauf für die Programmierung in vier Schritten. Für die Programmierung stehen drei Tasten (PROG, LINKS, RECHTS) zur Verfügung. Es können dabei je Servo zwei Endlagen und die Geschwindigkeit der Bewegung eingestellt werden.

  1. Zum Starten die PROG-Taste drücken. Dann beginnt die LED, zuerst für Servo 1 an zu blinken.
  2. Durch mehrfaches Drücken der PROG-Taste kann der gewünschten Servo (LED blinkt) ausgewählt werden. Um den ausgewählten Servo zu programmieren muss jetzt die zugehörige Zubehöradresse über DCC gesendet werden. Wenn schon eine Adresse für diesen Servo programmiert ist, kann dieser Vorgang durch ein drücken der LINKS-Taste oder RECHTS-Taste übersprungen werden.
  3. Im folgenden wird mit der LINKS-Taste oder RECHTS-Taste die gewünschte Position für die Endlage justiert. Zum Umschalten auf die andere Endlagenposition den Servo mittels seiner DCC Adresse umschalten. Beendet wird die Positionseinstellung durch ein Drücken der PROG-Taste.
  4. Nun kann die Geschwindigkeit mit der LINKS-Taste oder RECHTS-Taste, für die Bewegung, erhöht oder gesenkt werden. Dabei pendelt der Servo in der jeweiligen Geschwindigkeit, bis zum Beenden der Programmierung, zwischen seinen zwei Endlagen. Zum Abschluss muss die PROG-Taste erneut gedrückt werden. Alle vorgenommenen Einstellungen werden für den Servo jetzt gespeichert.


Download


Weichenantrieb mit Servo

Servoantrieb für Weiche mit Herzstückumschaltung

Hier dargestellt ist ein Servo Weichenantrieb mit mechanischer Herzstückumschaltung ohne zusätzlichen Mikrotaster. Der Servo dreht sich für ein Umschalten der Weiche um 180 Grad. Durch diesen langen Stellweg wird die Weichenstellung mechanisch verriegelt. Es kann deshalb auch die Servo Spannung abgeschaltet werden und das Servohorn kann nicht durch die Lok verschoben werden. Als Stelldraht wurde 1,3mm Messing-Draht verwendet. Das mittlere Bild zeigt die Mittelstellung. Mit dieser lässt sich der Servoantrieb sehr leicht unter der Weiche (in Mittelposition) justiert befestigen.