Índice:

Atualização do sensor de giro do Thrustmaster Warthog I2C: 5 etapas
Atualização do sensor de giro do Thrustmaster Warthog I2C: 5 etapas

Vídeo: Atualização do sensor de giro do Thrustmaster Warthog I2C: 5 etapas

Vídeo: Atualização do sensor de giro do Thrustmaster Warthog I2C: 5 etapas
Vídeo: Thrustmaster Warthog Slew Upgrade 2024, Setembro
Anonim
Atualização do sensor de giro do Thrustmaster Warthog I2C
Atualização do sensor de giro do Thrustmaster Warthog I2C

Este é um guia básico sobre como fazer a interface com o protocolo I2C usado no sensor de rotação do acelerador ThrustmasterWarthog. Isso pode ser usado para atualizar do ministick padrão bastante inútil para algo melhor, mas ainda usando o controlador USB padrão na unidade de aceleração. Isso é baseado em uma postagem original em:

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

Um entendimento básico se o protocolo I2C é assumido para a maioria das etapas a seguir, para uma explicação excelente, vá para:

learn.sparkfun.com/tutorials/i2c

Qualquer dúvida específica, sinta-se à vontade para me perguntar, e tentarei acrescentar a essa intratável no futuro informações mais relevantes. Isso não está de forma alguma completo, mas deve ser um bom ponto de partida.

Algum código de demonstração do Arduino é fornecido, mas por favor, tome-o apenas como referência, pois um Arduino 5V normal não pode ser usado sem modificação.

Etapa 1: Detalhes do Sensor Existente

Detalhes do sensor existente
Detalhes do sensor existente

O sensor de rotação ministick que vem com o thrustmaster Wathog throttleé bem conhecido por ser uma das maiores fraquezas com um produto excelente. Tem havido uma série de tentativas de substituí-lo por algo melhor ao longo dos anos, mas a maioria se deparou com as dificuldades de interface com o protocolo digital I2C usado por ele.

O sensor exato usado no acelerador Warthog é o N35P112 - EasyPoint, que usa o sensor de efeito hall AS5013 IC da AMS.

Ficha de dados:

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

Curiosamente, a unidade já estava disponível como um módulo de breakout pela Sparkfun:

www.sparkfun.com/products/retired/10835

O sensor destina-se a aplicações de navegação em coisas como telefones celulares e é extremamente barato. Na minha opinião, inaceitável em algo que custa quase US $ 500.

Etapa 2: Pinagem

Pinagem
Pinagem

O sensor se conecta ao PCB na unidade de aceleração à direita por meio de um conector micro de 5 pinos.

A pinagem é a seguinte:

  1. Vcc + 3,3 VDC (

    Regulado localmente de 5 V por um regulador linear do outro lado da placa, logo atrás do conector, deve ser bom para cerca de 20 mA, mas eu nunca testei isso de forma alguma)

  2. I2C SDA
  3. I2C SCL
  4. GND
  5. Botão 1 (normalmente alto, pullup interno de 5 V)

Etapa 3: Descrição do protocolo

Descrição do protocolo
Descrição do protocolo

O sensor operou no endereço I2C 0x41 - todos os comandos de escrita ou leitura começam com este endereço.

Quando o acelerador é conectado ao computador, há um preâmbulo de cerca de 250 ms no barramento I2C para o endereço 0x40, presumo que seja para uma versão de sensor diferente ou algo semelhante, mas não é relevante para nós.

Os dados enviados no barramento I2C em uso normal estão abaixo, isso deve ser simulado pelo nosso microcontrolador para falar com o acelerador.

Configuração - Esses dados são enviados uma vez, cerca de 500 ms após o USB ser conectado, para configurar o sensor original para uso.

Gravação Mestre: 0x0F (Registro de Controle 1)

Dados: 0x02 0b0000 0010 (inicia uma reinicialização suave)

Gravação Mestre: 0x0F (Registro de Controle 1)

Leitura mestre: 0xF1 0b1111 0001 (redefine para 11110000, lsb 1 significa que os dados válidos estão prontos para serem lidos. Devemos responder a este comando corretamente para sermos reconhecidos como um dispositivo escravo válido)

Gravação Mestre: 0x2E (Registro de Controle 2)

Dados: 0x 86 (isso apenas define a orientação do ímã no sensor original)

Gravação Mestre: 0x0F (Registro de Controle 1)

Dados: 0x 80 0b1000 0000 (define o dispositivo para o modo inativo (medição automática, não no modo de baixo consumo de energia))

Loop: Isso é repetido em cerca de 100 Hz para obter os dados do sensor.

Gravação mestre: 0x10 (registro X)

Leitura mestre: (o escravo envia dados X, complemento de 2 valor de 8 bits)

Gravação mestre: 0x11 (registro Y)

Leitura mestre: (o escravo envia dados Y, complemento de 2 valor de 8 bits)

Parte relevante do despejo de protocolo do analisador lógico:

Configuração de gravação em [0x82] + ACK

0x0F + ACK

0x02 + ACK

Configuração de gravação em [0x82] + ACK

0x0F + ACK

Configuração de leitura para [0x83] + ACK

0xF1 + NAK

Configuração de gravação em [0x82] + ACK

0x2E + ACK

0x86 + ACK

Configuração de gravação em [0x82] + ACK

0x0F + ACK

0x80 + ACK

Configuração de gravação em [0x82] + ACK

0x10 + ACK

Configuração de leitura para [0x83] + ACK 0xFC + NAK

Configuração de gravação em [0x82] + ACK 0x11 + ACK

Configuração de leitura para [0x83] + ACK 0xFF + NAK

Etapa 4: Código Arduino

Código Arduino
Código Arduino

O código do Arduino anexado pode ser usado para simular o sensor.

Observação: a maioria das placas Arduino funciona com 5V, isso precisa de uma placa compatível com 3,3V ou modificada para funcionar e evitar danos ao joystick.

Etapa 5: Calibração

Calibração
Calibração

Assim que seu novo sensor for instalado, o acelerador precisará ser calibrado.

Para calibrar o acelerador, você usará a ferramenta de calibração do acelerador. Isso pode ser baixado de várias fontes, como:

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

Não use a calibração do Windows.

Para obter o máximo de um mod, você precisa alterar alguns valores em seu arquivo de configuração de calibração.

Mudar o:

Standard_DZ_SX = 0x10;

Standard_DZ_SY = 0x10;

Linhas em A10_calibration.txt para:

Standard_DZ_SX = 0x01;

Standard_DZ_SY = 0x01;

Isso mudará para zona morta no controle de rotação de 10 para 1 e fornecerá um controle muito melhor. Você pode brincar com esta configuração e então recalibrar e ver o que você mais gosta.

Recomendado: