Hallo zusammen,
wer sich schon mal etwas umfangreicher mit dem Märklin CAN-Bus beschäftigt hat, der wird möglicherweise schon mal von meinen älteren Basteleien auf Arduino-Basis gehört haben. An diesen Komponenten habe ich allerdings schon sehr lange nicht mehr weiter gearbeitet und auch von der Arduino-IDE habe ich mich abgewandt.
In der Zwischenzeit bin ich aber nicht untätig gewesen, sondern habe immer mal wieder etwas experimentiert und Konzepte ausprobiert. Das meiste ist aber nicht über das Versuchsstadium hinaus gekommen, erwies sich als zu kompliziert oder wurde zu teuer. Getreu dem Motto "Übung macht den Meister" hat sich mein Workflow stetig weiter entwickelt und in den letzten tagen ist dabei etwas herum gekommen, das hier möglicherweise den ein oder anderen ebenfalls interessieren könnte. Ich hoffe, dass diese Entwicklung nur der Anfang eines neuen Lebens für mein MäCAN-Projekt ist und (auch durch hier gegebenes Feedback) noch weitere Ideen umgesetzt werden können.
Den Anfang macht der
16-fach MP5-Decoder
In den letzten Jahren habe ich mir immer wieder Gedanken darüber gemacht, wie ich später mal (wenn ich den Platz habe ) meine Modellbahn steuern und aufbauen möchte. Bei der Frage, welche Weichenantriebe in frage kommen könnten, habe ich mir die motorischen Weichenantriebe von MTB angesehen, speziell den MP5, da dieser zwei separate Umschalter besitzt. Ideal für Herzstückpolarisierung und sichere Lagerückmeldung für das automatische fahren. Also war das Ziel schnell klar: Ein an den CAN-Bus angebundener Decoder inklusive Rückmeldung musste her. Das Ergebnis seht ihr hier:
Mittlerweile lassen sich Platinen ziemlich günstig und schnell herstellen und mit SMD-Bauteilen bestücken. Dadurch ist es sehr einfach Mikrocontroller wie den ATmega2560 zu verwenden, ohne die winzigen Beinchen von Hand zu löten. Die Kosten sind im vergleich zu dem Arbeitsaufwand, den das Handlöten macht, sehr vertretbar wie ich finde.
Derzeit besitzt der Decoder folgende Eigenschaften:
- 16 Anschlüsse für sechspolige Leitungen zum Weichenantrieb (Steuer- und Rückmeldeleitungen). Werden mehrere Antriebe gleichzeitig angesteuert, so werden die Antriebe der reihe nach mit einer Verzögerung umgestellt.
- Versorgung des Mikrocontrollers wahlweise über die Versorgungsspannung für die Motoren oder über den CAN-Bus.
- Konfiguration des Protokolls, der Magnetartikeladressen sowie des Rückmeldebusses über die Oberfläche der Central Station oder des MäCAN-Servers (siehe Bild weiter unten)
- Eigener Bootloader, mit dem der Decoder ohne zusätzliche Geräte im eingebauten Zustand mit neuer Software versorgt werden kann. Arbeitet nach dem Schema der Märklin-CAN-Dokumentation, allerdings mit eigener Befehlskennung. Bisher habe ich hierfür ein Programm für den SRSEII geschrieben, Updates über eine Netzwerkschnittstelle sind aber auch denkbar.
- Rückmeldung über S88-Events mit frei wählbarer Bus-Kennung und Adresse (Rocrail versteht z.B bis zu 65.535 Kennungen mit jeweils 65.535 Adressen).
- Es wird erkannt, ob ein Antrieb angeschlossen ist. Stellbefehle für leere Anschlüsse werden ignoriert.
- Anschluss des CAN-Bus entweder über Schraubklemmen oder Netzwerkkabel (gemäß der durch das CdB-Projekt spezifizierten Pinbelegung).
- Auf der Platine befinden sich ein DIP-Schalter mit 4 Kontakten sowie ein Anschluss für I²C. Beides noch ungenutzt, aber wer weiß, was die Zukunft bringt
Im folgenden Bild sieht man den derzeitigen Aufbau der Konfigurationskanäle, die Liste geht bist zum Buchstaben P. In dieser Form werden sie auch auf der Central Station angezeigt. Theoretisch sind auch noch weitaus mehr Kanäle möglich, irgendwann muss man dann aber sehr weit scrollen
Mit der derzeitigen Software ist ein grundlegender Betrieb schon möglich, inklusive Rückmeldung. Der Speicher des Controllers ist dabei zu grade mal etwas mehr als 10% ausgelastet. Es ist also noch jede Menge Platz für weitere Spielereien und Funktionen. Da der Decoder derzeit meine Erwartungen bereits erfüllt würde mich nun interessieren, was ihr von so einem Decoder haltet und was für Funktionen ihr noch für sinnvoll haltet oder ein absolutes muss für einen Decoder für motorische Weichenantriebe ist. Ich hoffe der Decoder ist auch für den ein oder anderen hier interessant und bleibt keine Spielerei nur für mich selber
Dieser Decoder ist tatsächlich die zweite Platine dieses Formfaktors. Zuvor habe ich eine Platine mit 64 Ein-/Ausgängen entworfen. Angedacht war der Einsatz in einem Gleisbildstellpult und die Ansteuerung kleiner Verbraucher wie Lichtsignale. In diese Platine haben sich allerdings ein paar grobe Fehler eingeschlichen. Learning by doing lässt grüßen . Mit ein paar unschönen Anpassungen funktioniert diese zwar, jedoch gibt es da nichts wirklich interessantes zu sehen. Wenn ich da irgendwann mal was interessantes mit anstelle, dann wird es das hier selbst verständlich auch zu sehen geben. Außerdem auf dem Wunschzettel steht ein Rückmeldemodul auf der selben Basis.
Schaltpläne, Gerberdateien und Software für den Bootloader und MP5x16-Decoder sind jetzt auf GitHub zu finden.
Ich freue mich auf jegliche Anregungen, Ideen, Fragen, Kritik und was ihr sonst noch so zu dem Projekt zu sagen habt :D