Turinys:

„Thrustmaster Warthog Slew Sensor I2C“atnaujinimas: 5 žingsniai
„Thrustmaster Warthog Slew Sensor I2C“atnaujinimas: 5 žingsniai

Video: „Thrustmaster Warthog Slew Sensor I2C“atnaujinimas: 5 žingsniai

Video: „Thrustmaster Warthog Slew Sensor I2C“atnaujinimas: 5 žingsniai
Video: Thrustmaster Warthog Slew Upgrade 2024, Lapkritis
Anonim
„Thrustmaster Warthog Slew Sensor I2C“atnaujinimas
„Thrustmaster Warthog Slew Sensor I2C“atnaujinimas

Tai yra apytikslis vadovas, kaip susieti I2C protokolą, naudojamą „ThrustmasterWarthog“droselio posūkio jutiklyje. Tai gali būti naudojama atnaujinant iš gana nenaudingo standartinio ministick į kažką geresnio, tačiau vis tiek naudojant standartinį USB valdiklį droselio bloke. Tai pagrįsta originaliu pranešimu:

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

Kad būtų galima puikiai paaiškinti pagrindinį supratimą, jei daugumos šių veiksmų atveju laikomasi I2C protokolo, eikite į:

learn.sparkfun.com/tutorials/i2c

Jei turite kokių nors konkrečių klausimų, nedvejodami užduokite man, ir aš pasistengsiu ateityje papildyti šį neišspręstą dalyką, pateikdamas svarbesnės informacijos. Tai jokiu būdu nėra baigta, bet turėtų būti geras atspirties taškas.

Pateikiamas tam tikras „Arduino“demonstracinis kodas, tačiau prašome tai laikyti tik nuoroda, nes įprasto 5 V „Arduino“negalima naudoti be pakeitimų.

1 žingsnis: esamos jutiklio detalės

Esamos jutiklio detalės
Esamos jutiklio detalės

„Ministick“sukimo jutiklis, pateikiamas kartu su „Thrustmaster Wathog“droseliu, yra gerai žinomas kaip vienas didžiausių silpnų vietų su kitu puikiu produktu. Per daugelį metų žmonės bandė jį pakeisti kažkuo geresniu, tačiau dauguma susidūrė su sunkumais, susijusiais su jo naudojamu skaitmeniniu I2C protokolu.

Tikslus jutiklis, naudojamas „Warthog“droselinėje sklendėje, yra „N35P112 - EasyPoint“, kuriame naudojamas AS5013 salės efekto jutiklis IC, pagamintas AMS.

Duomenų lapas:

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

Įdomu tai, kad „Sparkfun“įrenginys kadaise buvo prieinamas kaip pertraukimo modulis:

www.sparkfun.com/products/retired/10835

Jutiklis skirtas navigacijos programoms, tokioms kaip mobilieji telefonai, ir yra labai pigus. Mano nuomone, nepriimtina tai, kas kainuoja beveik 500 USD.

2 žingsnis: „Pinout“

Pinout
Pinout

Jutiklis jungiamas prie PCB, esančio dešinėje droselio sklendėje per „micro 5“jungtį.

Pinoutas yra toks:

  1. Vcc +3.3VDC (

    Vietoje reguliuojamas nuo 5 V linijiniu reguliatoriumi, esančiu kitoje plokštės pusėje, tiesiai už jungties, turėtų būti gerai iki maždaug 20 mA, bet aš to jokiu būdu neišbandžiau)

  2. I2C SDA
  3. I2C SCL
  4. GND
  5. 1 mygtukas (paprastai aukštas, vidinis 5V traukimas)

3 žingsnis: protokolo aprašymas

Protokolo aprašymas
Protokolo aprašymas

Jutiklis veikė I2C adresu 0x41 - visos rašymo ar skaitymo komandos prasideda nuo šio adreso.

Kai droselis yra prijungtas prie kompiuterio, I2C magistralėje yra maždaug 250 ms įžanga, skirta adresui 0x40, manau, kad tai skirta kitai jutiklio versijai ar panašiai, bet mums tai nėra aktualu.

Įprastai naudojant I2C magistralę siunčiami duomenys yra žemiau, tai turi imituoti mūsų mikrovaldiklis, kad galėtų kalbėti su droseliu.

Sąranka - Šie duomenys siunčiami vieną kartą, maždaug 500 ms po to, kai prijungiamas USB, kad pradinis jutiklis būtų pradėtas naudoti.

Pagrindinis rašymas: 0x0F (1 valdymo registras)

Duomenys: 0x02 0b0000 0010 (inicijuoja minkštą atstatymą)

Pagrindinis rašymas: 0x0F (1 valdymo registras)

Pagrindinis skaitymas: 0xF1 0b1111 0001 (iš naujo nustatoma į 11110000, lsb 1 reiškia, kad galiojantys duomenys yra paruošti skaitymui. Turime teisingai atsakyti į šią komandą, kad būtume atpažinti kaip tinkamas pavaldusis įrenginys)

Pagrindinis rašymas: 0x2E (2 valdymo registras)

Duomenys: 0x 86 (tai tik nustato magneto orientaciją pradiniame jutiklyje)

Pagrindinis rašymas: 0x0F (1 valdymo registras)

Duomenys: 0x 80 0b1000 0000 (Nustato įrenginį į laukimo režimą (automatinis matavimas, o ne mažos galios režimu))

Ciklas: tai kartojama maždaug 100 Hz dažniu, kad būtų gauti jutiklių duomenys.

Pagrindinis rašymas: 0x10 (X registras)

Pagrindinis skaitymas: (vergas siunčia X duomenis, 2 papildo 8 bitų vertę)

Pagrindinis rašymas: 0x11 (Y registras)

Pagrindinis skaitymas: (vergas siunčia Y duomenis, 2 papildo 8 bitų vertę)

Atitinkama protokolo iškelties dalis iš loginio analizatoriaus:

Sąranka Rašykite į [0x82] + ACK

0x0F + ACK

0x02 + ACK

Sąranka Rašykite į [0x82] + ACK

0x0F + ACK

Sąranka Skaitykite iki [0x83] + ACK

0xF1 + NAK

Sąranka Rašykite į [0x82] + ACK

0x2E + ACK

0x86 + ACK

Sąranka Rašykite į [0x82] + ACK

0x0F + ACK

0x80 + ACK

Sąranka Rašykite į [0x82] + ACK

0x10 + ACK

Sąranka Skaitykite iki [0x83] + ACK 0xFC + NAK

Sąranka Rašykite į [0x82] + ACK 0x11 + ACK

Sąranka Skaitykite iki [0x83] + ACK 0xFF + NAK

4 žingsnis: „Arduino“kodas

Arduino kodas
Arduino kodas

Pridėtas „Arduino“kodas gali būti naudojamas jutikliui imituoti.

Atkreipkite dėmesį: Dauguma „Arduino“plokščių veikia 5 V įtampa, todėl reikia 3,3 V suderinamos arba modifikuotos plokštės, kad ji nesugadintų vairasvirtės.

5 žingsnis: kalibravimas

Kalibravimas
Kalibravimas

Sumontavus naują jutiklį, droselį reikia kalibruoti.

Norėdami sukalibruoti savo droselį, naudokite droselio kalibravimo įrankį. Tai galima atsisiųsti iš daugelio šaltinių, tokių kaip:

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

Nenaudokite langų kalibravimo.

Norėdami išnaudoti visas modifikacijos galimybes, turite pakeisti keletą kalibravimo konfigūracijos failo verčių.

Pakeisti:

Standartinis_DZ_SX = 0x10;

Standartinis_DZ_SY = 0x10;

A10_calibration.txt eilutės į:

Standartinis_DZ_SX = 0x01;

Standartinis_DZ_SY = 0x01;

Tai pasukimo valdiklyje pasikeis į negyvą zoną nuo 10 iki 1 ir suteiks daug geresnį valdymą. Galite žaisti naudodami šį nustatymą, tada iš naujo kalibruoti ir pamatyti, kas jums labiausiai patinka.

Rekomenduojamas: