Benutzer-Werkzeuge

Webseiten-Werkzeuge


ocs:accessory:irm

Infrarot Modul - IRM

Das OpenCarSystem Infrarot Modul (IRM) ist eine kleines Modul zur lokalen Beeinflussung von Modellbahn Straßenfahrzeugen. Es kann DCC IR Steuersignale selbstständig erzeugen und so Funktionen oder Rückmeldungen in einem Straßenfahrzeug mit einem OpenCarSystem Cardecoder schalten bzw. auslösen.

Nachfolger: –> FeedCar (Car Feedback)


Allgemeines zum IRM

Stromversorgung

Das IRM arbeitet in einem sehr breiten Stromversorgungsbereich. Es ist so aufgebaut, das jede gängige Modellbahn Stromversorgung zum Betrieb des IRM verwendet werden kann. Die Grenzen sind dabei folgende:

  • 8V – 20V Gleichspannung
  • 5V – 14V Wechselspannung (50Hz)
  • 8V – 20V DCC Gleisspannung

Die Stromaufnahme variiert dabei, je nach gesendeten Daten und verwendeter IR Diode im Bereich von 10mA im Ruhezustand bis zu 20mA im aktiven Sendezustand. Intern arbeitet das IRM mit einer 5V Betriebsspannung, welche aus der Eingangsspannung mit einem LM7805 Linearregler erzeugt wird. Dies ist Kostengünstig und bei der relativ kleinen Stromaufnahme des IRM auch in Bezug auf eine Verlustleistung bei höheren Eingangsspannungen akzeptabel. Generell ist es günstig das IRM mit einer Spannung im unteren Grenzbereich (5V – 8V) zu betreiben um die Energieaufnahme und damit die Größe des Netzteiles so gering wie möglich zu halten.


externe Bauteile

Das IRM ist als SMD bestückte Platine im Fichtelbahn Shop erhältlich. Auf der Platine selbst kann noch eine zweipolige Schraubklemme und eine sechspolige (2×3) Stiftleiste montiert werden. Die Schraubklemme dient zum Anschluss der Betriebsspannung, an der Stiftleiste wird die IR Diode zum senden und bis zu zwei Schalter oder Magnetschalter (Sensoren z.B. TLE4605) zum wählen von unterschiedlichen Funktionen angeschlossen.


Betriebsarten

Das IRM ist ein Infrarotsendemodul, welches zwei verschiedene Infrarot Telegramme senden kann und so zwei verschiedene Funktionen auslösen kann. Diese Auswahl erfolgt über zwei nach GND schaltende Eingänge, an welche Taster, Reedkontakte oder auch Magnetsensoren angeschlossen werden können. In der Betriebsart Funktionsbaustein lassen sich zwei unterschiedliche Funktionsbefehle an alle oder bestimmte Fahrzeugtypen senden. Die Betriebsart Rückmeldebaustein ermöglicht es einem Fahrzeugdecoder global per Funk seine aktuelle Anlagenposition zurück zu melden. Auch hier können zwei unterschiedliche Positionen zurückgemeldet werden, für z.B. zwei unterschiedliche Fahrspuren.


Anschlussbelegung

An K1 auf der linken Seite vom IRM wird die Betriebsspannung angeschlossen. Dabei braucht man nicht auf die Anschlusspolarität achten. Auf der rechten Seite, an die sechs-polige Stiftleiste K2, wird die IR Diode und bis zu zwei Schaltkontakte angeschlossen. Mit diesen kann man unterschiedliche IR Telegramme auswählen. Anstelle dieser „Schalter“ können auch Reedkontakte oder Magnetsensoren genutzt werden. Für diese steht eine 5V Betriebsspannung zur Verfügung (rot +5V / grün GND).


Status LED

Das IRM besitzt eine grüne Status LED, welche folgendes anzeigt:

  • LED permanent eingeschaltet → keine Software geladen
  • blinkt alle 2 Sekunden 1x auf → CV32 = 1 IRM wartet auf Verbindung zum AVRootloader
  • blinkt 3x hintereinander 1x kurz auf → Eingang 1 ausgelöst
  • blinkt 3x hintereinander 2x kurz auf → Eingang 2 ausgelöst

Konfiguration

Übersicht der CV Variablen

CV default Beschreibung
2 0 16Bit Adresse High Byte
3 0 16Bit Adresse Low Byte
7 1 FW_VERSION hier 1
8 13 Herstellerkennung
10 0 Eingang 1 DCC Funktion
11 255 Cartyp für Eingang 1 hier 255 alle Fahrzeuge
12 1 1 → Funktion wird eingeschaltet, 0 → ausgeschaltet
13 10 Anzahl der Wiederholungen für Eingang 1
14 0 Eingang 2 DCC Funktion
15 255 Cartyp für Eingang 2 hier 255 alle Fahrzeuge
16 0 1 → Funktion wird eingeschaltet, 0 → ausgeschaltet
17 10 Anzahl der Wiederholungen für Eingang 2
29 0 0 → Funktionsbaustein 1 → 1 Kanal Belegtmelder 2 → 2 Kanal Belegtmelder
32 0 Softwareupdate, 1 → Decoder im Update Modus

Programmierung

Das IRM wird mit Hilfe von CV (Konfigurationsvariablen) konfiguriert. Diese lassen sich mit einer DCC digital Zentrale die am Programmiergleis das Programmierverfahren „CV write“ ohne „ACK“ unterstützt ändern. Dazu muss das IRM mit dem Betriebsspannungsanschluss K1 an das Programmiergleis der Zentrale angeschlossen werden.

Eine Programmierung über POM wird nicht unterstützt.

Hinweis: das IRM hat keine ausreichend große Last um eine Quittung oder ein auslesen der CV zu ermöglichen! Es lässt sich nur beschreiben ohne ACK Bestätigung!

Hinweis 2: dem Autor ist bekannt, das es immer weniger DCC Zentralen gibt, die ohne ACK am Programmiergleis arbeiten. Aus diesem Grund ist ein Software Update in Planung, welches POM an eine feste Adresse ermöglicht.


CV29 Betriebsart

Die Betriebsart vom IRM wird in CV29 konfiguriert.

  • CV29 = 0 → 2 Kanal Funktionsbaustein (es können zwei unterschiedliche Funktionsbefehle gesendet werden)
  • CV29 = 1 → 1 Kanal Belegtmelder (es wird permanent die erste Adresse gesendet)
  • CV29 = 2 → 2 Kanal Belegtmelder (es wird eine Adresse abhängig vom Eingang gesendet)

CV32 Softwareupdate

Das IRM ist ein Open Source Eigenbauprojekt und wird als solches von hoffentlich vielen Modelleisenbahnern nach gebaut oder auch nur genutzt. Seine Funktionen werden in weiten Grenzen von den Nutzern mitbestimmt und beeinflusst, so dass es sicherlich auch zukünftig neue Versionen und Erweiterungen geben wird. Abgesehen davon, ist der Autor „nur“ ein Hobbyprogrammierer und wird mit Sicherheit den einen oder anderen „Bug“ in die Software einbauen ;-) . Aus diesem Grund, ist von vorn herein eine einfache Möglichkeit für ein Softwareupdate im IRM eingeplant.

Steht beim IRM-Start in CV32 eine Null, startet das IRM im normalen Betriebsmode, steht dort etwas anderes als Null, startet es im 1–Draht Softwareupdatemodus. In diesem bleibt es auch, bis CV32 wieder auf Null gesetzt ist! Wenn man also die IRM-Software updaten will, schreibt man in CV32 eine 1 und startet das IRM neu ( aus / ein ). Baut jetzt eine Verbindung zum AVRootloader auf und wechselt die Software. Danach startet das IRM wieder im Normalmode. Das Update Kabel muss wie im Bild rechts abgebildet angeschlossen werden.

Achtung, sollte versehentlich CV32 umprogrammiert worden sein, oder die gleiche Softwareversion wieder programmiert worden sein, startet das IRM nicht mehr! Das IRM muss dann eingeschaltet ca. 120 Sekunden stehen gelassen werden, danach verlässt es von selbst den Update Modus und schaltet in den Normalbetrieb zurück.

Bei einem Software Update wird die CV Liste überprüft, wenn diese nicht kompatibel mit der neuen Softwareversion ist, wird sie gelöscht! Danach sind alle IRM - Einstellungen wieder im Auslieferungszustand.


Werksreset

In CV8 ist die Herstellerkennung enthalten, diese lässt sich nicht umprogrammieren! Ein Schreiben in CV8 (egal welcher Wert geschrieben wird) setzt die komplette CV Liste und damit das IRM in den Auslieferungszustand zurück.

ACHTUNG es werden dabei alle Einstellungen zurückgesetzt!


Rückmeldebaustein

Für diese Betriebsart sind die CV2 und 3 sowie 13 und 17 zuständig. Hier bei fordert das IRM ein vorbei fahrendes Fahrzeug auf sich mit der IRM Position und seiner Fahrzeugadresse beim Systemhost (in der Regel die Steuersoftware) zu melden. Die Host Software bekommt damit eine exakte Position (Adresse vom IRM) an der sich momentan gerade das meldende Fahrzeug (Adresse vom Fahrzeug) befindet.

Im Unterschied zu einer Belegtmeldung auf dem Gleis, wird hier also nicht ein Abschnitt als belegt gemeldet, sondern eine momentane exakte Position gemeldet. Diese Art der Rückmeldung ist zwar aufwendiger als ein Magnetkontakt in der Fahrbahn, man erhält hiermit aber auch die exakte Adresse von dem Fahrzeug welches gerade diese Position überfährt. Dies ist auf der Straße, wo schon mal ein Fahrzeug abhanden kommen kann (Magnetspur verloren o.ä.) durchaus von Vorteil. Diese Meldung ist vergleichbar mit einer „Lissy IR“ Rückmeldung im Zugverkehr.

Die IRM-Adresse wird in CV2 und CV3 konfiguriert.

Zum aktivieren der Rückmeldefunktion vom IRM muss CV29 auf 1 oder 2 gesetzt sein. Ist CV29 = 1 wird ständig und permanent die Adresse 1 (siehe CV2 und 3) des IRM übertragen.

Bei CV29 = 2 wird bei aktiven Eingang 1 die konfigurierte IRM-Adresse übertragen und CV13 mal wiederholt. Bei aktiven Eingang 2 die IRM-Adresse +1 , welche dann CV17 mal wiederholt wird.

Damit kann man mit einem IRM und einer IR Diode, zwei unterschiedliche Positionen melden und so z.B. eine Abbiegung überwachen.

CV2 und CV3

In CV2/3 steht die 16 Bit Adresse des Rückmeldebaustein. Dabei gilt CV2 → High Byte und CV3 → Low Byte der Adresse. Die Adresse setzt sich somit folgendermaßen zusammen:

(CV2 * 255) + CV3

Das Bit0 vom Low Byte wird dabei ignoriert und ist immer 0! Mit diesen 15Bit sind 32767 Rückmeldebausteine Adressierbar. Jeder Rückmeldebaustein kann zwei verschiedene Adressen senden, welche intern automatisch je nach geschaltetem Eingang in Bit0 vom Low Byte eingefügt werden. Dabei gilt: Eingang 1 aktiv → Bit0 = 0 und Eingang 2 aktiv → Bit0 = 1. Somit lassen sich insgesamt 65535 verschiedene Positionen zurückmelden.

CV13 und CV17

CV13 ist die Anzahl der Wiederholungen bei auslösen von Eingang 1. CV17 die für Eingang 2.


Funktionsbaustein

Für diese Betriebsart sind die CV10 bis 17 zuständig. CV29 muss dazu auf 0 gesetzt sein. In dieser Betriebsart kann man mit dem IRM zwei unterschiedliche Funktionsbefehle (die Auswahl erfolgt mit Eingang 1 oder 2) an alle oder auch nur bestimmte Fahrzeugtypen senden.

Hiermit lassen sich Blinker beim abbiegen oder an Bushaltestellen ein und ausschalten, oder auch jede andere Funktion eines Cardecoder schalten.

CV10

In CV10 steht die DCC Funktion, welche beim auslösen von Eingang 1 vom IRM gesendet wird. CV10 darf dabei Werte von 0 (F0 = Fahrzeuglicht) bis 28 (F28) haben.

CV11

CV11 enthält den Fahrzeugtyp, an den die Funktion aus CV10 gesendet wird. Beachte dieser muss identisch dann auch in den einzelnen Fahrzeugen programmiert sein. Somit lassen sich auch nur bestimmte Fahrzeuge ansprechen.

CV12

Gibt an ob die Funktion aus CV10 ein (CV12 = 1) oder aus (CV12 = 0) geschaltet wird.

CV13

Gibt an, wie oft der DCC Funktionsbefehl von Eingang 1 gesendet (wiederholt) wird. Jedes lokale IR senden beeinflusst ungünstig die ASR zwischen den Fahrzeugen. Aus diesem Grund sollte man möglichst wenig zusätzlich per Infrarot senden. Werte von 10 Wiederholungen bei jedem auslösen am Eingang sind meist völlig ausreichend.

CV14,15,16,17

Sind analog zu CV10,11,12,13 für Eingang 2 und IR Befehl 2 da.


Anwendungs- und Konfigurationsbeispiele

Kanal Auswahl

Das IRM sendet bis zu zwei verschiedene Befehle. Welcher der beiden Befehle gesendet wird, kann mit einem nach Masse / GND schaltenden Impuls am entsprechendem Funktionseingang ausgewählt werden. Dies könnten kleine Taster vor Ort sein, um z.B. das Fahrzeuglicht ein und auszuschalten:

Es kann auch ein Schaltausgang (welcher nach GND schaltet) einer anderen BiDiB Baugruppe z.B. der LightControl verwendet werden.

Dies können aber auch Magnetschalter / Sensoren sein, wie der TLE4905 welche in die Magnetspur der Fahrbahn integriert sind:

An Stelle der TLE4905 lassen sich natürlich auch Reedkontakte verbauen.

Zusammengefasst: Es können zwei verschiedene Befehle an vorbei fahrende Fahrzeuge übertragen werden. Die Auswahl des Befehls erfolgt über die beiden Eingänge des IRM.


Infrarot Dioden

Zum senden der Befehle an die Fahrzeuge sind externe Infrarot Dioden nötig. An das IRM können eine oder zwei IR Dioden angeschlossen werden. Diese sind so an der Straße anzubringen, das damit die vorbeifahrenden Fahrzeuge von vorn angeleuchtet werden.

Werden zwei IR Dioden genutzt (z.B. für jede Fahrtrichtung eine), sollten diese in Reihe angeschlossen werden.

Der zum Betrieb der IR Dioden nötige Vorwiderstand ist auf dem IRM schon integriert. Es sind somit keine weiteren externen Bauteile nötig.


Konfiguration als zweifach Funktionsbaustein

In dieser Betriebsart können zwei verschiedene Funktionsbefehle an vorbeifahrende Fahrzeuge gesendet werden. Deren Auswahl erfolgt im Betrieb wie unter „Kanal Auswahl“ beschrieben über die Eingänge 1 oder 2. Nehmen wir also an, wir wollen bei allen vorbei fahrenden Fahrzeugen das Licht einschalten, weil wir danach in einen Tunnel fahren. Folgende CV Programmierung am IRM ist dafür nötig, wobei mit Eingang 1 das Fahrzeuglicht eingeschaltet und mit Eingang 2 ausgeschaltet werden soll:

  1. Betriebsart → Funktionsbaustein → CV29 = 0
  2. DCC Funktion für Fahrzeuglicht ist Funktion 0 → Funktion am Eingang 1 → CV10 = 0
  3. und für Eingang 2 genauso Funktion 0 → Funktion am Eingang 2 → CV14 = 0
  4. Fahrzeugtyp am Eingang 1 → alle Fahrzeuge → CV11 = 255
  5. Fahrzeugtyp am Eingang 2 → alle Fahrzeuge → CV15 = 255
  6. Licht wird mit Eingang 1 eingeschaltet → CV12 = 1
  7. Licht wird mit Eingang 2 ausgeschaltet → CV16 = 0
  8. 10x soll Befehl 1 bei Eingang 1 wiederholt werden → CV13 = 10
  9. 10x soll Befehl 2 bei Eingang 2 wiederholt werden → CV17 = 10

CV 13 und 17 bestimmen wie oft ein IR Befehl beim auslösen eines Eingangs wiederholt wird. Dieser Wert sollte nicht zu hoch gewählt werden, weil die Abstandsreglung der Fahrzeuge auch auf der IR Übertragung basiert und es dort zu Beeinflussungen kommen kann. Die default Einstellung von 10 Wiederholungen ist ausreichend zuverlässig und braucht in der Regel nicht weiter erhöht werden.

Die Werte in CV 11 und 15 beinhalten den Fahrzeug Typ, der auf diesen Befehl reagiert. Darüber kann man z.B. die Blaulichter nur bei Einsatzfahrzeugen einschalten oder den Blinker rechts nur bei einem Müllfahrzeug oder einer bestimmten Buslinie. Dieser Wert „Fahrzeug Typ“ wird „und“ Verknüpft mit dem Wert aus CV 31 im Cardecoder. Wenn das Ergebnis dieser Verknüpfung ungleich Null ist, wird der Befehl ausgeführt. Damit lassen sich nicht nur explizit einzelne Fahrzeugtypen, sondern auch mehrere Typen gleichzeitig erreichen.

Beispiele zu CV 11 / 15:

In der Tabelle sind rot die Positionen gekennzeichnet, die sowohl im IRM CV11/15 sowie auch im Cardecoder CV31 programmiert sind. Immer wenn es dort also eine Übereinstimmung gibt, reagiert ein Cardecoder auf den IR Befehl vom IRM.


Konfiguration als Rückmeldebaustein

Analog zur Betriebsart Funktionsbaustein kann das IRM auch als Rückmeldebaustein arbeiten. Es ist hierfür folgende Programmierung nötig:

  1. Betriebsart → Rückmeldebaustein → CV29 = 1 (für einen Kanal) oder 2 (für zwei Kanäle)
  2. 16 Bit Adresse des Rückmeldebaustein → CV2 Highbyte / CV3 Lowbyte von Kanal 1
  3. Adresse von Kanal 2 ist immer Adresse Kanal 1 + 1 (wird also nicht extra angegeben)
  4. Anzahl der Wiederholungen in CV 13/17 wie beim Funktionsbaustein

Auch hier kann wieder ein IR Befehl in Abhängigkeit vom auslösenden Eingang 1 oder 2 versandt. Dies ist eine Aufforderung an das vorbeifahrende Fahrzeug sich selbst an der Position mit der Adresse des Rückmeldebaustein per Funk global bei der Fahrzeugsteuerung zu melden.

Arbeitet das IRM als zwei Kanal Rückmeldebaustein sind zwei verschiedene Positionsmeldungen z.B. für zwei verschiedene Fahrspuren möglich. Wobei die Adresse aus CV 2 / 3 für Kanal 1 verwendet wird und Kanal 2 die nachfolgende Adresse verwendet. Für Kanal 1 sollte immer eine gerade Adresse benutzt werden default ist dies Adresse 0. Somit würde Kanal 2 default Adresse 1 haben.

Auch hier kann die Anzahl der Wiederholungen für jeden Kanal wieder einzeln festgelegt werden. Es gilt wieder, eine möglichst kleine Wahl zu treffen, da jedes IR Signal die ASR der Fahrzeuge beeinflussen kann.

Diese Version der Belegtmeldung per Funk ist eine Weiterentwicklung der alten Version per IR–Sensor (Empfänger) welcher jeweils separat an einem GBM Kanal angeschlossen werden musste. Hierbei spart man sich diese GBM Kanäle ein und erreicht somit einen wesentlich Kostengünstigeren Anlagenaufbau.

Voraussetzung für diese Belegtmeldungsversion ist eine Cardecoder Firmware ab V03.xx.xx und eine bidirektionale Funk Basisstation.

Hinweis: aktuell (12/2016) gibt es noch keine BiDiB MSG für diesen Befehl, somit wird er noch nicht zu Host weitergeleitet. Diese ist aber für eine nächste Protokoll Version vorgesehen.


Links

ocs/accessory/irm.txt · Zuletzt geändert: 2020/10/13 09:27 von akuhtz

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki