DCC Servo Dekoder: Unterschied zwischen den Versionen

Aus Digital Modellbahn
Zeile 53: Zeile 53:
 
Als Display wird ein 0,96" OLED SSD1306, welches eine Auflösung von 128x64 hat, genutzt. Mittels der 4x Taster für hoch(+), runter(-), Okay und Umschalten 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 Display wird ein 0,96" OLED SSD1306, welches eine Auflösung von 128x64 hat, genutzt. Mittels der 4x Taster für hoch(+), runter(-), Okay und Umschalten 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.
  
 +
===<u>Schnittstelle</u>===
 
Der Tiny Dekoder Programmer nutzt zur Kommunikation mit dem Dekoder das DCC Protokoll. Die gesamte Kommunikation arbeitet mit [[DCC#DCC-Protokoll|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) und einer davon standardmäßig als Reset genutzt wird, ist es notwendig den Dekoder mittels [[Arduino#Hochspannungsprogrammierung_.28High-Voltage-Programming.29|Hochspannungsprogrammierung (High-Voltage-Programming)]] zu programmieren. Nur so kann der Reset-Pin als Ausgabe für die Bestätigung (Ack) genutzt werden!
 
Der Tiny Dekoder Programmer nutzt zur Kommunikation mit dem Dekoder das DCC Protokoll. Die gesamte Kommunikation arbeitet mit [[DCC#DCC-Protokoll|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) und einer davon standardmäßig als Reset genutzt wird, ist es notwendig den Dekoder mittels [[Arduino#Hochspannungsprogrammierung_.28High-Voltage-Programming.29|Hochspannungsprogrammierung (High-Voltage-Programming)]] zu programmieren. Nur so kann der Reset-Pin als Ausgabe für die Bestätigung (Ack) genutzt werden!
  

Version vom 29. Mai 2020, 09:42 Uhr

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

Sprachen:
Deutsch • ‎English

Weichendekoder mini 4x Servo

Attiny85 Servo Dekoders
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)

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 immer aktiv! (0..255)
  • CV# x5 - Geschwindigkeit zu Position 1 (0..255)
  • CV# x6 - Geschwindigkeit zu Position 2 (0..255)
  • CV# x7 - Invertiert die Position 1 und 2 des Servos

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 Lesebaustein und 
einer vorherigen Hochspannungsprogrammierung (High-Voltage-Programming) möglich!

Download

Tiny Dekoder Programmer

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

Um ein einfache Handhabung bei der Programmierung der Servos bereitzustellen habe ich einen Arduino UNO in der breadboard Variante, ein I2C Display und 4x Taster als Konfigurierlösung ethabliert.

Als Display wird ein 0,96" OLED SSD1306, welches eine Auflösung von 128x64 hat, genutzt. Mittels der 4x Taster für hoch(+), runter(-), Okay und Umschalten 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.

Schnittstelle

Der Tiny Dekoder Programmer nutzt zur Kommunikation mit dem Dekoder das DCC Protokoll. 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) 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 für die Bestätigung (Ack) genutzt werden!

Download

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 Herzstückumschaltung. Der Servo dreht sich für ein Umschalten der Weiche um 180 Grad. Als Stelldraht wurde 1,3mm Messing verwendet. Das mittlere Bild zeigt die Mittelstellung. Mit dieser lässt sich der Servoantrieb sehr leicht unter der Weiche (in Mittelposition) justiert befestigen.