Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Flugsimulator-Ruderpedale selbst bauen: Schritt-für-Schritt DIY-Anleitung

Komponenten und Zubehör

Komponente Menge Hinweise
Arduino Nano R3 1 Alternative: Arduino UNO für Analogausgang
Arduino Micro 1 Für rein digitalen Ausgang (Windows 8/10, JoystickLibrary)
Arduino UNO 1 Alternative: Arduino Nano für Analogausgang
Digitales Potentiometer MCP41050 (SPI) 3 Einfach/dual, SPI-Schnittstelle
SS49E Hall-Effekt-Linearsensor 4 Oder ähnlich (z. B. AH3503) – kein Schalter, kein digitaler Sensor!

Über dieses Projekt

Update 2021: Die neue Version der Pedale besitzt ein HID-Interface und ein verbessertes Design. Das fortschrittliche Hall-Sensor-Modul ermöglicht sehr präzise Steuerung. Details auf meiner Website.

Hallo Flugsimulator-Enthusiasten! Ich habe Ruderpedale für einen Flugsimulator entwickelt, deren Kernfunktion ein Arduino übernimmt. Ich möchte diese Entwicklung mit euch teilen. Der Bau dauert etwa zwei Tage, die Dokumentation zwei Wochen. Daher habe ich mehrere Videos erstellt, die den Prozess detailliert zeigen.

Pedalbau

Der Arduino kann auf zwei Arten mit dem Flugsimulator verbunden werden:

Beide Methoden – Schaltungsbau und Sensorkonfiguration – werden in den verlinkten Videos gezeigt.

Sensoren und Elektronik

Ich freue mich über eure Meinungen zu diesem Design – bitte hinterlasst Kommentare.

Code: Analogausgang über digitale Potentiometer (MCP41050)

#include <SPI.h>

#define CS_RUDDER 10
#define CS_LEFT   8
#define CS_RIGHT  9

#define SENSOR_LEFT_PEDAL     A6
#define SENSOR_RIGHT_PEDAL    A5
#define SENSOR_RUDDER_LEFT    A0
#define SENSOR_RUDDER_RIGHT   A1

int val_left, val_right, remap_left, remap_right, rudder;
int val_brake_left, val_brake_right, remap_brake_left, remap_brake_right;
int tuning_rudder = 128;

void setup() {
  Serial.begin(9600);
  SPI.begin();
  pinMode(CS_RUDDER, OUTPUT);
  pinMode(CS_LEFT, OUTPUT);
  pinMode(CS_RIGHT, OUTPUT);
}

void loop() {
  // --------------------------------------------------------
  // RUDERPEDALE: -128 ... 0 ... +127
  // --------------------------------------------------------
  // Linker Rudersensor
  val_left = analogRead(SENSOR_RUDDER_LEFT);
  if (val_left <= 950) {
    remap_left = map(val_left, 30, 870, -128, 0);
  } else {
    remap_left = 0;
  }
  // Begrenzung
  if (remap_left > 0) remap_left = 0;
  if (remap_left < -128) remap_left = -128;

  // Rechter Rudersensor
  val_right = analogRead(SENSOR_RUDDER_RIGHT);
  if (val_right <= 950) {
    remap_right = map(val_right, 0, 820, 132, 0);
  } else {
    remap_right = 0;
  }
  if (remap_right < 0) remap_right = 0;
  if (remap_right > 127) remap_right = 127;

  rudder = remap_left + remap_right;

  // Nullpunkt-Abgleich (Trimmung)
  if (remap_left == 0) {
    tuning_rudder = tuning_rudder + 128;
  } else {
    tuning_rudder = abs(tuning_rudder - 128);
  }

  // --------------------------------------------------------
  // BREMSPEDALE
  // --------------------------------------------------------
  val_brake_left = analogRead(SENSOR_LEFT_PEDAL);
  if (val_brake_left <= 328) {
    remap_brake_left = map(val_brake_left, 200, 328, 0, 255);
  } else {
    remap_brake_left = 255;
  }
  if (remap_brake_left < 0) remap_brake_left = 0;

  val_brake_right = analogRead(SENSOR_RIGHT_PEDAL);
  if (val_brake_right <= 328) {
    remap_brake_right = map(val_brake_right, 200, 328, 0, 255);
  } else {
    remap_brake_right = 255;
  }
  if (remap_brake_right < 0) remap_brake_right = 0;

  // --------------------------------------------------------
  // DATEN AN DIGITALE POTENTIOMETER SENDEN (SPI)
  // --------------------------------------------------------
  // Ruder
  digitalWrite(CS_RUDDER, LOW);
  SPI.transfer(0b00010001); // Befehl: Wiper 0 setzen
  SPI.transfer(tuning_rudder);
  digitalWrite(CS_RUDDER, HIGH);
  delay(5);

  // Linke Bremse
  digitalWrite(CS_LEFT, LOW);
  SPI.transfer(0b00010001);
  SPI.transfer(remap_brake_left);
  digitalWrite(CS_LEFT, HIGH);
  delay(5);

  // Rechte Bremse
  digitalWrite(CS_RIGHT, LOW);
  SPI.transfer(0b00010001);
  SPI.transfer(remap_brake_right);
  digitalWrite(CS_RIGHT, HIGH);
  delay(5);
}

Schaltpläne

Flugsimulator-Ruderpedale selbst bauen: Schritt-für-Schritt DIY-Anleitung

Flugsimulator-Ruderpedale selbst bauen: Schritt-für-Schritt DIY-Anleitung

Flugsimulator-Ruderpedale selbst bauen: Schritt-für-Schritt DIY-Anleitung

Herstellungsprozess

  1. Arduino Nano Flight Simulator 2020 Kontrollpanel – LCD & CDI Display
  2. Intelligentes Voltmeter mit Arduino & Smartphone bauen – Einfaches DIY-Projekt
  3. DIY VR-Skateboard mit Arduino, Google Cardboard und Bluetooth bauen
  4. DIY Radionik EMR-Behandlungsgerät mit Arduino Nano – Kritische Betrachtung
  5. Smartes Temperatur-Monitoring für Schulen – Arduino, Raspberry Pi, Sigfox & ThingSpeak
  6. Effiziente 8-Bit-I/O-Port-Bibliothek für Arduino – Digitale Steuerung erweitern
  7. Arduino 64-Tasten-Prototyp-Keyboard-Matrix – Eigenes Keyboard mit Schieberegistern bauen
  8. DIY 2D-Motion-Rennsimulator mit Arduino Nano & SG90 Servos
  9. DC-Motor-Steuerung meistern: Experten-Tipps & Tricks mit PID-Regler
  10. Kostengünstiger Blitzdetektor mit Arduino Uno – VLF-EMF-Sensor