İçindekiler:
Video: Thrustmaster Warthog Döndürme Sensörü I2C Yükseltmesi: 5 Adım
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Bu, ThrustmasterWarthog gaz kelebeği dönüş sensöründe kullanılan I2C protokolü ile nasıl arayüz oluşturulacağına dair kaba bir kılavuzdur. Bu, oldukça işe yaramaz standart ministick'ten daha iyi bir şeye yükseltmek için kullanılabilir, ancak yine de gaz kelebeği ünitesinde standart USB denetleyicisini kullanıyor. Bu, orijinal bir gönderiye dayanmaktadır:
forums.eagle.ru/showthread.php?t=200198
Aşağıdaki adımların çoğu için I2C protokolünün kabul edilip edilmediğine dair temel bir anlayış, mükemmel bir açıklama için şuraya gidin:
learn.sparkfun.com/tutorials/i2c
Herhangi bir özel soru, bana sormaktan çekinmeyin ve gelecekte daha alakalı bilgilerle bu zorlu soruyu eklemeye çalışacağım. Bu hiçbir şekilde tamamlanmış değildir, ancak iyi bir başlangıç noktası olmalıdır.
Bazı demo Arduino kodları sağlanmıştır, ancak lütfen bunu yalnızca referans olarak alın, çünkü normal 5V Arduino değişiklik yapılmadan kullanılamaz.
Adım 1: Mevcut Sensör Ayrıntıları
Thrustmaster Wathog gaz kelebeğiyle birlikte gelen ministick dönüş sensörü, aksi takdirde mükemmel bir ürünün en büyük zayıf yönlerinden biri olarak bilinir. İnsanlar tarafından yıllar içinde daha iyi bir şeyle değiştirmek için bir dizi girişimde bulunuldu, ancak çoğu, kullandığı dijital I2C protokolüyle arayüz oluşturmanın zorluklarıyla karşı karşıya kaldı.
Warthog gaz kelebeğinde kullanılan tam sensör, AMS tarafından yapılan AS5013 salon efekt sensörü IC'yi kullanan N35P112 - EasyPoint'tir.
Veri Sayfası:
ams.com/eng/Products/Magnetic-Position-Sens…
İlginç bir şekilde, birim bir zamanlar Sparkfun tarafından bir koparma modülü olarak mevcuttu:
www.sparkfun.com/products/retired/10835
Sensör, cep telefonları gibi şeylerdeki navigasyon uygulamaları içindir ve son derece ucuzdur. Bence yaklaşık 500 dolara mal olan bir şeyde kabul edilemez.
2. Adım: Pin Çıkışı
Sensör, mikro 5 pinli konektör aracılığıyla sağ gaz kelebeği ünitesindeki PCB'ye bağlanır.
Pin çıkışı aşağıdaki gibidir:
-
Vcc +3.3VDC (
Kartın diğer tarafında, konektörün hemen arkasında bulunan bir lineer regülatör tarafından 5V'dan yerel olarak regüle edildiğinde, 20mA civarında iyi olmalıdır, ancak bunu hiçbir şekilde test etmedim)
- I2C SDA'sı
- I2C SCL
- GND
- Düğme 1 (Normalde yüksek, dahili 5V çekme)
Adım 3: Protokol Açıklaması
Sensör, I2C adresi 0x41'de çalıştırılır - tüm yazma veya okuma komutları bu adresle başlar.
Gaz kelebeği bilgisayara bağlandığında, I2C veriyolunda 0x40 adresi için yaklaşık 250 ms'lik bir giriş var, bunun farklı bir sensör versiyonu veya benzeri bir şey için olduğunu varsayıyorum, ancak bizimle alakalı değil.
Normal kullanımda I2C veriyoluna gönderilen veriler aşağıdadır, gaz kelebeği ile konuşmak için bunun mikrodenetleyicimiz tarafından simüle edilmesi gerekir.
Kurulum - Bu veriler, orijinal sensörü kullanıma hazırlamak için USB bağlandıktan yaklaşık 500 ms sonra bir kez gönderilir.
Ana Yazma: 0x0F (Kontrol Kaydı 1)
Veri: 0x02 0b0000 0010 (yazılımdan sıfırlamayı başlatır)
Ana Yazma: 0x0F (Kontrol Kaydı 1)
Ana Okuma: 0xF1 0b1111 0001 (11110000'e sıfırlanır, lsb 1 geçerli verilerin okunmaya hazır olduğunu belirtir. Geçerli bir bağımlı cihaz olarak tanınmak için bu komutu doğru yanıtlamamız gerekir)
Ana Yazma: 0x2E (Kontrol Kaydı 2)
Veri: 0x 86 (bu sadece orijinal sensördeki mıknatısın yönünü ayarlar)
Ana Yazma: 0x0F (Kontrol Kaydı 1)
Veri: 0x 80 0b1000 0000 (Cihazı boş moda ayarlar (otomatik ölçüm, düşük güç modunda değil))
Döngü: Bu, sensör verilerini almak için yaklaşık 100 Hz'de tekrarlanır.
Ana Yazma: 0x10 (X kaydı)
Master Read: (slave X verisi gönderir, 2'nin tamamlayıcısı 8 bit değeri)
Ana Yazma: 0x11 (Y kaydı)
Master Read: (slave Y verisi gönderir, 2'nin tamamlayıcısı 8 bit değeri)
Mantık analizöründen protokol dökümünün ilgili kısmı:
Kurulum Yazma [0x82] + ACK
0x0F + ACK
0x02 + ACK
Kurulum Yazma [0x82] + ACK
0x0F + ACK
Kurulum Okuması [0x83] + ACK
0xF1 + NAK
Kurulum Yazma [0x82] + ACK
0x2E + ACK
0x86 + ACK
Kurulum Yazma [0x82] + ACK
0x0F + ACK
0x80 + ACK
Kurulum Yazma [0x82] + ACK
0x10 + ACK
Kurulum Okuması [0x83] + ACK 0xFC + NAK
Kurulum Yazma [0x82] + ACK 0x11 + ACK
Kurulum Okuması [0x83] + ACK 0xFF + NAK
Adım 4: Arduino Kodu
Ekli Arduino kodu, sensörü simüle etmek için kullanılabilir.
Lütfen dikkat: Çoğu Arduino kartı 5V ile çalışır, bunun joystick'inize zarar vermemesi için çalışması için 3.3V uyumlu veya değiştirilmiş bir kart gerekir.
Adım 5: Kalibrasyon
Yeni sensörünüz takıldıktan sonra gaz kelebeğinin kalibre edilmesi gerekecektir.
Gaz kelebeğinizi kalibre etmek için gaz kelebeği kalibrasyon aracını kullanacaksınız. Bu, aşağıdakiler gibi bir dizi kaynaktan indirilebilir:
forums.eagle.ru/showthread.php?t=65901
Windows kalibrasyonu kullanmayın.
Bir moddan en iyi şekilde yararlanmak için kalibrasyon yapılandırma dosyanızdaki birkaç değeri değiştirmeniz gerekir.
Değiştir:
Standard_DZ_SX = 0x10;
Standard_DZ_SY = 0x10;
A10_calibration.txt dosyasındaki satırlar:
Standard_DZ_SX = 0x01;
Standard_DZ_SY = 0x01;
Bu, dönüş kontrolünde 10'dan 1'e ölü bölge olarak değişecek ve çok daha iyi kontrol sağlayacaktır. Bu ayarla oynayabilir ve ardından yeniden kalibre edebilir ve en çok neyi sevdiğinizi görebilirsiniz.