Satura rādītājs:

Thrustmaster Warthog pagriešanas sensora I2C jaunināšana: 5 soļi
Thrustmaster Warthog pagriešanas sensora I2C jaunināšana: 5 soļi

Video: Thrustmaster Warthog pagriešanas sensora I2C jaunināšana: 5 soļi

Video: Thrustmaster Warthog pagriešanas sensora I2C jaunināšana: 5 soļi
Video: Thrustmaster Warthog A10C - The best H.O.T.A.S. out there? 2024, Jūnijs
Anonim
Thrustmaster Warthog pagriešanas sensora I2C jauninājums
Thrustmaster Warthog pagriešanas sensora I2C jauninājums

Šis ir aptuvens ceļvedis, kā saskarties ar I2C protokolu, kas tiek izmantots ThrustmasterWarthog droseļvārsta pagrieziena sensorā. To var izmantot, lai no diezgan bezjēdzīga standarta ministick pārietu uz kaut ko labāku, taču droseļvārsta blokā joprojām tiek izmantots standarta USB kontrolieris. Tas ir balstīts uz sākotnējo ziņu par:

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

Pamata izpratne par to, vai I2C protokols tiek pieņemts lielākajai daļai no šīm darbībām, lai iegūtu lielisku skaidrojumu, dodieties uz:

learn.sparkfun.com/tutorials/i2c

Ja jums ir kādi konkrēti jautājumi, jautājiet man, un es centīšos nākotnē papildināt šo neatrisināmo jautājumu ar atbilstošāku informāciju. Tas nekādā ziņā nav pilnīgs, bet tam vajadzētu būt labam sākumpunktam.

Tiek piedāvāts kāds Arduino demonstrācijas kods, taču, lūdzu, ņemiet to tikai kā atsauci, jo parasto 5V Arduino nevar izmantot bez izmaiņām.

1. darbība: esošā sensora informācija

Esošās sensora detaļas
Esošās sensora detaļas

Ministick pagrieziena sensors, kas tiek piegādāts kopā ar Thrustmaster Wathog droseļvārstu, ir labi zināms, ka tas ir viens no lielākajiem trūkumiem ar citādi izcilu produktu. Gadu gaitā cilvēki ir mēģinājuši to aizstāt ar kaut ko labāku, taču lielākā daļa ir saskārušies ar grūtībām saskarties ar tā izmantoto digitālo I2C protokolu.

Precīzs sensors, ko izmanto Warthog droseļvārstā, ir N35P112 - EasyPoint, kurā tiek izmantots AMS izgatavotais zāles efekta sensora AS5013 IC.

Datu lapas:

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

Interesanti, ka Sparkfun vienība savulaik bija pieejama kā izlaušanās modulis:

www.sparkfun.com/products/retired/10835

Sensors ir paredzēts navigācijas lietojumprogrammām, piemēram, mobilajiem tālruņiem, un tas ir ārkārtīgi lēts. Manuprāt, nepieņemami kaut kas tāds, kas maksā gandrīz 500 USD.

2. darbība

Pinout
Pinout

Sensors tiek savienots ar PCB labās puses droseļvārsta caur mikro 5 kontaktu savienotāju.

Pinout ir šāds:

  1. Vcc +3.3VDC (

    Vietēji regulējams no 5 V ar lineāru regulatoru, kas atrodas paneļa otrā pusē, tieši aiz savienotāja, vajadzētu būt labam līdz aptuveni 20 mA, bet es to nekādā veidā neesmu pārbaudījis)

  2. I2C SDA
  3. I2C SCL
  4. GND
  5. 1. poga (parasti augsts, iekšējais 5V pullup)

3. darbība: protokola apraksts

Protokola apraksts
Protokola apraksts

Sensors darbojās ar I2C adresi 0x41 - visas rakstīšanas vai lasīšanas komandas sākas ar šo adresi.

Kad droseļvārsts ir savienots ar datoru, I2C kopnē ir preambula aptuveni 250 ms, lai adresētu 0x40, es pieņemu, ka tas attiecas uz citu sensora versiju vai kaut ko līdzīgu, bet mums tas nav aktuāli.

Dati, kas nosūtīti uz I2C kopnes normālā lietošanā, ir zemāk, un tas ir jāmodelē mūsu mikrokontrolleram, lai sarunātos ar droseļvārstu.

Iestatīšana - šie dati tiek nosūtīti vienu reizi, apmēram 500 ms pēc USB pievienošanas, lai iestatītu sākotnējo sensoru lietošanai.

Galvenais raksts: 0x0F (1. kontroles reģistrs)

Dati: 0x02 0b0000 0010 (uzsāk mīksto atiestatīšanu)

Galvenais raksts: 0x0F (1. kontroles reģistrs)

Galvenais lasījums: 0xF1 0b1111 0001 (atiestatīts uz 11110000, lsb 1 nozīmē, ka derīgi dati ir gatavi lasīšanai. Mums ir pareizi jāatbild uz šo komandu, lai tos atpazītu kā derīgu vergu ierīci)

Galvenais raksts: 0x2E (vadības reģistrs 2)

Dati: 0x 86 (tas tikai nosaka magnēta orientāciju sākotnējā sensorā)

Galvenais raksts: 0x0F (1. kontroles reģistrs)

Dati: 0x 80 0b1000 0000 (Iestata ierīci gaidīšanas režīmā (automātiska mērīšana, nevis mazjaudas režīmā))

Cilpa: Tas tiek atkārtots aptuveni 100 Hz frekvencē, lai iegūtu sensora datus.

Galvenā rakstīšana: 0x10 (X reģistrs)

Galvenais lasījums: (vergs sūta X datus, 2 papildina 8 bitu vērtību)

Galvenā rakstīšana: 0x11 (Y reģistrs)

Galvenais lasījums: (vergs sūta Y datus, 2 papildina 8 bitu vērtību)

Atbilstošā protokola izmešanas daļa no loģikas analizatora:

Iestatīšana Rakstiet uz [0x82] + ACK

0x0F + ACK

0x02 + ACK

Iestatīšana Rakstiet uz [0x82] + ACK

0x0F + ACK

Iestatīšana Izlasiet līdz [0x83] + ACK

0xF1 + NAK

Iestatīšana Rakstiet uz [0x82] + ACK

0x2E + ACK

0x86 + ACK

Iestatīšana Rakstiet uz [0x82] + ACK

0x0F + ACK

0x80 + ACK

Iestatīšana Rakstiet uz [0x82] + ACK

0x10 + ACK

Iestatīšana Izlasiet līdz [0x83] + ACK 0xFC + NAK

Iestatīšana Rakstiet uz [0x82] + ACK 0x11 + ACK

Iestatīšana Izlasiet līdz [0x83] + ACK 0xFF + NAK

4. solis: Arduino kods

Arduino kods
Arduino kods

Pievienoto Arduino kodu var izmantot, lai simulētu sensoru.

Lūdzu, ņemiet vērā: lielākā daļa Arduino paneļu darbojas ar 5 V spriegumu, lai darbotos, lai darbvirsma netiktu bojāta, nepieciešama ar 3.3 V saderīga vai modificēta tāfele.

5. solis: kalibrēšana

Kalibrēšana
Kalibrēšana

Kad jaunais sensors ir uzstādīts, droseļvārsts būs jākalibrē.

Lai kalibrētu droseļvārstu, izmantojiet droseļvārsta kalibrēšanas rīku. To var lejupielādēt no vairākiem avotiem, piemēram:

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

Nelietojiet logu kalibrēšanu.

Lai maksimāli izmantotu mod, jums ir jāmaina dažas vērtības kalibrēšanas konfigurācijas failā.

Nomaini:

Standarta_DZ_SX = 0x10;

Standarta_DZ_SY = 0x10;

A10_calibration.txt rindas uz:

Standarta_DZ_SX = 0x01;

Standarta_DZ_SY = 0x01;

Tas pagriešanās vadības ierīcē mainīsies uz mirušo zonu no 10 uz 1 un nodrošinās daudz labāku vadību. Jūs varat spēlēt ar šo iestatījumu un pēc tam pārkalibrēt un redzēt, kas jums patīk visvairāk.

Ieteicams: