Sommario:

Aggiornamento Thrustmaster Warthog Slew Sensor I2C: 5 passaggi
Aggiornamento Thrustmaster Warthog Slew Sensor I2C: 5 passaggi

Video: Aggiornamento Thrustmaster Warthog Slew Sensor I2C: 5 passaggi

Video: Aggiornamento Thrustmaster Warthog Slew Sensor I2C: 5 passaggi
Video: Modifying a Thrustmaster Warthog HOTAS Throttle 2024, Novembre
Anonim
Aggiornamento Thrustmaster Warthog Slew Sensor I2C
Aggiornamento Thrustmaster Warthog Slew Sensor I2C

Questa è una guida approssimativa su come interfacciarsi con il protocollo I2C utilizzato sul sensore di rotazione dell'acceleratore ThrustmasterWarthog. Questo può essere usato per aggiornare dal ministick standard abbastanza inutile a qualcosa di meglio, ma ancora usando il controller USB standard nell'unità dell'acceleratore. Questo si basa su un post originale su:

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

Una comprensione di base se si assume il protocollo I2C per la maggior parte dei seguenti passaggi, per un'ottima spiegazione vai a:

learn.sparkfun.com/tutorials/i2c

Qualsiasi domanda specifica, sentiti libero di chiedermela, e cercherò di aggiungere a questo intrattabile in futuro con informazioni più pertinenti. Questo non è affatto completo, ma dovrebbe essere un buon punto di partenza.

Viene fornito del codice Arduino demo, ma si prega di prenderlo solo come riferimento poiché un normale Arduino 5V non può essere utilizzato senza modifiche.

Passaggio 1: dettagli del sensore esistente

Dettagli del sensore esistente
Dettagli del sensore esistente

Il sensore di rotazione del ministick fornito con l'acceleratore Thrustmaster Wathog è noto per essere uno dei maggiori punti deboli di un prodotto altrimenti eccellente. Ci sono stati numerosi tentativi da parte delle persone di sostituirlo con qualcosa di migliore nel corso degli anni, ma la maggior parte ha incontrato le difficoltà di interfacciarsi con il protocollo digitale I2C da esso utilizzato.

Il sensore esatto utilizzato nell'acceleratore Warthog è l'N35P112 - EasyPoint, che utilizza l'IC del sensore ad effetto hall AS5013 realizzato da AMS.

Scheda dati:

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

È interessante notare che l'unità una volta era disponibile come modulo breakout di Sparkfun:

www.sparkfun.com/products/retired/10835

Il sensore è pensato per applicazioni di navigazione in cose come i telefoni cellulari ed è estremamente economico. A mio parere inaccettabile in qualcosa che costa quasi $500.

Passaggio 2: piedinatura

pinout
pinout

Il sensore si collega al PCB nell'unità farfalla destra tramite connettore micro a 5 pin.

Il pinout è il seguente:

  1. Vcc +3.3Vcc (

    Regolato localmente da 5V da un regolatore lineare sull'altro lato della scheda, appena dietro il connettore, dovrebbe essere buono per circa 20mA, ma non l'ho mai testato)

  2. I2C SDA
  3. I2C SCL
  4. GND
  5. Pulsante 1 (normalmente alto, pullup 5V interno)

Passaggio 3: descrizione del protocollo

Descrizione del protocollo
Descrizione del protocollo

Il sensore ha operato sull'indirizzo I2C 0x41 - tutti i comandi di scrittura o lettura iniziano con questo indirizzo.

Quando l'acceleratore è collegato al computer, c'è un preambolo di circa 250 ms sul bus I2C per l'indirizzo 0x40, presumo che sia per una versione del sensore diversa o qualcosa di simile, ma non è rilevante per noi.

I dati inviati sul bus I2C in uso normale sono sotto, questo deve essere simulato dal nostro microcontrollore per parlare con l'acceleratore.

Configurazione: questi dati vengono inviati una volta, circa 500 ms dopo il collegamento dell'USB, per impostare il sensore originale per l'uso.

Scrittura master: 0x0F (Registro di controllo 1)

Dati: 0x02 0b0000 0010 (avvia un soft reset)

Scrittura master: 0x0F (Registro di controllo 1)

Master Read: 0xF1 0b1111 0001 (reimposta su 11110000, lsb 1 indica che i dati validi sono pronti per essere letti. Dobbiamo rispondere correttamente a questo comando per essere riconosciuti come dispositivo slave valido)

Scrittura master: 0x2E (Registro di controllo 2)

Dati: 0x 86 (questo imposta solo l'orientamento del magnete nel sensore originale)

Scrittura master: 0x0F (Registro di controllo 1)

Dati: 0x 80 0b1000 0000 (Imposta il dispositivo in modalità inattiva (misurazione automatica, non in modalità a basso consumo))

Loop: questo viene ripetuto a circa 100Hz per ottenere i dati del sensore.

Scrittura master: 0x10 (registro X)

Master Read: (lo slave invia dati X, valore a 8 bit in complemento a 2)

Master Write: 0x11 (registro Y)

Master Read: (lo slave invia i dati Y, valore a 8 bit in complemento a 2)

Parte rilevante del dump del protocollo dall'analizzatore logico:

Imposta Scrivi su [0x82] + ACK

0x0F + ACK

0x02 + ACK

Imposta Scrivi su [0x82] + ACK

0x0F + ACK

Configurazione Leggi su [0x83] + ACK

0xF1 + NAK

Imposta Scrivi su [0x82] + ACK

0x2E + ACK

0x86 + ACK

Imposta Scrivi su [0x82] + ACK

0x0F + ACK

0x80 + ACK

Imposta Scrivi su [0x82] + ACK

0x10 + ACK

Imposta Lettura su [0x83] + ACK 0xFC + NAK

Imposta Scrivi su [0x82] + ACK 0x11 + ACK

Setup Leggi su [0x83] + ACK 0xFF + NAK

Passaggio 4: codice Arduino

Codice Arduino
Codice Arduino

Il codice Arduino allegato può essere utilizzato per simulare il sensore.

Nota: la maggior parte delle schede Arduino funziona a 5 V, questa richiede una scheda compatibile o modificata a 3,3 V per funzionare per evitare danni al joystick.

Passaggio 5: calibrazione

Calibrazione
Calibrazione

Una volta che il tuo nuovo sensore è stato montato, l'acceleratore dovrà essere calibrato.

Per calibrare l'acceleratore dovrai utilizzare lo strumento di calibrazione dell'acceleratore. Questo può essere scaricato da una serie di fonti come:

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

Non utilizzare la calibrazione di Windows.

Per ottenere il massimo da una mod è necessario modificare alcuni valori nel file di configurazione della calibrazione.

Cambiare il:

Standard_DZ_SX = 0x10;

Standard_DZ_SY = 0x10;

Righe in A10_calibration.txt a:

Standard_DZ_SX = 0x01;

Standard_DZ_SY = 0x01;

Questo cambierà in zona morta sul controllo di rotazione da 10 a 1 e darà un controllo molto migliore. Puoi giocare con questa impostazione e poi ricalibrare e vedere cosa ti piace di più.

Consigliato: