Hallo zusammen,
hier mal ein kleiner Bericht zu einem aktuellen Projekt. Aktuell noch in der "work in progress"-Phase aber durchaus schon mit einigen "Teilerfolgen". Es geht um eine Eigenbau-Steuerung für das DCCD Mitteldifferential per Mikrocontroller. Habe gedacht das könnte eventuell auch für andere hier interessant sein. Vielleicht liest auch jemand mit, der sich gut mit Mikroelektronik auskennt, dann sind Tipps und Ratschläge natürlich gern gesehen. Für mich ist das Thema Elektronik noch ziemliches Neuland und das ganze Projekt folglich "learning by doing".
Hintergrund:
Das betreffende Fahrzeug ist ein 2004er Legacy GT mit einem Umbau auf 6 Gang Getriebe vom 08+ STI. Mit DCCD und Sperrdifferentialen an beiden Achsen. Im Augenblick jedoch ohne Möglichkeit das DCCD zu steuern. Es ist quasi erstmal nur ein "CD" ohne "DC"

Somit befindet sich das Mitteldifferential immer im "offenen" Zustand, d.h. 41/59 Kraftverteilung und nur die geringe Sperrwirkung des mechanischen LSDs vom DCCD. Dieses kann laut Subaru nur 30% der gesamten Sperrwirkung erzeugen. Tatsächlich fährt sich das Auto aber auch in diesem Zustand sehr gut, auch im Schnee. Aber wenn man schon das fancy Diff hat will man es natürlich auch nutzen.
Alternativen:
Da 6 Gang Umbauten ja durchaus nicht selten bei Subarus sind gibt es natürlich schon entsprechende Steuergeräte von diversen Herstellern zu kaufen. Die bekanntesten sind vermutlich von mapdccd und dccdpro, aber auch von Motec, Neetronics und ldperformance gibt es entsprechende Geräte. Teilweise auch als Bestandteil eines frei programmierbaren Motorsteuergerätes. Also warum nicht einfach so eines benutzen? Zum einen sind diese in der Regel relativ teuer aber viel gravierender finde ich, dass der Großteil der Steuergeräte keine Möglichkeit zur Einbindung von Lenkwinkelsensoren in die Steuerstrategie bieten. Oft wird zur Bestimmung der Sperrwirkung nur die Motorlast (über MAP Sensor oder Gaspedalstellung) ausgewertet und eine Öffnung des Diffs bei Brems- oder Handbremsbetätigung realisiert. Oder auch nur eine rein manuelle Einstellung wie es beim gc8 bzw. im manual mode ist.
Die "besseren" Controller bieten dann meistens noch einen Querbeschleunigungssensor und die Erfassung der Raddrehzahlen. Bei mapdccd gibt es wohl noch die Möglichkeit zusätzliche 0-5v Sensoren einzubinden, jedoch nur linear als "Multiplikator" des berechneten Sperrgrads. Außerdem geben die (neueren) Subaru Lenkwinkelsensoren kein 0-5v Signal aus. Von Motec gibt es einen Controller der offenbar über CAN Bus die fahrzeugeigenen Sensoren ausliest, allerdings funktioniert dieser nur für die 08+ Impreza Modelle. Gleiches gilt für den Controller eines tschechischen Herstellers (skacel). Diese beiden Varianten sind außerdem sehr teuer. Am vielversprechendsten schien mir noch ein Controller eines russischen Anbieters (320hp.com). Letztendlich fiel die Entscheidung jedoch trotzdem auf eine DIY Lösung, auch weil dabei eventuell die Einbindung weiterer Fahrzeugfunktionen in dieselbe Hardware möglich ist (digitale Öltemperatur/-druckanzeige, IC-Waterspray, Steuerung via Lenkradtasten, Anzeigedisplay).
Dabei soll nicht unerwähnt bleiben, dass mir sehr wohl bewusst ist, dass die bereits erwähnten Controller mit Sicherheit in 99,99% der Fälle eine absolut zufriedenstellende Wirkung erzielen und das begrenzende Element letztlich eher der eigene "Fahrskill" bleibt. Insbensondere auch deshalb weil Subaru selbst erst ab dem Hawk STI eine Steuerung mit Lenkwinkel- und Gierratensensor eingeführt hat.
Grundkonzept:
Im Gegensatz zu anderen Fahrdynamik-Systemen (ABS, VDC etc.) gibt es hier nur eine Stellgröße, nämlich die effektive Spannung des Elektromagneten im Mitteldifferential. Die Sperrwirkung steigt annähernd proportional zur effektiven Spannung an. Mittels des PWM-Verfahrens wird die Spannung gesteuert. Da die Kraftwirkung des Magneten nicht unmittelbar auf die Lamellen der Sperre wirkt, sondern vorher mechanisch verstärkt wird ist der erforderliche Strom relativ gering, laut Subaru maximal 4A. Das wäre aber trotzdem zu viel um direkt über den Mikrocontroller zu laufen. Deshalb wird der Magnet über einen seperaten PWM-Treiber betrieben, der ein (digitales) Steuersignal vom Mikrocontroller erhält. Im Prinzip wie bei einem Relais.
Der Mikrocontroller ist im wesentlichen ein einfacher Prozessor auf dem ein Programm läuft, welches aus den Eingangssignalen (Sensoren, Schalter, digitale Schnittstellen etc.) einen sinnvollen Sperrgrad für das Mitteldifferential berechnet und an den PWM-Treiber ausgibt. Diese Eingangssignale sind z.B. Raddrehzahlen, Gierrate, Gas-/Bremspedalstellung und Lenkwinkel. Gierrate und Lenkwinkel scheinen mir dabei besonders wichtig zu sein weil darüber die Absicht des Fahrers mit der tatsächlichen Fahrsituation verglichen und entsprechend reagiert werden kann. Beispiel: Gierratensensor zeigt Drehung nach links an aber Fahrer lenkt nach rechts -> Fahrzeug bricht aus -> Sperrgrad erhöhen um Fahrstabilität zu verbessern.
Wie beim OEM controller auch soll es möglich sein zwischen verschiedenen Modi umzuschalten (z.B. voll offen, volle Sperrung, automatische Steuerung...).
Ausgangssituation:
Im Rahmen des Getriebeumbaus wurde ein Adapterkabel von iWire benutzt um die Neutralstellungs- und Rückwärtsgangsensoren vom Getriebe mit dem Auto zu verbinden. Dieses Kabel zweigt praktischerweise gleich die zwei DCCD Leitungen und eine 12v Leitung von der Verbindung ab. Diese wurden durch die Trennwand in den Innenraum geführt. Theoretisch könnte man mit diesen drei Leitungen, einer Masseverbindung und einem einfachen Schalter das Diff bereits voll sperren, was allerdings aus verschiedenen Gründen keine gute Idee wäre. Das Adapterkabel stellt zusammen mit einer seperaten 12v Versorgung für den Controller und einer Verbindung zum CAN Bus die einzigen Verbindungen zur OEM Bordelektrik dar. Das Auto ist soweit ich weiß eines der ersten von Subaru mit CAN Bus und da es weder Automatik, noch VDC hat ist die CAN Kommunikation relativ übersichtlich. Konkret werden nur 11 CAN IDs übertragen. Dabei stehen nur das Motorsteuergerät, das Karosseriemodul und das ABS-Steuergerät in Verbindung. Von den übertragenen Informationen sind für das Projekt die Raddrehzahlen, Gaspedalstellung, Bremslichtschalter (leider gibt es bei Autos ohne VDC keinen Bremsdrucksensor) und Handbremsbetätigung relevant.
Das coole am CAN Bus dabei: Obwohl mein Auto serienmäßig keinen Lenkwinkel- und Gierratensensor hat (und selbst wenn es diese hätte wären sie beim vor-Faceliftmodell nicht über CAN Bus verbunden) kann ich diese vom Faceliftmodell übernehmen und direkt mit an die selbe CAN Bus Leitung anschließen. Wurde so auch bereits erfolgreich getestet.
Hardware:
Als Mikrocontroller benutze ich einen ESP32 mit Erweiterungsplatine für CAN Bus Kommunikation und als PWM-Treiber den DRI0050. Dieser PWM Treiber kostet ca. 10€ und lässt sich übrigens auch mit einem Potentiometer steuern. Das heißt, man könnte damit für unter 20€ schon eine funktionierende manuelle DCCD Steuerung wie z.B. im gc8 bauen. Ebenfalls bereits erfolgreich getestet.
Natürlich sollte klar sein dass diese elektronischen Komponenten alle aus China kommen, eher für den Hobby-Bastler-Bereich gedacht sind und einem niemand dabei eine Garantie gibt dass die auch im PKW Umfeld (Temperaturen, Feuchtigkeit, Vibrationen) zuverlässig auf Dauer funktionieren.
Die Stromversorgung für den PWM-Treiber erfolgt über die 12v Leitung des iWire Adapterkabels. Der Mikrocontroller wiederum muss mit 3,3v betrieben werden. Praktischerweise hat die CAN Bus Erweiterungsplatine einen eingebauten DC Wandler, der direkt an die Bordspannung angeschlossen werden kann und die Platine zusammen mit dem Mikrocontroller mit der notwendigen Spannung versorgt. Die beiden zusätzlichen Sensoren für Lenkwinkel und Gierrate werden direkt an die Bordpannung angeschlossen.
Da ich das Lenkrad im Auto bereits gegen eines vom Faceliftmodell mit allen möglichen Lenkradtasten getauscht habe und die Tasten für den Tempomat noch ungenutzt sind, plane ich diese zur Bedienung des Controllers zu verwenden. Dazu werden die zwei Anschlüsse der Lenkradtasten direkt mit dem Mikrocontroller verbunden. Je nachdem welche Taste gedrückt wird ändert sich der Widerstand zwischen den Anschlüssen.
Darüber hinaus soll dann noch ein kleines Display eingebaut werden, das den Sperrgrad und den Steuerungsmodus anzeigt.
Software
Das wird vermutlich der anspruchsvollste Teil des Projekts. Es muss im Code des Mikrocontrollers festgelegt werden welche Informationen zu welchem Zeitpunkt von/zu den jeweiligen Ein- und Ausgängen gelesen/ausgegeben werden. Glücklicherweise gibt es im Internet für viele Unterfunktionen bereits fertige Programmteile, z.B. für die Ausgabe des PWM-duty cycles an den PWM Treiber. Ebenso für das Auslesen der CAN Kommunikation, wobei dabei die eigentliche Schwierigkeit im Finden und Interpretieren der gewünschten Informationen aus den jeweiligen CAN IDs besteht. Diese werden nämlich in Form von 8 Bytes ausgegeben aus denen dann der tatsächliche Wert berechnet wird. Falls man dabei kein Glück hat und die jeweilige Berechnungsweise nicht im Netz findet muss man das experimentell machen indem man z.B. den Lenkwinkelsensor auf 0°, 90°, 180° dreht und die Werte der Bytes dazu vergleicht.