Taula de continguts:

Thrustmaster Warthog Slew Sensor I2C Actualització: 5 passos
Thrustmaster Warthog Slew Sensor I2C Actualització: 5 passos

Vídeo: Thrustmaster Warthog Slew Sensor I2C Actualització: 5 passos

Vídeo: Thrustmaster Warthog Slew Sensor I2C Actualització: 5 passos
Vídeo: Hardware Review: Delta Sim Electronics Thumbstick Upgrade für Thrustmaster HOTAS Warthog 2024, De novembre
Anonim
Actualització del sensor de gir Warthog Thrustmaster I2C
Actualització del sensor de gir Warthog Thrustmaster I2C

Aquesta és una guia aproximada sobre com interactuar amb el protocol I2C utilitzat al sensor de gir de l’accelerador ThrustmasterWarthog. Això es pot utilitzar per actualitzar des del ministerick estàndard bastant inútil a quelcom millor, però encara utilitzant el controlador USB estàndard a la unitat d’accelerador. Això es basa en una publicació original a:

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

Una comprensió bàsica si s’assumeix el protocol I2C per a la majoria dels passos següents, per obtenir una explicació excel·lent aneu a:

learn.sparkfun.com/tutorials/i2c

Qualsevol pregunta específica, no dubteu a fer-me, i en el futur intentaré afegir-ho a la informació més rellevant. Això no és en absolut complet, però hauria de ser un bon punt de partida.

Es proporciona una mica de codi Arduino de demostració, però només preneu-lo com a referència, ja que un Arduino de 5V normal no es pot utilitzar sense modificacions.

Pas 1: detalls del sensor existents

Detalls del sensor existents
Detalls del sensor existents

El sensor de gir Ministick que ve amb l'accelerador Thrustmaster Wathog és ben conegut per ser un dels punts febles més grans amb un producte excel·lent. Hi ha hagut diversos intents de persones per substituir-lo per alguna cosa millor al llarg dels anys, però la majoria s’han enfrontat a les dificultats d’interfície amb el protocol digital I2C que utilitzava.

El sensor exacte utilitzat a l’accelerador Warthog és el N35P112 - EasyPoint, que utilitza el sensor d’efecte hall AS5013 fabricat per AMS.

Fitxa de dades:

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

Curiosament, la unitat va estar disponible un cop com a mòdul Breakout per Sparkfun:

www.sparkfun.com/products/retired/10835

El sensor està dissenyat per a aplicacions de navegació en telèfons mòbils i és extremadament barat. Al meu entendre, inacceptable en alguna cosa que costa gairebé 500 dòlars.

Pas 2: fixació

Pinout
Pinout

El sensor es connecta a la PCB de la unitat d’acceleració dreta mitjançant un connector micro de 5 pins.

El pinout és el següent:

  1. Vcc + 3,3 V CC (

    Regulat localment a partir de 5V per un regulador lineal a l’altre costat de la placa, just darrere del connector, hauria de ser bo fins als 20 mA, però en cap cas ho he provat)

  2. I2C SDA
  3. I2C SCL
  4. GND
  5. Botó 1 (arrencada interna de 5V normalment alta)

Pas 3: descripció del protocol

Descripció del protocol
Descripció del protocol

El sensor funciona amb l'adreça I2C 0x41: totes les ordres d'escriptura o lectura comencen amb aquesta adreça.

Quan l’accelerador es connecta a l’ordinador, hi ha un preàmbul d’uns 250 ms al bus I2C per adreçar-se a 0x40, suposo que es tracta d’una versió del sensor diferent o alguna cosa similar, però no és rellevant per a nosaltres.

A continuació, es mostren les dades enviades al bus I2C en un ús normal; el nostre microcontrolador ha de simular-les per parlar amb l’accelerador.

Configuració: aquestes dades s’envien una vegada, uns 500 ms després de connectar l’USB, per configurar el sensor original per utilitzar-lo.

Escriptura mestra: 0x0F (registre de control 1)

Dades: 0x02 0b0000 0010 (inicia un restabliment programari)

Escriptura mestra: 0x0F (registre de control 1)

Lectura mestra: 0xF1 0b1111 0001 (es restableix a 11110000, lsb 1 significa que les dades vàlides estan a punt per ser llegides. Hem de respondre correctament a aquesta ordre per ser reconegudes com a dispositiu esclau vàlid)

Escriptura mestra: 0x2E (registre de control 2)

Dades: 0x 86 (això només defineix l'orientació de l'imant al sensor original)

Escriptura mestra: 0x0F (registre de control 1)

Dades: 0x 80 0b1000 0000 (estableix el dispositiu en mode d'inactivitat (mesurament automàtic, no en mode de baixa consum))

Bucle: es repeteix aproximadament a 100Hz per obtenir dades del sensor.

Escriptura mestra: 0x10 (registre X)

Lectura mestra: (l'esclau envia dades X, valor de 8 bits complementari de 2)

Escriptura mestra: 0x11 (registre Y)

Lectura mestra: (l'esclau envia dades Y, valor de 8 bits complementari de 2)

Part rellevant de l'abocament de protocols de l'analitzador lògic:

Configuració Escriu a [0x82] + ACK

0x0F + ACK

0x02 + ACK

Configuració Escriu a [0x82] + ACK

0x0F + ACK

Configuració Llegir a [0x83] + ACK

0xF1 + NAK

Configuració Escriu a [0x82] + ACK

0x2E + ACK

0x86 + ACK

Configuració Escriu a [0x82] + ACK

0x0F + ACK

0x80 + ACK

Configuració Escriu a [0x82] + ACK

0x10 + ACK

Configuració Llegir a [0x83] + ACK 0xFC + NAK

Configuració Escriu a [0x82] + ACK 0x11 + ACK

Configuració Llegir a [0x83] + ACK 0xFF + NAK

Pas 4: Codi Arduino

Codi Arduino
Codi Arduino

El codi Arduino adjunt es pot utilitzar per simular el sensor.

Tingueu en compte: la majoria de les plaques Arduino funcionen de 5 V, necessiteu una placa compatible o modificada de 3,3 V per evitar danys al vostre joystick.

Pas 5: calibració

Calibratge
Calibratge

Un cop instal·lat el sensor nou, caldrà calibrar l’accelerador.

Per calibrar l’accelerador obtindreu l’eina de calibratge de l’accelerador. Es pot descarregar des de diverses fonts, com ara:

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

No utilitzeu el calibratge de Windows.

Per treure el màxim profit d’una modificació, heu de canviar uns quants valors al fitxer de configuració de calibratge.

Canvia el:

Standard_DZ_SX = 0x10;

Standard_DZ_SY = 0x10;

Línies a A10_calibration.txt a:

Standard_DZ_SX = 0x01;

Standard_DZ_SY = 0x01;

Això canviarà a la zona morta del control de gir de 10 a 1 i donarà un control molt millor. Podeu jugar amb aquest paràmetre i després tornar a calibrar i veure el que més us agrada.

Recomanat: