Projektstatus: Abgeschlossen

Das Tempomatsignal der MFLs ist ein 8-bit Signal, das wie folgt aussieht:

tempomat botschaft2

Jede Botschaft besteht aus zwei Startbits und acht Datenbits (Bit 1 bis Bit 8) mit den Nutzinformationen, gefolgt von einer Übertragungspause (Data Interval). Diese Übertragung wird wiederholt, solange der Sender (also die Tempomattasten) Strom bekommt.

So sieht das echte Signal aus,das von den Tasten geschickt wird:

signal leerlauf 

Hier sieht man, dass der Bit acht gesetzt ist.

Dasselbe Signal in besseren zeitlichen Auflösung:

signal leerlauf zoom

Der Zustand der Taste ist im Bit kodiert. Ein Bit besteht aus einem One bit und einem Inf bit (Information bit), der den Zustand darstellt. Innerhalb der Botschaft haben alle Bit dieselbe Länge, die 0,168ms beträgt (Periodendauer von 0,672ms / 4 Bit = 0,168ms pro Bit). Somit ergibt sich eine Botschaftlänge von 5,712ms (von One bit des Bit 1 bis zu den beiden letzten Zero Bits). Der Abstand zwischen den Botschaften beträgt 10,88ms, es wird von der steigennden Flanke des Bit 1 (nach den beiden SYNC bzw. Start Bits) bis zu der letzten steigenden Flanke in der Botschaft gezählt. Dei Botschaft wird alle 16,32ms wiederholt.

Das Dekodieren der Botschaften erfolgt mi dem Temic U6052B (gibt es zum Beispiel hier zu kaufen). Der Chip is ein Teil eines "lokalen Multiplexsystems", bestehend aus einem U6050B (Transmitter, ist im Lenkrad verbaut) und einem U6051B/U6052B (Receiver, ist im MFL-Modul verbaut).

Der U6052B ist (noch) neu zu bekommen, obwohl er von Temic vor so ca 15 Jahre abgekündigt wurde. Alternativ, zwei von diesen Chips (jedoch als SO24 Bauform) sind in einem MFL-Modul von BMW verbaut, man kann sie auslöten und weiterverwenden. So ein MFL-Modul kostet bei eBay zwischen 10€ und 15€. Der Chip dekodiert das MFL-Signal und je nach dem welcher Bit im Signal gesetzt ist, wird der dazugehörige Ausgang auf logische 0 (also GND) geschaltet. Der Chip ist in der Lage ein Relais zu treiben (mit max 200mA). Alternativ kann man die Ausgänge als "logische Ausgänge" betreiben, in diesem Fall sind es open-collector Ausgänge, die in der Lage sind bis zu 200mA zu schalten und 25V zu sperren. Die Schaltung mit dem U6052B ist trivial, man braucht lediglich eine Diode, ein paar Widerstände und ein Kondensator.

Berechnung der Abtastfrequenz:

Beim Tempomatsignal scheint BMW sich nicht an die Referenz von Temic gehalten zu haben, so beträgt die Übertragunsfrequenz lediglich 1,488kHz (ausgehend von einer Periodendauer von 0,672ms). Empfohlen sind hier 6,4kHz. Es muss also die Abtastfrequenz des U6052B entsprechend angepasst werden.

Das Datenblatt sagt dazu: Die Abtastfrequenz muss das Vierfache der Übertragungsfrequenz betragen, Es ist eine Abweichung von +/- 15% zulässig. Im vorliegenden Fall wäre die Abtastfrequenz also 5952,38Hz.

Die Formel zur Berechnung der Abtastfrequenz lautet

  • fosc = 1 / (Cosc * (0,79 * Rosc + 2260)) 

Es gibt nur eine Einschränkung, Rocs sollte nicht unter 68kOhm liegen. (Datenblatt Abschnitt 1.2)

Also habe ich etwas mit den C und R-Werten gespielt und bin auch auf die gesuchte 5952Hz gekommen, es waren ca 6240Hz, zwar etwas mehr aber immernoch innerhalb der 15% Toleranz. Habe die Bauteile in die Schaltung eingefügt (Widerstand von VStab nach OSC und Kondensator von OSC nach Masse) und es tat sich rein gar nichts. Die Frequenz gemessen, sieht gut aus, passt alles. Nach dem sehr langen Testen, Suchen und Probieren, habe ich den Widerstand von VStab nach Vs, also VBat, umgehängt und siehe da, das Dekodieren des Signals klappte auf einmal.......... VStab liefert stabilisierte und gefilterte 5V Spannung für den Frequenzgenerator, es ist also nicht sinnvoll das R-C-Netzwerk an den Pin Vs anzuschiließen... Nun gilt es die richtige bzw. funktionierende Werte für Widerstand und Kondensator rauszufinden.

Erstmal wird die Frequenz am Pin OSC gemessen:

singal abtastung

Hier sieht man schön wie der Kondensator sich auflädt und dann entladen wird. Die Frequenz liegt bei etwas über 20kHz. Nun gilt es über die Formel da oben das passende RC-Pärchen zu finden...

Die Tempomat-Steuerung im E31 läuft über eine Widerstandsmatrix. Jedem Zustand ist ein Widerstandswert zugeordnet:

Zustände der Bits in der Botschaft:

Aktion Bit in Botschaft (Ausgang) Widerstand
Leerlauf Bit 8 "wackelt" 665 Ohm
Setzen/Beschleunigen Bit 2 und 5, Bit 8 "wackelt" 60,7 Ohm
Abrufen Bit 1 und 4, Bit 8 "wackelt" 153 Ohm
Setzen/Verzögern Bit 7, Bit 8 "wackelt" 332 Ohm
Aus Bit 3 und 6, Bit 8 "wackelt" 1590 Ohm

Der Bit 8 signalisiert dem Steuergerät (also dem DME/DDE) die Präsenz der Tempomattasten, der sog. Herzschlag.

Hier sieht man, dass das Decodieren der Botschaften mit dem U6052b funktioniert:

Das Drücken eines Knopfes bewirkt das Aufleuchten der entsprechenden LED. Die langsam und gleichmässig blinkende LED (Frequenz 1Hz) ist der wackelnde Bit 8, das ist Alive-Signal von den Tasten.

Der jeweilige Widerstand wird zwischen den beiden Leitungen, die vom der EML kommen, geschaltet. Diese Matrix kann man einpaar wenigen (vier an der Zahl) Relais nachbauen. Als Relais könnte man die Relais Fujitsu FTR-LYCA012V, Panasonic APF30312 oder Weidmüller RSS113012 (Freilaufdiode nicht vergessen!) verwenden. Diese Relais haben einen Spulenwiderstand von 847 Ohm, brauchen rund 0,014A zum Schalten und sind mit 5x28x15mm schön kompakt. Pro Modul werden vier Relais benötigt.

So könnte es dann fertig aufgebaut aussehen:

IMG 5059

IMG 5060 IMG 5061

IMG 5063

Und hier das fertige Modul in Aktion:

Für den Einbau werden noch zwei Stecker und einpaar Pins benötigt:

  • Tempomatstecker zum Fahrzeug: 61138352322, Hülse 2x 61131376202
  • Schleifring: 61136913635, Stiftkontakt 5x 61130005198