Audi S4 B5: Kombiinstrument-Umbau von Vor-Facelift zu Facelift

Der Umbau eines Kombiinstruments (KIs) ist eigentlich keine grosse Sache, wird aber, wenn man ein KI eines anderen Fahrzeugtyps oder eines anderen Modelljahrs des gleichen Fahrzeugstyps umbauen möchte, eventuell wesentlich schwieriger. Einer dieser schwierigen Fälle wird hier beschrieben: Tausch eines KI von einem Audi S4 B5 Modelljahr 1999 mit einem KI aus einem Audi S4 B5 Modelljahr 2000.

Das KI des Vor-Facelifts (nachfolgend als altes KI bezeichnet) mit der Teilenummer 8D0 919 881 L ist von VDO, hat eine Wegfahrsperre der Generation 2 (WFS 2) und eine analoge Uhr. Das KI des Facelifts (nachfolgend als neues KI bezeichnet) mit der Teilenummer 8D0 920 932 JX ist ebenfalls von VDO, unterstützt CAN-Bus, hat ebenfalls eine WFS 2, eine digitale Uhr mit Datumsanzeige und eine Anschlussmöglichkeit für eine Funkuhr.

Verkabelung

Die Anschlussbuchsen sowie deren Belegungen unterscheiden sich bei den beiden KIen. Das alte KI hat einen 32-poligen blauen Anschluss, einen 32-poligen grünen Anschluss und einen 20-poligen roten Anschluss. Das neue KI hat ebenfalls den blauen und grünen Anschluss, aber anstelle eines roten Anschlusses einen 32-poligen grauen Anschluss.

Anzahl Bezeichnung VAG-Teilenummer
1x Stecker grün 8L0 972 977 C
1x Stecker blau 8L0 972 977 D
1x Stecker grau 8L0 972 977 G

Die nachfolgende Tabelle zeigt, wie das neue KI belegt werden muss. Eine Spalte beinhaltet alle Belegungen eines bestimmten Steckers des alten KI und die passende Belegung beim neuen KI. Eine Belegung besteht aus dem Pin und der Farbe des Steckers. In der Spalte auf der linken Seite steht die ursprüngliche Belegung beim alten KI, auf der rechten Seite die passende Belegung bei dem neuen KI.

blauer Stecker grüner Stecker roter Stecker
1 blau → 1 blau 17 blau → 17 blau 2 grün → 2 grün 1 rot → 25 blau
2 blau → 7 grün 18 blau → 18 blau 4 grün → frei 5 rot → 29 grün
3 blau → 3 blau 19 blau → 21 grün 5 grün → 5 grün 6 rot → 31 grün
5 blau → 5 blau 20 blau → 20 blau 6 grün → 6 grün 9 rot → 15 grau
6 blau → 10 grün 21 blau → 21 blau 7 grün → 2 blau 10 rot → frei
7 blau → 7 blau 22 blau → 22 blau 10 grün → 6 blau 11 rot → 19 grau
8 blau → 8 blau 23 blau → 23 blau 11 grün → 11 grün 12 rot → 12 grau
9 blau → 9 blau 24 blau → 24 blau 12 grün → 12 blau 13 rot → 13 grau
10 blau → 10 blau 25 blau → 28 grün 13 grün → 13 grün 14 rot → 17 grau
11 blau → 11 blau 26 blau → 26 blau 14 grün → 13 blau 15 rot → 11 grau
12 blau → 12 grün 27 blau → 27 blau 15 grün → frei 16 rot → 16 grau
13 blau → 14 grün 28 blau → 28 blau 17 grün → 17 grün 17 rot → frei
14 blau → 14 blau 29 blau → 29 blau 21 grün → 15 grün 18 rot → 18 grau
15 blau → 15 blau 30 blau → 30 blau 29 grün → frei 19 rot → 14 grau
16 blau → 16 blau 31 blau → 27 grün 30 grün → 31 blau
32 blau → 32 blau

Die Kabel stammen aus ein paar Flachbandkabeln, wie sie bei Computern (IDE-/SCSI-Kabel) verwendet werden. Die Leitung „21 grün“ vom alten KI ist das Signal des normalen Ölsensors und geht über den TinyTOG zu „15 grün“ des neuen KIs, um ein TOG-Signal zu emulieren.

Bei der Belegung des neuen KIs sind keine Änderung an den Steckern oder am Kabelbaum des Fahrzeugs vorgenommen worden. Damit ist gewährleistet, dass jederzeit ein zu dem Modelljahr passendes KI einbaut werden kann und so der Originalzustand wieder herstellbar ist.

TinyTOG

Das neue KI hat ein paar mehr Anzeige-Möglichkeiten als das alte KI, sofern entsprechende Sensoren im Fahrzeug verbaut sind, und benötigt einen Temperatur- und Ölstandgeber (TOG), welcher beim Facelift im Zuge der variablen Serviceintervalle (Longlife) eingeführt wurde. Dieser Sensor sitzt beim Facelift auf der Unterseite der Ölwanne, beim Vorface-Lift gibt es diesen Sensor nicht. Das neue KI zeigt stets eine Ölstandswarnmeldung an, wenn kein plausibles Signal von einem TOG anliegt.

Das Signal vom TOG wird mit einer Schaltung, dem TinyTOG von Automotive Light and Magic (ALM), emuliert. Der TinyTOG wandelt den Widerstandswert des Ölsensors in entsprechende Pulse um, die ein TOG geben würde. Damit kann der alte Ölsensor (049 919 563 B) weiterverwendet werden und das neue KI zeigt nicht dauerhaft eine Ölstandswarnmeldung an.

Folgende Werte ergeben sich für den Ölsensor bei der Messung des Widerstandes und damit der Öltemperatur über einen 50 Ohm-Spannungsteiler bei 5 V Referenz- bzw. Versorgungsspannung mit dem 10 Bit-Analog-/Digital-Konverter (ADC) des ATtiny25:

ADC ADCH 1. Puls Pulspause 2. Puls
[°C] [Ohm] [V] (10 Bit) (8 Bit) [ms] [ms] [ms]
41 1200 4,80 983 246 20,00 23,00 24,00
60 550 4,58 939 235 20,00 26,25 27,00
65 420 4,47 915 229 20,00 27,00 27,75
70 330 4,34 889 222 20,00 28,00 28,25
75 268 4,21 863 216 20,00 28,50 29,25
80 227 4,10 839 210 20,00 29,25 30,00
85 195 3,98 815 204 20,00 30,25 30,75
90 162 3,82 782 196 20,00 31,00 31,50
95 140 3,68 755 189 20,00 31,75 32,50
100 122 3,55 726 182 20,00 32,50 33,25
105 108 3,42 700 175 20,00 33,25 34,00
110 92 3,24 663 166 20,00 34,00 35,00
115 85 3,15 645 161 20,00 35,00 35,75
120 77 3,03 621 155 20,00 35,75 36,75
125 66 2,84 583 146 20,00 36,75 37,50
130 48 2,45 502 125 20,00 37,50 38,25
135 43 2,31 473 118 20,00 38,25 39,25
140 39 2,19 449 112 20,00 39,25 40,00
145 34 2,02 414 104 20,00 40,00 40,75
150 30 1,88 384 96 20,00 41,00 41,75
155 27 1,75 359 90 20,00 41,75 42,75
160 24 1,62 332 83 20,00 42,75 43,50
170 23 1,58 323 81 20,00 44,50 45,25

Der erste Puls (high = VCC = 5V) ist immer 20 ms lang, die Pause (low = GND = 0V) zwischen erstem und zweiten Puls hat eine Dauer von 23 bis ca. 44 ms, der zweite Puls (high) ist zwischen 24 und 45 ms lang. Das Intervall (low) zwischen den Signalen berägt 250 ms.

Aufbau

Das Herzstück ist ein AVR-Microcontroller, welcher mit dem TinyTOG-Programm die Signale des Ölsensors in TOG-Signale übersetzt. Der Ölsensor gibt die Öltemperatur durch Änderung seines Widerstands an. Der TOG erzeugt wiederkehrend zwei Pulse und eine Pulspause. Die Zeit zwischen den zwei Pulsen und die Länge des zweiten Pulses beschreibt die Öltemperatur. Die Schaltung für den TinyTOG kann ohne Probleme auf einer Lochraster-Platine aufgebaut werden.

Abk. Anzahl Bezeichnung Reichelt-Best.-Nr.
JP1-3 1x 36-pol. Stiftleiste gerade 2,54mm SL 1X36G 2,54
1x Lochrasterplatine H25PR200
C1 1x Elektrolyt 0,1µF 100V RAD 0,1/100
C2 1x Elektrolyt 220µF 16V RAD 220/16
D1 1x Schottky 30V 1A SB 130
D4 1x Übersp.-Schutz-Diode 1,5KE 24A
F1 1x Rück. Sicherung 40A 60V 3,8s PFRA 040
IC2 1x Spannungsregler 5V LM 2931 AZ
L1 1x Drosselspule 220µH SMCC 220µ
C3 1x Keramik 47pF 50VDC KERKO 47P
C4 1x Keramik 100nF 50VDC KERKO 100N
D2 D3 2x Schottky 30V 1A SB 130
R1 1x Metallschicht 2W 10kOhm 2W METALL 10K
R2 1x Präzisionspoti 100Ohm 64Y-100
T1 1x N-FET 60V 500mA BS 170
IC1 1x Atmel AVR Tiny 25 ATTINY 25-20 PU
1x IC-Sockel 8-polig GS 8P

Firmware

Das ursprüngliche Programm für den TinyTOG ist von ALM in Assembler geschrieben worden. Die Schaltung ist von 2004 und sieht einen Atmel AVR Tiny 15 (tiny15) als Microcontroller vor, welcher aber nicht mehr hergestellt wird. Als Ersatz bietet sich ein Atmel AVR Tiny 25 (tiny25) an.

Der tiny25 kann in einen tiny15-Kompatibilitätsmodus versetzt werden, welcher den tiny25 quasi in einen tiny15 verwandelt. Dennoch sind kleine Änderungen an der originalen TinyTOG-Firmware für den Einsatz auf einem tiny25 erforderlich. Das ADC Control and Status Register (ADCSR) wude von „ADCSR“ in „ADCSRA“ umbenannt und die Werte für den 10 Bit-ADC (siehe Tabelle oben) wurden implementiert.

Zur Übertragung der Firmware auf den tiny25 kann z. B. WinAVR, welches avrdude beinhaltet, und ein einfacher IC-Programmieradapter (z. B. SI-Prog) verwendet werden. Es können natürlich auch andere Programme (z. B. PonyProg) zum Flashen verwendet werden.

Nachfolgend eine Batch-Datei als einfache Vorlage zum Schreiben der Firmware auf einen tiny25 mit avrdude von WinAVR mit einem SI-Prog:

@echo off
set port=com1
set prog=siprog
set mmcu=attiny25
set hexfile=TinyTOG
rem # ATtiny25-Fuses
rem 0x62 = Clock: intern 8 MHz, Prescale: 8 (default)
rem 0xE2 = Clock: intern 8 Mhz, kein Prescale
rem 0x63 = Clock: intern 1,6 MHz (tiny15)
set lfuse=0x63
avrdude.exe -p %mmcu% -P %port% -c %prog% -U lfuse:w:%lfuse%:m -U flash:w:%hexfile%.hex:a

Die TinyTOG-Firmware hat eine Demo-Routine zur Funktionsprüfung und Feinjustierung der Schaltung integriert. Zur Aktivierung der Routine werden die beiden Pins neben dem Microcontroller mittels Jumper verbunden. Dadurch werden im Betrieb nacheinander Öltemperaturen in 5°C-Schritten simuliert. Beginnend bei 170°C wird ungefähr alle 80 s die simulierte Öltemperatur um 5°C verringert, bis 60°C und im nächsten Schritt 41°C erreicht sind. Der 100 Ohm-Präzisionspoti dient zur Feinjustierung. Ein Wert von 50 Ohm wird in den meisten Fällen ausreichend genau sein, da aufgrund der kleinen Öltemperaturanzeige im KI sind ohnehin nur ungefähre Angaben möglich sind.

Die Spannungsversorgung des TinyTOG sollte über Klemme 15 (Zündungsplus) und Klemme 31 (Lastmasse) erfolgen. Klemme 15 liegt auf Leitung „1 blau“ und Klemme 31 z. B. auf Leitung „9 blau“ (siehe Verkabelung).

Wegfahrsperre

Eine Wegfahrsperre (WFS) ist ein verbundenes Sicherheitssystem im Fahrzeug, welche das unerlaubte Starten des Motors verhindern soll und erstreckt sich über das Motorsteuergerät, dem Kombinstrument oder einer separaten Einheit und den Schlüsseln.

Es ist grundsätzlich möglich ein KI mit WFS 2 oder WFS 3 in ein Fahrzeug mit WFS 2 zu verbauen. Ein KI mit WFS 2 hat nur seine 14-stellige ID gespeichert. Bei WFS 3 werden zusätzlich die 17-stellige Fahrgestellnummer, welche ebenfalls im Motorsteuergerät gespeichert ist, und Informationen zum Hersteller, Fahrzeugtyp, Modelljahr und das Herstellwerk gespeichert. Die WFS 2 wurde beim Audi S4 B5 von 1997 bis ca. 2001 verbaut. Das neue KI muss nach dem Einbau an das Motorsteuergerät angeglichen werden und die zum Starten berechtigten Schlüssel angelernt bekommen.

Das Anlernen und Angleichen wurde mit dem Diagnose-Programm VCDS durchgeführt.

Schlüssel anlernen

Steuergerät: Schalttafeleinsatz / Kombiinstrument

  • [Login – 11] → fünfstelligen Login-Code des neuen KIs eingeben (z. B. für Login-Code 1234 = 01234)
  • [Anpassung – 10] → Anpassungskanal 21 auslesen
    • Der gespeicherte und angezeigte Wert ist die Anzahl der alten, angelernten Schlüssel. Der Wert wird auf 0 gesetzt und gespeichert, damit die alte Schlüsselzuordnung gelöscht wird. Anschliessend wird die neue Anzahl der anzulernenden Schlüssel eingegeben und gespeichert. Nach der Speicherung ist der erste Schlüssel angelernt und die Kontrollleuchte der Wegfahrsperre im KI sollte erlischen.
    • Ein neuer, anzulernender Schlüssel wird in das Zündschloss gesteckt und die Zündung einschaltet. Die Kontrollleuchte der Wegfahrsperre schaltet sich für ca. 2 Sekunden ein und erlischt dann wieder. Der Schlüssel ist angelernt. Der Vorgang wird für alle anzulernenden Schlüssel wiederholt.

Motorsteuergerät angleichen

Steuergerät: Schalttafeleinsatz / Kombiinstrument

  • [Login – 11] → fünfstelligen Login-Code des neuen KIs eingeben (z. B. für Login-Code 1234 = 01234)
  • [Anpassung – 10] → Anpassungskanal 0 auslesen und speichern, um das Motorsteuergerät mit dem KI bekannt zu machen

Kombiinstrument anpassen

Der 93lc86 ist ein serieller Microwire-EEPROM mit 2 kByte Speicher. Dieser EEPROM wird bei dem neuen KI zur Speicherung von u. a. Login-Code und Laufleistung genutzt, welche je nach Baujahr, Hersteller und WFS-Generation dort in irgendeiner Form abgelegt sind.

Um auf den EEPROM zugreifen zu können muss das KI geöffnet werden und mit einem IC-Programmieradapter, z. B. dem SI-Prog verbunden werden. Mit einem passenden Programm (z. B. PonyProg) kann dann der komplette Inhalt des EEPROMs (der sogenannte „Dump“) ausgelesen werden.

Der Dump kann als Datei gespeichert und anschließend mit einem Hex-Editor geöffnet werden. Im Hex-Editor werden 16 Bit üblicherweise hexadezimal mit vier Zeichen (jeweils von 0 bis 9, dann A bis F für dezimal 0 bis 15) angezeigt. Ein Dump wurde korrekt ausgelesen, wenn irgendwo im Hex-Editor eine 14-stellge WFS-ID und die Teilenummer des KIs lesbar ist bzw. erahnt werden kann.

Login-Code

Normalerweise sollte der Login-Code für ein neu einzubauendes KI bekannt sein. In dem hier geschilderten Fall war der Login-Code zu dem neuen KI nicht bekannt, da es gebraucht gekauft wurde. Es gibt günstige Programme wie z. B. VAGTacho, welche über einen eigenen OBD-Stecker den Login eines KIs bis ca. Baujahr 2002 auslesen können – allerdings funktionierte dies nur bei dem alten KI, nicht aber bei dem neuen KI. Ferner gibt es Programme, z. B. IMMOread by Gsmservis, welche den Login-Code aus einem Dump auslesen können. In der Praxis funktioniert das nicht immer einwandfrei, so dass der Login-Code in manchen Fällen „manuell“ aus einem Dump mit einem Hex-Editor ermittelt werden muss.

Bei dem neuen KI steht der Login-Code an der Stelle 0x7E2 dreimal hintereinander in 16 Bit Länge.

Die hexadezimale Darstellung (0x04D2) des Login-Codes muss lediglich in eine dezimale Darstellung gebracht werden.

0x0002 = 2 * 16^0 = 2 * 1 = 2
0x00D0 = 13 * 16^1 = 13 * 16 = 208
0x0400 = 4 * 16^2 = 4 * 256 = 1024
0x0000 = 0 * 16^3 = 0 * 4096 = 0
= 1234

Die dezimale Darstellung des Login-Codes ist 0 + 1024 + 208 + 2 = 1234.

Laufleistung

Mit VCDS ist aus Sicherheitsgründen nur eine Anpassung eines km-Stands von unter 100 km möglich. Ein gebrauchtes KI, welches typischerweise aus einem anderen Fahrzeug ausgebaut wurde, hat in den allermeisten Fällen einen höheren km-Stand gespeichert. Eine Anpassung des km-Stands ist dann mit VCDS über OBD nicht mehr möglich.

Berechnung

Die Laufleistung wird hier exemplarisch ermittelt und beträgt 311.177 km. Sie wird an der Stelle 0x42 in 8 mal 16 Bit Länge im EEPROM gehalten. In diesem Fall wird die Laufleistung als Big-Endian gespeichert, d. h. zuerst die höherwertigen, dann die niederwertigen 8 Bit.

Zuerst werden die beiden 16 Bit-Pakete in ihre dezimale Darstellung überführt, wobei 0xB403 fünfmal und 0xB404 dreimal vorkommt. Der Einfachheit halber braucht nur ein 16 Bit-Paket überführt werden, da das jeweils andere Paket entweder einen um den Wert 1 höheren oder niedrigeren Wert hat.

0x0003 = 3 * 16^0 = 3 * 1 = 3
0x0000 = 0 * 16^1 = 0 * 16 = 0
0x0400 = 4 * 16^2 = 4 * 256 = 1024
0xB000 = 11 * 16^3 = 11 * 4096 = 45056
= 46083

Die hexadezimalen Werte 0xB403 bzw. 0xB404 entsprechen den dezimalen Werten 45056 + 1024 + 0 + 3 = 46083 bzw. 46083 + 1 = 46084. Unter Verwendung des nachfolgenden Rechenschemas können die dezimalen Repräsentanten in die Laufleistung überführt werden.

Variable Wert Bedeutung
a1 46083 dezimaler Wert des ersten 16 Bit-Pakets
a2 46084 dezimaler Wert des zweiten 16 Bit-Pakets
n1 5 Anzahl des ersten 16 Bit-Pakets
n2 3 Anzahl des zweiten 16 Bit-Pakets
x 49
y (n1+n2) * 65535 = 524280
b1 n1 * a1 = 230415
b2 n2 * a2 = 138252
b b1 + b2 = 368667
c y – b = 155613
d c * 2 = 311226
e d – x = 311177

Der Wert e entspricht der Laufleistung in km.

Anpassung

Die Anpassung erfolgt im Dump, also in dem EEPROM-Abbild, welcher nach der Anpassung wieder zurück in den EEPROM geschrieben wird. Exemplarisch wird hier die Laufleistung auf 261.039 km geändert. Dazu muss die Laufleistung wie oben gezeigt nur in umgekehrter Reihenfolge in die hexadezimale Darstellung überführt werden.

Variable Wert Bedeutung
e 261039 Laufleistung in Kilometer
n 8 Anzahl der darzustellenden 16 Bit-Pakete
x 49
y n * 65535 = 524280
x 49
d e + x = 261088
c d / 2 = 130544
b y – c = 393736
a b / n = 49217

Der Wert a entspricht der dezimalen Darstellung eines 16-Bit-Pakets. Die dezimale Darstellung muss in die hexadezimale Darstellung überführt werden.

49217 / 16 = 3076 Rest = 1 = 1
3.076 / 16 = 192 Rest = 4 = 4
192 / 16 = 12 Rest = 0 = 0
12 / 16 = 0 Rest = 12 = C
= 0xC041

Der dezimale Wert 49217 entspricht dem hexadezimalen Wert 0xC041.

Nach der Änderung im Dump kann dieser wieder zurück in den EEPROM geschrieben werden.

Downloads

  • TinyTOG – Firmware für ATtiny25 (zip)

Links

 


Fehlt etwas? Ist etwas falsch? Kritik bitte hier als Kommentar hinterlassen.