Inhaltsverzeichnis:
- Schritt 1: Vorhandene Sensordetails
- Schritt 2: Pinbelegung
- Schritt 3: Protokollbeschreibung
- Schritt 4: Arduino-Code
- Schritt 5: Kalibrierung
Video: Thrustmaster Warthog Schwenksensor I2C Upgrade - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:18
Dies ist eine grobe Anleitung zur Verbindung mit dem I2C-Protokoll, das auf dem ThrustmasterWarthog-Drosselklappensensor verwendet wird. Dies kann verwendet werden, um vom ziemlich nutzlosen Standard-Ministick zu etwas Besserem aufzurüsten, aber immer noch mit dem Standard-USB-Controller in der Drosseleinheit. Dies basiert auf einem Originalbeitrag auf:
forums.eagle.ru/showthread.php?t=200198
Ein grundlegendes Verständnis, wenn das I2C-Protokoll für die meisten der folgenden Schritte angenommen wird, für eine hervorragende Erklärung gehen Sie zu:
learn.sparkfun.com/tutorials/i2c
Spezifische Fragen können Sie mir gerne stellen, und ich werde versuchen, diese hartnäckigen Informationen in Zukunft mit relevanteren Informationen zu ergänzen. Dies ist keineswegs vollständig, sollte aber ein guter Ausgangspunkt sein.
Einige Arduino-Democodes werden bereitgestellt, aber bitte nehmen Sie dies nur als Referenz, da ein normaler 5V-Arduino nicht ohne Modifikation verwendet werden kann.
Schritt 1: Vorhandene Sensordetails
Der Ministick-Schwenkungssensor, der mit der Thrustmaster Wathog-Drosselklappe geliefert wird, ist bekanntlich eine der größten Schwächen eines ansonsten hervorragenden Produkts. Es gab im Laufe der Jahre eine Reihe von Versuchen, es durch etwas Besseres zu ersetzen, aber die meisten sind auf die Schwierigkeiten bei der Verbindung mit dem von ihm verwendeten digitalen I2C-Protokoll gestoßen.
Der genaue Sensor, der in der Warthog-Drossel verwendet wird, ist der N35P112 - EasyPoint, der den Hall-Effekt-Sensor-IC AS5013 von AMS verwendet.
Datenblatt:
ams.com/eng/Products/Magnetic-Position-Sens…
Interessanterweise war das Gerät einst als Breakout-Modul von Sparkfun erhältlich:
www.sparkfun.com/products/retired/10835
Der Sensor ist für Navigationsanwendungen in Dingen wie Mobiltelefonen gedacht und ist extrem billig. Meiner Meinung nach inakzeptabel bei etwas, das fast 500 Dollar kostet.
Schritt 2: Pinbelegung
Der Sensor wird über einen 5-poligen Mikrostecker mit der Platine in der rechten Drosselklappeneinheit verbunden.
Pinbelegung ist wie folgt:
-
Vcc +3,3 V DC (
Lokal geregelt von 5V durch einen Linearregler auf der anderen Seite der Platine, direkt hinter dem Stecker, sollte gut bis etwa 20mA reichen, aber ich habe dies in keiner Weise getestet)
- I2C-SDA
- I2C-SCL
- Masse
- Taste 1 (Normalerweise hoch, interner 5V-Pullup)
Schritt 3: Protokollbeschreibung
Der Sensor arbeitet auf der I2C-Adresse 0x41 - alle Schreib- oder Lesebefehle beginnen mit dieser Adresse.
Wenn der Gashebel mit dem Computer verbunden ist, gibt es eine Präambel von etwa 250 ms auf dem I2C-Bus zur Adresse 0x40, ich gehe davon aus, dass dies für eine andere Sensorversion oder ähnliches gilt, aber für uns nicht relevant.
Die Daten, die im normalen Gebrauch auf dem I2C-Bus gesendet werden, sind unten, dies muss von unserem Mikrocontroller simuliert werden, um mit dem Gashebel zu sprechen.
Setup - Diese Daten werden einmal gesendet, etwa 500 ms nachdem der USB angeschlossen wurde, um den ursprünglichen Sensor für die Verwendung einzurichten.
Master-Schreiben: 0x0F (Steuerregister 1)
Daten: 0x02 0b0000 0010 (initiiert einen Soft-Reset)
Master-Schreiben: 0x0F (Steuerregister 1)
Master Read: 0xF1 0b1111 0001 (wird auf 11110000 zurückgesetzt, lsb 1 bedeutet, dass gültige Daten zum Lesen bereit sind. Wir müssen auf diesen Befehl korrekt antworten, um als gültiges Slave-Gerät erkannt zu werden)
Master-Schreiben: 0x2E (Steuerregister 2)
Daten: 0x 86 (dies legt nur die Ausrichtung des Magneten im Originalsensor fest)
Master-Schreiben: 0x0F (Steuerregister 1)
Daten: 0x 80 0b1000 0000 (Setzt das Gerät in den Ruhemodus (automatische Messung, nicht im Energiesparmodus))
Schleife: Dies wird bei etwa 100 Hz wiederholt, um Sensordaten zu erhalten.
Master-Schreiben: 0x10 (X-Register)
Master Read: (Slave sendet X-Daten, 2er-Komplement 8-Bit-Wert)
Master-Schreiben: 0x11 (Y-Register)
Master Read: (Slave sendet Y-Daten, 2er-Komplement 8-Bit-Wert)
Relevanter Teil des Protokolldumps vom Logikanalysator:
Schreibe in [0x82] + ACK
0x0F + ACK
0x02 + ACK
Schreibe in [0x82] + ACK
0x0F + ACK
Setup Lesen auf [0x83] + ACK
0xF1 + NAK
Schreibe in [0x82] + ACK
0x2E + ACK
0x86 + ACK
Schreibe in [0x82] + ACK. einrichten
0x0F + ACK
0x80 + ACK
Schreibe in [0x82] + ACK
0x10 + ACK
Setup Lesen in [0x83] + ACK 0xFC + NAK
Schreibe auf [0x82] + ACK 0x11 + ACK
Setup Lesen in [0x83] + ACK 0xFF + NAK
Schritt 4: Arduino-Code
Der beigefügte Arduino-Code kann verwendet werden, um den Sensor zu simulieren.
Bitte beachten: Die meisten Arduino-Boards laufen mit 5V, dies erfordert ein 3.3V-kompatibles oder modifiziertes Board, um Schäden an Ihrem Joystick zu vermeiden.
Schritt 5: Kalibrierung
Nachdem Ihr neuer Sensor eingebaut wurde, muss die Drosselklappe kalibriert werden.
Um Ihren Gashebel zu kalibrieren, verwenden Sie das Gaskalibrierungstool. Diese kann von einer Reihe von Quellen heruntergeladen werden, wie zum Beispiel:
forums.eagle.ru/showthread.php?t=65901
Verwenden Sie keine Windows-Kalibrierung.
Um das Beste aus einem Mod herauszuholen, müssen Sie einige Werte in Ihrer Kalibrierungskonfigurationsdatei ändern.
Ändere das:
Standard_DZ_SX = 0x10;
Standard_DZ_SY = 0x10;
Zeilen in A10_calibration.txt zu:
Standard_DZ_SX = 0x01;
Standard_DZ_SY = 0x01;
Dadurch ändert sich die Totzone der Schwenksteuerung von 10 auf 1 und bietet eine viel bessere Kontrolle. Sie können mit dieser Einstellung spielen und dann neu kalibrieren und sehen, was Ihnen am besten gefällt.
Empfohlen:
Upgrade auf Windows XP SP3: 5 Schritte
Upgrade auf Windows XP SP3: 26. April 2008 UPDATE: Das Full Service Pack 3 kommt nächste Woche. Diese Informationen stammen von lifehacker.com 1, 2008 UPDATE: Hier ist die Vollversion, wenn Sie