Kazalo:

Thrustmaster Warthog zasuk senzorja I2C Nadgradnja: 5 korakov
Thrustmaster Warthog zasuk senzorja I2C Nadgradnja: 5 korakov

Video: Thrustmaster Warthog zasuk senzorja I2C Nadgradnja: 5 korakov

Video: Thrustmaster Warthog zasuk senzorja I2C Nadgradnja: 5 korakov
Video: Thrustmaster Warthog A10C - The best H.O.T.A.S. out there? 2024, Junij
Anonim
Nadgradnja I2C senzorja zasuka Thrustmaster Warthog
Nadgradnja I2C senzorja zasuka Thrustmaster Warthog

To je grob vodnik o tem, kako povezati vmesnik s protokolom I2C, ki se uporablja na senzorju zavrtlja dušilke ThrustmasterWarthog. To lahko uporabimo za nadgradnjo s precej neuporabnega standardnega ministrica na nekaj boljšega, vendar še vedno s standardnim krmilnikom USB v enoti za plin. To temelji na izvirni objavi:

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

Osnovno razumevanje, če za večino naslednjih korakov predpostavljate protokol I2C, za odlično razlago pojdite na:

learn.sparkfun.com/tutorials/i2c

Če imate kakršna koli konkretna vprašanja, me vprašajte, jaz pa bom v prihodnje poskušal dodati to nerešljivo z ustreznejšimi informacijami. To nikakor ni popolno, vendar bi moralo biti dobro izhodišče.

Na voljo je nekaj demo kode Arduino, vendar to upoštevajte le kot referenco, saj običajnega 5V Arduina ni mogoče uporabiti brez sprememb.

1. korak: Podrobnosti obstoječega senzorja

Podrobnosti obstoječega senzorja
Podrobnosti obstoječega senzorja

Senzor ministric, ki prihaja z dušilko Thrustmaster Wathog, je dobro znan kot ena največjih slabosti sicer odličnega izdelka. Ljudje so že vrsto let poskušali to zamenjati z nečim boljšim, vendar se je večina soočila s težavami pri povezovanju z digitalnim protokolom I2C, ki ga uporablja.

Natančen senzor, ki se uporablja pri dušilki za plin Warthog, je N35P112 - EasyPoint, ki uporablja senzor IC Hall Hall, ki ga proizvaja AMS.

Podatkovni list:

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

Zanimivo je, da je bila enota nekoč na voljo kot odklopni modul podjetja Sparkfun:

www.sparkfun.com/products/retired/10835

Senzor je namenjen navigacijskim aplikacijam v stvareh, kot so mobilni telefoni, in je izredno poceni. Po mojem mnenju nesprejemljivo za nekaj, kar stane skoraj 500 USD.

2. korak: Pinout

Pinout
Pinout

Senzor se poveže s tiskanim vezjem v desni enoti za plin prek mikro 5 -polnega priključka.

Pinout je naslednji:

  1. Vcc +3,3 V DC (

    Lokalno regulirano od 5V z linearnim regulatorjem na drugi strani plošče, tik za priključkom, bi moralo biti dobro okoli 20 mA, vendar tega nikakor nisem preizkusil)

  2. I2C SDA
  3. I2C SCL
  4. GND
  5. Gumb 1 (običajno visok, notranji dvig 5 V)

3. korak: Opis protokola

Opis protokola
Opis protokola

Senzor je deloval na naslovu I2C 0x41 - vsi ukazi za pisanje ali branje se začnejo s tem naslovom.

Ko je ročica za plin priključena na računalnik, je na vodilu I2C preambula približno 250 ms za naslov 0x40, predvidevam, da je to za drugo različico senzorja ali kaj podobnega, vendar za nas ni pomembno.

Podatki, poslani na vodilo I2C pri normalni uporabi, so spodaj, to mora naš mikrokrmilnik simulirati, da se pogovarja z dušilko.

Nastavitev - ti podatki se pošljejo enkrat, približno 500 ms po priključitvi USB -ja, da se prvotni senzor nastavi za uporabo.

Glavni zapis: 0x0F (kontrolni register 1)

Podatki: 0x02 0b0000 0010 (sproži mehko ponastavitev)

Glavni zapis: 0x0F (kontrolni register 1)

Glavno branje: 0xF1 0b1111 0001 (ponastavljeno na 11110000, lsb 1 pomeni, da so veljavni podatki pripravljeni za branje. Na ta ukaz moramo pravilno odgovoriti, da ga prepoznamo kot veljavno pomožno napravo)

Glavni zapis: 0x2E (kontrolni register 2)

Podatki: 0x 86 (to samo nastavi orientacijo magneta v izvirnem senzorju)

Glavni zapis: 0x0F (kontrolni register 1)

Podatki: 0x 80 0b1000 0000 (nastavi napravo v stanje mirovanja (samodejno merjenje, ne v načinu nizke porabe energije))

Zanka: To se ponovi pri približno 100 Hz, da dobite podatke senzorja.

Glavni zapis: 0x10 (X register)

Glavno branje: (pomožni pošlje X podatke, 2 -komplementna 8 -bitna vrednost)

Glavni zapis: 0x11 (Y register)

Glavno branje: (podrejeni pošilja podatke Y, 2 -komplementarna 8 -bitna vrednost)

Ustrezni del izpisa protokola iz logičnega analizatorja:

Nastavitev Zapišite v [0x82] + ACK

0x0F + ACK

0x02 + ACK

Nastavitev Zapišite v [0x82] + ACK

0x0F + ACK

Nastavitev Preberite na [0x83] + ACK

0xF1 + NAK

Nastavitev Zapišite v [0x82] + ACK

0x2E + ACK

0x86 + ACK

Nastavitev Zapišite v [0x82] + ACK

0x0F + ACK

0x80 + ACK

Nastavitev Zapišite v [0x82] + ACK

0x10 + ACK

Nastavitev Preberite na [0x83] + ACK 0xFC + NAK

Nastavitev Zapišite v [0x82] + ACK 0x11 + ACK

Nastavitev Preberite na [0x83] + ACK 0xFF + NAK

4. korak: Arduino koda

Koda Arduino
Koda Arduino

Priloženo kodo Arduino lahko uporabite za simulacijo senzorja.

Prosimo, upoštevajte: Večina plošč Arduino deluje s 5 V, za delovanje pa potrebuje 3,3 V združljivo ali spremenjeno ploščo, da se izognete poškodbam igralne palice.

5. korak: Umerjanje

Praznovanje
Praznovanje

Ko bo vaš novi senzor nameščen, bo treba dušilko umeriti.

Za umerjanje dušilke uporabite orodje za umerjanje dušilke. To lahko prenesete iz številnih virov, kot so:

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

Ne uporabljajte umerjanja oken.

Če želite kar najbolje izkoristiti mod, morate v konfiguracijski datoteki za umerjanje spremeniti nekaj vrednosti.

Spremenite:

Standard_DZ_SX = 0x10;

Standard_DZ_SY = 0x10;

Črte v formatu A10_calibration.txt na:

Standard_DZ_SX = 0x01;

Standard_DZ_SY = 0x01;

To se bo spremenilo v mrtvo cono na krmilnem mehanizmu z 10 na 1 in dalo veliko boljši nadzor. S to nastavitvijo se lahko igrate, nato pa ponovno umerite in vidite, kaj vam je najbolj všeč.

Priporočena: