Es gibt Fortschritte!
Über den CS4192 Chip (Aircore Gauge Treiber IC, nur noch über China/Aliexpress etc. zu bekommen) lässt sich die Anzeige geräuschfrei und sauber ansteuern. Diese Art von Chips/Schaltungen dürfte auch in der Tachoelektronik implementiert sein. Angesteuert wird der Chip über SPI, es wird ganz einfach eine Gradzahl (0-360°) übermittelt, die der IC dann umsetzt. Im Falle der Verbrauchs-/Öltemperaturanzeige ist der Bereich 0-120°.
Was die Öltemperatur betrifft habe ich nun wochenlang herumgekämpft. Hauptproblem war, dass ich über den MCP2025 (Lin-Bus Kommunikations-Chip, elektrisch aber mit dem K-Bus/Diagnosebus kompatibel) keine Nachrichten senden konnte. Empfangen klappt grundsätzlich. Es finden sich einige I-Bus Libraries, da der I-Bus besonders ab dem E46 exzessiv zur Radio-, Tacho- und Naviansteuerung verwendet wurde, und da gibts einige die da gebastelt haben.
Der I-Bus und der K-Bus sind zwar auch wieder stark verwandt, jedoch musste ich auch erstmal herausfinden dass der Nachrichtenaufbau auf dem K-Bus geringfügig anders ist. Also die I-Bus-Bibliothek umgeschrieben, nun bekomme ich statt Byte-Salat tatsächlich saubere Nachrichten.
Damit habe ich mir dann zunächst mal einen "Logger" gebaut und programmiert, womit ich an der Diagnoseschnittstelle die Nachrichten, die zwischen IN*PA und der DME hin- und herfliegen, mitgeplottet habe. So konnte ich IN*PA-Triggernachricht und DME-Antwort identifizieren, sprich herausfinden, was ich an die DME senden muss, damit ich die Analogdaten als Antwort bekomme.
Das Senden habe ich nun über eine einfache Transistorschaltung realisiert, am MCP2025 vorbei. Das funktioniert nun einwandfrei, heißt also mein Microkontroller (und Programm) macht soweit alles richtig. Erstmal ein Workaround, um das Problem mit dem MCP2025 kümmere ich mich später, bzw. ich habe parallel einen dezidierten K-Bus-Chip geordert, mit dem es vielleicht besser klappt.
Im nächsten Schritt habe ich nun meinen Microkontroller so programmiert, dass er quasi auf die nun bekannten eingehenden Triggernachrichten von IN*PA mit den von mir mitgeloggten Antworten der DME antwortet. So kann ich für die Analogwerte-Anzeige nicht nur die DME simulieren, sondern nun auch gezielt in der Antwort einzelne Bytes verändern, und in IN*PA verfolgen welcher Wert sich dann ändern. Damit ist mir die Zuordnung der Bytes zu den Werten (Drehzahl, Geschwindigkeit, Zündwinkel, Kühlflüssigkeitstemperatur, Öltemperatur, Leerlaufsteller, Ansauglufttemperatur usw...) quasi empirisch gelungen. Die Umrechungsformeln der Hexadezimalwerte in dezimale Einheiten muss man sich dann eben aus ein paar Wertepaaren errechnen. Das klappt meistens einigermaßen gut.
Auch die Extra-Nachricht mit der Öltemperatur habe ich identifiziert. Die Formel gestaltet sich noch etwas schwierig. Der 10bit-Wert von 0-1023 ist reziprok und nicht ganz linear. Ich habe fast den Verdacht dass es sich dabei um den Roh-AD-Wert des Öltemperatursensors (NTC-Widerstand) handelt.
Die anderen Temperaturen ebenso. Das ist jetzt aber nur noch eine kleine Hürde und sicher schnell zu bewältigen. Im nächsten Schritt muss ich das dann mal live am Auto testen, sprich ob mir die echte DME auf "Anfrage" dann auch brav mit dem antwortet, was ich haben möchte. Aber warum sollte sie nicht, ich habe die echte Kommunikation ja verfolgt und kann nun "mitschwätzen"
Scheint also dass ich nicht mehr weit vom Ziel entfernt bin. Die letzte Hürde wird dann noch eine halbwegs saubere Integration des Microcontrollers und der Schaltung mit ICs in den Tacho. Stromversorgung/Masse habe ich schon erfolgreich auf der Tacho-Platine angezapft, sodass das alles im Inneren verbaut werden kann und der Tacho dann quasi von außen wieder Plug&Play ist. Nur den K-Bus der DME muss ich noch irgendwie von extern zuführen, denn die Diagnoseleitung im Tacho ist leider die falsche, die DME ist auf der anderen Leitung
Idealerweise klappt das über einen unbenutzten Pin einer der Stecker, sodass ich auch da nix unschönes separat basteln muss.
Das Protokoll und der Inhalt der Bytes ist ausschließlich für den M52TU bzw. die MS42 im Z3 verifiziert. Ob das auch für die MS43 / M54-Motoren gilt, bleibt zunächst offen. Auch zu den Vierzylindern kann ich da noch nichts zu sagen (haben die überhaupt nen Öltemperatursensor?).
Stay tuned
Gruß Steffen