Sadržaj:

Thrustmaster Warthog senzor zakretanja I2C Nadogradnja: 5 koraka
Thrustmaster Warthog senzor zakretanja I2C Nadogradnja: 5 koraka
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 s prilično beskorisnog standardnog ministrica na nešto bolje, no i dalje se koristi standardni USB kontroler u jedinici za gas. Ovo se temelji na izvornom postu na:

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

Osnovno razumijevanje ako se za većinu sljedećih koraka pretpostavlja protokol I2C, za izvrsno 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 s relevantnijim podacima. 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: Postojeći detalji senzora

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 poteškoćama u povezivanju s digitalnim I2C protokolom koji koristi.

Točan senzor koji se koristi u prigušnici za vodu Warthog je N35P112 - EasyPoint, koji koristi IC osjetnik Hall efekta AS5013 proizvođača AMS.

Tehnički list:

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

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

www.sparkfun.com/products/retired/10835

Senzor je namijenjen navigacijskim aplikacijama u stvarima poput mobilnih telefona i izuzetno je jeftin. Po mom mišljenju neprihvatljivo u nečemu što košta gotovo 500 dolara.

Korak 2: Pinout

Prikaz izvoda
Prikaz izvoda

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

Ispis je sljedeći:

  1. Vcc +3,3 VDC (

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

  2. I2C SDA
  3. I2C SCL
  4. GND
  5. Gumb 1 (Normalno visok, unutarnji napon od 5 V)

Korak 3: Opis protokola

Opis protokola
Opis protokola

Senzor je radio na I2C adresi 0x41 - sve naredbe za pisanje ili čitanje počinju s ovom adresom.

Kad je leptir za gas spojen na računalo, na sabirnici I2C postoji preambula od oko 250 ms 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 uporabi nalaze se u nastavku. Naš mikrokontroler mora to simulirati kako bi razgovarao s gasom.

Postavljanje - Ovi se podaci šalju jednom, otprilike 500 ms nakon povezivanja USB -a, kako bi se izvorni senzor postavio za upotrebu.

Glavni upis: 0x0F (kontrolni registar 1)

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

Glavni upis: 0x0F (kontrolni registar 1)

Glavno čitanje: 0xF1 0b1111 0001 (resetirano na 11110000, lsb 1 znači da su valjani podaci spremni za čitanje. Moramo ispravno odgovoriti na ovu naredbu da bismo bili prepoznati kao valjani slave uređaj)

Glavni upis: 0x2E (kontrolni registar 2)

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

Glavni upis: 0x0F (kontrolni registar 1)

Podaci: 0x 80 0b1000 0000 (Postavlja uređaj u stanje mirovanja (automatsko mjerenje, ne u načinu rada s niskom potrošnjom energije))

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

Glavni upis: 0x10 (X registar)

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

Master Write: 0x11 (Y registar)

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

Relevantni dio ispisa protokola iz logičkog analizatora:

Postavljanje Pišite na [0x82] + ACK

0x0F + ACK

0x02 + ACK

Postavljanje Zapišite na [0x82] + ACK

0x0F + ACK

Postavljanje Pročitajte na [0x83] + ACK

0xF1 + NAK

Postavljanje Zapišite na [0x82] + ACK

0x2E + ACK

0x86 + ACK

Postavljanje Zapišite na [0x82] + ACK

0x0F + ACK

0x80 + ACK

Postavljanje Zapišite na [0x82] + ACK

0x10 + ACK

Postavljanje Pročitajte na [0x83] + ACK 0xFC + NAK

Postavljanje Pišite na [0x82] + ACK 0x11 + ACK

Postavljanje Pročitajte do [0x83] + ACK 0xFF + NAK

Korak 4: Arduino kod

Arduino kod
Arduino kod

Priloženi Arduino kôd 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 vaše upravljačke palice.

Korak 5: Kalibracija

Kalibriranje
Kalibriranje

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

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

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

Nemojte koristiti kalibraciju prozora.

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

Promijeni:

Standardni_DZ_SX = 0x10;

Standardni_DZ_SY = 0x10;

Linije u A10_calibration.txt na:

Standardni_DZ_SX = 0x01;

Standardni_DZ_SY = 0x01;

To će se promijeniti u mrtvu zonu na upravljačkoj jedinici s 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čeni: