Tipps und Tricks

Schalten mehrerer Magnetartikel (z.B. Weichenstraßen)       

Als ich meine erste Weichenstraße schalten wollte, sah der Quellcode wie folgt aus :

Prozedur
...

' --- Weiche 1 schalten
Call
Senden (33,1)                  '  Haltepunkt  '

' --- Weiche 2 schalten
Call Senden (33,2)

' --- Weiche 3 schalten
Call Senden (33,3)

' --- Magnetartikel abschalten
Call Senden (32,32)

...

End Sub

Sonderbarerweise tat sich nicht viel, keine der Weichen zeigte auch nur die geringste Reaktion.
Zuerst glaubte ich, die Instruktionen würden nicht korrekt gesendet.
Der Trace zeigte jedoch, das die Befehle jedesmal einwandfrei übertragen wurden.
Ich habe dann einen Haltepunkt auf die markierte Zeile gesetzt und das Programm im Einzelschritt-Modus abgearbeitet und siehe da, alle Weichen schalteten plötzlich wie erwartet.
Es konnte folglich nur ein Zeitproblem sein. Und genau das ist es auch.

Erklärung:
Sowie die Instruktion für die 1. Weiche von Interface empfangen wird, sendet die CU den Schaltstrom an die betreffende Weiche.
Dieser fließt nun solange, bis entweder

Und hier genau liegt das Problem :
das Übertragen einer Instruktion dauert bei 2.400 b/s und 11 Bits ca. 4 Millisekunden (!).
Das heißt, nach 4 mSec kommt bereits die nächste Instruktion.
Und damit ist die Zeit in welcher der Schaltstrom fließt, viel zu kurz.

Wir müssen folglich dafür sorgen, das die jeweils nachfolgende Instruktion etwas verzögert gesendet wird.
Dazu können wir die Funktion oder Prozedur SLEEP. verwenden
Dies ist eine allg. API-Funktion und steht damit allen Windows-Programmen zur Verfügung
Wir finden sie in der WIN32API.TXT und können sie mittels dem API-Viewer leicht in unser Programm einbinden.

Public Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)

SLEEP wartet die angegebene Zeit und setzt dann das Programm fort.

Beispiel:
SLEEP (500) unterbricht den Programmablauf für 500 Millisekunden.

Unser ursprünglicher Quellcode sieht dann wie folgt aus

Prozedur
...

' --- Weiche 1 schalten
Call
Senden (33,1)

' --- 300 mSek warten
Sleep (300)

' --- Weiche 2 schalten
Call Senden (33,2)

' --- 400 mSek warten
Sleep (400)

' --- Weiche 3 schalten
Call Senden (33,3)

' --- 200 mSek warten
Sleep (200)

' --- Magnetartikel abschalten
Call Senden (32,32))

...

End Sub


Die Prozedur Delay    

Die Funktion SLEEP ist sehr einfach einzusetzen, hat aber auch einen nicht zu unterschätzenden Nachteil: solange ein SLEEP -Aufruf aktiv ist, wartet unser Programm, bis die Funktion beendet wird.
Das kann bei zeitkritischen Abläufen problematisch werden.

Besser ist in solchen Fällen die API-Funktion

Public Declare Function GetTickCount Lib "kernel32" () As Long

GetTickCount gibt die Anzahl der Millisekunden zurück, die seit dem Start von Windows vergangen sind.
Da wir aber nicht jedesmal die Differenz zwischen aktuellem Zeitpunkt und gewünschter Zeitspanne ausrechnen wollen, schreiben wir (wieder mal ;-) ) eine kleine Routine:

Prozedur Delay (mSekunden)

Public Sub Delay(ByVal mSekunden As Long)
Dim TimeOut As Long

TimeOut = GetTickCount + mSekunden

Do Until GetTickCount > TimeOut
   DoEvents
Loop

End Function

Der Prozedur wird die gewünschte Zeitspanne in Millisekunden übergeben,
in der Prozedur werden diese zur aktuellen Zeit hinzuaddiert.
Dann wartet die Prozedur, bis dieser Zeitpunkt erreicht ist, erlaubt aber währenddessen anderen Ereignissen Zugriff auf das System


Überwachung der Digitalspannung           

Oft ist es von Interesse zu erfahren, ob die Digitalspannung anliegt oder ob diese durch z.B. Kurzschluss von der CU
abgeschaltet wurde.

Eine solche Überwachung lässt sich leicht durch ein Relais realisieren.
Das Relais wird einfach an die Digitalspannung geschaltet und schaltet seinerseits durch einen Kontakt
den Eingang eines Rückmeldemoduls.

Allerdings belastet das Relais den Ausgang der CU, d.h., es verbraucht einen kleinen Teil des Digitalstromes.
Diesen Verbrauch kann man jedoch durch die Verwendung eines hochohmigen Relais auf ein zu vernachlässigendes Maß reduzieren oder man wählt statt eines Relais einen Opto-Koppler.


Anschlussbeispiele für märklin -Hobby-Signale           

Die neuen Hobby-Signale sind von exzellenter Qualität und dabei sehr preiswert.
Ich habe mir auch gleich ein Hauptsignal zugelegt. Was mir jedoch nicht gefällt und auch nicht in mein Anlagenkonzept passt, ist das zugehörige Schaltpult.

Für alle, die ohne ein solches Pult auskommen wollen oder müssen, im folgenden eine einfache Schaltung zum Betrieb der Hobby-Signale.

Behandeln wir erstmal das reine Signalbild:
die Leuchtdioden (LED) im Signal sind antiparallel geschaltet, d.h., je nach Polung der angelegten Gleichspannung leuchtet die rote oder die grüne LED. Nun könnte man ein Relais mit zwei Umschaltern verwenden und Gleichstrom mal in der einen und mal in der anderen Richtung durch das Signal schicken. Das bedeutet aber, das wir eine Gleichspannungsquelle vorhalten müssen.

Es geht viel einfacher:
wir verwenden Wechselstrom ! (und der steht uns ja mit 16 Volt reichlich zur Verfügung)
Da, wie bereits geschildert, die LEDs antiparallel geschaltet sind, leuchten beim Anlegen von Wechselspannung beide LED.
Das ist natürlich nicht in unserem Sinne und wir brauchen eine Lösung, um entweder die rote oder die grüne LED leuchten zu lassen.
Am einfachsten läßt sich das mit Dioden erreichen.
Im folgenden Schaltbild sorgt der Umschalter U in Zusammenarbeit mit den Dioden D1 und D2 für die ordnungsgemäße Darstellung des Signalbilds.
Die Umschaltung könnte dabei mit einem einfachen, handbetriebenen Umschalter oder mit einem Relais erfolgen.

Schaltung 1

Bedenken, die LEDs könnten wegen der unterdrückten Halbwelle flackern, sind völlig grundlos, das jeweilige Signalbild leuchtet konstant und flackerfrei.

Wie bereits erwähnt, erreichen wir mit der o. a. Beschreibung nur die korrekte Darstellung des Signalbilds, wer zum Anhalten der Züge auf einen stromlosen Gleisabschnitt angewiesen ist, muß die Schaltung erweitern. Am einfachsten geht das mit einem Relais, welches mit einem Arbeitskontakt (Schließer) versehen ist.

Schaltungsbeschreibung:
Bei 'Halt' fließt der Lichtstrom über den oberen Kontakt des Umschalters U zur Diode D1 und über die rote LED nach Masse.
Wird auf 'Fahrt' umgeschaltet, fließt der Strom über den unteren Kontakt des Umschalters u. a. zur Diode D2 und über die grüne LED nach Masse.
Über die Diode D3 gelangt der Strom aber auch zum Relais F. Dieses zieht an und legt mit seinem Kontakt f den Fahrstrom an den bisher stromlosen Gleisabschnitt an.
Der Kondensator C verhindert ein evt. Flattern des Relais und kann eine Kapazität von 100µ - 470µ haben.


Diese Art Schaltung funktioniert auch im Digitalbetrieb mit der vorhandenen Digitalspannung:

Schaltung 2

Hier kann z.B. zum Umschalten des Signalbilds ein Ausgang eines K84-Decoders verwendet werden.
Da wir Digitalstrom verwenden, können wir auf ein weiteres Relais zum Freischalten des Gleisabschnitts verzichten und benutzen die Arbeitsseite des Umschalters des K84-Decoders.

Hinweise:

_________________________________________________________________

märklin Hobby-Signal mit Überblendung

Schaltung 3

Wie bei Schaltung 3 zu erkennen, genügen 3 weitere Bauteile, um ein sanftes Verlöschen bzw. Aufleuchten der Signalbilder zu erreichen.

Schaltungsbeschreibung:
Beim Wechseln des Signalbildes muß die Spannung erst den Kondensator C1 / C2 (*) umladen, bevor die Spannung ausreicht, die jeweilige LED zum Leuchten zu bringen. Das Potentiometer  P1 dient u. a. zum Reduzieren der Spannung auf ca. 8 Volt und damit zur Verlängerung der Umladezeit des Kondensators.
Die benötigte Kapazität liegt bei ca. 470 µF - 1.000 µF (pro Kondensator) für ein einzelnes Hauptsignal, bei einem parallel dazu betriebenen Vorsignal sollte die Kapazität etwa 1.000 µF betragen. Hier kann jeder selbst experimentieren. Generell gilt: Größere Kapazitäten verlängern, kleinere Kapazitäten verringern die Überblenddauer.

Beim Digitalstrom sind die positiven Anteile nicht im gleichen Maße wie die negativen vorhanden. Das führt zwangsläufig zu ungleichen Zeiten bei der Überblendung von Rot -> Grün bzw. Grün -> Rot. Dieser Unterschied kann mit dem Poti P1 beseitigt werden.
Wer's ganz genau haben will, kann mit einem Messgerät die Spannung am Ausgang zum Signal messen. Wenn bei beiden Signalbildern die gleiche Spannung anliegt, ist auch die Überblenddauer exakt gleich.

(*)
Wer genau hingeschaut hat, wird sich ggf. über die gegenpolig geschalteten Kondensatoren wundern.
Das hat seinen Grund darin, das an dieser Stelle ein bipolarer Kondensator benötigt wird. Bipolare Kondensatoren (keramisch / MP) sind für diese großen Kapazitäten aber nur schwer zu bekommen, voluminös (etwa so groß wie eine Cola-Dose) und daher auch entsprechend teuer.
Der o .a. Trick macht aus zwei unipolaren Elektrolytkondensatoren einen bipolaren Kondensator. Allerdings halbiert sich die Kapazität bei Reihenschaltungen von Kondensatoren (was aber für uns belanglos ist).

Die Kosten für die zusätzlichen Bauteile dürften bei etwa 4.00 €. (Okt. 2004) liegen.


einfache und preiswerte Gleisbesetztmeldung           

Um den Zustand bzw. den Status auf unserer Modellanlage abzufragen, verwenden wir z.B. das Rückmeldemodul (RmM) 6088.
Das RmM benötigt dazu Massepotential an einem seiner Eingänge.
Wie ich bereits an einer anderen Stelle (Gleisbesetzmeldung) beschrieben habe, gibt es mehrere Möglichkeiten, Massepotential an das RmM zu liefern.

Die folgende Schaltung reagiert auf den Stromfluss innerhalb eines Bahnstromkreises:

Gleisbesetztmeldung

Schaltungsbeschreibung:
Sobald sich eine Lok im Streckenbereich befindet, fließt ein Strom über die Dioden 1 N 4007 zum Gleis und über den Motor zur Masse.
An den Dioden fällt damit eine geringe Spannung (2 x ca. 600 mV) ab.
- diese Spannung reicht aus, um die Leuchtdiode des Optokopplers anzusprechen und den Transistor durchzuschalten
- der Transistor zieht den Ausgang des Rückmeldemoduls gegen Masse
- das Rückmeldemoduls meldet den Ausgang als "1".

Hinweise:


Relais-Ansteuerungen mit dem k83 o.ä. Decodern            

Oftmals kommt es vor, das wir auch andere Geräte als Weichen oder Signale betätigen wollen.
Leider gibt es keine direkte Möglichkeit, 'artfremde' Teile digital anzusteuern.
Ein gutes Beispiel wäre der Kran 7051, welcher sich zwar auch mit dem Digital-Nachrüst-Set 7652 digitalisieren lässt, aber dieses lässt sich märklin sehr teuer bezahlen.
Wesentlich preiswerter geht es mit der folgenden Schaltung:

Schaltung 1

In Schaltung 1 wird sowohl über den roten als auch über den grünen Ausgang des Decoders je ein Relais angesprochen.
Die Verwendung eines Relais garantiert eine saubere Trennung der Digitalspannung von der zu schaltenden 'fremden' Spannung.
In unserem Beispiel könnte mit Relais  A  der Kranhaken gehoben und mit Relais  B  gesenkt werden.
Zum Drehen des Kranes wäre ein weiterer Decoder-Ausgang sowie 2 weitere Relais erforderlich.

Anmerkung:
In der folgenden Beschreibung verwenden wir das märklin-Keyboard zum Ansteuern des Decoders.
Selbstverständlich sind auch alle anderen Ansteuerungen wie Memory oder PC möglich.

Schaltung 1 eignet sich gut für sogenannte Momentschaltungen, d.h., nur so lange wir den Finger auf der betr. Taste halten, tut sich was, sobald wir loslassen, kehrt das angesprochene Relais in die Ruhelage zurück.
Ein Vorteil ist, mit einem Decoder-Ausgang zwei verschiedene Funktionen durchführen zu können.

Wenn wir eine längere andauernde Funktion, wie z.B. die Beleuchtung eines Hauses, einschalten wollen, müssen wir dafür sorgen, das die entspr. Information auch nach dem Abschalten des Decoder-Ausgangs erhalten bleibt.
Dazu erweitern wir Schaltung 1:

Schaltung 2

Da das Relais A nur solange steht, wie die rote Taste gedrückt wird, benötigen wir eine Hilfsspannung zum Erhalt der Funktion.

Schaltungsbeschreibung:
Durch drücken der roten Taste wird z.B. der Decoder-Ausgang rot aktiviert. Damit zieht Relais A an und sein Kontakt a schließt.
Nun fließt unsere Hilfsspannung von 12 Volt über den Kontakt a zum Relais C und weiter über den geschlossenen Kontakt b gegen 0 Volt oder Masse.
Relais C zieht an und schließt u. a. seinen Kontakt c1.
Über den Kontakt c2 wird in unserem Beispiel die Beleuchtung eingeschaltet.
Wird nun die Taste geöffnet, fällt Relais  A  wieder ab.
Relais C hält sich jedoch weiter über seinen Kontakt c1 und über c2 bleibt auch die Beleuchtung erhalten.
Um die Beleuchtung wieder auszuschalten, wird die grüne Taste betätigt.
Dadurch zieht Relais B an und öffnet seinen Kontakt b.
Der Stromfluß für Relais C wird unterbrochen und Relais C fällt ab.
Die Beleuchtung erlischt und die Schaltung kehrt in die Ruhelage zurück.

Einfacher, aber auch teurer ist die Verwendung eines bistabilen Relais.
Ein solches Relais wird direkt an die Ausgänge des Decoders angeschlossen, hat 2 Umschaltekontakte und kann z.B. bei
Fa. Littfinski, Datentechnik (www.ldt-infocenter.com) bezogen werden.
Bezeichnung: Dauerstrom-Umschalter DSU
Preis ca. 10 Euro   (Jan. 2005).


Schalten einer fremden Spannung mittels Kontaktstrecke           

Weder die Intellibox, noch die ControlUnit oder die neue mobile station lieben es, ausgangsseitig mit fremden Spannungen in Berührung zu kommen.
Aber es gibt immer wieder mal die Notwendigkeit, 'fremde' Spannungen für z.B. Bahnhofsbeleuchtung, Motoren o.ä. durch einen fahrenden Zug schalten zu lassen.
Solang dieses Ein- und Ausschalten durch einen potentialfreien Kontakt geschieht, kann kaum etwas Unvorhersehbares geschehen.
Problematischer wird es aber dann, wenn ein Zug über eine Kontaktstrecke die Schaltung auslösen soll.
Die Option, fremde Spannungen mit einem Bein an die Masseschiene der Gleise anzuschließen ist nicht nach jedermanns Geschmack und was im Falle des Entgleisens passiert (Mittelleiter via Schleifer am Gegenpotential) weiß man immer erst hinterher.

Mit wenigen Bauteilen lässt sich eine Schaltung realisieren, welche die Digitalspannung kaum belastet und eine saubere Trennung zwischen Digitalspannung und Fremdspannung gewährleistet.

Schaltungsbeschreibung:
Die Digitalspannung liegt über den Widerstand (1...10k) an der LED des Optokopplers an.
Der andere Anschluß der LED ist mit der Kontaktstrecke verbunden.
Sobald ein Zug über die Kontaktstrecke fährt, gelangt Masse über die Achsen an die Kontaktstrecke und die LED im Optokoppler leuchtet.
Der Optokoppler schaltet über seinen Transistor das Relais ein.
Da die Digitalspannung keine reine Gleichspannung ist, und die LED daher auch nicht konstant leuchtet (sondern eher flimmert), würde ein einzelnes Relais flattern. Der parallel zum Relais geschaltete Kondensator verhindert dieses indem er die pulsierende Gleichspannung glättet und die stromlosen Abschnitte überbrückt .