Indholdsfortegnelse:

Thrustmaster Warthog Slew Sensor I2C -opgradering: 5 trin
Thrustmaster Warthog Slew Sensor I2C -opgradering: 5 trin

Video: Thrustmaster Warthog Slew Sensor I2C -opgradering: 5 trin

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

Dette er en grov vejledning til, hvordan du bruger grænsefladen med I2C -protokollen, der bruges på ThrustmasterWarthog gasspjældsensoren. Dette kan bruges til at opgradere fra det ret ubrugelige standardministick til noget bedre, men stadig bruge standard USB -controlleren i gashåndtaget. Dette er baseret på et originalt indlæg om:

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

En grundlæggende forståelse, hvis I2C -protokollen antages for de fleste af følgende trin, for en glimrende forklaring gå til:

learn.sparkfun.com/tutorials/i2c

Eventuelle specifikke spørgsmål, er du velkommen til at stille mig, og jeg vil forsøge at tilføje dette til vanskeligt i fremtiden med mere relevant information. Dette er på ingen måde komplet, men burde være et godt udgangspunkt.

Der tilbydes noget demo -Arduino -kode, men tag dette kun som en reference, da en normal 5V Arduino ikke kan bruges uden ændringer.

Trin 1: Eksisterende sensordetaljer

Eksisterende sensordetaljer
Eksisterende sensordetaljer

Ministick -sensoren, der følger med Thrustmaster Wathog -gashåndtaget, er velkendt for at være en af de største svagheder med et ellers fremragende produkt. Der har været en række forsøg fra folk på at erstatte det med noget bedre gennem årene, men de fleste er stødt på vanskelighederne ved at interagere med den digitale I2C -protokol, der bruges af det.

Den nøjagtige sensor, der bruges i Vortes -gashåndtaget, er N35P112 - EasyPoint, der bruger AS5013 hall -effekt -sensor IC fremstillet af AMS.

Datablad:

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

Interessant nok var enheden engang tilgængelig som et breakout -modul af Sparkfun:

www.sparkfun.com/products/retired/10835

Sensoren er beregnet til navigationsapplikationer inden for f.eks. Mobiltelefoner og er ekstremt billig. Efter min mening uacceptabelt i noget, der koster næsten $ 500.

Trin 2: Pinout

Pinout
Pinout

Sensoren tilsluttes printkortet i højre gashåndtag via mikro 5 -polet stik.

Pinout er som følger:

  1. Vcc +3.3VDC (

    Lokalt reguleret fra 5V af en lineær regulator på den anden side af brættet, lige bag stikket, burde være godt omkring 20mA, men jeg har på ingen måde testet dette)

  2. I2C SDA
  3. I2C SCL
  4. GND
  5. Knap 1 (normalt høj, intern 5V pullup)

Trin 3: Protokolbeskrivelse

Protokolbeskrivelse
Protokolbeskrivelse

Sensoren opererede på I2C -adresse 0x41 - alle skrive- eller læsekommandoer starter med denne adresse.

Når gashåndtaget er tilsluttet computeren, er der en indledning på omkring 250 ms på I2C -bussen til adresse 0x40, jeg antager, at dette er til en anden sensorversion eller noget lignende, men det er ikke relevant for os.

Dataene, der sendes på I2C -bussen ved normal brug, er nedenfor, dette skal simuleres af vores mikrokontroller for at tale med gashåndtaget.

Opsætning - Disse data sendes en gang, cirka 500 ms efter tilslutning af USB, for at konfigurere den originale sensor til brug.

Master Skriv: 0x0F (kontrolregister 1)

Data: 0x02 0b0000 0010 (starter en blød nulstilling)

Master Skriv: 0x0F (kontrolregister 1)

Master Read: 0xF1 0b1111 0001 (nulstilles til 11110000, lsb 1 betyder, at gyldige data er klar til læsning. Vi skal svare på denne kommando korrekt for at blive genkendt som en gyldig slaveenhed)

Master Skriv: 0x2E (kontrolregister 2)

Data: 0x 86 (dette indstiller bare magnetens retning i den originale sensor)

Master Skriv: 0x0F (kontrolregister 1)

Data: 0x 80 0b1000 0000 (Sætter enheden i inaktiv tilstand (automatisk måling, ikke i lav strømtilstand))

Loop: Dette gentages ved omkring 100Hz for at få sensordata.

Master Skriv: 0x10 (X register)

Master Read: (slave sender X -data, 2s komplement 8 -bit værdi)

Master Skriv: 0x11 (Y -register)

Master Read: (slave sender Y -data, 2's komplement 8 -bit værdi)

Relevant del af protokoldump fra logisk analysator:

Opsætning Skriv til [0x82] + ACK

0x0F + ACK

0x02 + ACK

Opsætning Skriv til [0x82] + ACK

0x0F + ACK

Opsætning Læs til [0x83] + ACK

0xF1 + NAK

Opsætning Skriv til [0x82] + ACK

0x2E + ACK

0x86 + ACK

Opsætning Skriv til [0x82] + ACK

0x0F + ACK

0x80 + ACK

Opsætning Skriv til [0x82] + ACK

0x10 + ACK

Opsætning Læs til [0x83] + ACK 0xFC + NAK

Opsætning Skriv til [0x82] + ACK 0x11 + ACK

Opsætning Læs til [0x83] + ACK 0xFF + NAK

Trin 4: Arduino -kode

Arduino kode
Arduino kode

Den vedhæftede Arduino -kode kan bruges til at simulere sensoren.

Bemærk: De fleste Arduino -plader kører på 5V, dette har brug for et 3.3V kompatibelt eller modificeret kort for at undgå at beskadige dit joystick.

Trin 5: Kalibrering

Kalibrering
Kalibrering

Når din nye sensor er monteret, skal gashåndtaget kalibreres.

For at kalibrere din gas vil du have gasreguleringsværktøjet. Dette kan downloades fra en række kilder såsom:

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

Brug ikke Windows -kalibrering.

For at få mest muligt ud af en mod skal du ændre et par værdier i din kalibreringskonfigurationsfil.

Skift:

Standard_DZ_SX = 0x10;

Standard_DZ_SY = 0x10;

Linjer i A10_calibration.txt til:

Standard_DZ_SX = 0x01;

Standard_DZ_SY = 0x01;

Dette vil skifte til dødzone på svingkontrollen fra 10 til 1 og give meget bedre kontrol. Du kan lege med denne indstilling og derefter kalibrere igen og se, hvad du bedst kan lide.

Anbefalede: