Spisu treści:

Aktualizacja Thrustmaster Warthog Slew Sensor I2C: 5 kroków
Aktualizacja Thrustmaster Warthog Slew Sensor I2C: 5 kroków

Wideo: Aktualizacja Thrustmaster Warthog Slew Sensor I2C: 5 kroków

Wideo: Aktualizacja Thrustmaster Warthog Slew Sensor I2C: 5 kroków
Wideo: Обновление прошивки Thrustmaster | Расположение программы обновления и как это сделать 2024, Wrzesień
Anonim
Aktualizacja Thrustmaster Warthog Slew Sensor I2C
Aktualizacja Thrustmaster Warthog Slew Sensor I2C

To jest przybliżony przewodnik dotyczący interfejsu z protokołem I2C używanym w czujniku obrotu przepustnicy ThrustmasterWarthog. Można to wykorzystać do uaktualnienia z dość bezużytecznego standardowego minidrążka do czegoś lepszego, ale nadal przy użyciu standardowego kontrolera USB w jednostce przepustnicy. Jest to oparte na oryginalnym poście na:

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

Podstawowe zrozumienie, czy protokół I2C jest zakładany dla większości poniższych kroków, aby uzyskać doskonałe wyjaśnienie, przejdź do:

learn.sparkfun.com/tutorials/i2c

Jeśli masz jakieś konkretne pytania, nie wahaj się zadać mi, a postaram się dodać do tych trudnych w przyszłości bardziej istotnych informacji. To wcale nie jest kompletne, ale powinno być dobrym punktem wyjścia.

Dostarczono trochę kodu demonstracyjnego Arduino, ale należy to traktować tylko jako odniesienie, ponieważ normalne Arduino 5 V nie może być używane bez modyfikacji.

Krok 1: Szczegóły istniejącego czujnika

Istniejące szczegóły czujnika
Istniejące szczegóły czujnika

Czujnik obrotu ministick, który jest dostarczany z przepustnicą Thrustmaster Wathog, jest dobrze znany jako jedna z największych słabości tego doskonałego produktu. Przez lata ludzie podejmowali wiele prób zastąpienia go czymś lepszym, ale większość napotkała trudności w połączeniu z używanym przez niego protokołem cyfrowym I2C.

Dokładny czujnik zastosowany w przepustnicy Warthog to N35P112 - EasyPoint, który wykorzystuje układ scalony czujnika Halla AS5013 firmy AMS.

Arkusz danych:

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

Co ciekawe, urządzenie było kiedyś dostępne jako moduł breakout przez Sparkfun:

www.sparkfun.com/products/retired/10835

Czujnik jest przeznaczony do zastosowań nawigacyjnych w takich urządzeniach, jak telefony komórkowe i jest niezwykle tani. Moim zdaniem nie do zaakceptowania w czymś, co kosztuje blisko 500 dolarów.

Krok 2: Pinout

Pinout
Pinout

Czujnik łączy się z płytką drukowaną w prawej jednostce przepustnicy za pomocą złącza micro 5 pin.

Pinout wygląda następująco:

  1. Vcc +3,3 V DC (

    Lokalnie regulowany z 5V za pomocą regulatora liniowego po drugiej stronie płytki, tuż za złączem, powinno być dobre około 20mA, ale w żaden sposób tego nie testowałem)

  2. I2C SDA
  3. I2C SCL
  4. GND
  5. Przycisk 1 (normalnie wysoki, wewnętrzne podciąganie 5 V)

Krok 3: Opis protokołu

Opis protokołu
Opis protokołu

Czujnik działał na adresie I2C 0x41 - wszystkie polecenia zapisu lub odczytu zaczynają się od tego adresu.

Gdy przepustnica jest podłączona do komputera, na magistrali I2C jest preambuła około 250ms do adresu 0x40, zakładam, że jest to dla innej wersji czujnika lub czegoś podobnego, ale to nie dotyczy nas.

Dane wysyłane przez magistralę I2C w normalnym użytkowaniu są poniżej, musi to być symulowane przez nasz mikrokontroler, aby rozmawiać z przepustnicą.

Konfiguracja - te dane są wysyłane raz, około 500 ms po podłączeniu USB, w celu skonfigurowania oryginalnego czujnika do użytku.

Zapis główny: 0x0F (rejestr kontrolny 1)

Dane: 0x02 0b0000 0010 (inicjuje miękki reset)

Zapis główny: 0x0F (rejestr kontrolny 1)

Odczyt główny: 0xF1 0b1111 0001 (resetuje się do 11110000, lsb 1 oznacza, że prawidłowe dane są gotowe do odczytu. Musimy poprawnie odpowiedzieć na to polecenie, aby zostać rozpoznanym jako prawidłowe urządzenie podrzędne)

Zapis główny: 0x2E (rejestr kontrolny 2)

Dane: 0x 86 (to ustawia tylko orientację magnesu w oryginalnym czujniku)

Zapis główny: 0x0F (rejestr kontrolny 1)

Dane: 0x 80 0b1000 0000 (Ustawia urządzenie w trybie bezczynności (pomiar automatyczny, nie w trybie niskiego poboru energii))

Pętla: To jest powtarzane przy około 100 Hz, aby uzyskać dane z czujnika.

Zapis główny: 0x10 (rejestr X)

Master Read: (slave wysyła dane X, 8-bitowa wartość uzupełnienia dwójki)

Zapis główny: 0x11 (rejestr Y)

Master Read: (slave wysyła dane Y, 8-bitowa wartość uzupełnienia dwójki)

Odpowiednia część zrzutu protokołu z analizatora logicznego:

Konfiguracja Zapisz do [0x82] + ACK

0x0F + ACK

0x02 + POTW.

Konfiguracja Zapisz do [0x82] + ACK

0x0F + ACK

Konfiguracja Czytaj do [0x83] + ACK

0xF1 + NAK

Konfiguracja Zapisz do [0x82] + ACK

0x2E + ACK

0x86 + POTWIERDZENIE

Konfiguracja Zapisz do [0x82] + ACK

0x0F + ACK

0x80 + POTWIERDZENIE

Konfiguracja Zapisz do [0x82] + ACK

0x10 + POTWIERDZENIE

Konfiguracja Czytaj do [0x83] + ACK 0xFC + NAK

Konfiguracja Zapisz do [0x82] + ACK 0x11 + ACK

Konfiguracja Czytaj do [0x83] + ACK 0xFF + NAK

Krok 4: Kod Arduino

Kod Arduino
Kod Arduino

Dołączony kod Arduino można wykorzystać do symulacji czujnika.

Uwaga: większość płyt Arduino działa z napięciem 5 V, wymaga to kompatybilnej lub zmodyfikowanej płyty 3.3 V, aby uniknąć uszkodzenia joysticka.

Krok 5: Kalibracja

Kalibrowanie
Kalibrowanie

Po zamontowaniu nowego czujnika przepustnica będzie wymagała kalibracji.

Aby skalibrować przepustnicę, użyjesz narzędzia do kalibracji przepustnicy. Można to pobrać z wielu źródeł, takich jak:

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

Nie używaj kalibracji systemu Windows.

Aby jak najlepiej wykorzystać mod, musisz zmienić kilka wartości w pliku konfiguracyjnym kalibracji.

Zmienić:

Standardowy_DZ_SX = 0x10;

Standardowy_DZ_SY = 0x10;

Wiersze w A10_calibration.txt do:

Standardowy_DZ_SX = 0x01;

Standardowy_DZ_SY = 0x01;

Zmieni się to na martwą strefę kontroli slew z 10 na 1 i da znacznie lepszą kontrolę. Możesz bawić się tym ustawieniem, a następnie ponownie skalibrować i zobaczyć, co lubisz najbardziej.

Zalecana: