Оглавление:

Обновление датчика поворота Thrustmaster Warthog до I2C: 5 шагов
Обновление датчика поворота Thrustmaster Warthog до I2C: 5 шагов

Видео: Обновление датчика поворота Thrustmaster Warthog до I2C: 5 шагов

Видео: Обновление датчика поворота Thrustmaster Warthog до I2C: 5 шагов
Видео: Улучшение Thrustmaster Warthog Slew 2024, Июнь
Anonim
Обновление датчика поворота Thrustmaster Warthog до I2C
Обновление датчика поворота Thrustmaster Warthog до I2C

Это приблизительное руководство по взаимодействию с протоколом 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/Mintage-Position-Sens…

Интересно, что когда-то этот модуль был доступен в Sparkfun как прорывной модуль:

www.sparkfun.com/products/retired/10835

Датчик предназначен для навигационных приложений в таких вещах, как мобильные телефоны, и стоит очень дешево. На мой взгляд неприемлемо в том, что стоит почти 500 долларов.

Шаг 2: распиновка

Распиновка
Распиновка

Датчик подключается к печатной плате в правом блоке дроссельной заслонки через 5-контактный микроразъем.

Распиновка следующая:

  1. Vcc + 3,3 В постоянного тока (

    Локально регулируется от 5 В линейным регулятором на другой стороне платы, сразу за разъемом, должно быть около 20 мА, но я никоим образом не проверял это)

  2. I2C SDA
  3. I2C SCL
  4. GND
  5. Кнопка 1 (нормально высокий, внутреннее подтягивание 5 В)

Шаг 3: Описание протокола

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

Датчик работал с адресом I2C 0x41 - все команды записи или чтения начинаются с этого адреса.

Когда дроссельная заслонка подключена к компьютеру, на шине I2C есть преамбула около 250 мс для адреса 0x40, я предполагаю, что это для другой версии датчика или чего-то подобного, но для нас это не имеет отношения.

Данные, отправляемые по шине I2C при нормальном использовании, приведены ниже, это должно быть смоделировано нашим микроконтроллером, чтобы взаимодействовать с дроссельной заслонкой.

Настройка - эти данные отправляются один раз, примерно через 500 мс после подключения USB, чтобы настроить исходный датчик для использования.

Основная запись: 0x0F (управляющий регистр 1)

Данные: 0x02 0b0000 0010 (запускает мягкий сброс)

Основная запись: 0x0F (контрольный регистр 1)

Master Read: 0xF1 0b1111 0001 (сбрасывается на 11110000, lsb 1 означает, что действительные данные готовы к чтению. Мы должны правильно ответить на эту команду, чтобы быть распознанным как действительное ведомое устройство)

Основная запись: 0x2E (контрольный регистр 2)

Данные: 0x 86 (это просто устанавливает ориентацию магнита в исходном датчике)

Основная запись: 0x0F (контрольный регистр 1)

Данные: 0x 80 0b1000 0000 (Устанавливает устройство в режим ожидания (автоматическое измерение, а не в режиме низкого энергопотребления))

Цикл: это повторяется с частотой около 100 Гц для получения данных датчика.

Мастер записи: 0x10 (регистр X)

Master Read: (подчиненное устройство отправляет данные X, дополнительное 8-битное значение)

Мастер записи: 0x11 (регистр Y)

Master Read: (подчиненное устройство отправляет данные Y, дополнительное 8-битное значение)

Соответствующая часть дампа протокола из логического анализатора:

Настройка записи в [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 работают от 5 В, для этого требуется совместимая с 3,3 В или модифицированная плата, чтобы избежать повреждения джойстика.

Шаг 5: Калибровка

Калибровка
Калибровка

После того, как ваш новый датчик будет установлен, потребуется калибровка дроссельной заслонки.

Чтобы откалибровать дроссельную заслонку, воспользуйтесь инструментом калибровки дроссельной заслонки. Его можно загрузить из ряда источников, таких как:

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

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

Чтобы получить максимальную отдачу от мода, вам нужно изменить несколько значений в файле конфигурации калибровки.

Изменить:

Standard_DZ_SX = 0x10;

Standard_DZ_SY = 0x10;

Строки в A10_calibration.txt к:

Standard_DZ_SX = 0x01;

Standard_DZ_SY = 0x01;

Это изменит мертвую зону на элементе управления поворотом с 10 на 1 и даст гораздо лучший контроль. Вы можете поиграть с этой настройкой, а затем выполнить повторную калибровку и посмотреть, что вам больше всего нравится.

Рекомендуемые: