Inhoudsopgave:

Thrustmaster Warthog Slew Sensor I2C Upgrade - Ajarnpa
Thrustmaster Warthog Slew Sensor I2C Upgrade - Ajarnpa

Video: Thrustmaster Warthog Slew Sensor I2C Upgrade - Ajarnpa

Video: Thrustmaster Warthog Slew Sensor I2C Upgrade - Ajarnpa
Video: Hardware Review: Delta Sim Electronics Thumbstick Upgrade für Thrustmaster HOTAS Warthog 2024, Juni-
Anonim
Thrustmaster Warthog Slew Sensor I2C Upgrade
Thrustmaster Warthog Slew Sensor I2C Upgrade

Dit is een ruwe handleiding over hoe u kunt communiceren met het I2C-protocol dat wordt gebruikt op de ThrustmasterWarthog-gashendelbewegingssensor. Dit kan worden gebruikt om te upgraden van de redelijk nutteloze standaard ministick naar iets beters, maar nog steeds met behulp van de standaard USB-controller in de gasklep. Dit is gebaseerd op een originele post op:

forums.eagle.ru/showthread.php?t=200198

Een basisbegrip als het I2C-protocol wordt verondersteld voor de meeste van de volgende stappen, ga voor een uitstekende uitleg naar:

learn.sparkfun.com/tutorials/i2c

Specifieke vragen, stel ze gerust, en ik zal proberen dit hardnekkige in de toekomst aan te vullen met meer relevante informatie. Dit is zeker niet volledig, maar zou een goed uitgangspunt moeten zijn.

Er wordt enige demo Arduino-code meegeleverd, maar neem deze alleen als referentie, aangezien een normale 5V Arduino niet zonder wijziging kan worden gebruikt.

Stap 1: Bestaande sensordetails

Bestaande sensordetails
Bestaande sensordetails

De ministick-zwenksensor die bij de Thrustmaster Wathog-gasklep wordt geleverd, staat bekend als een van de grootste zwakke punten van een verder uitstekend product. Er zijn in de loop der jaren een aantal pogingen van mensen geweest om het te vervangen door iets beters, maar de meeste zijn op de moeilijkheden gestuit om te communiceren met het digitale I2C-protocol dat door het wordt gebruikt.

De exacte sensor die wordt gebruikt in de Warthog-gasklep is de N35P112 - EasyPoint, die de AS5013 hall-effectsensor-IC gebruikt van AMS.

Data papier:

ams.com/eng/Products/Magnetic-Position-Sens…

Interessant is dat de eenheid ooit door Sparkfun beschikbaar was als een breakout-module:

www.sparkfun.com/products/retired/10835

De sensor is bedoeld voor navigatietoepassingen in bijvoorbeeld mobiele telefoons en is extreem goedkoop. Naar mijn mening onaanvaardbaar in iets dat bijna $ 500 kost.

Stap 2: Pinout

pinout
pinout

De sensor wordt via een micro 5-pins connector aangesloten op de PCB in de rechter gasklep.

Pinout is als volgt:

  1. Vcc +3,3 VDC (

    Lokaal geregeld vanaf 5V door een lineaire regelaar aan de andere kant van het bord, net achter de connector, zou goed moeten zijn tot rond de 20mA, maar dit heb ik op geen enkele manier getest)

  2. I2C-SDA
  3. I2C SCL
  4. GND
  5. Knop 1 (normaal hoog, interne 5V pullup)

Stap 3: Protocolbeschrijving

Protocolbeschrijving
Protocolbeschrijving

De sensor werkte op I2C-adres 0x41 - alle schrijf- of leescommando's beginnen met dit adres.

Wanneer de gashendel op de computer is aangesloten, is er een preambule van ongeveer 250 ms op de I2C-bus om 0x40 te adresseren, ik neem aan dat dit voor een andere sensorversie of iets dergelijks is, maar het is niet relevant voor ons.

De gegevens die bij normaal gebruik op de I2C-bus worden verzonden, staan hieronder, dit moet door onze microcontroller worden gesimuleerd om met de gashendel te praten.

Setup - Deze gegevens worden eenmaal verzonden, ongeveer 500 ms nadat de USB is aangesloten, om de originele sensor in te stellen voor gebruik.

Master schrijven: 0x0F (Control Register 1)

Gegevens: 0x02 0b0000 0010 (start een zachte reset)

Master schrijven: 0x0F (Control Register 1)

Master Read: 0xF1 0b1111 0001 (reset naar 11110000, lsb 1 betekent dat geldige gegevens klaar zijn om gelezen te worden. We moeten deze opdracht correct beantwoorden om herkend te worden als een geldig slave-apparaat)

Master schrijven: 0x2E (Control Register 2)

Gegevens: 0x 86 (dit stelt alleen de oriëntatie van de magneet in de originele sensor in)

Master schrijven: 0x0F (Control Register 1)

Gegevens: 0x 80 0b1000 0000 (zet het apparaat in de ruststand (automatische meting, niet in de energiebesparende modus))

Lus: dit wordt herhaald bij ongeveer 100 Hz om sensorgegevens te krijgen.

Master schrijven: 0x10 (X-register)

Master Read: (slave verzendt X-gegevens, 2's complement 8 bit-waarde)

Master schrijven: 0x11 (Y-register)

Master Read: (slave verzendt Y-gegevens, 2's complement 8 bit-waarde)

Relevant onderdeel van protocoldump van logic analyzer:

Setup Schrijven naar [0x82] + ACK

0x0F + ACK

0x02 + ACK

Setup Schrijven naar [0x82] + ACK

0x0F + ACK

Setup Lezen tot [0x83] + ACK

0xF1 + NAK

Setup Schrijven naar [0x82] + ACK

0x2E + ACK

0x86 + ACK

Setup Schrijven naar [0x82] + ACK

0x0F + ACK

0x80 + ACK

Setup Schrijven naar [0x82] + ACK

0x10 + ACK

Setup Lezen naar [0x83] + ACK 0xFC + NAK

Setup Schrijven naar [0x82] + ACK 0x11 + ACK

Setup Lezen naar [0x83] + ACK 0xFF + NAK

Stap 4: Arduino-code

Arduino-code
Arduino-code

De bijgevoegde Arduino-code kan worden gebruikt om de sensor te simuleren.

Let op: de meeste Arduino-boards werken op 5V, dit heeft een 3.3V-compatibel of aangepast bord nodig om te werken om schade aan uw joystick te voorkomen.

Stap 5: Kalibratie

Kalibratie
Kalibratie

Nadat uw nieuwe sensor is gemonteerd, moet de gasklep worden gekalibreerd.

Om uw gasklep te kalibreren, hebt u de gaskalibratietool. Dit kan worden gedownload van een aantal bronnen, zoals:

forums.eagle.ru/showthread.php?t=65901

Gebruik geen Windows-kalibratie.

Om het meeste uit een mod te halen, moet je een paar waarden in je kalibratieconfiguratiebestand wijzigen.

Verander de:

Standaard_DZ_SX = 0x10;

Standaard_DZ_SY = 0x10;

Regels in A10_calibration.txt naar:

Standaard_DZ_SX = 0x01;

Standaard_DZ_SY = 0x01;

Dit verandert in dode zone op de zwenkbesturing van 10 naar 1, en geeft een veel betere controle. Je kunt met deze instelling spelen en vervolgens opnieuw kalibreren en kijken wat je het leukst vindt.

Aanbevolen: