COL13,56 - Platine für die RFID-Erkennung

Links zur Artikelserie in Digitale Modellbahn

Die hier vorgestellte Platine wurde in der Zeitschift "Digtale Modellbahn", Ausgabe 1-2016, der Verlagsgruppe Bahn GmbH vorgestellt.
Hier eine Liste von dazugehörigen Links:

Einführung

Für die Rückmeldung von Zügen auf einer Modellbahnanlage gibt es einige Systeme. Das hier vorgestellte System ist universell einsetzbar, für jedes Digitalsystem geeignet und praktisch an jedem Fahrzeug kostengünstig nachrüstbar.

Viele Modellbahnprogramme nutzen einfache Belegtmelder im Gleis dazu, die Züge auf der Anlage zu verfolgen. Dazu muss einmal eine Kennung des Zuges eingetragen werden, dann verfolgt die Modellbahnsoftware, wo der Zug sich befindet. Voraussetzung ist dabei, dass die ganze Anlage über Rückmeldekontakte verfügt, damit diese Zuordnung eindeutig erfolgen kann.
Andere System nutzen die Rückmeldung von Railcom-Decodern, die die Lokadresse als Rückmeldung auf das Gleis sendet. Detektoren überwachen das Gleissignal und melden die Loknummer zurück an den Computer.

Die hier vorgestellte Technik stütz sich auf kleine RFID-Tags. Das sind winzige elektronische Bausteine, oft integriert in einer Plastikarte, Schlüsselanhänger etc., die über keine eigene Stromversorgung verfügen. Sie "hängen" an einer Antenne, einer einfachen Drahtwicklung. Sobald diese Antenne in ein elektrisches Feld gelangt, für das sie abgestimmt wurde, wacht der elektronische Baustein durch die empfangene Energie auf und sendet automatisch seine eingespeicherte Nummer (ID). Solche einfachen RFID-Tags gibt es als Aufkleber und können so leicht am Fahrzeugboden angebracht werden.

Tag unter Lok

Diese einfache Technologie braucht eine Anbindung an eine Schnittstelle einer Modellbahnsoftware. Die Softwarehersteller können nicht jede neue Technik mit einer eigenen Schnittstelle bedienen. Deswegen war unser Ziel, auf eine vorhandene Schnittstelle aufzusatteln. Diese sind im Augenblick ein RFID-System von Littfinski Datentechnik, ein Railcomsystem von tams electronic und LocoNet.

Der Kern des Moduls ist ein Arduino-Nano, das sehr einfach programmiert werden kann. So kann man auch aktuelle Updates aufspielen. Ansonsten sind nur wenige andere Komponenten notwendig. Das Modul ist für bedrahtete elektronische Bauteile ausgelegt, so dass wir nur die Platine anbieten. Die wenigen Bauelemente sind einfach aufzulöten.

Je nach Einsatz und Konfiguration muss der Arduino mit einer entsprechenden Software geladen werden. Dazu ist kein Programiergerät oder Programmieradapter notwendig. Wenn man den Arduino mit einem USB-Kabel an den Computer anschließt, so wird dieser gleich mit Strom versorgt und kann über die entsprechende Software (z.B. den XLoader) geladen werden. Vor dem Programmieren bitte den Arduino immer von der Platine abziehen und standalone betreiben, da auf der Platine anliegende Signalpegel die Programmierung negativ beeinflussen. Der Link zu den Programmierfiles finden Sie im jeweiligen Abschnitt.

Um das Feld für den RFID-Tag zu erzeugen und die zurückgelieferten Daten auszuwerten benötigt man Leser. Das Col13,56-Modul kann prinzipiell 2 solcher Leser ansteuern. Diese RC522-Leser sind sehr kostengünstig und können einfach angeschlossen werden.
Die Antenne auf den Lesern wird lahm gelegt und stattdessen durch eine Antenne - entweder als kleine Platine oder als Drahtwicklung im Gleis - ersetzt.

Übertragung über RS485-Schnittstelle (Inter-10 oder TD88 von Littfinski Datentechnik)

Schon seit Längerem gibt es ein System von Littfinski Datentechnik zur Erkennung von RFID-Tags unter Modellbahn-Fahrzeugen. Das System besteht aus einem Schnittstellenbaustein, den es in der Ausführung für die RS-232 Schnittstelle (Inter-10) oder dem S88-Bus (TD88) gibt (Anschluss siehe Littfinski Datentechnik). An diesen Schnittstellenbaustein können mehrere Reader-Module angeschlossen werden. Diese heißen bei Littfinski Col-10. Die Geräte lesen die Nummer des Tags, die soganennte UID aus. Die einzelnen Reader-Module kommunizieren über einen RS485-Bus mit dem Interface-Modul. Das Interface-Modul gibt die Daten dann entweder über die Serielle Schnittstelle (Inter-10) oder dem S88-Bus (TD88) an den PC weiter. Mehrere Modellbahnprogramme unterstützen dieses System.

Die Reader-Technik von Littfinski Datentechnik basiert auf eine 125kHz-Technologie, die für den Modellbahnbereich einige Einschränkungen mit sich bringt. Der elektrische Lesebereich ist relativ groß, so dass eine Unterscheidung von Zügen auf unterschiedlichen Gleisen nicht unproblematisch ist. Auch die Lesegeschwindigkeit der Tags (das sind die Aufkleber mit dem RFID-Chip) ist eingeschränkt.

Besseren Eigenschaften bietet die mittlereweile verfügbare 13,56MHz-Technologie. Diese ist zu der NFC-Funktionen moderner Smartphones kompatibel. Deswegen sind Tags und Reader sehr kostengünstig erhältlich.
Uns hat das bewogen ein Modul zu entwickeln um kostengünstige RFID-Reader, basierend auf RC522-Chips, an die Littfinski Interfaces Inter-10 und TD-88 koppeln zu können. Das Col-13,56 war geboren. Dieses Modul kommuniziert ebenso über den RS485-Bus mit dem entsprechenden Interface-Baustein.

Schematisch sieht die COL13,56-Platine so aus (Stückliste):

Col13.56 Schema

Im folgenden Bild wird einmal schematisch dargestellt, wie das Gesamtsystem aus Computer, Inter-10, Col13,56 und RFID-Lesern aussieht.
Die Platine passt in das gleiche Gehäuse wie das Inter-10, welches separat bei Litfinski bestellbar ist. Für das TD-88 gilt das gleiche Prinzip.

Inter-10 Systemübersicht

Wie bei allen RS485-Bussystemen - darüber werden die einzelnen Module miteinander verbunden - ist eine verdrillte Zweidrahtleitung notwendig und am Anfang und am Ende der Kette ein 120 Ohm-Widerstand anzuschließen.
Aus Gründen der Vereinfachung sind im obigen Bild nur an einem Col13,56 die RFID-Leser sichtbar.
Auch die Stromversorgung der einzelnen COL13,56 ist nicht eingezeichnet. Siehe Kapitel Stromversorgung unten auf dieser Seite.

Die passenden Programmierdaten für den Arduino nano (für RS485) finden Sie hier.
Bitte beachten Sie, dass der Arduino zum Programmieren entnommen werden muss!
Setzen Sie den Jumper auf JP3 wie oben im Bild gezeigt um zu kennzeichnen, welche Programmversion geladen ist. Der Widerstand R17, der noch bis vor Kurzem auf der Stückliste zu finden war, bitte nicht bestücken, da dieser einem Signal den falschen Pegel zuweist.

Zum Zeitpunkt des Einschaltens sendet der Arduino Nano über die USB-Schnittstelle Informationen über die Konfiguration aus. Dazu müssen Sie ein Terminal-Programm starten, den seriellen Port des Arduinos auswählen (COMx) und folgende Einstellungen wählen:
Baudrate 115200, 8 Datenbits, 1 Startbit, 1 Stopbit, Ausgabe ASCII.
Die Ausgabe wird wiederholt, wenn Sie den Reset-Button drücken.

Ausgabe

Über die Ausgabe können Sie sehen um welche Softwareversion es sich handelt, ob ein angeschlossener Reader erkannt wurde, auf welchen Modus das System eingestellt ist (Inter-10 oder TD88), welche Adresse das Modul auf dem RS485-Bus hat und weitere Infos.
Befindet sich zu diesem Zeitpunkt ein Tag auf dem Reader, so wird die UID des Tags mit angezeigt. Dies kann nützlich sein um herauszubekommen, welche UID sich auf dem jeweiligen Tag befindet.

Die Jumperreihe JP4 dient der Konfiguration. Befindet sich kein Jumper auf dem Feld, so wird die letzte Einstellung übernommen.
Mit A0-4 wird die Adresse auf dem RS485-Bus konfiguriert. Ein gestzter Jumper auf A0 bedeutet Adresse 1, wird A1 gesetzt dann ist Adresse 2 ausgewählt. Sind A0 und A1 gesetzt, dann ist man bei Adresse 3 usw.
Wird eine Adresse konfiguriert, dann wird auch der Modus mit eingestellt. Ein nicht gesetzter Jumper bei "Mode" bedeutet, dass das System für ein Inter-10 konfiguriert ist. Ist der "Mode"-Jumper gesetzt, so wird ein TD88 erwartet. Diese Einstellung wird nur übernommen, wenn mind. ein Adressjumper gesetzt ist!
Die Einstellungen werden ins interne EEPROM gespeichert. Nimmt man alle Jumper herunter, so wird die zuletzt konfigurierte Einstellung benutzt.

Übertragung über LocoNet

Die gleiche Platine kann auch dafür herangezogen werden, die UIDs über das LocoNet zu übertragen. Dazu muss die Platine anders bestückt werden.
COl13,56 kann direkt an das LocoNet angekoppelt werden, die beide RJ12-Buchsen vorgesehen.
Das folgende Bild zeigt diese Bestückvariante (Stückliste):

Col13.56 Schema

Die passenden Programmierdaten für den Arduino nano (für LocoNet) finden Sie hier.
Bitte beachten Sie, dass der Arduino zum Programmieren entnommen werden muss!
Setzen Sie den Jumper auf JP3 wie oben im Bild gezeigt um zu kennzeichnen, welche Programmversion geladen ist. Der Widerstand R17, der noch bis vor Kurzem auf der Stückliste zu finden war, bitte nicht bestücken, da dieser einem Signal den falschen Pegel zuweist.

Übertragung über RC-Link von tams electronic

Es gibt nun auch eine Bestückversion bzw. Arduino Programmdateien, damit der Col13,56 auch mit dem RC-Link von tams electronic zusammenarbeiten kann. Der Col13,56 benötigt dann mindestens die folgende Bestückung(Stückliste):

Col13.56 Schema

Im folgenden Bild wird einmal schematisch dargestellt, wie das Gesamtsystem aus Computer, RC-Link, Col13,56 und RFID-Lesern aussieht:

RC-Link Systemübersicht

Wie bei allen RS485-Bussystemen - darüber werden die einzelnen Module miteinander verbunden - ist eine verdrillte Zweidrahtleitung notwendig und am Anfang und am Ende der Kette ein 120 Ohm-Widerstand anzuschließen.
In diesem System gibt es noch die Besonderheit, dass für die Synchronisation der einzelnen Col13,56 ein DCC-Signal erforderlich ist. Dieses DCC-Signal kann von der Anlage entnommen oder separat für diesen Zweck eingespeißt werden. Auch ein Multiprotokoll-Signal mit DCC-Anteilen ist vorstellbar (mindestens eine Lokomotive mit DCC-Decoder angemeldet).
Aus Gründen der Vereinfachung sind im obigen Bild nur an einem Col13,56 die RFID-Leser sichtbar.
Auch die Stromversorgung der einzelnen COL13,56 ist nicht eingezeichnet. Siehe Kapitel Stromversorgung unten auf dieser Seite.

Damit die Col13,56-Einheiten auf dem RS485-Bus eindeutig identifizierbar sind, müssen deren Adressen konfiguriert werden (und dann auch im Modellbahnsteuerprogramm entsprechend zugewiesen werden). Dazu dient das Jumperfeld. Die Adressen sind im Bereich von 1-24 einzustellen.

Jumperung

Die hier dargestellte Geräteadresse ist "5".

Mit diesem System gibt es drei mögliche Anwendungsfälle, die alle drei in der nächsten Grafik dargestellt werden. Der Modus kann für jeden Col13,56 im System individuell ausgewählt werden.

RC-Link Konfigurationen

Im Fall "Independent", in der Grafik ganz links dargestellt, sind am Col13,56 zwei RFID-Leser angeschlossen, die beide völlig unabhänig voneinander betrieben werden. Eine Antenne befindet sich in einem, die andere Antenne z.B im Nachbargleis.
In diesem Fall verhält sich der Col13,56 wie zwei am Bus angeschlossene Einheiten, die mit aufeinanderfolgenden Geräte-Adressen die Informationen an das RC-Link senden.

Der "Single" Modus, in der Grafik in der Mitte dargestellt, betreibt nur einen angeschlossenen RFID-Leser.

Im gekoppelten Modus "Coupled", in der obigen Grefik rechts, fungieren die beiden angeschlossenen Leser als ein kombinierter Leser, der die Aufgleisrichtung der Lokomotive erkennt. Dazu ist an der Lok der RFID-Tag außermittig anzubringen. Die beiden Antennen im Gleis liegen direkt hintereinander und sind jeweils rechts und links im Gleis.
So können die Steuerprogramme erkennen, wie herum die Lok auf dem Gleis steht und dies auch entsprechend anzeigen.

Die passenden Programmierdaten für den Arduino nano (für LocoNet) finden Sie hier.
Bitte beachten Sie, dass der Arduino zum Programmieren entnommen werden muss!
Je nach Einsatzmodus müssen Sie die "independent", "single" oder "coupled" Variante laden.

Stromversorgung für das COL13,56

Das COL13,56 braucht - wenn der Arduino nano nicht direkt an einer USB-Verbindung angeschlossen wurde - eine eigene Gleichstromversorgung.
Auf der Platine befindet sich ein entsprechender Schraubanschluss (oben links neben der roten LED). Der zur LED zugewandte Anschluss ist Masse (GND), daneben befindet sich der Plus-Pol.

Bitte beachten Sie, dass der Aufdruck von 7..14V den theoretischen maximalen Spannungsbereich angibt. Es hat sich aber herausgestellt, dass je nach Ausführung der Stromversorgung auf dem Arduinoboard, dieses unter Belastung sehr warm werden kann.
Ich empfehle deshalb eine maximale Eingangsspannung von 9V!
Die Schaltung benötigt ca. 150mA pro Col13,56 mit 2 RC522 Readern. Das Netzteil sollte also einen Stom von ca 250mA liefern können.

in der Praxis hat sich gezeigt, dass je nach Ausführung der Spannungsversorgung auf dem Arduino, diese zur Schwingung neigt. Dies äußert sich in einem erhöhtem Stromverbrauch und teilweise extremer Hitzebildung auf dem Spanungswandler (Unterseite Arduino). Deswegen empfehlen wir auch, einen 10µF/25V Elektrolyt-Kondensator parallel zu den Anschlussdrähten mit anzuschließen. Bitte dabei auch die Polung beachten.

Prinzipiell ist es möglich auch mehrere COL13,56 Einheiten an einer Stromversorgung parallel zu betreiben. Es hat sich herausgestellt, dass oben beschriebenes Schwingverhalten in diesem Betriebsfall begünstigt wird und es teilweise zur Zerstörung des Arduinoboards gekommen ist.
Aktuell empfehlen wir deshalb jedes COL13,56 separat mit Spannung zu versorgen und den zusätzlichen Elko zu benutzen.

Stromversorgung

Passende RC522-Reader

Die Reader sind von den verschiedensten Herstellern im Internet verfügbar. Einfach eine Suchmaschine mit dem Schlüsselworten "RC522 reader" beauftragen.
Wenn man eine gewinkelte Pfostenleiste einlötet, dann kann man mit einem 16-poligen Flachbandkabel und aufgequetschten 2x8 Buchsenleisten die Reader an das Modul verbinden. Die obere Reihe der Buchse (Pin 1, 3, 5, ...) wird dann auf den Reader gesteckt. Die nicht benutzten Anschlüsse bleiben einfach frei und dienen der verbesserten Datenübertragung.

Reader1

Die Anschlussbelegung des 16-poligen Kabels sieht wie folgt aus. Bitte überprüfen Sie vor dem Kauf des Readers, dass die Anschlüsse des RC522-Modules diese Reihenfolge einhält. Nur in dieser Reihenfolge ist der einfache Anschluss mit einem Flachbandkabel möglich.

Pin-Nr Bezeichnung
1 3,3V
3 RST
5 GND
7 N.C.
9 MISO
11 MOSI
13 SCK
15 SDA
2,4, ... ,16 GND

Programmierung

XLoader