User Tools

Site Tools


userpages:schumo99:arducan-ir-de

ArduCAN-IR

Die ArduCAN Familie

Die ArduCAN Familie besteht aus Modulen zum Anschluss an den CAN-Bus. Allen gemein ist, dass sie auf Basis eines Arduino nano und eines gewöhnlichen CAN-Transceivermoduls aufgebaut sind. Der Aufbau ist auch für Lötneulinge relativ einfach möglich, da nur wenige Bauteile einzulöten sind und keine SMD-Teile verwendet werden.

Derzeit besteht die Familie aus:


Wie funktioniert's?

Der „ArduCAN-IR“ ist ein Decoder für den CAN-Bus auf Basis eines Arduino nano und verfügt über 8 Fremdlicht unempfindliche Eingänge für Reflexlichtschranken. Die Lichtschranken senden IR-Licht aus und detektieren eben dieses, welches von Objekten jeglicher Art zurückgeworfen wird. Das ist soweit nichts Neues, aber hier ist sichergestellt, dass einstrahlendes Tages- oder Kunstlicht den Sensor nicht auslösen kann. Trotz der enormen Umempfindlichkeit gegenüber Störlicht, ist die Empfindlichkeit doch so hoch, dass auch weiter entfernte Objekte ohne spezielle Kennzeichnung (wie z.B. helle Punkte) erkannt werden. Dadurch kann das gesamte Rollmaterial ohne Anpassungen sicher detektiert werden. Als Lichtschranken können der TCRT5000 oder eine Kombination aus SFH309FA und SFH4346 verwendet werden. Diese ist aus meiner Sicht leicht im Gleisbett zu verstecken. Andere Lichtschranken sind jedoch ebenfalls möglich. Die Gesamtstromaufnahme inkl. 8 Sensoren beträgt ca. 65mA. Ich habe ein Video auf YouTube geladen, in dem der Decoder besprochen und demonstriert wird.


Konfiguration

up.picr.de_33627533sd.jpg


Hier gibt es ein Video, in dem die Einstellungen erklärt werden.

Einschaltverzögerung (Delay ON)

Die Einschaltverzögerung bestimmt die Zeit, die der Zustand “belegt” mindestens anliegen muss, bevor die Meldung in den CAN-Bus erfolgt. Der Zahlenwert multipliziert mit 5 ergibt die Verzögerung in Millisekunden.
Die Standardeinstellung beträgt 4 (=20ms).

Ausschaltverzögerung (Delay OFF)

Die Ausschaltverzögerung bestimmt die Zeit, die der Zustand “frei” mindestens anliegen muss, bevor die Meldung in den CAN-Bus erfolgt. Der Zahlenwert multipliziert mit 5 ergibt die Verzögerung in Millisekunden.
Die Standardeinstellung beträgt 100 (=500ms).

Auslöseschwelle (Sensitivity)

Die Auslöseschwelle (Sensitivity) bestimmt die Menge an reflektiertem Licht, die der Sensor empfangen muss, um den Zustand “belegt” zu erreichen. Die Werte können in einem Bereich zwischen 1 (sehr empfindlich) und 254 (sehr unempfindlich) eingestellt werden.
Da es mitunter nicht so einfach ist, den richtigen Wert zu finden, verfügt der ArduCAN-IR über zwei automatische Einmessfunktionen. Beide Funktionen führen zum Ziel. Man kann sich für eine der beiden entscheiden:

  • auf Basis der minimalen Belegung. Dazu wird die Zahl 255 eingetragen. Bei Einmessung auf Basis der minimalen Belegung, soll derjenige Waggon bzw. das Hindernis auf die Reflexlichtschranke gerichtet sein, welches die geringstmögliche Reflexion bietet. Das ist in der Regel ein Kupplungsstück aus Kunststoff zwischen zwei Waggons. Geringe Reflexion bietet in der Regel: großer Anstand zwischen IR-Dioden und Unterboden, dunkle Farben und Kunststoff, bzw. “Löchern”, d.h. keine volle Fläche
  • auf Basis einer “freien Strecke”. Dazu wird die Zahl 0 eingetragen. Die Einmessung auf Basis der freien Strecke erfolgt ohne Belegung, d.h. die Reflexlichtschranke darf kein Hindernis sehen.

Bei beiden Funktion wird später alles, was stärker reflektiert als “belegt” erkannt. Nachdem Einmessen kann mit “Get all” der ermittelte Zahlenwert ausgelesen werden.

Schaltfläche C

Drücken der Schaltfläche “C” löst die Kalibration des jeweiligen Sensors auf Basis der minimalen Belegung (siehe oben) aus. Dazu bitte zuerst z.B. eine Kupplung zwischen zwei Waggons über dem IR-Sensor platzieren und dann auf die Schaltfläche drücken. Durch “Get all” kann dann die automatisch ermittelte Einstellung wieder eingelesen werden.

Signalinvertierung (Invert)

Mit der Signalinvertierung, kann das Signal invertiert werden. Die Standardeinstellung ist, dass die Detektion von reflektiertem Licht eine Belegung signalisiert und kein Licht, dass der Bereich frei ist. Mit dieser Option kann dies invertiert werden.

Get all

Liest alle Statuswerte aus dem Modul und zeigt sie in der Registerkarte an.

Set all

Stellt alle Ports und Optionen ein.

SoD “Start of Day”

Der ArduCAN-IR meldet den Status jedes Eingangs, wenn ein Zubehör-Befehl mit dieser Adresse (Voreingestellt: 4711) empfangen wird.

CAN ID

Stellt die CAN ID des Baustein ein.

Reset des Dekoders

Ein kompletter Reset des Decoders ist möglich, wenn direkt nach dem Einschalten der Stromversorgung die Taste das Arduinos gedrückt wird und diese so lange gehalten wird, bis die beiden LEDs dauerhaft leuchten. Die Taste bitte erst drücken nachdem die LEDs schon 4-5x geblinkt haben.
Wenn beide LEDs dauerhaft leuchten den Baustein kurz vom Strom/CAN-Bus trennen, um einen Neustart der Software auszulösen.

Weitere Funktionen

Der Dekoder kann auch in einem Modus für Gabellichtschranken als Achszähler betrieben werden. Dazu müssen Variablen in der Software händisch umgestellt werden. Hier steht wie es geht!


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 nach Neustart (Netztrennung) 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


Ins Gleisbett kann man auch wie folgt einbauen und später einschottern

up.picr.de_33694380bn.jpgup.picr.de_33694381ta.jpgup.picr.de_33694382dn.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

Die Anschlussbelegung der D-Sub Stecker/Buchsen ist identisch zum bereits bei anderen CAN-Bus Komponenten verwendeten Standard (siehe Punkt Anschlusskabel).
Die RJ45-Steckverbindung ist wie folgt beschaltet:

PinBelegung in Version 1.xBelegung ab Version 2.0Kabelfarbe
1+V Versorgung+V Versorgungws/gn
2+V Versorgung+V Versorgunggn
3CAN LCAN Lws/or
4CAN HGNDbl
5+V Versorgung+V Versorgungws/bl
6GNDCAN Hor
7GNDGNDws/br
8GNDGNDbr

Die Beschaltung der RJ45-Buchse wurde ab Version 2.0 geändert, damit der CAN-Bus auf einem verdrillten Adernpaar läuft.

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)Die gesamte Stromversorgung des „ArduCAN IR“ 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

Fertig bestückte Decoder gibt es keine, jedoch kann ich Platinen und auch programmierte Prozessoren (nanos) abgeben. Für Fragen oder Hilfe stehe ich gerne im rocrailforum oder stummiforum zur Verfügung.
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 Nano V3.0 5VMikroprozessor. Entsprechende “clones” sind auch möglich. Der darauf verbaute USB Chip ist irrelevant.
1xCAN-Bus Modul MCP2515 TJA1050CAN-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 und kommt an RN1)
2xRN2+RN3: Widerstandsnetzwerk 150 Ohm z.B. SIL8-4 150Vorwiderstand für IR-Dioden
1xSteckerleiste 2-PinTerminierung des CAN-Busses
4xSteckerleiste 2×3 PinAnschlüsse für IR-Sensoren
8xTCRT5000 oder SFH309FA+SFH4346 oder …Reflexlichtschranken

Ich habe bei “reichelt” einen Musterwarenkorb erstellt, der alle Teile bis auf den Arduino und den CAN-Transceiver enthält. Die Anzahl der IR-Dioden muss noch angepasst werden und entweder die D-Sub-Buchsen oder die RJ45-Buchsen gelöscht werden.
Nein, ich bekomme da keine Provision und die Teile gibt's bestimmt auch woanders günstiger.

Aufbau

Wenn die Buchsenleisten nicht in der richtigen Länge zu bekommen sind, diese zuerst mit Säge/Feile auf die richtige Länge bringen (16 → 15-Pin bzw. 3 → 2-Pin). Dann einfach alle Bauteile einlöten (Achtung: Das Widerstandsnetzwerk 9-Pin 22k so einbauen, dass der markierte Pin des Netzwerks, mit der Markierung auf der Platine übereinstimmt.) 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.
Achtung: Werden die Fuses falsch gesetzt ist es möglich, dass der Arduino irreparabel beschädigt ist!

Wer es sich nicht zutraut, biete ich gerne an seinen/ihren Arduino zu programmieren oder einen bereits entsprechend programmierten Mikroprozessorbaustein zur Verfügung zu stellen. Gleiches gilt für Platinen.
Einfach kurze PN an schumo99

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

Matthias (schumo99)

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