Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Construye un cuadrante de acelerador personalizado y rueda de trim para MS Flight Simulator con Arduino Leonardo e impresión 3D

Componentes y suministros

Componente Descripción Cantidad
Arduino Leonardo Un Leonardo o Micro es adecuado para este proyecto, hasta 6 controles posibles por cada Arduino 1
Cable de conexión 3 cables por módulo 3
Potenciómetro rotativo 50k 1 por módulo (detalles en la sección de historia) 1

Herramientas y máquinas necesarias

Aplicaciones y servicios en línea

Sobre el proyecto

Introducción

Tras actualizar mi PC para ejecutar Microsoft Flight Simulator 2020, me inspiré para mejorar los controles que utilizaba. Un teclado no ofrece la sensación adecuada para volar y quería mejorar la experiencia sin dedicar mucho espacio ni dinero a un cockpit completo ni a controles comerciales.

Construye un cuadrante de acelerador personalizado y rueda de trim para MS Flight Simulator con Arduino Leonardo e impresión 3D

Diseño

Me puse a diseñar en CAD un conjunto de controles que pudiera fabricar con mis herramientas y que diera una experiencia razonable de lo que imagino que se siente al volar un avión real (nunca he tocado los controles de un avión, así que me basé en mi imaginación).

Decidí que quería palancas individuales para acelerador, flaps, tren de aterrizaje y una rueda de trim de elevador. Como vuelo principalmente aviones ligeros monomotor en el simulador, me centré en ese tipo de aeronaves.

La rueda de trim fue el mayor reto de diseño y me llevó varios bocetos durante muchos días hasta lograr un diseño que proporcionara el aspecto y la sensación deseados.

Construye un cuadrante de acelerador personalizado y rueda de trim para MS Flight Simulator con Arduino Leonardo e impresión 3D
Construye un cuadrante de acelerador personalizado y rueda de trim para MS Flight Simulator con Arduino Leonardo e impresión 3D
Construye un cuadrante de acelerador personalizado y rueda de trim para MS Flight Simulator con Arduino Leonardo e impresión 3D

Construcción

Todas las piezas se imprimieron en 3D con ABS en mi impresora UP!, luego se pintaron y cablearon a un Arduino, empezando con un Leonardo y luego cambiando a un Micro. El objetivo era obtener una unidad plug-and-play que se pueda guardar fácilmente cuando no se use.

Piezas

Lista de piezas impresas en 3D

Cada módulo de palanca requiere:

Cada módulo de rueda requiere:

Las piezas de la caja trasera pueden usarse para alojar el Arduino y el cableado.

Conclusión

Una construcción muy agradable, muy sencilla desde el punto de vista de la programación; el verdadero reto fue el diseño, especialmente la rueda de trim y conseguir la sensación adecuada.

Código

Quadrant.ino

Utiliza la variable de configuración y el monitor serie para encontrar los valores de punto final de cada potenciómetro, introdúcelos en el array axisLimits.

#include <Joystick.h>
Joystick_ Joystick;

// Valores máximos y mínimos de analogRead para cada eje
// Se traducen a un rango 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};

// Activar/desactivar ejes
bool a0Used = true;
bool a1Used = true;
bool a2Used = true;
bool a3Used = true;
bool a4Used = false;
bool a5Used = false;

// Modo configuración: imprime valores en monitor serie
// int setting = -1; // sin impresión
// int setting = 2;  // valores 0-5, imprime valores del pin
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){
  // Traduce valores a rango 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);
}

Piezas personalizadas y envolventes

Archivo STEP con todas las piezas: released_u3k8QjPXzJ.stp

Esquemáticos

Para añadir más controles, conecta 5V y GND y usa los pines A1 a A5.

Archivo: quadrant_ZkMygPyRiE.fzz

Proceso de manufactura

  1. Crea Animaciones y Juegos en LCD 16×2 con Arduino UNO
  2. Construye un Voltímetro Inteligente con Arduino y Smartphone – Proyecto DIY Fácil
  3. Registrador de Temperatura y Humedad con Arduino, DHT11 y Ethernet Shield
  4. Rueda de Trimado Compacta para FlightGear con Arduino Nano: Control Analógico DIY
  5. Control Arduino UNO desde Python 3 – Envío de Comandos y Demo LED
  6. Autómatas Celulares en Tiempo Real con Arduino y Pantalla OLED 128x64
  7. Construye una Radio FM Compacta con Arduino Nano y RDA5807M
  8. Sistema de control de asistencia RFID en tiempo real con Arduino y Google Sheets
  9. Integración IoT: Control Remoto de Arduino mediante Apps UWP Windows 10
  10. MKR1000 con DHT22: Monitorización de Temperatura y Humedad en Tiempo Real a Azure
  11. Equilibrado vs. Alineación de Ruedas: Lo Que Necesitas Saber