Mundarija:

Thrustmaster Warthog sensori I2C -ni yangiladi: 5 qadam
Thrustmaster Warthog sensori I2C -ni yangiladi: 5 qadam

Video: Thrustmaster Warthog sensori I2C -ni yangiladi: 5 qadam

Video: Thrustmaster Warthog sensori I2C -ni yangiladi: 5 qadam
Video: Джойстик-модуль с STM32 || АЦП || Многоканальный || ХАЛ 2024, Sentyabr
Anonim
Thrustmaster Warthog sensori I2C -ni yangiladi
Thrustmaster Warthog sensori I2C -ni yangiladi

Bu ThrustmasterWarthog gaz kelebeği sensori ishlatilgan I2C protokoli bilan qanday ishlash haqida qo'pol qo'llanma. Bu juda foydasiz standart ministickdan yaxshiroq narsaga o'tish uchun ishlatilishi mumkin, lekin baribir gaz kelebeğindeki standart USB tekshirgichidan foydalaning. Bu asl nashrga asoslangan:

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

Agar I2C protokoli quyidagi bosqichlarning aksariyati uchun qabul qilingan bo'lsa, mukammal tushuntirish uchun asosiy tushuncha:

learn.sparkfun.com/tutorials/i2c

Har qanday aniq savollar bo'lsa, menga bemalol so'rang, va men kelajakda bu savolga ko'proq tegishli ma'lumotlarni qo'shishga harakat qilaman. Bu to'liq emas, lekin yaxshi boshlanish nuqtasi bo'lishi kerak.

Arduino -ning ba'zi demo -kodlari taqdim etilgan, lekin iltimos, buni faqat ma'lumot sifatida qabul qiling, chunki oddiy 5V Arduino -ni o'zgartirishsiz ishlatish mumkin emas.

1 -qadam: mavjud sensorlar tafsilotlari

Sensor tafsilotlari
Sensor tafsilotlari

Thrustmaster Wathog gaz kelebeği bilan birga kelgan ministick o'ldirish sensori, boshqa mahsulotlarning eng katta kamchiliklaridan biri sifatida tanilgan. Ko'p yillar davomida odamlar uni yaxshiroq narsa bilan almashtirishga urinishgan, lekin ko'pchilik u ishlatadigan raqamli I2C protokoli bilan aloqa qilishda qiyinchiliklarga duch kelgan.

Warthog gaz kelebeğinde ishlatiladigan aniq sensor N35P112 - EasyPoint bo'lib, u AMS tomonidan ishlab chiqarilgan AS5013 zal effektli sensori IC dan foydalanadi.

Tafsilotli ro'yxat:

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

Qizig'i shundaki, qurilma bir vaqtlar Sparkfun tomonidan ajratilgan modul sifatida mavjud edi:

www.sparkfun.com/products/retired/10835

Sensor mobil telefonlar kabi navigatsiya dasturlari uchun mo'ljallangan va juda arzon. Menimcha, qariyb 500 dollar bo'lgan narsada qabul qilinishi mumkin emas.

2 -qadam: Pinout

Pinout
Pinout

Sensor, 5 -gachasi ulagich orqali, o'ng qo'lidagi gaz kelebeğindeki PCBga ulanadi.

Pinout quyidagicha:

  1. Vcc +3.3VDC (

    Kengashning boshqa tomonida, ulagichning orqasida, chiziqli regulyator tomonidan 5V dan mahalliy tartibga solingan, 20 mA atrofida bo'lishi kerak, lekin men buni hech qachon sinab ko'rmaganman)

  2. I2C SDA
  3. I2C SCL
  4. GND
  5. 1 -tugma (odatda baland, 5V ichki tortish)

3 -qadam: Protokol tavsifi

Protokol tavsifi
Protokol tavsifi

Sensor 0x41 I2C manzilida ishlaydi - hamma yozish yoki o'qish buyruqlari shu manzildan boshlanadi.

Gaz kelebeği kompyuterga ulanganda, I2C avtobusida 0x40 manziliga 250 millimetrga yaqin preambula bo'ladi, menimcha, bu sensorning boshqa versiyasi yoki shunga o'xshash narsa uchun, lekin bu bizga tegishli emas.

Oddiy foydalanishda I2C avtobusida yuborilgan ma'lumotlar quyida keltirilgan, bu gaz kelebeği bilan gaplashish uchun mikrokontrollerimiz tomonidan taqlid qilinishi kerak.

O'rnatish - bu ma'lumotlar, USB ulangandan keyin, taxminan 500 ms keyin, bir marta yuboriladi, asl sensori ishga tushadi.

Asosiy yozish: 0x0F (Boshqaruv registri 1)

Ma'lumotlar: 0x02 0b0000 0010 (yumshoq tiklashni boshlaydi)

Asosiy yozish: 0x0F (Boshqaruv registri 1)

Master o'qish: 0xF1 0b1111 0001 (11110000 ga qaytariladi, lsb 1 haqiqiy ma'lumotlarni o'qishga tayyorligini bildiradi. Biz haqiqiy qul qurilmasi sifatida tan olinishi uchun bu buyruqqa to'g'ri javob berishimiz kerak)

Asosiy yozish: 0x2E (nazorat registri 2)

Ma'lumotlar: 0x86 (bu faqat magnitning asl sensordagi yo'nalishini belgilaydi)

Asosiy yozish: 0x0F (Boshqaruv registri 1)

Ma'lumotlar: 0x 80 0b1000 0000 (Qurilmani bo'sh rejimga o'rnatadi (avtomatik o'lchash, kam quvvat rejimida emas))

Loop: Sensor ma'lumotlarini olish uchun bu 100 Gts atrofida takrorlanadi.

Asosiy yozish: 0x10 (X registr)

Master Read: (qul X ma'lumotlarini yuboradi, 2 ning to'ldiruvchi 8 bitli qiymati)

Asosiy yozish: 0x11 (Y registr)

Master o'qish: (qul Y ma'lumotlarini yuboradi, 2 ning to'ldiruvchi 8 bitli qiymati)

Mantiq analizatoridan protokol dampining tegishli qismi:

[0x82] + ACK -ga yozishni sozlash

0x0F + ACK

0x02 + ACK

[0x82] + ACK -ga yozishni sozlash

0x0F + ACK

O'qishni [0x83] + ACK ga sozlang

0xF1 + NAK

[0x82] + ACK -ga yozishni sozlash

0x2E + ACK

0x86 + ACK

[0x82] + ACK -ga yozishni sozlash

0x0F + ACK

0x80 + ACK

[0x82] + ACK -ga yozishni sozlash

0x10 + ACK

O'qishni o'rnatish [0x83] + ACK 0xFC + NAK

O'rnatish [0x82] + ACK 0x11 + ACK ga yozing

O'qishni [0x83] + ACK 0xFF + NAK ga sozlash

4 -qadam: Arduino kodi

Arduino kodi
Arduino kodi

Sensorni simulyatsiya qilish uchun biriktirilgan Arduino kodidan foydalanish mumkin.

E'tibor bering: Arduino -ning ko'pgina platalari 5V ishlaydi, bu sizning joystikka shikast etkazmaslik uchun ishlash uchun 3.3V mos keladigan yoki o'zgartirilgan taxtaga muhtoj.

5 -qadam: Kalibrlash

Kalibrlash
Kalibrlash

Yangi sensori o'rnatilgandan so'ng, gaz kelebeği sozlanishi kerak bo'ladi.

Gazni kalibrlash uchun siz sozlagichni sozlaysiz. Buni turli manbalardan yuklab olish mumkin, masalan:

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

Derazalarni kalibrlashdan foydalanmang.

Moddan maksimal darajada foydalanish uchun siz sozlamalar konfiguratsiya faylidagi bir nechta qiymatlarni o'zgartirishingiz kerak.

O'zgartirish:

Standart_DZ_SX = 0x10;

Standart_DZ_SY = 0x10;

A10_calibration.txt satrlari:

Standart_DZ_SX = 0x01;

Standart_DZ_SY = 0x01;

Bu o'ldirish zonasidagi o'lik zonaga 10 dan 1 gacha o'zgaradi va boshqaruvni ancha yaxshi qiladi. Siz bu sozlama bilan o'ynashingiz mumkin, so'ngra qayta sozlang va sizga eng yoqqanini ko'rishingiz mumkin.

Tavsiya: