Съдържание:

Thrustmaster Warthog Slew Sensor I2C Надстройка: 5 стъпки
Thrustmaster Warthog Slew Sensor I2C Надстройка: 5 стъпки

Видео: Thrustmaster Warthog Slew Sensor I2C Надстройка: 5 стъпки

Видео: Thrustmaster Warthog Slew Sensor I2C Надстройка: 5 стъпки
Видео: Hardware Review: Delta Sim Electronics Thumbstick Upgrade für Thrustmaster HOTAS Warthog 2024, Ноември
Anonim
Thrustmaster Warthog Slew Sensor I2C Upgrade
Thrustmaster Warthog Slew Sensor I2C Upgrade

Това е грубо ръководство за това как да взаимодействате с протокола I2C, използван на сензора за дроселна клапа ThrustmasterWarthog. Това може да се използва за надграждане от сравнително безполезния стандартен министър към нещо по -добро, но все пак да се използва стандартният USB контролер в дроселната клапа. Това се основава на оригинален пост на:

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

Основно разбиране, ако протоколът I2C се приема за повечето от следните стъпки, за отлично обяснение отидете на:

learn.sparkfun.com/tutorials/i2c

Всички конкретни въпроси, не се колебайте да ме питате и аз ще се опитам да добавя към този неразрешим в бъдеще с по -подходяща информация. Това в никакъв случай не е пълно, но трябва да бъде добра отправна точка.

Предлага се демонстрационен код на Arduino, но моля, вземете го само като справка, тъй като нормален 5V Arduino не може да се използва без промяна.

Стъпка 1: Съществуващи подробности за сензора

Съществуващи подробности за сензора
Съществуващи подробности за сензора

Сензорът за изкривяване ministick, който се предлага с дросела Thrustmaster Wathog, е добре известен като една от най -големите слабости с иначе отличен продукт. През годините имаше редица опити на хората да го заменят с нещо по -добро, но повечето се сблъскват с трудностите при свързването с цифровия I2C протокол, използван от него.

Точният сензор, използван в дросела на Warthog, е N35P112 - EasyPoint, който използва сензора за холов ефект AS5013, произведен от AMS.

Информационен лист:

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

Интересното е, че устройството някога е било достъпно като пробивен модул от Sparkfun:

www.sparkfun.com/products/retired/10835

Сензорът е предназначен за навигационни приложения в неща като мобилни телефони и е изключително евтин. Според мен неприемливо в нещо, което струва близо 500 долара.

Стъпка 2: Pinout

Pinout
Pinout

Сензорът се свързва към печатната платка в дясната дроселова клапа чрез микро 5 -пинов конектор.

Раздаването е както следва:

  1. Vcc +3.3VDC (

    Локално регулиран от 5V от линеен регулатор от другата страна на платката, точно зад конектора, трябва да е добър до около 20mA, но по никакъв начин не съм тествал това)

  2. I2C SDA
  3. I2C SCL
  4. GND
  5. Бутон 1 (Нормално висок, вътрешен изход 5V)

Стъпка 3: Описание на протокола

Описание на протокола
Описание на протокола

Сензорът работи на I2C адрес 0x41 - всички команди за запис или четене започват с този адрес.

Когато дроселната клапа е свързана с компютъра, има преамбюл от около 250ms на I2C шината до адрес 0x40, предполагам, че това е за различна версия на сензора или нещо подобно, но не е от значение за нас.

Данните, изпратени на I2C шината при нормална употреба, са по -долу, това трябва да бъде симулирано от нашия микроконтролер, за да говори с дросела.

Настройка - Тези данни се изпращат веднъж, около 500 мс след свързването на USB, за да настроите оригиналния сензор за употреба.

Master Write: 0x0F (Контролен регистър 1)

Данни: 0x02 0b0000 0010 (инициира меко нулиране)

Master Write: 0x0F (Контролен регистър 1)

Главно четене: 0xF1 0b1111 0001 (нулира се до 11110000, lsb 1 означава, че валидните данни са готови за четене. Трябва да отговорим правилно на тази команда, за да бъдем разпознати като валидно подчинено устройство)

Master Write: 0x2E (Контролен регистър 2)

Данни: 0x 86 (това само задава ориентацията на магнита в оригиналния сензор)

Master Write: 0x0F (Контролен регистър 1)

Данни: 0x 80 0b1000 0000 (Поставя устройството в режим на готовност (автоматично измерване, не в режим на ниска мощност))

Цикъл: Това се повтаря на около 100Hz, за да се получат данни от сензора.

Master Write: 0x10 (X регистър)

Главно четене: (подчиненият изпраща X данни, 8 -битова стойност на 2 допълнени)

Master Write: 0x11 (Y регистър)

Главно четене: (подчиненият изпраща Y данни, 2 -та допълнена 8 -битова стойност)

Съответна част от протокола dump от логически анализатор:

Настройка Пишете на [0x82] + ACK

0x0F + ACK

0x02 + ACK

Настройка Пишете на [0x82] + ACK

0x0F + ACK

Настройка Прочетете до [0x83] + ACK

0xF1 + NAK

Настройка Пишете на [0x82] + ACK

0x2E + ACK

0x86 + ACK

Настройка Пишете на [0x82] + ACK

0x0F + ACK

0x80 + ACK

Настройка Пишете на [0x82] + ACK

0x10 + ACK

Настройка Прочетете до [0x83] + ACK 0xFC + NAK

Настройка Пишете на [0x82] + ACK 0x11 + ACK

Настройка Прочетете до [0x83] + ACK 0xFF + NAK

Стъпка 4: Arduino код

Кодът на Arduino
Кодът на Arduino

Приложеният код на Arduino може да се използва за симулиране на сензора.

Моля, обърнете внимание: Повечето платки на Arduino работят с 5V, това се нуждае от 3.3V съвместима или модифицирана платка, за да работи, за да избегне повреда на вашия джойстик.

Стъпка 5: Калибриране

Калибриране
Калибриране

След като вашият нов сензор е монтиран, дроселът ще се нуждае от калибриране.

За да калибрирате дросела, ще използвате инструмента за калибриране на дросела. Това може да бъде изтеглено от редица източници като:

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

Не използвайте калибриране на Windows.

За да извлечете максимума от мода, трябва да промените няколко стойности във вашия конфигурационен файл за калибриране.

Променете:

Standard_DZ_SX = 0x10;

Standard_DZ_SY = 0x10;

Редове в A10_calibration.txt до:

Standard_DZ_SX = 0x01;

Standard_DZ_SY = 0x01;

Това ще се промени в мъртва зона на контрола на забиване от 10 на 1 и ще даде много по -добър контрол. Можете да играете с тази настройка и след това да калибрирате отново и да видите какво ви харесва най -много.

Препоръчано: