Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Construa um Quadrante de Acelerador Personalizado e Roda de Trim para MS Flight Simulator com Arduino Leonardo e Impressão 3D

Componentes e Materiais

Arduino Leonardo Um Leonardo ou Micro será adequado para este projeto, até 6 controles possíveis em cada Arduino 1
Fio de Conexão 3 fios por módulo 3
Potenciômetro Rotativo 50k 1 por módulo (detalhes na seção do projeto) 1

Ferramentas e Máquinas Necessárias

Aplicativos e Serviços Online

Sobre o Projeto

Introdução

Após atualizar meu PC para rodar o MS FS2020, fiquei inspirado a melhorar os controles que utilizava. Um teclado não proporciona a sensação adequada para voar e eu queria aprimorar a experiência para algo melhor. Não sou um simulador de voo em tempo integral e não posso dedicar muito espaço ou dinheiro para construir um cockpit completo ou comprar um conjunto de controles pronto.

Construa um Quadrante de Acelerador Personalizado e Roda de Trim para MS Flight Simulator com Arduino Leonardo e Impressão 3D

Design

Projetei um conjunto de controles em CAD que pudessem ser fabricados com as ferramentas que tenho e que proporcionassem uma experiência razoável do que imagino ser os controles de um avião real (nunca toquei nos controles de um avião, então baseei-me no que penso que seriam).

Decidi que os controles desejados seriam alavancas únicas para acelerador, flaps, trem de pouso e uma roda de trim de profundor. Como voo principalmente com pequenos aviões monomotores no simulador, foquei-me nisso.

A roda de trim foi a mais desafiadora de projetar e levou vários esboços ao longo de muitos dias para chegar a um design que proporcionasse a aparência e a sensação desejadas.

Construa um Quadrante de Acelerador Personalizado e Roda de Trim para MS Flight Simulator com Arduino Leonardo e Impressão 3D
Construa um Quadrante de Acelerador Personalizado e Roda de Trim para MS Flight Simulator com Arduino Leonardo e Impressão 3D
Construa um Quadrante de Acelerador Personalizado e Roda de Trim para MS Flight Simulator com Arduino Leonardo e Impressão 3D

Construção

Todas as peças foram impressas em 3D com ABS na minha impressora UP!, depois pintadas e conectadas a um Arduino, inicialmente um Leonardo e depois trocado por um Micro. O objetivo era obter uma unidade plug-and-play que pudesse ser guardada facilmente quando não estivesse em uso.

Peças

Lista de Peças Impressas em 3D

Cada módulo de alavanca requer:

Cada módulo de roda requer:

Peças da caixa traseira podem ser usadas para abrigar o Arduino e a fiação.

Conclusão

Uma construção muito agradável, muito fácil do ponto de vista da programação; o verdadeiro desafio foi o design, especialmente a roda de trim e conseguir a sensação correta.

Código

Quadrant.ino

#include <Joystick.h>
Joystick_ Joystick;

// Coloque os valores máximos e mínimos do analogRead nestes arrays
// Eles são traduzidos para uma faixa de 0 - 1023
int axisLimits0[] = {686, 338};
int axisLimits1[] = {345, 695};
int axisLimits2[] = {327, 678};
int axisLimits3[] = {342, 692};
int axisLimits4[] = {0, 1023};
int axisLimits5[] = {0, 1023};

// Ative ou desative eixos definindo estas variáveis
bool a0Used = true;
bool a1Used = true;
bool a2Used = true;
bool a3Used = true;
bool a4Used = false;
bool a5Used = false;

// Modo de configuração imprime o valor do pino e o valor traduzido no monitor serial
// int setting = -1; // sem impressão no monitor serial
// int setting = 2; // valores 0 - 5, imprime os valores dos pinos no monitor serial
int setting = -1;

void setup() {
  if(a0Used) pinMode(A0, INPUT);
  if(a1Used) pinMode(A1, INPUT);
  if(a2Used) pinMode(A2, INPUT);
  if(a3Used) pinMode(A3, INPUT);
  if(a4Used) pinMode(A4, INPUT);
  if(a5Used) pinMode(A5, INPUT);
  Joystick.begin();
  if(setting >= 0) Serial.begin(9600);
}

void loop() {
  int value = 0;
  int pos = 0;
  if(a0Used){
    value = analogRead(A0);
    pos = translateValue(value, axisLimits0[0], axisLimits0[1]);
    Joystick.setThrottle(pos);
    if(setting == 0) settingPrint(value, pos);
  }
  if(a1Used){
    value = analogRead(A1);
    pos = translateValue(value, axisLimits1[0], axisLimits1[1]);
    Joystick.setRxAxis(pos);
    if(setting == 1) settingPrint(value, pos);
  }
  if(a2Used){
    value = analogRead(A2);
    pos = translateValue(value, axisLimits2[0], axisLimits2[1]);
    Joystick.setRyAxis(pos);
    if(setting == 2) settingPrint(value, pos);
  }
  if(a3Used){
    value = analogRead(A3);
    pos = translateValue(value, axisLimits3[0], axisLimits3[1]);
    Joystick.setRzAxis(pos);
    if(setting == 3) settingPrint(value, pos);
  }
  if(a4Used){
    value = analogRead(A4);
    pos = translateValue(value, axisLimits4[0], axisLimits4[1]);
    Joystick.setXAxis(pos);
    if(setting == 4) settingPrint(value, pos);
  }
  if(a5Used){
    value = analogRead(A5);
    pos = translateValue(value, axisLimits5[0], axisLimits5[1]);
    Joystick.setYAxis(pos);
    if(setting == 5) settingPrint(value, pos);
  }
  delay(5);
}

int translateValue(int v, int f1, int f2){
  // Traduz valores para uma faixa de 0 - 1023
  int result = 0;
  int start = 0;
  float range = 0;
  if(f1 < f2){
    start = f1;
    range = f2 - f1;
  } else{
    start = f2;
    range = f1 - f2;
  }
  result = (v - start) * (1023 / range);
  if(result < 0) result = 0;
  if(result > 1023) result = 1023;
  return result;
}

void settingPrint(int value, int pos){
  Serial.print(value);
  Serial.print(" ");
  Serial.println(pos);
}

Peças Personalizadas e Gabinetes

Arquivo STEP contendo todas as peças: released_u3k8QjPXzJ.stp

Esquemáticos

Para adicionar mais controles, conecte 5V e GND e use os pinos A1 a A5.

Arquivo Fritzing: quadrant_ZkMygPyRiE.fzz

Processo de manufatura

  1. Crie Animações e Jogos Envolventes em LCD com Arduino UNO
  2. Construa um Voltímetro Inteligente com Arduino e Smartphone – Projeto DIY Fácil
  3. Registrador de Temperatura e Umidade com Arduino, DHT11 e Ethernet Shield
  4. Controle de Trim Tab para FlightGear com Arduino Nano: Roda Analógica Compacta
  5. Python 3 para Arduino UNO: Controle de Comandos Fácil e Demo com LED
  6. Autômatos Celulares em Tempo Real no Arduino com Display OLED 128x64
  7. Construa um Rádio FM Compacto com Arduino Nano e RDA5807M
  8. Sistema de Presença em Tempo Real com RFID, Arduino e Google Sheets
  9. Integração IoT: Controle Remoto de Arduino via Apps UWP Windows 10
  10. Balanceamento vs. Alinhamento de Rodas: O Que Você Precisa Saber