Cuprins:

Thrustmaster Warthog Slew Sensor I2C Upgrade: 5 pași
Thrustmaster Warthog Slew Sensor I2C Upgrade: 5 pași

Video: Thrustmaster Warthog Slew Sensor I2C Upgrade: 5 pași

Video: Thrustmaster Warthog Slew Sensor I2C Upgrade: 5 pași
Video: Hardware Review: Delta Sim Electronics Thumbstick Upgrade für Thrustmaster HOTAS Warthog 2024, Iunie
Anonim
Thrustmaster Warthog Slew Sensor I2C Upgrade
Thrustmaster Warthog Slew Sensor I2C Upgrade

Acesta este un ghid aproximativ cu privire la modul de interfață cu protocolul I2C utilizat pe senzorul ThrustmasterWarthog de accelerație. Acest lucru poate fi folosit pentru a trece de la ministrul standard destul de inutil la ceva mai bun, dar totuși folosind controlerul USB standard în unitatea de accelerație. Aceasta se bazează pe o postare originală pe:

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

O înțelegere de bază dacă protocolul I2C este presupus pentru majoritatea pașilor următori, pentru o explicație excelentă accesați:

learn.sparkfun.com/tutorials/i2c

Orice întrebare specifică, nu ezitați să mă întrebați și voi încerca să adaug la acest lucru insolubil în viitor cu informații mai relevante. Acest lucru nu este deloc complet, dar ar trebui să fie un bun punct de plecare.

Unele coduri Arduino demo sunt furnizate, dar vă rugăm să luați acest lucru doar ca referință, deoarece un Arduino normal de 5V nu poate fi utilizat fără modificări.

Pasul 1: Detalii senzor existente

Detalii senzor existente
Detalii senzor existente

Senzorul de strângere ministick care vine împreună cu clapeta Thrustmaster Wathog este bine cunoscut ca fiind unul dintre cele mai mari puncte slabe ale unui produs de altfel excelent. Au fost o serie de încercări ale oamenilor de a-l înlocui cu ceva mai bun de-a lungul anilor, dar majoritatea s-au confruntat cu dificultățile de interfață cu protocolul digital I2C folosit de acesta.

Senzorul exact utilizat în accelerația Warthog este N35P112 - EasyPoint, care folosește senzorul de efect hall AS5013 realizat de AMS.

Fișa cu date:

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

Interesant este că odată unitatea a fost disponibilă ca modul breakout de către Sparkfun:

www.sparkfun.com/products/retired/10835

Senzorul este destinat aplicațiilor de navigație în lucruri precum telefoanele mobile și este extrem de ieftin. În opinia mea, inacceptabil în ceva care costă aproape 500 de dolari.

Pasul 2: Pinout

Pinout
Pinout

Senzorul se conectează la PCB în unitatea de accelerație din dreapta prin conector micro 5 pini.

Pinout este după cum urmează:

  1. Vcc + 3.3VDC (

    Reglat local de la 5V de un regulator liniar pe cealaltă parte a plăcii, chiar în spatele conectorului, ar trebui să fie bine să se apropie de 20mA, dar nu am testat în niciun caz acest lucru)

  2. I2C SDA
  3. I2C SCL
  4. GND
  5. Butonul 1 (în mod normal ridicat, intern 5V pullup)

Pasul 3: Descrierea protocolului

Descrierea protocolului
Descrierea protocolului

Senzorul funcționează pe adresa I2C 0x41 - toate comenzile de scriere sau citire încep cu această adresă.

Când accelerația este conectată la computer, există un preambul de aproximativ 250 ms pe magistrala I2C pentru a adresa 0x40, presupun că aceasta este pentru o versiune diferită a senzorului sau ceva similar, dar nu este relevant pentru noi.

Datele trimise pe magistrala I2C în utilizare normală sunt mai jos, acestea trebuie simulate de microcontrolerul nostru pentru a vorbi cu clapeta de accelerație.

Configurare - Aceste date sunt trimise o dată, la aproximativ 500 ms după conectarea USB-ului, pentru a seta senzorul original pentru utilizare.

Scriere master: 0x0F (Registrul de control 1)

Date: 0x02 0b0000 0010 (inițiază o resetare soft)

Scriere master: 0x0F (Registrul de control 1)

Master Read: 0xF1 0b1111 0001 (se resetează la 11110000, lsb 1 înseamnă că datele valide sunt gata de citire. Trebuie să răspundem corect la această comandă pentru a fi recunoscuți ca un dispozitiv slave valid)

Scriere principală: 0x2E (Registrul de control 2)

Date: 0x 86 (aceasta setează doar orientarea magnetului în senzorul original)

Scriere master: 0x0F (Registrul de control 1)

Date: 0x 80 0b1000 0000 (Setează dispozitivul în modul inactiv (măsurare automată, nu în modul de consum redus))

Buclă: Aceasta se repetă la aproximativ 100Hz pentru a obține date despre senzori.

Scriere master: 0x10 (înregistrare X)

Master Read: (sclavul trimite X date, valoarea de 8 biți a complementului 2)

Master Write: 0x11 (înregistrare Y)

Master Read: (sclavul trimite date Y, valoarea de 8 biți a complementului 2)

Partea relevantă a dump-ului protocolului din analizorul logic:

Configurare Scrieți la [0x82] + ACK

0x0F + ACK

0x02 + ACK

Configurare Scrieți la [0x82] + ACK

0x0F + ACK

Configurare Citiți la [0x83] + ACK

0xF1 + NAK

Configurare Scrieți la [0x82] + ACK

0x2E + ACK

0x86 + ACK

Configurare Scrieți la [0x82] + ACK

0x0F + ACK

0x80 + ACK

Configurare Scrieți la [0x82] + ACK

0x10 + ACK

Configurare Citiți la [0x83] + ACK 0xFC + NAK

Configurare Scrieți la [0x82] + ACK 0x11 + ACK

Configurare Citiți la [0x83] + ACK 0xFF + NAK

Pasul 4: Cod Arduino

Cod Arduino
Cod Arduino

Codul Arduino atașat poate fi utilizat pentru a simula senzorul.

Vă rugăm să rețineți: majoritatea plăcilor Arduino rulează de 5 V, aceasta necesită o placă compatibilă sau modificată de 3,3 V pentru a evita deteriorarea joystick-ului.

Pasul 5: Calibrare

Calibrare
Calibrare

Odată ce noul senzor a fost montat, clapeta va trebui calibrată.

Pentru a vă calibra clapeta de accelerație, veți utiliza instrumentul de calibrare a clapetei de accelerație. Aceasta poate fi descărcată dintr-o serie de surse, cum ar fi:

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

Nu utilizați calibrarea ferestrelor.

Pentru a beneficia la maximum de un mod, trebuie să modificați câteva valori în fișierul de configurare a calibrării.

Schimba:

Standard_DZ_SX = 0x10;

Standard_DZ_SY = 0x10;

Linii din A10_calibration.txt pentru:

Standard_DZ_SX = 0x01;

Standard_DZ_SY = 0x01;

Acest lucru se va schimba în zona moartă de pe controlul rotativ de la 10 la 1 și va oferi un control mult mai bun. Puteți juca cu această setare și apoi recalibrați și vedeți ce vă place cel mai mult.

Recomandat: