Nun haben wir also herausgefunden, wie man mit dem Display spricht, und wissen ungefähr welche Art von Signalen wir für Einspritzzeit, Geschwindigkeit sowie Tank und Motortemperatur erwarten. Zeit sich um die generelle Funktionalität des Gerätes zu kümmern.
Was zeigt der original BC wann wo an, wenn ein bestimmtes Ereignis eintritt? Konsultieren wir dazu das Handbuch:
Zur Anlasskontrolle sei nur so viel gesagt, die Überprüfung des Motorölstandes erfolgt mit einem speziellen Sensor, den mein Auto nicht hat, also lassen wir diese Funktion gleich weg. Es reicht, wenn am Anfang kontrolliert wird, ob die einzelnen Sensoren ordnungsgemäß funktionieren, dann darf der BC gerne „OK“ anzeigen und dann geht es in den Normalbetrieb.
Die Behandlung von Fehlern und Warnungen will ich genau wie im Handbuch beschrieben implementieren, also bei einer Motortemperatur über 114°C soll das rote Segment blinken, bei unter 8l im Tank das entsprechende RANGE-Segment aufleuchten usw..
Bedienbar bleiben soll der BC-Nachbau natürlich mittels des originalen Drehschalters, die Reset-Taste an selbigem soll bei langem Drücken die mittlere Geschwindigkeit oder Fuel AVG rückstellen. Zudem will ich einen erweiterten Debug-Mode einbauen, der beim Eindrücken des Reset-Knopfes während der BC auf RANGE steht wählbar ist. Dann sollen wichtige Informationen zu den gemessenen Signalen auf den verschiedenen BC-Kanälen angezeigt werden. Den UNIT-Knopf am Drehschalter will ich nicht zum Umstellen der Einheiten verwenden. Ich fange auf meine alten Tage doch nicht an, in Miles per Gallon zu rechnen. Es ergibt sich mit diesem Knopf aber die Möglichkeit, den Eigenbau-BC einen Master-Clear-Reset zu verpassen, wenn im Betrieb etwas richtig daneben geht, kann der Microprozessor damit neu gestartet werden.
Legen wir mit dem Bedienelement los:
Die Funktion des Drehschalters ist schnell erklärt: Die Einheit hat 7 Kabel, eines führt Massepotential, die anderen werden je nach Schalterstellung oder „Knopf-Eindrücken“ mit Masse verbunden oder eben nicht. Mittels PullUp-Widerständen gegen 3,3V kann so eine wunderbare Logikschaltung realisiert werden, der Schalter codiert seine Positionen dann brav in 0 und 1. Zusätzlich gibt es noch ein kleines Abgleich-Poti unter einer Abdeckung in der Mitte. Man kann hier die ungenaue Tankanzeige kalibrieren, das werde ich aber nicht verwenden, ich kalibriere in Code.
Kabel | Funktion
1 Massebezug
2 SW_2
3 SW_3
4 UNIT 1/0
5 Poti
6 Reset
7 SW_7
Die drei SW_X sind am interessantesten, mit diesen dreien kann eine kleine Truth-Table aufgestellt werden, die die Schalterstellung codiert:
Schalterstellung | SW_2 | SW_3 | SW_7
Fuel_INST 0 0 0
Fuel_AVG 1 0 0
Speed_AVG 0 1 0
RANGE 1 1 0
OIL 0 0 1
ENGINE 1 0 1
EXT 0 1 1
Eine weitere Codiermöglichkeit wäre 1-1-1, diese wurde findigerweise nicht besetzt, da dieser Zustand auch eintreten kann, wenn das Anschlusskabel vom Drehschalter getrennt ist, also ein Fehler vorliegt.
Als nächstes sollte man rausfinden, welche Textmessages das Display anzeigen kann, und wann es dies tut:
Die möglichen Anzeigen wären:
[ – – – ] Drei Striche für „Kein Wert“
[888 km] (bis zu) Dreistellige Anzeige wie für Range
[88,8L] Zweistellig mit Komma für Tankinhalt
[888°C] (bis zu) Dreistellige Motor-/Oil-Temperatur
[88,8L/100km] Verbrauchsanzeige zweistellig mit Komma
[888km/h] (bis zu) dreistellige Geschwindigkeit
[ OK] Anlasskontrolle, alles gut
[CHECK] Anlasskontrolle schlecht oder Sensorfehler
{CoLd] Motor/Öltemperatur <40°C
[STOP] Motor/Öltemperatur zu hoch
[FUEL] Tank leer
Leave a Reply