Daftar Isi:
Video: Thrustmaster Warthog Slew Sensor I2C Upgrade: 5 Langkah
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-13 06:57
Ini adalah panduan kasar tentang cara berinteraksi dengan protokol I2C yang digunakan pada sensor slew throttle ThrustmasterWarthog. Ini dapat digunakan untuk meningkatkan dari ministick standar yang cukup tidak berguna ke sesuatu yang lebih baik, Tetapi masih menggunakan pengontrol USB standar di unit throttle. Ini didasarkan dari posting asli di:
forums.eagle.ru/showthread.php?t=200198
Pemahaman dasar jika protokol I2C diasumsikan untuk sebagian besar langkah-langkah berikut, untuk penjelasan yang sangat baik kunjungi:
learn.sparkfun.com/tutorials/i2c
Setiap pertanyaan spesifik, jangan ragu untuk bertanya kepada saya, dan saya akan mencoba menambahkan ini ke masa depan dengan informasi yang lebih relevan. Ini tidak berarti lengkap, tetapi harus menjadi titik awal yang baik.
Beberapa kode demo Arduino disediakan tetapi harap hanya mengambil ini sebagai referensi karena Arduino 5V normal tidak dapat digunakan tanpa modifikasi.
Langkah 1: Detail Sensor yang Ada
Sensor slew ministick yang hadir dengan throttle Thrustmaster Wathog dikenal sebagai salah satu kelemahan terbesar dengan produk yang sangat baik. Ada sejumlah upaya oleh orang-orang untuk menggantinya dengan sesuatu yang lebih baik selama bertahun-tahun, tetapi sebagian besar menghadapi kesulitan antarmuka dengan protokol I2C digital yang digunakan olehnya.
Sensor persis yang digunakan pada throttle Warthog adalah N35P112 - EasyPoint, yang menggunakan IC sensor hall effect AS5013 buatan AMS.
Lembaran data:
ams.com/eng/Products/Magnetic-Position-Sens…
Menariknya unit ini pernah tersedia sebagai modul breakout oleh Sparkfun:
www.sparkfun.com/products/retired/10835
Sensor dimaksudkan untuk aplikasi navigasi dalam hal-hal seperti ponsel, dan sangat murah. Menurut pendapat saya tidak dapat diterima dalam sesuatu yang harganya hampir $500.
Langkah 2: Pinout
Sensor terhubung ke PCB di unit throttle tangan kanan melalui konektor mikro 5 pin.
Pinoutnya adalah sebagai berikut:
-
Vcc +3.3VDC (
Diatur secara lokal dari 5V oleh regulator linier di sisi lain papan, tepat di belakang konektor, seharusnya bagus untuk sekitar 20mA, tetapi saya sama sekali tidak menguji ini)
- I2C SDA
- I2C SCL
- GND
- Tombol 1 (Biasanya tinggi, pullup 5V internal)
Langkah 3: Deskripsi Protokol
Sensor dioperasikan pada alamat I2C 0x41 - semua perintah tulis atau baca dimulai dengan alamat ini.
Ketika throttle terhubung ke komputer, ada pembukaan sekitar 250ms di bus I2C untuk mengatasi 0x40, saya menganggap ini untuk versi sensor yang berbeda atau yang serupa, tetapi itu tidak relevan bagi kami.
Data yang dikirim pada bus I2C dalam penggunaan normal di bawah ini, ini harus disimulasikan oleh mikrokontroler kami untuk berbicara dengan throttle.
Setup - Data ini dikirim sekali, sekitar 500 ms setelah USB terhubung, untuk mengatur sensor asli untuk digunakan.
Penulisan Master: 0x0F (Register Kontrol 1)
Data: 0x02 0b0000 0010 (memulai soft reset)
Penulisan Master: 0x0F (Register Kontrol 1)
Master Read: 0xF1 0b1111 0001 (reset ke 11110000, lsb 1 menandakan data yang valid siap untuk dibaca. Kita harus membalas perintah ini dengan benar untuk dikenali sebagai perangkat slave yang valid)
Penulisan Master: 0x2E (Register Kontrol 2)
Data: 0x 86 (ini hanya mengatur orientasi magnet di sensor asli)
Penulisan Master: 0x0F (Register Kontrol 1)
Data: 0x 80 0b1000 0000 (Mengatur perangkat ke mode siaga (pengukuran otomatis, bukan mode daya rendah))
Loop: Ini diulang pada sekitar 100Hz untuk mendapatkan data sensor.
Master Tulis: 0x10 (register X)
Master Read: (slave mengirim data X, nilai 8 bit komplemen 2)
Master Tulis: 0x11 (registrasi Y)
Master Read: (slave mengirimkan data Y, nilai komplemen 2 8 bit)
Bagian yang relevan dari dump protokol dari penganalisis logika:
Atur Tulis ke [0x82] + ACK
0x0F + ACK
0x02 + ACK
Atur Tulis ke [0x82] + ACK
0x0F + ACK
Pengaturan Baca ke [0x83] + ACK
0xF1 + NAK
Atur Tulis ke [0x82] + ACK
0x2E + ACK
0x86 + ACK
Atur Tulis ke [0x82] + ACK
0x0F + ACK
0x80 + ACK
Atur Tulis ke [0x82] + ACK
0x10 + ACK
Pengaturan Baca ke [0x83] + ACK 0xFC + NAK
Setup Tulis ke [0x82] + ACK 0x11 + ACK
Pengaturan Baca ke [0x83] + ACK 0xFF + NAK
Langkah 4: Kode Arduino
Kode Arduino terlampir dapat digunakan untuk mensimulasikan sensor.
Harap dicatat: Sebagian besar papan Arduino menjalankan 5V, ini membutuhkan papan yang kompatibel atau dimodifikasi 3.3V agar berfungsi untuk menghindari kerusakan pada joystick Anda.
Langkah 5: Kalibrasi
Setelah sensor baru Anda dipasang, throttle perlu dikalibrasi.
Untuk mengkalibrasi throttle Anda, Anda akan menggunakan alat kalibrasi throttle. Ini dapat diunduh dari beberapa sumber seperti:
forums.eagle.ru/showthread.php?t=65901
Jangan gunakan kalibrasi windows.
Untuk mendapatkan hasil maksimal dari mod, Anda perlu mengubah beberapa nilai dalam file konfigurasi kalibrasi Anda.
Mengubah:
Standar_DZ_SX = 0x10;
Standar_DZ_SY = 0x10;
Baris di A10_calibration.txt ke:
Standar_DZ_SX = 0x01;
Standar_DZ_SY = 0x01;
Ini akan berubah menjadi zona mati pada kontrol slew dari 10 menjadi 1, dan memberikan kontrol yang jauh lebih baik. Anda dapat bermain dengan pengaturan ini dan kemudian mengkalibrasi ulang dan melihat apa yang paling Anda sukai.