Isi kandungan:

Peningkatan Thrustmaster Warthog Slew Sensor I2C: 5 Langkah
Peningkatan Thrustmaster Warthog Slew Sensor I2C: 5 Langkah

Video: Peningkatan Thrustmaster Warthog Slew Sensor I2C: 5 Langkah

Video: Peningkatan Thrustmaster Warthog Slew Sensor I2C: 5 Langkah
Video: Улучшение Thrustmaster Warthog Slew 2024, November
Anonim
Peningkatan Thrustmaster Warthog Slew Sensor I2C
Peningkatan Thrustmaster Warthog Slew Sensor I2C

Ini adalah panduan kasar mengenai bagaimana untuk berinteraksi dengan protokol I2C yang digunakan pada sensor throttle slew ThrustmasterWarthog. Ini boleh digunakan untuk menaik taraf dari ministick standard yang agak tidak berguna kepada yang lebih baik, Tetapi masih menggunakan pengawal USB standard di unit pendikit. Ini berdasarkan catatan asal di:

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

Pemahaman asas jika protokol I2C dianggap untuk kebanyakan langkah berikut, untuk penjelasan yang sangat baik pergi ke:

learn.sparkfun.com/tutorials/i2c

Sebarang pertanyaan khusus, silakan bertanya kepada saya, dan saya akan mencuba untuk menambah perkara ini pada masa akan datang dengan maklumat yang lebih relevan. Ini sama sekali tidak lengkap, tetapi harus menjadi titik permulaan yang baik.

Beberapa kod Arduino demo disediakan tetapi sila ambil ini sebagai rujukan kerana Arduino 5V biasa tidak dapat digunakan tanpa pengubahsuaian.

Langkah 1: Perincian Sensor Sedia Ada

Perincian Sensor Sedia Ada
Perincian Sensor Sedia Ada

Sensor ministick slew yang dilengkapi dengan Thrustmaster Wathog throttleis terkenal sebagai salah satu kelemahan terbesar dengan produk yang sangat baik. Telah ada sejumlah percubaan oleh orang untuk menggantinya dengan sesuatu yang lebih baik selama bertahun-tahun, tetapi kebanyakan menentang kesulitan berinteraksi dengan protokol I2C digital yang digunakan olehnya.

Sensor tepat yang digunakan dalam pendikit Warthog adalah N35P112 - EasyPoint, yang menggunakan IC sensor kesan dewan AS5013 yang dibuat oleh AMS.

Lembaran data:

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

Menariknya unit ini pernah tersedia sebagai modul pelarian oleh Sparkfun:

www.sparkfun.com/products/retired/10835

Sensor ini bertujuan untuk aplikasi navigasi dalam perkara seperti telefon bimbit, dan sangat murah. Pada pendapat saya tidak dapat diterima dalam sesuatu yang berharga hampir $ 500.

Langkah 2: Pinout

Pinout
Pinout

Sensor menyambung ke PCB di unit pendikit tangan kanan melalui penyambung mikro 5 pin.

Pinout adalah seperti berikut:

  1. Vcc + 3.3VDC (

    Diatur secara tempatan dari 5V oleh pengatur linier di sisi lain papan, tepat di belakang penyambung, semestinya baik hingga 20mA, tetapi saya tidak pernah menguji ini)

  2. I2C SDA
  3. I2C SCL
  4. GND
  5. Butang 1 (Biasanya tinggi, tarikan 5V dalaman)

Langkah 3: Penerangan Protokol

Huraian Protokol
Huraian Protokol

Sensor dikendalikan pada alamat I2C 0x41 - semua perintah tulis atau baca bermula dari alamat ini.

Semasa pendikit disambungkan ke komputer, terdapat mukadimah sekitar 250ms pada bas I2C untuk mengatasi 0x40, saya menganggap ini adalah untuk versi sensor yang berbeza atau yang serupa, tetapi ia tidak berkaitan dengan kami.

Data yang dihantar pada bas I2C dalam penggunaan biasa ada di bawah, ini mesti disimulasikan oleh mikrokontroler kami untuk bercakap dengan pendikit.

Persediaan - Data ini dikirim sekali, sekitar 500ms setelah USB disambungkan, untuk menyiapkan sensor asal untuk digunakan.

Tulis Master: 0x0F (Daftar Kawalan 1)

Data: 0x02 0b0000 0010 (memulakan soft reset)

Tulis Master: 0x0F (Daftar Kawalan 1)

Pembacaan Induk: 0xF1 0b1111 0001 (diset semula ke 11110000, lsb 1 menandakan data yang sah siap dibaca. Kita mesti membalas arahan ini dengan betul untuk dikenali sebagai peranti hamba yang sah)

Tulis Master: 0x2E (Daftar Kawalan 2)

Data: 0x 86 (ini hanya menetapkan orientasi magnet pada sensor asal)

Tulis Master: 0x0F (Daftar Kawalan 1)

Data: 0x 80 0b1000 0000 (Menetapkan peranti ke mod terbiar (pengukuran automatik, bukan dalam mod daya rendah))

Gelung: Ini diulang sekitar 100Hz untuk mendapatkan data sensor.

Tulis Master: 0x10 (daftar X)

Master Read: (hamba menghantar data X, nilai 8 bit pelengkap 2)

Tulis Master: 0x11 (Y register)

Master Read: (hamba menghantar data Y, nilai 2 bit pelengkap 2)

Bahagian pembuangan protokol yang relevan dari penganalisis logik:

Persediaan Tulis ke [0x82] + ACK

0x0F + ACK

0x02 + ACK

Persediaan Tulis ke [0x82] + ACK

0x0F + ACK

Persediaan Baca ke [0x83] + ACK

0xF1 + NAK

Persediaan Tulis ke [0x82] + ACK

0x2E + ACK

0x86 + ACK

Persediaan Tulis ke [0x82] + ACK

0x0F + ACK

0x80 + ACK

Persediaan Tulis ke [0x82] + ACK

0x10 + ACK

Persediaan Baca ke [0x83] + ACK 0xFC + NAK

Persediaan Tulis ke [0x82] + ACK 0x11 + ACK

Persediaan Baca ke [0x83] + ACK 0xFF + NAK

Langkah 4: Kod Arduino

Kod Arduino
Kod Arduino

Kod Arduino yang dilampirkan dapat digunakan untuk mensimulasikan sensor.

Harap maklum: Sebilangan besar papan Arduino berjalan 5V, ini memerlukan papan serasi 3.3V atau modifikasi untuk berfungsi untuk mengelakkan kerosakan pada kayu bedik anda.

Langkah 5: Penentukuran

Penentukuran
Penentukuran

Setelah sensor baru anda dipasang, pendikit memerlukan penentukuran.

Untuk menentukur pendikit anda, anda akan menggunakan alat penentukuran pendikit. Ini boleh dimuat turun dari sejumlah sumber seperti:

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

Jangan gunakan penentukuran tingkap.

Untuk memaksimalkan mod, anda perlu mengubah beberapa nilai dalam fail konfigurasi penentukuran anda.

Tukar:

Standard_DZ_SX = 0x10;

Standard_DZ_SY = 0x10;

Garis dalam A10_calibration.txt ke:

Standard_DZ_SX = 0x01;

Standard_DZ_SY = 0x01;

Ini akan berubah menjadi zon mati pada kawalan slew dari 10 hingga 1, dan memberikan kawalan yang jauh lebih baik. Anda boleh bermain dengan tetapan ini dan kemudian mengkalibrasi semula dan melihat apa yang paling anda sukai.

Disyorkan: