İçindekiler:

Thrustmaster Warthog Döndürme Sensörü I2C Yükseltmesi: 5 Adım
Thrustmaster Warthog Döndürme Sensörü I2C Yükseltmesi: 5 Adım

Video: Thrustmaster Warthog Döndürme Sensörü I2C Yükseltmesi: 5 Adım

Video: Thrustmaster Warthog Döndürme Sensörü I2C Yükseltmesi: 5 Adım
Video: Обзор джойстика - Thrustmaster HOTAS Warthog 2024, Eylül
Anonim
Thrustmaster Warthog Dönüş Sensörü I2C Yükseltmesi
Thrustmaster Warthog Dönüş Sensörü I2C Yükseltmesi

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ı

Mevcut Sensör Ayrıntıları
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ışı

Pin yapısı
Pin yapısı

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:

  1. 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)

  2. I2C SDA'sı
  3. I2C SCL
  4. GND
  5. Düğme 1 (Normalde yüksek, dahili 5V çekme)

Adım 3: Protokol Açıklaması

Protokol Açıklaması
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

Arduino Kodu
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

kalibrasyon
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.

Önerilen: