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.

In den ersten Versionen des MFLs waren die Tasten nichts anderes als eine Tastenmatrix, so hat der Tastenblock einen Multiplexchip bekommen, in einem Master-Slave Verbund. Der eine Chip hat die ersten acht Bit der Botschaft besetzt und der andere die zweiten acht Bit.

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,17ms beträgt. Somit ergibt sich eine Botschaftlänge von 5,44ms (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 Botschaft kann auf zwei Arten dekodiert werden:

  • mit Hilfe eines Mikrocontrollers
  • mit einem 8-bit Dekoder, dem Temic U6052B

Beide Varianten haben ihre Vor- bzw. Nachteile. Das Dekodieren im Mikrocontroller ist (meiner Meinung nach) die aufwendigere Methode, hier muss man sich um Timings kümmern, die Interrupts, die Werte plausibilisieren, Prioritäten und etc. Das wollte ich alles nicht machen und habe mich deswegen für die "Hardwarevariante" entschieden.

Die Auswertung mit einem Mikrocontroller könnte man sich so vorstellen:

  • Die steigende Flanke startet den Timer
  • Die fallende Flanke stoppt ihn
  • Die Zeitspanne zwischen Start und Stop wird gemessen
  • Ist sie um die 0,17ms, entspricht es einer logischen 0
  • Ist sie größer 0,17ms aber kleiner als 10,88ms, entspricht es einer logischen 1

Man geht hier klasisch nach einem ICP-Prinzip (Input Capture) vor. Aber, wie gesagt, das mache ich nicht und gehe hier deswegen nicht weiter drauf ein.

Der U6052B ist (noch) neu zu bekommen, obwohl er von Temic vor so ca 15 Jahre abgekündigt wurde. Man findet ihn aber noch bei eBay oder beim einen oder anderem Versender. 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), also genau das, was man braucht. Die Schaltung mit dem U6052B ist absolut trivial, man braucht lediglich eine Diode, vier Widerstände und dann noch ein RC-Glied zum Einstellen der Abtastfrequenz.

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

Aktion Widerstand Spannung Bits in Botschaft
Normalzustand 665 Ohm 3,48v Bit 8 "wackelt"
Setzen/Beschleunigen 60,7 Ohm 0,85v Bit 2 und 5, Bit 8 "wackelt"
Abrufen 1530 Ohm 1,71v Bit 1 und 4, Bit 8 "wackelt"
Setzen/Verzögern 332 Ohm 2,65v Bit 7, Bit 8 "wackelt"
Aus 1590 Ohm 4,24v Bit 3 und 6, Bit 8 "wackelt"

Der jeweilige Widerstand wird zwischen den beiden Leitungen, die vom der EML kommen, geschaltet.

Als Relais könnte man die Relais von Fujitsu FTR LYCA 12V (Löschdiode nicht vergessen!) verwenden. Das Relais hat einen Spulenwiderstand von 847Ohm, braucht 0,02A zum Schalten und ist schön kompakt.