Du bist nicht angemeldet.

Lucullus

Fortgeschrittener

  • »Lucullus« ist der Autor dieses Themas

Beiträge: 184

Registrierungsdatum: 23. Januar 2018

  • Private Nachricht senden

1

Sonntag, 26. Januar 2025, 03:51

DIY DCCD Steuerung

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.

Lucullus

Fortgeschrittener

  • »Lucullus« ist der Autor dieses Themas

Beiträge: 184

Registrierungsdatum: 23. Januar 2018

  • Private Nachricht senden

2

Sonntag, 26. Januar 2025, 03:51

Steuerstrategie

Hier wird es spannend. Zunächst stellt sich die Frage wie genau der Magnet für einen konkreten Sperrgrad angesteuert werden muss. Der Steuerstrom weist einen variablen Tastgrad (duty cylce) und eine variable Frequenz auf. Bei der OEM Steuerung wird der Tastgrad zwischen 0% für die offene Einstellung und 54% für maximale Sperrung verwendet. Offenbar wird dabei aber auch die Frequenz zwischen 300Hz und 2000Hz variiert. Warum und in welcher Weise genau diese Frequenzänderung passiert konnte ich bis jetzt jedoch noch nicht herausfinden. Hier weichen scheinbar auch die Aftermarket-Controller teilweise erheblich ab (duty cycle bis 70% und Frequenz im zweistelligen kHz Bereich hatte ich an einer Stelle gelesen). Meine bisherigen Tests wurden mit konstant 1000Hz und variablen duty cycle gefahren, ohne negative Auffälligkeiten.
Zur Bestimmung des Sperrgrads habe ich verschiedene Ideen/Ansätze die sich teilweise überschneiden und deshalb zueinander entsprechend gewichtet werden müssen:
Relativ eindeutig ist da zunächst das Verhalten beim Betätigen der Handbremse, nämlich Sperre vollständig öffnen. Schwieriger wird es da schon bei der Bremse weil hier zwei Szenarien in Frage kommen: Sperre öffnen um das ABS unabhängig arbeiten zu lassen (so macht es das OEM Steuergerät) oder Sperre schließen um Blockieren einer einzelnen Achse zu verhindern (so macht es das Gruppe N Steuergerät). Als nächstes bietet sich eine Ermittlung der Drehzahldifferenz zwischen Vorder- und Hinterachse an. Aus dem Lenkwinkel und dem Radstand sowie der Spurweite ließen sich theoretisch grobe Sollwerte für die Drehzahldifferenz beim jeweiligen Lenkeinschlag bestimmen, die dann mit der tatsächlich gemessenen Differenz verglichen werden. Kurz gesagt: Wenn beim Geradeausfahren große Drehzahlunterschiede auftreten -> Sperre zu. Wenn beim Rangieren große Drehzahlunterschiede auftreten -> Sperre kann/muss offen bleiben.
Beim Vergleich zwischen Lenkwinkel und Gierrate scheint die Strategie erstmal recht eindeutig: Wenn nach rechts gelenkt wird und das Auto dreht sich weder zu schnell noch zu langsam nach rechts ist alles gut, ansonsten muss entsprechend reagiert werden. Sperrgrad erhöhen bei Übersteuern, Sperrgrad verringern bei Untersteuern. Hierbei bietet sich jedoch auch die Überlegung an statt den absoluten Werten der Sensoren auch die Änderungsraten zu bestimmen und einzubeziehen. So könnte unter Umtänden schneller reagiert werden.
Auf jeden Fall wird das alles viel Testen erfordern.


Offene Fragen/Probleme:


  • wie und warum wird beim OEM Steuergerät die Frequenz der Magnetsteuerung geändert?
  • ist eine Überschreitung des OEM duty cycles möglich/sinnvoll/schädlich?
  • wie schnell kann das DCCD mechanisch auf eine Änderung des Steuersignals reagieren?
  • sollten sprunghafte Änderungen des Steuersignals verhindert werden um die Mechanik vor Kraftspitzen zu schützen?
  • zum Einbinden der zusätzlichen Sensoren muss die CAN Bus Leitung erweitert werden. Wie strikt müssen dabei die Regeln für optimale Bus Topologie eingehalten werden (kurze Stichleitungen, keine sternförmige Verzweigung, verdrillte Leitung, Terminierungswiderstände)?


Soviel erstmal dazu. Danke fürs Interesse :)

Spacebender

Schüler

Beiträge: 77

Registrierungsdatum: 8. November 2023

  • Private Nachricht senden

3

Sonntag, 26. Januar 2025, 13:49

Sehr schöner Niederschrieb und vor allem auch sehr spannend.

Zu deinen Fragen hab ich dir leider keine Antworten. Zu Punkt 3 und 4 aber zwei Einwände. Kannst du mit dem Oszilloskop beim Signaleingang nicht die Rückpeitsche messen, resp. der Moment wenn eine solche deutlich ausgebildet auftritt, als Grenzbereich zur mechanischen Reaktivität heran ziehen? Und willst du nicht aus dem Aspekt der digital-analogen Koppelung nicht stets eine gleichmässige Kurve, deren zweite Ableitung möglichst eine Konstante ist, anstelle eines 'binären' Signals haben, um mechanischen Verschleiss und auch verringertes rückpeitschen zu haben?

Bzgl ESP32, meiner Erfahrung nach kannst da sehr viel Zuverlässigkeit heraus holen, wenn du mit Optokopplern arbeitest und den ESP im geschirmten Gehäuse betreibst.

racerat

Profi

Beiträge: 900

Registrierungsdatum: 6. Juni 2003

Wohnort: Italien

  • Private Nachricht senden

4

Sonntag, 26. Januar 2025, 18:29

Sorry wenn ich mich einklinke...
Das selbe Vorhaben wie du es vorhast habe ich in einer einfacheren Version füri mein Getriebe selbst gebaut. Mein System baut auf einem manuell verstellbarem PWM Modul mir Prozentanzeige auf. Dazu wird per mechanische Schalter die Fußbremse und die Handbremse eingeschleisst (so wie bei OEM). Lenkwinkel und G-Sensor interessieren mich kaum, bzw dann müsste man die Mappen mit über den Controller laufen lassen, was, wie du gesehen hast, die Sache wesendlich erschwert, aber nach meiner Meinung auch nur "Feintunting" vom System ist. Ich müsste irgenwo die graphische Darstellung der Mabs haben.
Forester X ´07 lpg
XV 2.0 '17
Outback 2.0D ´16
Impreza GT ´00 555
Impreza STI 08
Honda Civic E1
(ex Forester X ´03, ex Impreza RS ´06, ex WRX ´03, ex Outback D Bl/Bp ´09, ex Impreza 2.0D Sport)

Lucullus

Fortgeschrittener

  • »Lucullus« ist der Autor dieses Themas

Beiträge: 184

Registrierungsdatum: 23. Januar 2018

  • Private Nachricht senden

5

Sonntag, 26. Januar 2025, 21:30

Danke für eure Rückmeldungen

@Spacebender: Eine Messung mit Oszilloskop ist auf jeden Fall eine gute Idee. Würde das Signal auch gerne mal zum Vergleich bei einem OEM STI messen. Was genau meinst du mit "Rückpeitsche"? Die Spannungsspitze aufgrund der Selbstinduktion der Magnetspule? Die müsste ja eigentlich aufgrund des PWM-Prinzips kontinuierlich bei jeder Flanke des Signals auftreten. Deswegen hat der Treiber auch eine Freilaufdiode parallel zum Ausgang.
Und ja, ein möglichst stetiges Signal ist sicher von Vorteil. Das würde sich ja auch bei einem Formel-basierten Ansatz ohnehin so ergeben wenn es bei den Eingangssignalen keine Sprünge gibt. Ausnahme wären dann eben nur die "binären" Eingänge Bremse und Handbremse. Da könnte man eventuell eine Funktion vorsehen die z.B. beim Lösen der Handbremse das Signal rampenförmig auf den aktuellen Sollwert ansteigen lässt.

@racerat: Auch interessant. Welche Prozentwerte benutzt du bei deinem System? Hatte wie gesagt die Angabe für das OEM System gefunden, dass der maximale Sperrwerte bei ca 54% PWM liegt. Hast du schon höhere Werte getestet? Und wie ist der Übergang wenn du z.B. die Handbremse löst und das Diff wieder auf den eingestellten Wert geht? Ist das deutlich spürbar?

racerat

Profi

Beiträge: 900

Registrierungsdatum: 6. Juni 2003

Wohnort: Italien

  • Private Nachricht senden

6

Montag, 27. Januar 2025, 10:32


@racerat: Auch interessant. Welche Prozentwerte benutzt du bei deinem System? Hatte wie gesagt die Angabe für das OEM System gefunden, dass der maximale Sperrwerte bei ca 54% PWM liegt. Hast du schon höhere Werte getestet? Und wie ist der Übergang wenn du z.B. die Handbremse löst und das Diff wieder auf den eingestellten Wert geht? Ist das deutlich spürbar?


Die 54% PWM kann ich nicht bestätigen. Ich weiss von Rallyanwendungen wo man bis 90% geht. Wieviel das bei OEM ist weiss ich nicht. Elektrisch hingegen sollten 100% kein Problem sein. Wenn ich mich recht erinnere, die Wicklung hat 9,5Ohm. Die Zuleitungskabel sind zwar sehr dünn, aber 1,5A sollten sie locker aushalten.
Man merkt das irgenwie schon bei der Handbremse, bei der Fussbremse eher nicht. Was ich aber sagen will ist, dass sich der Wagen mit gesperrtem DCCD verspannt und schei§§e anfühlt. Er rollt viel besser durch die Kurve mit offenem DCCD. Einen Sinn für ein geschlossenenes DCCD sehe ich sowiso nur auf rutschigem Boden wie Schnee oder Schotter. Aber auch dort kann ein zuviel geschlossenes Diff mehr Schaden als Nutzen sein. Oder sagen wir besser, das DCCD hat seine Vorteile bei Beschleunigung geradeaus und bei rutschigem Untergrund. Auf Asphalt, in Kurven sehe ich nur Nachteile. Ich würde sogar fast behaupten dass man auf Asphalt, wenn es um Zeit geht, mit geschlossenem DCCD langsamer ist. Man sieht dies auch aus der Subaru Mappe: wenn G- Sensor oder Lenkwinkel ausschalgen, oder beim Bresen, so nimmt die Mappe fast gänzlich die Sperrwirkung raus. Und deshalb ist die maximale Wirkung bei OEM auch nur sehr beschränkt (und das würde sich mit den von dir genannten 54% decken). In der Praxis ist man mit dem STI auch am schnellsten wenn man das System auf "Auto" lässt, genau weil er dort in vielen Situationen fast alles rausnimmt.
Aber hey, mit diesem Wagen muss ich kein Rennen gewinnen... :thumbsup: , dazu habe ich einen anderen Wagen, und bei denen, glaube mir, nimmt keiner solche elektrische Spielereien :D
Forester X ´07 lpg
XV 2.0 '17
Outback 2.0D ´16
Impreza GT ´00 555
Impreza STI 08
Honda Civic E1
(ex Forester X ´03, ex Impreza RS ´06, ex WRX ´03, ex Outback D Bl/Bp ´09, ex Impreza 2.0D Sport)

Berni-87

Mitglied im GT-Club

Beiträge: 293

Registrierungsdatum: 22. März 2012

Wohnort: Grassau (Chiemsee, Bayern)

  • Private Nachricht senden

7

Montag, 27. Januar 2025, 13:58

Auch wenn ich nichts zum Thema beitragen kann: ich finds super, dass es doch immer wieder so bekloppte (definitiv nicht als Beleidiung gemeint!)
Leute gibt, die sich an solche Sachen dran machen. Ich drück die Daumen, dass das letztendlich alles wie gewünscht funktioniert! :thumbup:

Zurzeit ist neben dir 1 Benutzer in diesem Thema unterwegs:

1 Besucher

Ähnliche Themen