Innholdsfortegnelse:

Thrustmaster Warthog Slew Sensor I2C -oppgradering: 5 trinn
Thrustmaster Warthog Slew Sensor I2C -oppgradering: 5 trinn

Video: Thrustmaster Warthog Slew Sensor I2C -oppgradering: 5 trinn

Video: Thrustmaster Warthog Slew Sensor I2C -oppgradering: 5 trinn
Video: Hardware Review: Delta Sim Electronics Thumbstick Upgrade für Thrustmaster HOTAS Warthog 2024, Desember
Anonim
Thrustmaster Warthog Slew Sensor I2C -oppgradering
Thrustmaster Warthog Slew Sensor I2C -oppgradering

Dette er en grov guide til hvordan du grensesnitt med I2C -protokollen som brukes på ThrustmasterWarthog gasspjeldssensor. Dette kan brukes til å oppgradere fra den ganske ubrukelige standardministikken til noe bedre, men bruker fremdeles den vanlige USB -kontrolleren i gassaggregatet. Dette er basert på et originalt innlegg om:

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

En grunnleggende forståelse hvis I2C -protokollen antas for de fleste av følgende trinn, for en utmerket forklaring, gå til:

learn.sparkfun.com/tutorials/i2c

Eventuelle spesifikke spørsmål, spør meg gjerne, så skal jeg prøve å legge til dette vanskeligere i fremtiden med mer relevant informasjon. Dette er på ingen måte komplett, men bør være et godt utgangspunkt.

Noen demo Arduino -koder er gitt, men bare ta dette som en referanse, da en vanlig 5V Arduino ikke kan brukes uten endring.

Trinn 1: Eksisterende sensordetaljer

Eksisterende sensordetaljer
Eksisterende sensordetaljer

Ministick -sensoren som følger med Thrustmaster Wathog -gassen er kjent for å være en av de største svakhetene med et ellers utmerket produkt. Det har vært en rekke forsøk fra folk på å erstatte det med noe bedre gjennom årene, men de fleste har møtt vanskelighetene med å koble til den digitale I2C -protokollen som ble brukt av den.

Den eksakte sensoren som brukes i warthog -gasspjeldet er N35P112 - EasyPoint, som bruker AS5013 hall effect sensor IC laget av AMS.

Datablad:

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

Interessant nok var enheten en gang tilgjengelig som en breakout -modul av Sparkfun:

www.sparkfun.com/products/retired/10835

Sensoren er ment for navigasjonsapplikasjoner i ting som mobiltelefoner, og er ekstremt billig. Etter min mening uakseptabelt i noe som koster nesten $ 500.

Trinn 2: Pinout

Pinout
Pinout

Sensoren kobles til kretskortet i høyre gasspjeld via mikro 5 -pinners kontakt.

Pinout er som følger:

  1. Vcc +3.3VDC (

    Lokalt regulert fra 5V av en lineær regulator på den andre siden av brettet, like bak kontakten, burde være bra til rundt 20mA, men jeg har på ingen måte testet dette)

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

Trinn 3: Protokollbeskrivelse

Protokollbeskrivelse
Protokollbeskrivelse

Sensoren opererte på I2C -adressen 0x41 - alle skrive- eller lesekommandoer starter med denne adressen.

Når gassen er koblet til datamaskinen, er det en innledning på rundt 250 ms på I2C -bussen for å adressere 0x40, jeg antar at dette er for en annen sensorversjon eller noe lignende, men det er ikke relevant for oss.

Dataene som sendes på I2C -bussen ved normal bruk er nedenfor. Denne må simuleres av mikrokontrolleren vår for å snakke med gasspjeldet.

Oppsett - Disse dataene sendes en gang, rundt 500 ms etter at USB er tilkoblet, for å sette den originale sensoren i bruk.

Master Write: 0x0F (kontrollregister 1)

Data: 0x02 0b0000 0010 (starter en myk tilbakestilling)

Master Write: 0x0F (kontrollregister 1)

Master Read: 0xF1 0b1111 0001 (tilbakestilles til 11110000, lsb 1 betyr at gyldige data er klare til å bli lest. Vi må svare på denne kommandoen riktig for å bli gjenkjent som en gyldig slaveenhet)

Master Write: 0x2E (kontrollregister 2)

Data: 0x 86 (dette angir bare retningen til magneten i den originale sensoren)

Master Write: 0x0F (kontrollregister 1)

Data: 0x 80 0b1000 0000 (Setter enheten i hvilemodus (automatisk måling, ikke i lav effekt))

Sløyfe: Dette gjentas på rundt 100Hz for å få sensordata.

Master Skriv: 0x10 (X register)

Master Read: (slave sender X data, 2s komplement 8 bits verdi)

Master Skriv: 0x11 (Y register)

Master Read: (slave sender Y -data, 2s komplement 8 bits verdi)

Relevant del av protokolldump fra logisk analysator:

Oppsett Skriv til [0x82] + ACK

0x0F + ACK

0x02 + ACK

Oppsett Skriv til [0x82] + ACK

0x0F + ACK

Oppsett Les til [0x83] + ACK

0xF1 + NAK

Oppsett Skriv til [0x82] + ACK

0x2E + ACK

0x86 + ACK

Oppsett Skriv til [0x82] + ACK

0x0F + ACK

0x80 + ACK

Oppsett Skriv til [0x82] + ACK

0x10 + ACK

Oppsett Les til [0x83] + ACK 0xFC + NAK

Oppsett Skriv til [0x82] + ACK 0x11 + ACK

Oppsett Les til [0x83] + ACK 0xFF + NAK

Trinn 4: Arduino -kode

Arduino -koden
Arduino -koden

Den vedlagte Arduino -koden kan brukes til å simulere sensoren.

Vær oppmerksom på: De fleste Arduino -kortene er på 5V, dette trenger et 3.3V -kompatibelt eller modifisert brett for å fungere for å unngå skade på joysticken.

Trinn 5: Kalibrering

Kalibrering
Kalibrering

Når den nye sensoren er montert, må gassen kalibreres.

For å kalibrere gasspjeldet vil du bruke gasspjeldkalibreringsverktøyet. Dette kan lastes ned fra en rekke kilder, for eksempel:

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

Ikke bruk Windows -kalibrering.

For å få mest mulig ut av en mod, må du endre noen få verdier i kalibreringskonfigurasjonsfilen.

Endre:

Standard_DZ_SX = 0x10;

Standard_DZ_SY = 0x10;

Linjer i A10_calibration.txt til:

Standard_DZ_SX = 0x01;

Standard_DZ_SY = 0x01;

Dette vil bytte til dødsone på slew -kontrollen fra 10 til 1, og gi mye bedre kontroll. Du kan leke med denne innstillingen og deretter kalibrere på nytt og se hva du liker best.

Anbefalt: