Kombiinstrument - Tankanzeige erweitern: Unterschied zwischen den Versionen
TCA965 (Diskussion | Beiträge) |
TCA965 (Diskussion | Beiträge) |
||
Zeile 490: | Zeile 490: | ||
<tr> | <tr> | ||
<td align="center">60</td> | <td align="center">60</td> | ||
<td align="center">119.41/td> | <td align="center">119.41</td> | ||
</tr> | </tr> | ||
<tr> | <tr> |
Version vom 15. März 2021, 13:23 Uhr
Die Tankanzeige im T4 zeigt bekanntlich maximal 78l an. Zusätzlich habe ich das Gefühl, das die erste Hälfte des Tanks "länger" hält, als die zweite. Wenn die Tanknadel beispielsweise genau "1/2" anzeigt, habe ich gut 650 km gefahren. Fahre ich dann den Tank fast leer, sodass die Tanknadel auf "Leer" steht und <4 Liter angezeigt werden, habe ich jedoch keinesfalls 1.300 km geschafft, sondern eher 1.050 - 1.100 km.
Desweiteren bleibt meine Tanknadel nach dem Volltanken sehr lang auf "Voll". Ich kann gut 100 - 150 km fahren, bevor die sich die Nadel das erste mal bewegt.
Nachdem ich mich einige Zeit mit dem EEPROM-Dump des KIs beschäftigt habe, fand ich insgesamt vier Kennfelder, die mit der Tankanzeige zusammen hängen und die drei beobachteten Szenarien erklären.
Wie funktionert die Tankanzeige eigentlich?
Auch das ist mal wieder sehr gut in der t4-wiki beschrieben. Ich fasse es aber mal kurz zusammen:
Der Tankgeber ist ein veränderlicher Widerstand, der anhand der Stellung des Schwimmers einen bestimmten Widerstandswert erzeugt.
Im Kombiinstrument wird aus diesem Widerstandswert eine Spannung gemacht, die dann von einem Analog-Digital-Wandler digitalisiert und weiterverarbeitet wird.
Diesem (vorzeichenlosen) A/D-Wert wird dann über die Kennfelder des Tankgebers:
- ein Literwert (MFA, VCDS, usw)
- ein Nadelwert (=Zeigerausschlag)
zugeordnet.
Gleichzeitig wird noch ein lesbarer Widerstandswert erzeugt (aber wohl nicht über den EEPROM, sondern hart im Prozessor verknüpft) - das ist aber für die Anpassung nicht so wichtig.
Was ist bekannt?
Folgende Zuordnung zwischen Tankfüllstand, Literwert und Widerstandswert ist bekannt:
Zeigerstellung | Inhalt in Litern | Widerstand in Ohm |
leer | weniger als 4 | größer als 283 |
Reserve | 10 | 189 |
1/4 | 20 | 137 |
1/2 | 40 | 89 |
3/4 | 60 | 62 |
voll | 78 | kleiner als 36 |
Interessant für uns ist, das jedem Widerstandwert, der kleiner als 36 Ohm ist, ein Literwert von 78l angezeigt werden. Ebenso zeigt die Nadel ab diesem Wert "Voll".
Vor einiger Zeit war ich tanken (etwas voller als bis zum ersten "Klick" der Zapfsäule) und habe dann unmittelbar den Widestandswert ausgelesen. Mir wurden 29 Ohm angezeigt. Demnach kann der Tankgeber (also das Bauteil) sehr wohl mehr als 78l messen. Das KI zeigt es nur nicht an.
Was steht im Dump?
Ich habe bei meinem KI (7D0920803B) vier Kennfelder gefunden, die mit dem Tank zusammenhängen.
Kennfeld | Adresse |
Tankgeber A/D Wert | 0x1F4 - 0x203 |
Tankgeber Wert in Liter 1 | 0x204 - 0x213 |
Tankgeber Wert in Liter 2 | 0x214 - 0x223 |
Tankgeber Wert für Schrittmotor | 0x224 - 0x233 |
Die ersten beiden Kennfelder scheinen den A/D Werten die Literwerte zuzuordnen und die letzten beiden ordnen den Literwerte dann Zeigerwerte zu.
A/D Kennfeld
Adresse | HEX Wert | Dezimalwert |
0x1F5 & 0x1F4 | 00 A2 | 162 |
0x1F7 & 0x1F6 | 00 A2 | 162 |
0x1F9 & 0x1F8 | 00 A2 | 162 |
0x1FB & 0x1FA | 00 F6 | 246 |
0x1FD & 0x1FC | 01 3E | 318 |
0x1FF & 0x1FE | 01 A2 | 418 |
0x201 & 0x200 | 01 F2 | 498 |
0x203 & 0x202 | 02 57 | 599 |
Liter Kennfeld 1
(ab hier lasse ich die Offsets weg)
HEX Wert | Dezimalwert | Liter (Dezimalwert / 8) |
02 70 | 624 | 78 |
02 70 | 624 | 78 |
02 70 | 624 | 78 |
01 E0 | 480 | 60 |
01 40 | 320 | 40 |
00 A0 | 160 | 20 |
00 50 | 80 | 10 |
00 20 | 32 | 4 |
Liter Kennfeld 2
Das dritte Kennfeld ist identisch mit dem zweiten, nur das es "spiegelverkehrt ist":
HEX Wert | Dezimalwert | Liter (Dezimalwert / 8) |
00 20 | 32 | 4 |
... | ... | ... |
02 70 | 624 | 78 |
Schrittmotor-Kennfeld
HEX Wert | Dezimalwert | Zeigerstellung (Dezimalwert / 8) |
00 25 | 37 | 4.625 |
00 95 | 149 | 18.625 |
01 84 | 388 | 48.5 |
02 E2 | 738 | 92.25 |
04 40 | 1088 | 136 |
05 9F | 1439 | 179.875 |
05 9F | 1439 | 179.875 |
05 9F | 1439 | 179.875 |
Was bedeutet das?
Das waren jetzt ganz schön viele Zahlen, was steht da jetzt überhaupt?
Das lässt sich in eine Tabelle runterbrechen:
A/D Wert | Liter | Widerstandswert in Ohm | Zeigerausschlag in ° |
162 | 78 | < 36 | 179.875 |
162 | 78 | < 36 | 179.875 |
162 | 78 | < 36 | 179.875 |
246 | 60 | 62 | 136 |
318 | 40 | 89 | 92.25 |
418 | 20 | 137 | 48.5 |
498 | 10 | 189 | 18.625 |
599 | 4 | > 283 | 4.625 |
Man sieht, das sich jeweils drei Werte wiederholen. Diese enthalten keine neue Informationen für das KI. Das sind also ungenutzte Speicherstellen.
Wie wir oben schon gesehen haben, kann es kleinere Widerstände als 36 Ohm geben. Nur - wie klein können sie werden und welchen Liter-Werten entsprechen sie?
Die eigentliche Anpassung
Um die Tankanzeige zu erweitern sind drei Anpassungen notwendig:
- Ergänzen der A/D-Werte für Widestände kleiner als 36 Ohm
- Ergänzen der dazu passenden Liter Werte
- Neuskalierung der Tankanzeige
Ergänzen der A/D-Werte
Zunächst stelle ich die A/D-Werte über die Widerstandswerte graphisch dar:
Widerstandswert | A/D-Wert |
36 | 162 |
62 | 246 |
89 | 318 |
137 | 418 |
189 | 498 |
283 | 599 |
Daraufhin lasse ich mir von Excel eine Trendlinie erzeugen: Polynom 2. Ordnung.
Heraus kommt die Formel: f(x) = -0.005x² + 3.3212x + 55.326
Mithilfe dieser Formel errechne ich jetzt zwei neue (Erinnerung: es wurde drei mal dasselbe gespeichert, zwei davon sind also "frei") A/D-Werte zu Widerstandswerten kleiner 36 Ohm. Als Widerstandswerte habe ich 29.5 Ohm und 23 Ohm gewählt - die Wahl ist erstmal nur ein Versuch, sie sind geraten [Spoiler: später zeigt sich, sie passen sehr gut].
Mithilfe der Formel errechne ich dazu die A/D-Werte:
Widerstandswert | A/D-Wert |
23 | 129 |
29.5 | 149 |
Damit hätten wir zwei neue A/D-Werte für Widerstandswerte kleiner 36 Ohm.
Ergänzen der Liter-Werte
Zu den oben berechneten A/D-Werten passen sehr gut folgenden Liter-Werte:
Widerstandswert | A/D-Wert | Liter |
23 | 129 | 85 |
29.5 | 149 | 82.5 |
36 | 149 | 80 |
Diese Werte (also 82.5 und 85) habe ich mehr oder weniger experimentell ermittelt. Erst habe ich 85 und 90l genutzt, den Bulli leer gefahren bis ich liegen geblieben bin und voll aufgetankt. Das KI zeigt mir dann 90l an, die Zapfsäule 85l. Also habe ich die beiden oberen Werte verringert und jetzt passt es ziemlich gut. Kann bei anderen Bullis aber ein wenig anderes aussehen.
Zwei von drei Anpassungen sind nun fertig, allerdings fehlt noch die Neuskalierung der Tankanzeige.
Skalierung
Im Originalzustand entsprachen 179.875° Zeigerstellung 78l Tankinhalt. 18.625° Zeigerstellung entsprachen 10l Tankinhalt. (Beginn der Reserve)
Da ich den Reservebereich so lassen möchte, passe ich nur den Bereich darüber an.
Neu soll gelten:
- 90l: Zeiger "Voll"
- 45l: Zeiger "Halb"
- 10l: Zeiger "Beginn Reserve" (also wie original)
- 4l: Zeiger "Leer"
Daraus resultiert folgende Zuordnung
Liter | Nadelstellung |
4 | 4.625 |
10 | 18.625 |
20 | 38.78 |
40 | 79.1 |
60 | 119.41 |
80 | 159.72 |
82.5 | 169.80 |
85 | 179.875 |
Im Aufbau
Bei Fragen oder Ergänzungen im Forum als "TCA965" erreichbar