Arduinobasierter DIY Zubehördecoder

Bereich für alle Themen rund um Digitaltechnik und digitale Umbauten.
Benutzeravatar

Threadersteller
MicroBahner
InterCityExpress (ICE)
Beiträge: 2011
Registriert: Mi 28. Nov 2012, 14:24
Nenngröße: H0
Stromart: analog DC
Steuerung: Microprozessor-Eigenbau
Gleise: Tillig
Wohnort: Mittelfranken
Alter: 68

Arduinobasierter DIY Zubehördecoder

#1

Beitrag von MicroBahner » Fr 6. Jan 2017, 22:03

Hallo,
der eine oder andere kennt vielleicht meinen Thread zu den MobaTools. Dort habe ich einige Demo's vorgestellt, wie man diese Library einsetzen kann. U.a. auch einen DCC-Zubehördecoder.
Dieser Decoder hat inzwischen ein Stadium erreicht, das über eine Demo zur Anwendung der MobaTools doch deutlich hinausgeht. Wer gerne etwas Elektronik-Bastelei betreibt und Grundkenntnisse im Arduino-System hat sollte ihn zum Laufen bringen. Wirklich Programmieren muss man nicht, um ihn einsetzen zu können. Deshalb möchte ich ihn hier im Digital-Forum vorstellen. Vielleicht interessiert sich doch der eine oder andere dafür.

Eigenschaften:
  • DCC Zubehördecoder für bis zu 12 aufeinanderfolgende Adressen (abhängig von den verfügbaren Digitalausgängen)
  • CV-programmierbare Parameter
  • Ansteuerung von Servos ( optional auch mit Relaisansteuerung zur Polarisierung )
    Die Endlagen der Servos können mit einem Drehencoder justiert werden.
  • Ansteuerung von Doppelspulenantrieben
  • einfaches Schalten von Ausgängen (z.B. für Beleuchtungen)
  • Ab V3.1: Funktionen zur Lichtsignalansteuerung
  • 16.2.17 : Signalbilder jetzt direkt den Weichenbefehlen zugeordnet.
  • Ab V4.0: Funktionen für Vorsignale
  • Vorsignale am gleichen Mast wie das Hauptsignal können dunkelgeschaltet werden, wenn das Hauptsignal Hp0 oder Hp00 zeigt.
  • Vorsignalen kann eine alternative Adresse zugewiesen werden. Damit können sie parallel mit dem zugehörigen Hauptsignal geschaltet werden.
  • V4.0 benötigt die MobaTools ab V0.9
  • Der Zubehördecoder läuft jetzt auch auf den STM32F1 Prozessoren (stm32duino)
  • V4.0.3 enthält auch ein Beispiel für einen Lichtsignaldecoder.
  • V4.1 enthält ein paar Erweiterungen und Fehlerbeseitigungen
  • V6.0 ist auch als LocoNet Decoder nutzbar. Die Umschaltung DCC/LocoNet wird über ein #define in der neuen Datei 'interface.h' festgelegt. Ein Fehler bei DCC-Adressen > 255 wurde beseitigt.
Die verwendeten Funktionen und die Zuordnung zu den Digitalausgängen des Arduino werden in einer Parameterdatei festgelegt. Dort werden auch die Initialwerte für die CV'S definiert.
Ein Decoder kann eine beliebige Kombination der unterstützten Funktionen enthalten. Die Begrenzung liegt in der Zahl der verfügbaren Digitalausgänge.

Weitere Details können dem Manual und den Release-Notes entnommen werden. Das Manual enthält auch Beispielschaltbilder und die Beschreibung des Lichtsignaldecoders.

Neueste Version (Beta) V6.0

Vorherige Version ist V5.0 (Downloadlink)

Um den Sketch übersetzen zu können, werden noch 2 Libraries benötigt: die MobaTools, und die nmraDCC-Library.
ACHTUNG: Die derzeit ( seit 12.17 ) aktuelle Version der nmraDCC Library auf GitHub ist inkompatibel zu den vorherigen Versionen und funktioniert nicht mehr mit dem Zubehördecoder. Es gibt beim Übersetzen keine Fehlermeldung, aber Weichentelegramme werden nicht mehr erkannt.
Die letzte funktionierende Version ist die nmraDCC Version 1.4.2. Die Version lässt sich auch über den Bibliotheksverwalter installieren.


Wer Fragen oder Anregungen zu dem Decoder, oder Probleme damit hat, kann sich gerne hier melden ;)
Wer Fehler findet, kann sie ebenfalls hier oder direkt in GitHub melden :wink:
Zuletzt geändert von MicroBahner am Fr 3. Aug 2018, 16:03, insgesamt 31-mal geändert.


Siki
InterRegio (IR)
Beiträge: 113
Registriert: Mo 27. Apr 2015, 09:38
Nenngröße: H0
Steuerung: Analog/Digital
Gleise: M-Gleis/C-Gleis
Schweiz

Re: Arduinobasierter DIY Zubehördecoder (DCC)

#2

Beitrag von Siki » Fr 6. Jan 2017, 22:26

Hi,

Wenn ich mir das so anschaue kann ich den auch als Signaldecoder Programmieren oder? Ein Relais mit ansteuern für Zugbeiflussung sollte ja auch möglich sein oder? Funktioniert das auch mit der CS2? Welche Arduinos kann man damit verwenden? Uno, Mega, Micro, Pro Micro, Nano, Pro Mini etc? Einen Arduino programmieren bekomme ich hin, aber mit dcc Signalen kenne ich mich überhaupt nicht aus ):
Daher meine Frage:
- Wie muss ich vorgehen, damit ich die DCC-Adresse festlegen kann im Sketch?
- Wie frage ich den Zustand eine Adresse ab?
Noch was zur Hardware, sehe ich das richtig eine Separate Stromversorgung für den Arduino und das daran angeschlossene ist nicht nötig?

Lg Simon

Benutzeravatar

Threadersteller
MicroBahner
InterCityExpress (ICE)
Beiträge: 2011
Registriert: Mi 28. Nov 2012, 14:24
Nenngröße: H0
Stromart: analog DC
Steuerung: Microprozessor-Eigenbau
Gleise: Tillig
Wohnort: Mittelfranken
Alter: 68

Re: Arduinobasierter DIY Zubehördecoder (DCC)

#3

Beitrag von MicroBahner » Fr 6. Jan 2017, 23:11

Hallo Simon,
als Signaldecoder für Lichtsignale ist das bisher nicht vorgesehen. Da bräuchte man auch recht viele PWM-fähige Ausgänge, um das Überblenden realistisch hinzubekommen.
Der Decoder reagiert auf DCC-Zubehörbefehle im einfachen Format. Das sind die Standard-Weichenbefehle der Zentralen. Das erweiterte Format wird nicht unterstützt.
Auf den von Dir genannten Arduinos sollte der Decoder laufen.
Siki hat geschrieben:Wie muss ich vorgehen, damit ich die DCC-Adresse festlegen kann im Sketch?
Die DCC-Adresse kann direkt im Konfigurationsfile festgelegt werden. Oder man legt sie bei der Inbetriebnahme im Programmiermodus fest. Da wird die erste empfangene DCC-Adresse zur Basisadresse des Decoders.
Siki hat geschrieben:Wie frage ich den Zustand eine Adresse ab?
Die kannst die CV-Adresse auslesen, in der der Zustand gespeichert ist. Überlicherweise erkennt man den Zustand aber ja auch an den Ausgängen (Servoposition, Relaisausgang ...
Siki hat geschrieben:Noch was zur Hardware, sehe ich das richtig eine Separate Stromversorgung für den Arduino und das daran angeschlossene ist nicht nötig?
Im Schaltbild ist jetzt mal eine 12V Versorgung für die Relais und den Arduino vorgesehen. Angeschlossene Servos kannst Du mit den intern erzeugten 5V nicht betreiben, die brauchen eine eigene Versorgung. Schliesst Du direkt Leds an den ULN2003 an, können die auch z.B. mit den 12V versorgt werden.


Siki
InterRegio (IR)
Beiträge: 113
Registriert: Mo 27. Apr 2015, 09:38
Nenngröße: H0
Steuerung: Analog/Digital
Gleise: M-Gleis/C-Gleis
Schweiz

Re: Arduinobasierter DIY Zubehördecoder (DCC)

#4

Beitrag von Siki » Fr 6. Jan 2017, 23:38

Mit dem Zustand dr Adresse meinte ich eigentlich wie ich beim Arduino erkenne was geschalten wurde demnach wenn er z.b eine Adresse 200 hat ob diese auf rot oder grün steht. Kann er auch mehrere adresse abfragen sprich kann ich ihm die adresse 200,201,202,204 zuordnen? Das Überblenden spielt nicht eine Hauptrolle, sprich ein normales digitalHIGH würde auch mal ausreichen und dies kann ja auf jedem Pin ausgegeben werden. Ich würde den decoder ausschliesslich für Led-Signale und pro Hauptsignal ein Relais zum Stromlos schalten einsetzen.

Lg Simon

Benutzeravatar

Threadersteller
MicroBahner
InterCityExpress (ICE)
Beiträge: 2011
Registriert: Mi 28. Nov 2012, 14:24
Nenngröße: H0
Stromart: analog DC
Steuerung: Microprozessor-Eigenbau
Gleise: Tillig
Wohnort: Mittelfranken
Alter: 68

Re: Arduinobasierter DIY Zubehördecoder (DCC)

#5

Beitrag von MicroBahner » Sa 7. Jan 2017, 09:25

Siki hat geschrieben:Mit dem Zustand dr Adresse meinte ich eigentlich wie ich beim Arduino erkenne was geschalten wurde demnach wenn er z.b eine Adresse 200 hat ob diese auf rot oder grün steht.
Dannn musst du halt direkt am jeweiligen Arduino-Ausgang noch eine Led spendieren.
Siki hat geschrieben:Kann er auch mehrere adresse abfragen sprich kann ich ihm die adresse 200,201,202,204 zuordnen?
Ja, das geht. Allerdings müssen die Adressen unmittelbar aufeinander folgen. Du konfigurierst die Basis-Adresse des Decoders. Wenn Du nun z.B. insgesamt 8 Funktionen konfiguriert hast, so belegen die die Basisadresse und die 7 darauf folgenden.
Siki hat geschrieben: Ich würde den decoder ausschliesslich für Led-Signale und pro Hauptsignal ein Relais zum Stromlos schalten einsetzen.
Für einfache rot/grün Blocksignale ohne Überblenden kannst Du den Decoder schon verwenden. Das Relais schliesst Du dann z.B. parallel zur grünen Led an. Mit einer 2. Adresse sollte dann auch noch eine gelbe Led für 'Langsamfahrt' schaltbar sein.


fbstr
InterRegioExpress (IRE)
Beiträge: 427
Registriert: So 28. Aug 2016, 21:04
Nenngröße: H0
Stromart: digital
Steuerung: Lenz Set100, TouchCab, DR5000
Gleise: Peco Code 75, Trix C
Wohnort: Stuttgart
Deutschland

Re: Arduinobasierter DIY Zubehördecoder (DCC)

#6

Beitrag von fbstr » Sa 7. Jan 2017, 11:32

Hervorragendes Timing! Ich will in den nächsten 2 Wochen für meine Regalbahn den Arduino (bzw. 2 davon) verwenden um 9 Weichen mittels Servo zu schalten, sowie 11 Entkuppler (wo ich aber noch nicht weiß ob ich mir die REPA-Spulenteile zulege oder versuche über SG90-Servos was zu basteln.
Vielen Dank für Deine klasse Arbeit!
Gruss
Frank
------------------------------------------------------------------------------------------------------------------------
Projekt "Bahnpark Augsburg"
Stummitreff BB: jeden 3. Freitag im Monat in Sindelfingen (außer im August)


Siki
InterRegio (IR)
Beiträge: 113
Registriert: Mo 27. Apr 2015, 09:38
Nenngröße: H0
Steuerung: Analog/Digital
Gleise: M-Gleis/C-Gleis
Schweiz

Re: Arduinobasierter DIY Zubehördecoder (DCC)

#7

Beitrag von Siki » So 8. Jan 2017, 11:19

Hallo nochmals,

Sehe ich das richtig, dass wenn ich den Decoder für etwas anderes gebrauchen möchte, muss ich mit dem Arduino Programm nur die DCC_Zubehoerdecoder.h verändern? Sehe ich das richtig, dass dort die erste DCC-Adresse angegeben ist (In deinem Sketch = 17) und dann einfach die 7 nachfolgenden auch verwendet werden (können)?
Und das man damit die Funktion der Adresse bestimmt:

Code: Alles auswählen

const byte iniTyp[]     =   { FSERVO, FSERVO, FSERVO, FSERVO, FSTATIC, FSTATIC,   FCOIL };
const byte out1Pins[]   =   {     A0,     A1,     11,     12,       7,       8,      10 };  // output-pins der Funktionen
const byte out2Pins[]   =   {      3,      5,      6,     NC,      NC,      NC,       9 };
Stimmt das so Schaltzustand 1 schaltet "out1Pins" und Schaltzustand 2 "out2Pins"? Um ein Signal zuschaltet müsst ich wohl "FSTATIC" einsetzten bei "iniTyp". Kann man auch bei den out1Pins/out2Pins 2 Ausgänge einer Funktion zuordnen und Ausgänge doppelt verwenden? (Ich weiss noch nicht genau wiedie CS2 schaltet aber es ist möglich 4 Fahrbegriffe im Layout mit einem Symbol zuschalten, d.h. die Funktion belegt 2 Adressen = 4 Schaltzustände, aber es ist immer nur einer Aktiv --> Da ich SBB-Signale schalten würde müsste ich kombinationen haben wie grün1, grün1-gelb, rot, grün1-grün2). Da ich ja auch noch einen Stoppbereich mitschalten möchte, kann man ja einfach ein Monostabiles 5V-Relais nehmen, welches ohne Strom geschlossen ist und wenn man auf Rot schaltet öffnet.
Hier kann man noch festlegen wie die Funktion funktioniert richtig?

Code: Alles auswählen

const byte iniFmode[]     = { SAUTOOFF, SAUTOOFF, SAUTOOFF,       0,       0,       0, CAUTOOFF };
const byte iniPar1[]      = {        0,        0,        0,       0,       0,       0,      100 };
const byte iniPar2[]      = {      180,      180,      180,     180,       0,       0,       50 };
const byte iniPar3[]      = {        8,        8,        8,       0,       0,       0,        0 };
Was müsste man hier angeben, damit unter FSTATIC je nach Schaltzustand der eine Ausgang konstant aktiv ist (vielleicht noch während dem Schalten auf und abblendet?) Einfach alles mit nullen füllen?

Lg Simon

Benutzeravatar

Threadersteller
MicroBahner
InterCityExpress (ICE)
Beiträge: 2011
Registriert: Mi 28. Nov 2012, 14:24
Nenngröße: H0
Stromart: analog DC
Steuerung: Microprozessor-Eigenbau
Gleise: Tillig
Wohnort: Mittelfranken
Alter: 68

Re: Arduinobasierter DIY Zubehördecoder (DCC)

#8

Beitrag von MicroBahner » So 8. Jan 2017, 21:53

Hallo Simon,
also eigentlich sieht Du das alles schon ziemlich richtig :D :D
Siki hat geschrieben:Sehe ich das richtig, dass wenn ich den Decoder für etwas anderes gebrauchen möchte, muss ich mit dem Arduino Programm nur die DCC_Zubehoerdecoder.h verändern?
Solange Du die Funktionalität nicht über das bisher programmierte hinaus erweitern willst, ist das richtig so.
Siki hat geschrieben:Sehe ich das richtig, dass dort die erste DCC-Adresse angegeben ist (In deinem Sketch = 17) und dann einfach die 7 nachfolgenden auch verwendet werden (können)?
Auch das ist richtig. Wobei die Zahl der nachfolgenden Adresse nicht unbedingt fest 7 ist, sondern davon abhängt, wieviele Weichenadressen (=Funktionen) du in der Tabelle definiert hast.
Die erste DCC-Adresse lässt sich auch später bei der Inbetriebnahme noch ändern, da sie ja als CV gespeichert wird und damit veränderbar ist.
Siki hat geschrieben:Und das man damit die Funktion der Adresse bestimmt:
Genau das ist die Tabelle, die die Funktionen bestimmt (und die auch bestimmt, wieviel Adressen der Decoder belegt).
Siki hat geschrieben:Stimmt das so Schaltzustand 1 schaltet "out1Pins" und Schaltzustand 2 "out2Pins"? Um ein Signal zuschaltet müsst ich wohl "FSTATIC" einsetzten bei "iniTyp".
Wenn Du als iniTyp FSTATIC einsetzt, ist das genau so. Wobei Du nicht unbedingt beide Pins nutzen musst. Wenn Du in der unteren Zeile "NC" einträgst belegst Du nur einen Pin, der dann je nach Schaltzustand HIGH oder LOW ist. Ordnest Du der Adresse 2 Pins zu, dann schalten die im Gegentakt.
Siki hat geschrieben:Kann man auch bei den out1Pins/out2Pins 2 Ausgänge einer Funktion zuordnen und Ausgänge doppelt verwenden?
Das geht nicht. Die Zuordnung der Pins zu den Funktionen muss eindeutig sein. Wenn Du denselben Pin bei 2 unterschiedlichen Funktionen (=Weichenadressen) einträgst wird ein wenig Durcheinander entstehen :wink:
Siki hat geschrieben:(Ich weiss noch nicht genau wiedie CS2 schaltet aber es ist möglich 4 Fahrbegriffe im Layout mit einem Symbol zuschalten, d.h. die Funktion belegt 2 Adressen = 4 Schaltzustände, aber es ist immer nur einer Aktiv
Hier hast Du genau die Einschränkung, dass der Decoder (noch? :wink: ) nicht als Signaldecoder ausgelegt ist. Er kennt keine Abhängigkeiten/Logiken zwischen den Weichenadressen. Jede Weichenadresse schaltet für sich, unabhängig von den anderen. Wenn Du diese Funktionalität der CS2 abbilden willst, dass von 4 Schaltzuständen nur einer aktiv ist, musst Du das mit externer HW abbilden. Das lässt sich aber ganz einfach mt einem 74HC139 Baustein machen. Dann ordnest du jeder der 2 Weichenadressen nur einen pin zu, und diese beiden pins verbindest Du mit dem Eingang des HCT139. Der setzt das dann auf 4 Ausgänge um, von denen immer nur einer aktiv ist. Wobei ein IC zwei solche 'Umsetzer' enthält - also für 2 Signale taugt. Da Du dann nur einen Ausgangspin pro Weichenadresse brauchst, kannst Du auch mehr als 8 Weichenadressen definieren und damit mehr als 4 Signale steuern ( Mit einem Arduino Nano müssten 6 Signale möglich sein).
Siki hat geschrieben:Da ich ja auch noch einen Stoppbereich mitschalten möchte, kann man ja einfach ein Monostabiles 5V-Relais nehmen, welches ohne Strom geschlossen ist und wenn man auf Rot schaltet öffnet.
Das sollte kein Problem sein.
Siki hat geschrieben:Was müsste man hier angeben, damit unter FSTATIC je nach Schaltzustand der eine Ausgang konstant aktiv ist (vielleicht noch während dem Schalten auf und abblendet?) Einfach alles mit nullen füllen?
Das mit dem auf- und abblenden funktioniert ja noch nicht. Ansonsten ist es richtig, dass Du bei FSTATIC hier überall 0 reinschreiben musst. Dann werden die Ausgänge einfach statisch - je nach Schaltzustand - gesetzt.

N.B. Wenn Du die 'Tabelle' zur Konfiguration der Weichenadressen änderst, musst Du darauf achten, dass in allen Zeilen die gleiche Anzahl von Werten steht. Am besten macht man es so wie im Beispiel, dass die jeweils zugehörigen Werte immer schön untereinander stehen.

Benutzeravatar

Uwe HAL
InterRegio (IR)
Beiträge: 114
Registriert: Mi 6. Mai 2015, 10:00
Nenngröße: H0
Stromart: digital
Steuerung: DR5000
Gleise: Piko A
Wohnort: Niemberg
Alter: 53
Deutschland

Re: Arduinobasierter DIY Zubehördecoder (DCC)

#9

Beitrag von Uwe HAL » Mo 9. Jan 2017, 07:37

Hallo Franz-Peter,

auch wenn es schon eine Weile her ist, aber zuerst möchte ich dir noch ein etwas verspätetes aber deswegen nicht weniger erst gemeintes gesundes und glückliches Jahr 2017 wünschen.

Ich verfolge deinen Moba-Tools-Thread von Anbeginn und bin immer noch schwer begeistert von den Möglichkeiten. Dem daraus entstandenen Zubehördecoder nun einen eigenen Beitrag zu spendieren finde ich SUPER :hearts: Ich werde auch hier unbedingt dranbleiben und hin und wieder auch mal meinen Senf dazu geben. Im Moment wollte ich nur mal fix einen Fuß in die Tür stellen und habe das Thema abboniert :fool: :fool:

Liebe Grüße Uwe :D
Liebe Grüße aus Niemberg bei Halle (S) :D

Hier geht's zu meiner Anlage: http://stummiforum.de/viewtopic.php?f=64&t=140522


Siki
InterRegio (IR)
Beiträge: 113
Registriert: Mo 27. Apr 2015, 09:38
Nenngröße: H0
Steuerung: Analog/Digital
Gleise: M-Gleis/C-Gleis
Schweiz

Re: Arduinobasierter DIY Zubehördecoder (DCC)

#10

Beitrag von Siki » Mo 9. Jan 2017, 13:25

Hallo nochmals,

Spricht etwas dagegen in der Schaltung bei den Optokopplern den BC556 durch einen BC557 zu ersetzten?

Was ist ein Drehencoder mit Taster? Ein Potentiometer? Da der Drehencoder laut Anleitung für die Servo, einstellung Verwendet wird, kann ich den weglassen, da ich ja nur die Statischefunktion benötigen werde. Sprich ich bau zwar die Widerstände R6, R7 und R8 ein, aber kein Dreh Encoder (J1).

Lg Simon

Benutzeravatar

Threadersteller
MicroBahner
InterCityExpress (ICE)
Beiträge: 2011
Registriert: Mi 28. Nov 2012, 14:24
Nenngröße: H0
Stromart: analog DC
Steuerung: Microprozessor-Eigenbau
Gleise: Tillig
Wohnort: Mittelfranken
Alter: 68

Re: Arduinobasierter DIY Zubehördecoder (DCC)

#11

Beitrag von MicroBahner » Mo 9. Jan 2017, 18:38

Siki hat geschrieben:Spricht etwas dagegen in der Schaltung bei den Optokopplern den BC556 durch einen BC557 zu ersetzten?
Nein, der Transistor dort ist recht unkritisch, da lässt sich fast jeder pnp Kleinsignaltransistor verwenden.
Siki hat geschrieben:Was ist ein Drehencoder mit Taster? Ein Potentiometer?
Von der Bedienung ähnlich wie ein Potentiometer, nur ohne Anschlag. Technisch aber ganz anders. Du hast mit großer Wahrscheinlichkeit so was schon bedient - die Dinger werden in vielen Geräten auch im Haushalt verbaut. Wenn Du einen Knopf hast, an dem Du endlos drehen kannst um was einzustellen, und Du beim Drehen so leichte Rastungen spürst, bedienst Du einen Drehencoder. Da sind 2 Schalter drin, die sich beim Drehen leicht zeitversetzt öffnen und schließen.
Manche haben noch einen Taster eingebaut, wenn man auf den Drehknopf drückt. Die gleiche Funktionalität kann man aber auch mit einem getrennten Taster erreichen.
Es ist richtig, dass Du den nicht brauchst, da Du keine Servos anschließt. Da man ihn auch für die Servos nur zum Einstellen braucht, würde ich ihn immer als kleine getrennte Platine aufbauen, die nur zum Einstellen angesteckt wird - da reicht dann auch für mehrere Decoder eine aus. Die kannst Du dir ganz sparen.

Benutzeravatar

Threadersteller
MicroBahner
InterCityExpress (ICE)
Beiträge: 2011
Registriert: Mi 28. Nov 2012, 14:24
Nenngröße: H0
Stromart: analog DC
Steuerung: Microprozessor-Eigenbau
Gleise: Tillig
Wohnort: Mittelfranken
Alter: 68

Re: Arduinobasierter DIY Zubehördecoder (DCC)

#12

Beitrag von MicroBahner » Mo 9. Jan 2017, 22:45

Jetzt will ich doch eben mal auch meine anderen Besucher begrüßen :D :D

Hallo Frank,
ist ja klasse, wenn das zeitlich für dich so super passt. Manchmal treffen auch die Zufälle ins Schwarze 8) .
Würde mich freuen von den Ergebnissen zu hören bzw. zu lesen :wink:

Hallo Uwe,
die Wünsche gebe ich gerne zurück. Mit dem Gedanken, einen eigenen Thread für den Decoder zu eröffnen schlage ich mich ja schon länger herum. Freut mich, dass es deine Zustimmung findet - und dein Senf ist immer willkommen :charles:

Benutzeravatar

Threadersteller
MicroBahner
InterCityExpress (ICE)
Beiträge: 2011
Registriert: Mi 28. Nov 2012, 14:24
Nenngröße: H0
Stromart: analog DC
Steuerung: Microprozessor-Eigenbau
Gleise: Tillig
Wohnort: Mittelfranken
Alter: 68

Arduinobasierter DIY Zubehördecoder (DCC) ?Signalfunktionen?

#13

Beitrag von MicroBahner » Mi 11. Jan 2017, 09:50

Hallo,
die Rückfragen von Simon bezüglich der Funktion als Signaldecoder haben mich ein wenig grübeln lassen :roll: .
Nun habe ich mir überlegt, wie man sowas umsetzen könnte und möchte Euch meine Ideen vorstellen. Der Decoder soll ja nur Dinge können, die dann bei Euch auch sinnvoll einsetzbar sind. Ich könnte mir vorstellen das folgendermaßen umzusetzen:

Es gibt eine neue Funktion FSIGNAL2 bzw. FSIGNAL3. Damit werden 2 bzw 3 aufeinanderfolgende Zubehöradressen als eine 'Signalansteuerung' zusammengefasst. Daraus ergeben sich 4 bzw 8 Zustände, die über die Kombination der Zubehöradressen angewählt werden können.
Entsprechend der bisherigen Möglichkeit der Pinzuordnug können so einem Signal maximal 4 bzw. 6 Ausgänge zugeordnet werden.
Ich würde das dann so realisieren, dass über die CV-Parameter für jeden der möglichen 4/8 Signalzustände eine beliebige Ein/Aus-Kombination der zugeordneten Ausgänge definiert werden kann. Damit sollten dann auch etwas komplexere Signalbilder schaltbar sein.


Beispiel für Simon:
Siki hat geschrieben:Da ich SBB-Signale schalten würde müsste ich kombinationen haben wie grün1, grün1-gelb, rot, grün1-grün2).
Er hat 4 Led's: grün1, grün2, gelb und rot = 4 Ausgänge ( sein Relais ist parallel zu rot angeschlossen )
Die Zuordnung könnte dann z.B. sein:
Zustand 0: nur rot aktiv
Zustand 1: nur grün1 aktiv
Zustand 2: grün1 und gelb aktiv
Zustand 3: grün1 und grün2 aktiv

Es würde mich freuen, wenn ihr mir Eure Meinung zu so einer Erweiterung des Decoders mitteilen könntet :D :D .
Macht das so Sinn? Was könnte/sollte/müsste man anders machen?

Benutzeravatar

MoBa_Alfred
InterRegioExpress (IRE)
Beiträge: 473
Registriert: Do 19. Okt 2006, 08:29
Nenngröße: H0
Stromart: digital
Steuerung: MoBaSbS
Gleise: C-Gleis
Wohnort: Fulda (Hessen)
Alter: 65
Deutschland

Re: Arduinobasierter DIY Zubehördecoder (DCC)

#14

Beitrag von MoBa_Alfred » Di 17. Jan 2017, 13:03

Hallo Franz-Peter,
ich habe mal eine Frage zum Schaltplan in Manual.pdf der Version 3.0.
Du hast dort den 6N137 Optokoppler so dargestellt:
Bild
Das Schaltzeichen für den 6N137 ist laut Eagle und Datenblatt aber so:
Bild
Kannst Du das bitte aufklären oder habe ich da irgendetwas übersehen?

Viele Grüße
Alfred
=================================
Mä-M-Gleisanlage und C-Gleisanlage, Digital mit MoBaSbS und TrainController
H0e Modul mit z21start und multiMAUS
und aus Altbeständen 6021, IB und MobileStation
=================================

Benutzeravatar

Threadersteller
MicroBahner
InterCityExpress (ICE)
Beiträge: 2011
Registriert: Mi 28. Nov 2012, 14:24
Nenngröße: H0
Stromart: analog DC
Steuerung: Microprozessor-Eigenbau
Gleise: Tillig
Wohnort: Mittelfranken
Alter: 68

Re: Arduinobasierter DIY Zubehördecoder (DCC) ?Signalfunktionen?

#15

Beitrag von MicroBahner » Di 17. Jan 2017, 14:14

Hallo Alfred,
mein Zeichenprogramm für die Schaltpläne hat kein vordefiniertes Symbol für den 6N137, deshalb habe ich mir selbst eins gezeichnet. In Datenblättern gibt es verschiedene Varianten. Ich habe mich an dieses gehalten:
Bild
wobei ich das innere 'Kleinzeug' weggelassen, und nur den Schalttransistor am Ausgang eingezeichnet habe.
Das Eagle Schaltbild zeigt nicht, dass der Ausgang nur ein reiner OpenCollector Ausgang ist. Das der Enable Eingang intern einen Pullup hat, geht aus beiden nicht hervor.

Benutzeravatar

MoBa_Alfred
InterRegioExpress (IRE)
Beiträge: 473
Registriert: Do 19. Okt 2006, 08:29
Nenngröße: H0
Stromart: digital
Steuerung: MoBaSbS
Gleise: C-Gleis
Wohnort: Fulda (Hessen)
Alter: 65
Deutschland

Re: Arduinobasierter DIY Zubehördecoder (DCC) ?Signalfunktionen?

#16

Beitrag von MoBa_Alfred » Di 17. Jan 2017, 20:52

Hallo Franz-Peter,
vielen Dank für die Erklärung. Jetzt habe auch ich es verstanden. ;)
Grüße
Alfred
=================================
Mä-M-Gleisanlage und C-Gleisanlage, Digital mit MoBaSbS und TrainController
H0e Modul mit z21start und multiMAUS
und aus Altbeständen 6021, IB und MobileStation
=================================


railfan2401
S-Bahn (S)
Beiträge: 10
Registriert: Do 11. Sep 2014, 19:46
Nenngröße: H0
Stromart: digital
Steuerung: Lenz DCC
Wohnort: München

Re: Arduinobasierter DIY Zubehördecoder (DCC) ?Signalfunktionen?

#17

Beitrag von railfan2401 » Do 19. Jan 2017, 15:02

Hallo Hans-Peter,
nach langer Abstinenz melde ich mich mal wieder. Zwischenzeitlich habe ich mich mit meinen eher bescheidenen Kenntnissen mit der Lichtsignalsteuerung befasst, weshalb mich Dein Beitrag #13 interessiert. Für zweibegriffige Signale habe ich es geschafft, mit Anleihen bei Ruud Boer und Geoff Bunza (MRH). Letzterer hatte dann auch noch eine App für mehrbegriffige DB-Signale entwickelt, allerdings auf Funktionsdecoder-Basis. An der Umsetzung für einen Zubehördecoder bin ich aber gescheitert.
Aus diesem Grunde hätte ich lebhaftes Interesse daran, wenn man mit Hilfe der Moba Tools ein Ausfahrsignal ansteuern könnte (vier Signalbilder, fünf LEDs).
Beste Grüße
Burkhardt
Beste Grüße
Burkhardt

Benutzeravatar

Threadersteller
MicroBahner
InterCityExpress (ICE)
Beiträge: 2011
Registriert: Mi 28. Nov 2012, 14:24
Nenngröße: H0
Stromart: analog DC
Steuerung: Microprozessor-Eigenbau
Gleise: Tillig
Wohnort: Mittelfranken
Alter: 68

Re: Arduinobasierter DIY Zubehördecoder (DCC) ?Signalfunktionen?

#18

Beitrag von MicroBahner » Fr 20. Jan 2017, 11:39

Hallo Burkhard,
schön dass sich jemand für die Lichtsignalsteuerung interessiert. :D

Derzeit bin ich dabei, die MobaTools so zu ertüchtigen, dass das sanfte Auf- und Abblenden von Led's an allen IO's funktioniert und nicht nur an PWM Ausgängen. Das ist ja wichtig für ein realistisches Lichtsignal und bei den kleinen Arduinos gibt es nicht viele PWM Ausgänge. Ich hoffe, dass die Leistung der Nanos dafür aussreicht - mal sehen.
Auf der Basis habe ich dann vor, auch eine Lichtsignalsteuerung in den Zubehördecoder zu integrieren.

Ausserden möchte ich die MobaTools und die NmraDcc Lib auch auf der STM32F1 Plattform zum laufen bringen ( die NmraDcc-Lib hat einen ersten Testlauf erfolgreich hinter sich). Mit den STM32F1-- Prozessoren gibt es Platinen, die kaum größer und teurer als ein Nano sind, die aber etwas mehr IO's und einen wesentlich leistungsfähigeren Prozessor haben.

Mein Eisberg liegt deshalb allerdings mal wieder auf Eis :?

Benutzeravatar

Bodo
InterCityExpress (ICE)
Beiträge: 2213
Registriert: Do 28. Apr 2005, 08:59
Nenngröße: H0
Stromart: digital
Steuerung: IB1 & CS2
Gleise: C-Gleis
Kontaktdaten:
Deutschland

Re: Arduinobasierter DIY Zubehördecoder (DCC) ?Signalfunktionen?

#19

Beitrag von Bodo » Fr 20. Jan 2017, 12:05

Hallo Franz-Peter,
MicroBahner hat geschrieben:Derzeit bin ich dabei, die MobaTools so zu ertüchtigen, dass das sanfte Auf- und Abblenden von Led's an allen IO's funktioniert und nicht nur an PWM Ausgängen. Das ist ja wichtig für ein realistisches Lichtsignal und bei den kleinen Arduinos gibt es nicht viele PWM Ausgänge. Ich hoffe, dass die Leistung der Nanos dafür aussreicht - mal sehen.
Auf der Basis habe ich dann vor, auch eine Lichtsignalsteuerung in den Zubehördecoder zu integrieren.
das wäre natürlich super ... dann würde ich meine eigenen Pläne mit separatem PWM-Treiberbaustein (ELV oder Adafruit) erstmal zurückstellen.

Viele Grüße, Bodo
Die Freiheit des Menschen liegt nicht darin, dass er tun kann, was er will, sondern dass er nicht tun muss, was er nicht will. (Jean-Jacques Rousseau)

Meine Anlage - Meine Dauerbaustelle
Platinen für Modellbahn- und Arduino-Anwendungen


Siki
InterRegio (IR)
Beiträge: 113
Registriert: Mo 27. Apr 2015, 09:38
Nenngröße: H0
Steuerung: Analog/Digital
Gleise: M-Gleis/C-Gleis
Schweiz

Re: Arduinobasierter DIY Zubehördecoder (DCC) ?Signalfunktionen?

#20

Beitrag von Siki » Fr 20. Jan 2017, 18:20

Hallo,

Erstmal vielen dank für deine Bemühungen, noch eine kleine Bemerkung, die anderen Pins machen ja dann auch was PWM ähnliches nehme ich mal an. Ein Relais wird aber an so etwas wohl kaum Freude haben oder sich sehr schnell abnutzen. Wäre es demnach möglich zur rot Phase einen 2ten Pin auf high zulegen ohne das blenden oder sowas wie einen kleinen Impuls auf einen Pin geben (wenn man auf rot Schaltet z.B. auf Pin A und wenn man auf das nächste Signalbild schaltet (von rot her) auf Pin B (so könnte man ein bi-stabiles Relais einsetzten und es würde wahrscheinlicher leiser sein))?

Lg Simon

Benutzeravatar

Uwe HAL
InterRegio (IR)
Beiträge: 114
Registriert: Mi 6. Mai 2015, 10:00
Nenngröße: H0
Stromart: digital
Steuerung: DR5000
Gleise: Piko A
Wohnort: Niemberg
Alter: 53
Deutschland

Re: Arduinobasierter DIY Zubehördecoder (DCC) ?Signalfunktionen?

#21

Beitrag von Uwe HAL » Fr 20. Jan 2017, 21:26

Hallo Simon,
was du schreibst ist schon richtig, wenn man die Signale mit Relais ansteuern möchte. LED-Signale kann man aber auch ohne Relais direkt mit dem Arduino steuern. Nur einen Widerstand zwischen einen Ausgangs-PIN und die LED und schon funktioniert die Sache :gfm:

Was Franz-Peter noch einbauen möchte ist ein weiches überblenden von einem Signalbild zum nächsten. Diese Funktion ist mit Relais-Steuerung unmöglich, aber mit PWM-Ausgängen am Arduino relativ einfach zu bewerkstelligen. Da aber der Arduino-Nano nur eine begrenzte Anzahl PWM-Pins hat, will Franz-Peter die normalen Digital-Pins so umprogrammieren, dass damit ein sanftes Ein- und Ausblenden möglich ist. Dies ist vorbildgetreuer als ein einfaches An/Aus.

Gruß Uwe :D
Liebe Grüße aus Niemberg bei Halle (S) :D

Hier geht's zu meiner Anlage: http://stummiforum.de/viewtopic.php?f=64&t=140522


Siki
InterRegio (IR)
Beiträge: 113
Registriert: Mo 27. Apr 2015, 09:38
Nenngröße: H0
Steuerung: Analog/Digital
Gleise: M-Gleis/C-Gleis
Schweiz

Re: Arduinobasierter DIY Zubehördecoder (DCC) ?Signalfunktionen?

#22

Beitrag von Siki » Fr 20. Jan 2017, 22:34

Hallo Uwe

Das Relais wollte ich nicht für die Signale verwenden, sondern, um Gleisabschnitte vor dem Signal Stromlos schalten zu können....
Mir war von Anfang an klar, dass man die LED's direkt anschliesst, deshalb (wenn ohne auf und abblenden) auch ganz einfach möglich wäre Relais und LED's Parallel zu schalten, aber mit PWM (artigem) ist dies dann nicht mehr eine so tolle Idee...

Lg Simon

Benutzeravatar

Uwe HAL
InterRegio (IR)
Beiträge: 114
Registriert: Mi 6. Mai 2015, 10:00
Nenngröße: H0
Stromart: digital
Steuerung: DR5000
Gleise: Piko A
Wohnort: Niemberg
Alter: 53
Deutschland

Re: Arduinobasierter DIY Zubehördecoder (DCC) ?Signalfunktionen?

#23

Beitrag von Uwe HAL » Fr 20. Jan 2017, 23:03

Hi Siki,

jetzt habe ich es verstanden und ich gebe dir Recht, dass eine direkte Relais-Ansteuerung mit PWM vielleicht keine so gute Idee ist, wenn du aber galvanisch mit einem Optokoppler trennst und danach das Signal mit einem Elko glättest, könnte das auch funktionieren. Eine Treiberstufe zwischen Relais und Arduino-Pin würde ich auf alle Fälle einbauen (z.B. Transistor und Freilaufdiode parallel zum Relais).

Gruß Uwe :D
Liebe Grüße aus Niemberg bei Halle (S) :D

Hier geht's zu meiner Anlage: http://stummiforum.de/viewtopic.php?f=64&t=140522

Benutzeravatar

Threadersteller
MicroBahner
InterCityExpress (ICE)
Beiträge: 2011
Registriert: Mi 28. Nov 2012, 14:24
Nenngröße: H0
Stromart: analog DC
Steuerung: Microprozessor-Eigenbau
Gleise: Tillig
Wohnort: Mittelfranken
Alter: 68

Re: Arduinobasierter DIY Zubehördecoder (DCC) ?Signalfunktionen?

#24

Beitrag von MicroBahner » Sa 21. Jan 2017, 21:37

Hallo Simon, hallo Uwe,
während der meisten Zeit würde ja an den Digitalausgägnen ein stabiles Signal HIGH oder LOW anstehen. Nur im Moment des Umschaltens würden für einen kurzen Zeitraum PWM-Impulse entstehen. Das sollte sich, wie von Uwe schon vorgeschlagen, mit ein paar Bauteilen für das Relais herausfiltern lassen.
Aber der Einwand von Simon, dass man neben den Signal-Leds gegebenenfalls auch ein Relais schalten will, ist sicher nicht von der Hand zu weisen. Vielleicht fällt mir dazu auch noch einen Software Lösung ein. Eine Möglichkeit wäre, dass man bei den einem Signal zugeordneten Ausgängen einzeln wählen kann, ob sie hart oder weich umschalten. Dann bräuchte man aber für die Relais immer eigene Pins.

Benutzeravatar

Threadersteller
MicroBahner
InterCityExpress (ICE)
Beiträge: 2011
Registriert: Mi 28. Nov 2012, 14:24
Nenngröße: H0
Stromart: analog DC
Steuerung: Microprozessor-Eigenbau
Gleise: Tillig
Wohnort: Mittelfranken
Alter: 68

Arduinobasierter DIY Zubehördecoder (DCC) mit Lichtsignalansteuerung

#25

Beitrag von MicroBahner » So 29. Jan 2017, 22:40

Hallo,
den Zubehördecoder bohre ich zur Zeit so auf, dass er auch Lichtsignale ansteuern kann. Die grundsätzlichen Funktionen sind:
  • Es können 2 oder 3 aufeinanderfolgende Weichenadressen zu einem Signal zusammengefasst werden
  • Dementsprechend stehen 4 oder 6 Ausgänge zur Ansteuerung von Leds und/oder Relais zur Verfügung
  • Für jeden der 4 bzw 8 Signalzustände ist per CV frei kombinierbar, wie die Ausgänge geschaltet werden sollen.
  • Für jeden Ausgang ist individuell konfiguriebar ob er 'weich' oder 'hart' schalten soll
  • Die Ausgänge schalten leicht verzögert zum Empfang der DCC-Telegramme. Das verhindert falsche Zwischenzustände, wenn sich 2 Einzelzustände gleichzeitig ändern ( die ja nur nacheinander gesendet werden können )
Braucht man zwar nur 4 Signalzustände, aber mehr als 4 Ausgänge, so müssen derzeit 3 Adressen verwendet werden, wobei die 3. dann 'brach' liegt ( da überlege ich noch, ob und wie man das auf 3Ausgänge/Adresse erweitern kann).

Zur Demo habe ich mal ein paar Led in Form eines Epoche 3 Ausfahrsignals zusammengelötet. In dem Video kann man das Umschalten sehen. Die Qualität ist zwar mies, aber ich denke man kann das Überblenden erkennen.

Antworten

Zurück zu „Digital“