====== Infrarot Modul - IRM ====== {{ :ocs:accessory:irm_kpl.png?400 |}} 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: --> [[ocs:accessory:feedcar|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 ===== {{ :ocs:accessory:irm_bauteile.png?300 |}} 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 (2x3) 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 ===== {{ :ocs:accessory:irm_anschlussbelegung.png?400 |}} 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 {{ :ocs:accessory:irm_1-wire.png?250|}}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. {{ :ocs:accessory:irm_anschlussbelegung.png |}} ==== 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: {{ :ocs:accessory:2x-schalter.png?400 |}} 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: {{ :ocs:accessory:2x-tle.png?400 |}} 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. {{ :ocs:accessory:ir-diode.png?400 |}} Werden zwei IR Dioden genutzt (z.B. für jede Fahrtrichtung eine), sollten diese in Reihe angeschlossen werden. {{ :ocs:accessory:2x-ir-diode.png?400 |}} 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: - Betriebsart → Funktionsbaustein → CV29 = 0 - DCC Funktion für Fahrzeuglicht ist Funktion 0 → Funktion am Eingang 1 → CV10 = 0 - und für Eingang 2 genauso Funktion 0 → Funktion am Eingang 2 → CV14 = 0 - Fahrzeugtyp am Eingang 1 → alle Fahrzeuge → CV11 = 255 - Fahrzeugtyp am Eingang 2 → alle Fahrzeuge → CV15 = 255 - Licht wird mit Eingang 1 eingeschaltet → CV12 = 1 - Licht wird mit Eingang 2 ausgeschaltet → CV16 = 0 - 10x soll Befehl 1 bei Eingang 1 wiederholt werden → CV13 = 10 - 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:** {{ :ocs:accessory:cartyp_tabelle.png |}} 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: - Betriebsart → Rückmeldebaustein → CV29 = 1 (für einen Kanal) oder 2 (für zwei Kanäle) - 16 Bit Adresse des Rückmeldebaustein → CV2 Highbyte / CV3 Lowbyte von Kanal 1 - Adresse von Kanal 2 ist immer Adresse Kanal 1 + 1 (wird also nicht extra angegeben) - 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 ====== * [[http://www.opencarsystem.de/download/files/steuerung/handbuch_irm.pdf|Handbuch zum IRM]] * [[http://shop.fichtelbahn.de/IRM-Steuerung-Positionsmelder|Shop - IRM]] * [[https://www.opencarsystem.de/download/files/steuerung/irm/software/irm_v01.02.01_01-04-2017.7z|Firmware IRM V01.02.01]] ---- **[[ocs:opencar|Wiki Home Open Car System]]**