User Tools

Site Tools


userpages:schumo99:arducan-ir-en

ArduCAN-IR

How does it work?

„ArduCAN-IR“ is a decoder for the CAN bus based on an Arduino nano and exhibits 8 interference tolerant inputs for IR optical reflective sensors. The IR sensors emit light and detect the part of it, which is reflected by all kinds of objects. That's very common, but this detector makes sure that no daylight or artificial light triggers a signal. Despite of it's enormous ruggedness towards all kinds of interfering light, the detector is very sensitive towards reflective light so that also far away objects without special indication marks (like white spots) can be detected. Therfore the whole rolling stock could be detected reliably without any adaptions. TCRT5000 or a combination of SFH309FA and SFH4346 could be used as reflective sensors. Due to my experience these can be easily hided in the road bed. Other reflective sensors are also possible. The detecor is based on an Arduino nano and very easy to build. No SMD parts need to be soldered. The overall consumption incl. 8 sensors is approx. 65mA.

up.picr.de_33518611fd.jpg


Configuration

up.picr.de_33595572eh.jpg


Delay ON

Delay ON sets the timeframe, for which the status "occupied" needs to be detected by the sensor board before it is sent to the CAN bus. The figure multiplyed by 5 is the delay in milliseconds.
The default value is 4 (=20ms).

Delay OFF

Delay OFF sets the timeframe, for which the status "free" needs to be detected by the sensor board before it is sent to the CAN bus. The figure multiplyed by 5 is the delay in milliseconds.
The default value is 100 (=500ms).

Sensitivity

Sensitivity sets the quantity of reflected light, which needs to be detected by the sensor to accept an occupancy. As it is commonly not easy to find the correct figure, ArduCAN-IR exhibts two different automated systems for calibration:

  • on the basis of minimal occupancy The value of 255 needs to be set. For the calibration on minimal occupancy, you need to place the material (waggon, car) above the reflective sensor, which exhibts the lowest reflection. This is usually a coupling between cars made out of plastic. Low intenstity of reflective light is also very common for big distances between IR-sensors and under-floor, dark colours, plastic, and holes (i.e. no complete surfaces)
  • on the basis of a "free track" The value of 0 needs to be set. For calibration please make sure that the sensor sees nothing, so remove all occupancies.

Both systems result in a figure, with is used as a detecting threshold; every signal with more intensity will be seen as "occupied".
The value can be set betweeen 1 (very sensitive) and 254 (very insensitive).

Invert

The Signal sent to the CAN bus can be inverted.

Get all

Reads all values from the module and shows them in the tab.

Set all

Sets all ports and Options.

SoD “Start of Day”

ArduCAN-IR reports the status of all sensors, after a command with this address (default: 4711) is received.

CAN ID

Sets the CAN ID of the module..

Reset of the module

To perform a complete reset of the module, press the Arduino's reset button after it had been connected to power (during flashing of the LEDs) and keep it pressed until both LEDs light permanently. Start pressing the button after the LEDs had been flashing 4-5 times.
When both LEDs light permanently, disconnect the module form power to allow a Restart of it's Software.


Inbetriebnahme

Der „ArduCAN-IR“ wird an den CAN-Bus angeschlossen; entweder über D-Sub Stecker oder Standard-Netzwerkkabel, je nachdem welche Buchsen auf der Platine verbaut wurden. Der mit „Busende“ gekennzeichnete Jumper dient dazu den CAN-Bus zu terminieren. Dieser ist am Ende eines CAN-Bus Stranges zu setzen. Die u.g. Details zur Stromversorgung bitte ebenfalls beachten. Nachdem der „ArduCAN-IR“ mit Strom versorgt ist, blinken die LEDs „RX“ und „TX“ des Arduinos für circa fünf Sekunden recht schnell. In dieser Zeit kann durch Drücken und Gedrückthalten des Arduinotasters ein Reset aller Einstellungen des Bausteines ausgelöst werden (Bitte erst Drücken, wenn die LEDs schon 4-5x geblinkt haben). Wenn der Reset abgeschlossen ist, leuchten die beiden LEDs „RX“ und „TX“ dauerhaft. Nun kann der Taster wieder losgelassen werden und der Baustein geht normal in Betrieb. Dies ist an der dauerhaft leuchtenden LED „TX“ zu erkennen. Wird währed des Betriebes der Taster des Arduinos kurz gedrückt, so wechselt der Baustein in den Modus zum Einlernen der Knoten-Nummer. Dies wird durch ein Blinken der LED „TX“ signalisiert und „rocrail“ zeigt den enstprechenden Dialog am Bildschirm an. Nach erfolgtem Absenden der neuen Knoten-Nummer durch die Steuerungssoftware (z.B. rocrail) erlischt die LED „TX“ wieder.

Signal-LEDBedeutung
„RX“ und „TX“ blinken schnell für circa 5 SekundenInitialisierung des Prozessors. Resetbefehl durch Drücken und Gedrückthalten des Tasters möglich. Taster erst drücken, wenn „RX“ und „TX“ schon 4-5x geblinkt haben.
„RX“ leuchtet dauerhaftNormaler Betriebsmodus
„TX“ blinktLerne Knotennummer (Setup)
„RX“ und „TX“ leuchten dauerhaftReset beendet → Taster loslassen und Modul vom CAN-Bus trennen (spannungsfrei machen) → Fertig
„RX“ und „TX“ blinken langsamProzessorfehler! Entweder Software nicht richtig eingespielt oder Probleme mit der Spannungsversorgung.


Aufbau

Der Decoder ist für den Eigenbau gedacht. Unbestückte Platinen oder programmierte Prozessoren können aber beim Verfasser (schumo99) angefragt werden. Ich helfe gerne!

Anschlüsse

- für die Sensoren

Die 8 Eingänge für Reflexlichtschranken sind wie folgt beschaltet:

Anschlusspin Empfohlende farbige Kennzeichnung elektronische Bedeutung
Pin auf der BoardaussenseiteschwarzMinus-Pol der Sendediode
Mittlerer PinrotGemeinsamer Plus-Pol
Pin auf der Boardinnenseite (dem Arduino zugewandet)grünMinus-Pol der Empfangsdiode

up.picr.de_33518758uh.jpg


Für die TCRT5000-Sensoren bedeutet das dann folgende Verdrahtung:

up.picr.de_33519943vq.jpg

Einzelne Sende-/Empfangsdioden werden wie folgt eingebaut und angeschlossen:

Das kurze Beinchen der Empfangsdiode und das lange Beinchen der Sendediode werden zusammengeführt und bekommen das rote Kabel. Die beiden anderen Anschlüsse werden mit schwarz (Sendediode) bzw. grün (Empfangsdiode) versehen.
Achtung: Bei der Sendediode SFH4346 sind kurzes und langes Beinchen vertauscht!!
Der Einbau in Böschungsgleis kann z.B. wie folgt erfolgen: An das Gleisbett wird von unten ein 2mm dickes Stückchen Holzbrett geklebt (z.B. von einem Eisstiehl). Nach dem Trocknen des Klebstoffs können dann von oben mit einem 3mm Bohrer zwei Löcher im Abstand von ca. 8mm gebohrt werden. Durch diese Löcher werden dann die beiden Dioden gesteckt. Die Oberseite der Dioden schließt dann quasi bündig mit der Oberkannte der Böschung ab.

up.picr.de_33525908re.jpgup.picr.de_33525909yn.jpgup.picr.de_33525910vj.jpg



- für den CAN-Bus

Neben den Anschlüssen für die Reflexlichtschranken muss der ArduCAN-IR auch an den CAN-Bus angeschlossen werden. Das kann entweder über D-Sub-Stecker oder über RJ45-Buchsen erfolgen, so dass normale Netzwerkkabel verwendet werden können. Auch ein Mischbetrieb ist möglich. Der Vorteil der Netzwerkkabel ist, dass sie in allen Längen günstig überall zu finden sind. Dem steht der Nachteil gegenüber, dass die Strombelastbarkeit deutlich geringer ist. Deshalb ist die Möglichkeit gegeben auf den ArduCAN die Spannung erneut einzuspeisen und dadurch die geringere Strombelastbarkeit der Kabel auszugleichen. Dies ist nicht auf jedem Modul nötig, kann aber nach eigenen Wünschen von Zeit zu Zeit vorgenommen werden.

up.picr.de_33518772bx.jpg up.picr.de_33518773uu.jpg up.picr.de_33518774az.jpg

Ja nach gewünschter Konfiguration müssen auf der Unterseite der Platine die entsprechenden Lötjumper geschlossen werden. Welche Jumper bei welcher Kombination zu schließen sind, ist praktischerweise direkt auf der Platine aufgedruckt.

up.picr.de_33518775kg.jpg


Stromversorgung

Die Stromversorgung erfolgt standardmäßig aus dem CAN-Bus. Der Jumper „Power“ bleibt standardmäßig offen. Dadurch wird die ganze Platine mit dem Strom des CAN-Bus versorgt.
Folgende Möglichkeiten stehen zur Verfügung:

Power-JumperPOWER-INBedeutung/Verwendung
egalnichts angeschlosssenStandardbetriebsart. Der „ArduCAN IR“ und alle Anschlüsse werden über den CAN-Bus mit Strom versorgt.
GeschlossenCAN-Busspannung , direkt von der CAN-Bus-Schnittstelle entnommenUm Leitungsverluste des CAN-Bus auszugleichen, kann die Busspannung erneut eingespeist werden. Achtung: Keine andere Stromversorgung verwenden
OffenNetzteilDer „ArduCAN IR“ und alle Anschlüsse werden über das angeschlossene Netzteil mit Strom versorgt. (siehe auch *)
Offen + Lötjumper „+5VIN“ auf der Unterseite geschlossenNetzteil (5V)Nur mit I/O-Steckerleiste: Die gesamte Stromversorgung des ArduCAN und aller angeschlossenen Komponenten erfolgt durch das externe Netzteil.

* Der „ArduCAN IR“arbeitet intern mit 5V, welche auch den Lichtschranken zur Verfügung gestellt werden. Wenn die CAN-Busspannung deutlich über 12V liegt, ist der interne Spannungswandler überlastet. Man merkt das daran, dass der Arduino sehr warm wird, oder es im Extremfall sogar kurze Aussetzer gibt. Dann muss die interne Spannung von 5V mittels eines DC/DC-Wandlers erzeugt werden. Dies ist auf der Platine bereits vorgesehen. Als Spannunswandler kann z.B. ein LM7805 verwendet werden. C1 und C2 (z.B. 100µF) und der 100nF Kondensator müssen dann auch bestückt werden. Alternativ kann auch ein komplettes step-down Reglermodul , welches pinkompatibel zum 7805 sein muss, benutzt werden. Die Kondensatoren sind dann nicht nötig, schaden aber auch nicht.


Zusammenbau/Teileliste

Beim Design der Platine wurde auf einfachen Aufbau geachtet. Daher sind keine SMD-Bauteile einzulöten. Stattdessen müssen hauptsächlich vorgefertigte Baugruppen über Buchsenleisten miteinander verbunden werden.

AnzahlBauteilVerwendung
1xArduino NanoMikroprozessor
1xCAN-Bus Modul MCP2515 TJA105CAN-Transceiver
2xBuchsenleiste 15-poligZum Aufstecken des Arduino nano
1xBuchsenleiste 7-poligZum Aufstecken des CAN-Transceivers
2xBuchsenleiste 2-poligZum Aufstecken des CAN-Transceivers
2xD-Sub Stecker/Buchse oder RJ45-BuchseZum Anschluss an den CAN-Bus
1xRN1: Widerstandsnetzwerk 22k z.B. SIL9-8 22kPull-down Widerstand für alle Eingänge (Achtung auf Einbaulage achten. Der markierte Pin ist gemeinsame Masse)
2xRN2+RN3: Widerstandsnetzwerk 150 Ohm z.B. SIL8-4 150Vorwiderstand für IR-Dioden
1xSteckerleiste 2-PinTerminierung des CAN-Busses
4xSteckerleiste 2x3 PinAnschlüsse für IR-Sensoren
8xTCRT5000 oder SFH309FA+SFH4346 oder …Reflexlichtschranken

Bauteile einlöten und zum Schluss den programmierten Arduino und den CAN-Transceiver aufstecken. Der Arduino muss vorher mit der Software „ArduCAN_IR.hex“ programmiert werden. Die Fuses sind so zu setzen, dass der Reset-Pin als I/O-Pin aktiviert wird. Es empfiehlt sich einen Bootloader zu benutzen, da sonst keine weitere Programmierung des Arduinos (z.B. Updates) mehr möglich ist. Wer es sich nicht zutraut, biete ich gerne an seinen/ihren Arduino zu programmieren oder einen bereits entsprechend programmierten Baustein zur Verfügung zu stellen.
Achtung: Werden die Fuses falsch gesetzt, ist es möglich, dass der Arduino irreparabel beschädigt ist!

Der Verfasser übernimmt keine Verantwortung für Funktionsfähigkeit oder etwaige Schäden, die durch die Nutzung der Schaltung entstehen. Der Aufbau erfolgt auf eigene Verantwortung.


Download

Gerberdateien, Aufbauanleitung, inkl. Materialiste, HEX-file können hier geladen werden: https://github.com/schumo99/ArduCAN-IR
Fertig bestückte Decoder gibt es keine, jedoch kann ich Platinen und auch programmierte Prozessoren abgeben. Für Fragen oder Hilfe ich gerne im rocrailforum oder stummiforum zur Verfügung.
Matthias (schumo99)

userpages/schumo99/arducan-ir-en.txt · Last modified: 2018/11/12 08:56 (external edit)