Sadržaj:

Thrustmaster Warthog senzor zakretanja I2C Nadogradnja: 5 koraka
Thrustmaster Warthog senzor zakretanja I2C Nadogradnja: 5 koraka

Video: Thrustmaster Warthog senzor zakretanja I2C Nadogradnja: 5 koraka

Video: Thrustmaster Warthog senzor zakretanja I2C Nadogradnja: 5 koraka
Video: Modifying a Thrustmaster Warthog HOTAS Throttle 2024, Jun
Anonim
Thrustmaster Warthog senzor zakretanja I2C Nadogradnja
Thrustmaster Warthog senzor zakretanja I2C Nadogradnja

Ovo je grubi vodič o tome kako se povezati s I2C protokolom koji se koristi na ThrustmasterWarthog senzoru zakretanja gasa. Ovo se može koristiti za nadogradnju sa prilično beskorisnog standardnog ministrica na nešto bolje, ali i dalje se koristi standardni USB kontroler u jedinici za gas. Ovo je zasnovano na originalnom postu na:

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

Osnovno razumijevanje ako se za većinu sljedećih koraka pretpostavlja protokol I2C, za odlično objašnjenje idite na:

learn.sparkfun.com/tutorials/i2c

Bilo koja konkretna pitanja, slobodno me pitajte, a ja ću ubuduće pokušati dodati ovo nerješivo sa relevantnijim informacijama. Ovo nikako nije potpuno, ali bi trebalo biti dobro polazište.

Dostupan je neki demo Arduino kôd, ali uzmite ovo samo kao referencu jer se normalni 5V Arduino ne može koristiti bez izmjena.

Korak 1: Podaci o postojećem senzoru

Postojeći detalji senzora
Postojeći detalji senzora

Minick senzor zaokreta koji dolazi s Thrustmaster Wathog leptirom za gas dobro je poznat kao jedna od najvećih slabosti inače odličnog proizvoda. Ljudi su godinama pokušavali zamijeniti nešto boljim, ali većina se susrela s teškoćama povezivanja s digitalnim I2C protokolom koji koristi.

Tačan senzor koji se koristi u Warthog prigušivaču gasa je N35P112 - EasyPoint, koji koristi IC senzor IC Hall50 senzora učinjen od AMS -a.

Tehnički list:

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

Zanimljivo je da je jedinica nekada bila dostupna kao probojni modul od strane Sparkfuna:

www.sparkfun.com/products/retired/10835

Senzor je namijenjen za navigacijske aplikacije u stvarima poput mobilnih telefona i izuzetno je jeftin. Po mom mišljenju neprihvatljivo u nečemu što košta skoro 500 dolara.

Korak 2: Pinout

Pinout
Pinout

Senzor se povezuje s tiskanom pločom u desnoj jedinici za gas pomoću mikro 5 -polnog konektora.

Pinout je sljedeći:

  1. Vcc +3.3VDC (

    Lokalno regulirano od 5V linearnim regulatorom s druge strane ploče, odmah iza konektora, trebalo bi biti dobro oko 20mA, ali to ni na koji način nisam testirao)

  2. I2C SDA
  3. I2C SCL
  4. GND
  5. Dugme 1 (normalno visoko, unutrašnje izvlačenje od 5 V)

Korak 3: Opis protokola

Opis protokola
Opis protokola

Senzor radi na I2C adresi 0x41 - sve naredbe za pisanje ili čitanje počinju s ove adrese.

Kada je leptir za gas povezan s računarom, postoji preambula od oko 250 ms na I2C sabirnici za adresu 0x40, pretpostavljam da se radi o drugoj verziji senzora ili nečem sličnom, ali za nas nije relevantno.

Podaci koji se šalju na I2C sabirnici pri normalnoj upotrebi su ispod, to mora biti simulirano od strane našeg mikrokontrolera da bi razgovarao s gasom.

Postavljanje - Ovi se podaci šalju jednom, otprilike 500 ms nakon povezivanja USB -a, radi postavljanja originalnog senzora za upotrebu.

Master Write: 0x0F (kontrolni registar 1)

Podaci: 0x02 0b0000 0010 (pokreće soft reset)

Master Write: 0x0F (kontrolni registar 1)

Master Read: 0xF1 0b1111 0001 (resetuje se na 11110000, lsb 1 označava da su važeći podaci spremni za čitanje. Moramo pravilno odgovoriti na ovu komandu da bismo bili prepoznati kao važeći slave uređaj)

Master Write: 0x2E (Kontrolni registar 2)

Podaci: 0x 86 (ovo samo postavlja orijentaciju magneta u originalnom senzoru)

Master Write: 0x0F (kontrolni registar 1)

Podaci: 0x 80 0b1000 0000 (Postavlja uređaj u stanje mirovanja (automatsko mjerenje, ne u režimu niske potrošnje energije))

Petlja: Ovo se ponavlja na oko 100Hz radi dobivanja podataka senzora.

Master Write: 0x10 (X registar)

Master Read: (slave šalje X podatke, 2 komplementarna 8 bitna vrijednost)

Master Write: 0x11 (Y registar)

Master Read: (slave šalje Y podatke, 8 -bitna vrijednost komplementa 2)

Relevantni dio ispisa protokola iz logičkog analizatora:

Podešavanje Zapišite na [0x82] + ACK

0x0F + ACK

0x02 + ACK

Podešavanje Zapišite na [0x82] + ACK

0x0F + ACK

Podešavanje Čitajte na [0x83] + ACK

0xF1 + NAK

Podešavanje Zapišite na [0x82] + ACK

0x2E + ACK

0x86 + ACK

Podešavanje Zapišite na [0x82] + ACK

0x0F + ACK

0x80 + ACK

Podešavanje Zapišite na [0x82] + ACK

0x10 + ACK

Podešavanje Čitajte na [0x83] + ACK 0xFC + NAK

Podešavanje Zapišite na [0x82] + ACK 0x11 + ACK

Podešavanje Čitajte na [0x83] + ACK 0xFF + NAK

Korak 4: Arduino kod

Arduino kod
Arduino kod

Priloženi Arduino kod može se koristiti za simulaciju senzora.

Napomena: Većina Arduino ploča radi na 5V, za rad je potrebna 3.3V kompatibilna ili modificirana ploča kako bi se izbjeglo oštećenje džojstika.

Korak 5: Kalibracija

Kalibracija
Kalibracija

Nakon što postavite novi senzor, gas će biti potrebno kalibrirati.

Za kalibraciju gasa koristite alat za kalibraciju gasa. Ovo se može preuzeti iz više izvora, kao što su:

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

Ne koristite kalibraciju prozora.

Da biste izvukli maksimum iz moda, morate promijeniti nekoliko vrijednosti u konfiguracijskoj datoteci za kalibraciju.

Promenite:

Standard_DZ_SX = 0x10;

Standardni_DZ_SY = 0x10;

Linije u A10_calibration.txt na:

Standard_DZ_SX = 0x01;

Standard_DZ_SY = 0x01;

Ovo će se promijeniti u mrtvu zonu na upravljačkoj jedinici sa 10 na 1, i dati mnogo bolju kontrolu. Možete se igrati s ovom postavkom, a zatim ponovno kalibrirati i vidjeti što vam se najviše sviđa.

Preporučuje se: