Innehållsförteckning:

Thrustmaster Warthog Slew Sensor I2C -uppgradering: 5 steg
Thrustmaster Warthog Slew Sensor I2C -uppgradering: 5 steg

Video: Thrustmaster Warthog Slew Sensor I2C -uppgradering: 5 steg

Video: Thrustmaster Warthog Slew Sensor I2C -uppgradering: 5 steg
Video: Hardware Review: Delta Sim Electronics Thumbstick Upgrade für Thrustmaster HOTAS Warthog 2024, September
Anonim
Thrustmaster Warthog Slew Sensor I2C -uppgradering
Thrustmaster Warthog Slew Sensor I2C -uppgradering

Detta är en grov guide om hur du gränssnitt med I2C -protokollet som används på ThrustmasterWarthog gasreglage. Detta kan användas för att uppgradera från den ganska värdelösa standardministiken till något bättre, men använder fortfarande den vanliga USB -kontrollen i gasenheten. Detta är baserat på ett originalinlägg om:

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

En grundläggande förståelse om I2C -protokollet antas för de flesta av följande steg, för en utmärkt förklaring gå till:

learn.sparkfun.com/tutorials/i2c

Några specifika frågor är du välkommen att ställa till mig, och jag kommer att försöka lägga till detta svårare i framtiden med mer relevant information. Detta är ingalunda komplett, men borde vara en bra utgångspunkt.

Viss demo -Arduino -kod tillhandahålls, men ta bara detta som en referens eftersom en vanlig 5V Arduino inte kan användas utan modifiering.

Steg 1: Befintliga sensordetaljer

Befintliga sensordetaljer
Befintliga sensordetaljer

Ministick -sensorn som levereras med Thrustmaster Wathog -gasreglaget är välkänd för att vara en av de största svagheterna med en annars utmärkt produkt. Det har varit ett antal försök av människor att ersätta det med något bättre genom åren, men de flesta har stött på svårigheterna med att ansluta till det digitala I2C -protokollet som används av det.

Den exakta sensorn som används i Warthog -gasreglaget är N35P112 - EasyPoint, som använder AS5013 hall -effektsensor IC tillverkad av AMS.

Datablad:

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

Intressant nog var enheten en gång tillgänglig som en breakout -modul av Sparkfun:

www.sparkfun.com/products/retired/10835

Sensorn är avsedd för navigationsapplikationer i saker som mobiltelefoner och är extremt billig. Enligt min mening oacceptabelt i något som kostar nästan $ 500.

Steg 2: Pinout

Pinout
Pinout

Sensorn ansluts till kretskortet i den högra gasenheten via mikro 5 -stifts kontakt.

Pinout är följande:

  1. Vcc +3.3VDC (

    Lokalt reglerad från 5V av en linjär regulator på andra sidan av kortet, precis bakom kontakten, borde vara bra att gå runt 20mA, men jag har inte testat detta på något sätt)

  2. I2C SDA
  3. I2C SCL
  4. GND
  5. Knapp 1 (normalt hög, intern 5V pullup)

Steg 3: Protokollbeskrivning

Protokollbeskrivning
Protokollbeskrivning

Sensorn drivs med I2C -adressen 0x41 - alla skriv- eller läskommandon startar med denna adress.

När gasreglaget är anslutet till datorn finns det en ingress på cirka 250 ms på I2C -bussen för att adressera 0x40, jag antar att detta är för en annan sensorversion eller något liknande, men det är inte relevant för oss.

Uppgifterna som skickas på I2C -bussen vid normal användning är nedan. Detta måste simuleras av vår mikrokontroller för att prata med gasreglaget.

Setup - Dessa data skickas en gång, cirka 500 ms efter att USB -enheten är ansluten, för att ställa in den ursprungliga sensorn för användning.

Master Skriv: 0x0F (Kontrollregister 1)

Data: 0x02 0b0000 0010 (initierar en mjuk återställning)

Master Skriv: 0x0F (Kontrollregister 1)

Master Read: 0xF1 0b1111 0001 (återställs till 11110000, lsb 1 betyder att giltiga data är redo att läsas. Vi måste svara på det här kommandot korrekt för att kunna identifieras som en giltig slavenhet)

Master Skriv: 0x2E (Kontrollregister 2)

Data: 0x 86 (detta ställer bara in magnetens orientering i originalsensorn)

Master Skriv: 0x0F (Kontrollregister 1)

Data: 0x 80 0b1000 0000 (Ställer enheten i viloläge (automatisk mätning, inte i lågeffektläge))

Loop: Detta upprepas vid cirka 100Hz för att få sensordata.

Master Skriv: 0x10 (X -register)

Master Read: (slav skickar X -data, 2: s komplement 8 bitars värde)

Master Skriv: 0x11 (Y -register)

Master Read: (slav skickar Y -data, 2: s komplement 8 bitars värde)

Relevant del av protokolldump från logikanalysator:

Setup Skriv till [0x82] + ACK

0x0F + ACK

0x02 + ACK

Setup Skriv till [0x82] + ACK

0x0F + ACK

Inställning Läs till [0x83] + ACK

0xF1 + NAK

Setup Skriv till [0x82] + ACK

0x2E + ACK

0x86 + ACK

Setup Skriv till [0x82] + ACK

0x0F + ACK

0x80 + ACK

Setup Skriv till [0x82] + ACK

0x10 + ACK

Inställning Läs till [0x83] + ACK 0xFC + NAK

Setup Skriv till [0x82] + ACK 0x11 + ACK

Inställning Läs till [0x83] + ACK 0xFF + NAK

Steg 4: Arduino -kod

Arduino -kod
Arduino -kod

Den bifogade Arduino -koden kan användas för att simulera sensorn.

Observera: De flesta Arduino -kort har en effekt på 5V, detta behöver en 3.3V -kompatibel eller modifierad bräda för att undvika skador på din joystick.

Steg 5: Kalibrering

Kalibrering
Kalibrering

När din nya sensor har monterats behöver gasreglaget kalibreras.

För att kalibrera din gasreglage kommer du att använda gasregleringskalibreringsverktyget. Detta kan laddas ner från ett antal källor, till exempel:

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

Använd inte Windows -kalibrering.

För att få ut det mesta av en mod måste du ändra några värden i din kalibreringskonfigurationsfil.

Ändra:

Standard_DZ_SX = 0x10;

Standard_DZ_SY = 0x10;

Rader i A10_calibration.txt till:

Standard_DZ_SX = 0x01;

Standard_DZ_SY = 0x01;

Detta kommer att byta till dödzon på svängkontrollen från 10 till 1 och ge mycket bättre kontroll. Du kan spela med den här inställningen och sedan kalibrera om och se vad du gillar mest.

Rekommenderad: