Viessmann Multiplexsignal im Detail

Viessmann Multiplexsignal decodiert

Die Viessmann Multiplexsignale werden mit einem vierpoligen Wannenstecker im Rastermaß 2mm angeschlossen.
In der Bedienungsanleitung steht dazu sinngemäß: Das Signal ist sonst sofort zerstört!

Nun, bei falschem Anschluß kann ich der Firma Viessmann ja nur recht geben - Überspannungen mögen LEDs gar nicht!
Aber WARUM soll ein Abschneiden des Steckers das Signal zerstören?
Vielleicht will man das Kabel ja verlängern?
Oder, durch mehrfaches Ein- und Ausstecken oder unvorsichtig sein reißt ein Stecker ab....
Tja, die Kabel sind alle gleich lang, und alle gleich schwarz....
Damit ergeben sich vierundzwanzig mögliche Kombinationen, die Kabel in den Stecker zu sortieren:

01.123407.213413.312419.4123
02.124308.214314.314220.4132
03.132409.234115.321421.4213
04.134210.231416.324122.4231
05.142311.243117.341223.4312
06.143212.241318.342124.4321

Wie soll man da denn die richtige Polung / Anordnung herausfinden?
Ist der Stecker erstmal ab, wahrscheinlich gar nicht mehr!

Wenn man aber vorher ausgemessen hätte, dann könnte man doch einfach einen neuen Stecker anbringen....
Oder, falls jemand anderes die Belegung ausgemessen hätte - et voila, hier sind zumindest ein paar Belegungen

Ich habe den Stecker willkürlich nummeriert, die Ansicht ist so, dass man in die Löcher sieht, der rote Strich entspricht der weissen Markierung:



Damit ergibt sich folgende Tabelle:

4720 HV Vorsignal
4721 HV Blocksignal
4722 HV Einfahrsignal
4723 HV Ausfahrsignal
4724 HV Blocksignal mit Vorsignal
4725 HV Einfahrsignal mit Vorsignal
4726 HV Ausfahrsignal mit Vorsignal
4728 Sperrsignal
4730 HV Vorsignal mit Kennlicht
4040 KS Vorsignal
4042 KS Einfahrsignal
4043 KS Ausfahrsignal
4045 KS MA Einfahrsignal
4046 KS MA Ausfahrsignal

Mit ihrer Hilfe lssen sich auch abgetrennte Stecker wieder korrekt anbringen, solange die LEDs an sich noch intakt sind.


Detektion eines Multiplexsignals

Eine der schönen Funktionen der Viessmann Multiplexsignale ist, dass der Dekoder in der Lage ist, das angeschlossene Signal von selbst zu erkennen.
Als bastelbegeisterter Modellbahner stellt sich natürlich sofort die Frage - wie machen die das?
Nun, ein paar Experimente, Bastelschaltungen und Prototypen später habe auch ich eine Lösung anzubieten.
Der Stecker des Signals wird an die Ports des Microcontrollers angeschlossen, die in der Lage sind, als AnalogEINGÄNGE zu fungieren.
Wenn man nun gleichzeitig den internen Pullup eines Pins einschaltet und einen andere Pin via Softwareschalter (Internal Pin Switch) auf Masse legt, bekommt man je nach Beschaltung des Signals unterschiedliche Szenarien.

Folgende Prinzipskizzen sollen das mal verdeutlichen:



Für eine LED in Durchflussrichtung ergibt sich damit folgender Spannungsteiler:


Uges = Upu + Urv + Uled + Urv und U größer Null für alle Spannungen.

Für eine LED in Sperrrichtung oder eine nicht beschaltete LED sieht das Ganze dann so aus:

Hierbei ist es so, dass Upu == 0 und Urest == Uges ist.

Damit ergibt sich ein unterschiedlicher Spannungswert am internen Analog/Digital Converter, je nachdem, ob eine LED verbaut ist.
Dieser Spannungswert kann gemessen werden.

Diese Messung lässt man für jede Pin-Kombination vom Mikrocontoller durchführen (BEIDE Richtungen separat - da LEDs gegenpolig verbaut sein können, also in Summe auch 24 Messungen).

Damit ergibt sich eine spezifische Kurve für jeden Signaltyp.

Diese Kurve wird nun mit den einmal ermittelten Referenzwerten für jedes Signal abgeglichen.
Der Abgleich, der wiederum die geringste Abweichung zeigt, entspricht mit hoher Wahrscheinlichkeit dem angeschlossenen Signal.
Hier ein Beispiel mit sechs Messungen (theorheoretisch ein dreipoliger Multiplexer).




Blau sei die Referenzkurve, hell und dunkelgrün jeweils Messergebnisse für ein konkretes Signal (mit durch Bauteiltolleranzen verursachten abweichenden Messergebnissen).
Rot sei die Messkurve für einen abweichenden Signaltyp (Messpunkt drei und vier sind deutlich unterschiedlich).
Die Beträge der Differenzen zwischen Referenzwert und konkretem Messwert werden addiert und der Referenzwert mit der kleinesten Summe der Abweichungen ausgewählt.
So "weiß" die Software / der Controller, welches Signal angeschlossen ist und kann es korrekt amsteuern.

Also alles ganz einfach :-P