Sadržaj:
Video: Thrustmaster Warthog senzor zakretanja I2C Nadogradnja: 5 koraka
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-13 06:57
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
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
Senzor se povezuje s tiskanom pločom u desnoj jedinici za gas pomoću mikro 5 -polnog konektora.
Pinout je sljedeći:
-
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)
- I2C SDA
- I2C SCL
- GND
- Dugme 1 (normalno visoko, unutrašnje izvlačenje od 5 V)
Korak 3: 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
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
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.