Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Bangun Quadrant Throttle Kustom & Roda Trim untuk MS Flight Simulator dengan Arduino Leonardo & Cetak 3D

Komponen dan Perlengkapan

Alat dan Mesin yang Diperlukan

Aplikasi dan Layanan Online

Tentang Proyek Ini

Pengantar

Setelah memperbarui PC saya agar dapat menjalankan MS FS2020, saya terinspirasi untuk meningkatkan kontrol yang saya gunakan. Keyboard tidak memberikan sensasi yang tepat untuk terbang, dan saya ingin meningkatkan pengalaman menjadi lebih baik. Saya bukan flight simmer full-time dan tidak mampu menyediakan ruang atau uang untuk membuat cockpit penuh atau bahkan rangkaian kontrol yang dibeli.

Desain

Saya merancang rangkaian kontrol dalam CAD yang dapat dibuat dengan alat yang saya miliki dan memberikan pengalaman yang wajar sesuai dengan yang saya bayangkan seperti kontrol pesawat nyata. Saya pernah menyentuh kontrol pesawat, jadi desain ini berdasarkan apa yang saya pikir akan terlihat.

Saya memutuskan kontrol yang diinginkan adalah beberapa lever tunggal untuk throttle, flaps, landing gear, dan roda trim elevator. Saya sebagian besar terbang dengan pesawat kecil ringan mesin tunggal dalam simulasi, jadi itulah yang menjadi fokus saya.

Roda trim adalah yang paling sulit dirancang dan membutuhkan beberapa ide sketsa selama beberapa hari untuk menghasilkan desain yang saya pikir akan memberikan tampilan dan sensasi yang diinginkan.

Pembuatan

Semua bagian dicetak 3D dalam ABS pada printer UP! saya, kemudian dicat dan dihubungkan ke Arduino, Leonardo untuk memulai lalu diganti dengan Micro. Untuk menghasilkan unit plug and play yang dapat disimpan dengan mudah saat tidak digunakan.

Bagian-bagian

Daftar Bagian Cetak 3D

Setiap modul lever membutuhkan:

Setiap modul roda membutuhkan:

Bagian back box dapat digunakan untuk menempatkan Arduino dan kabeling.

Kesimpulan

Pembuatan yang sangat menyenangkan, sangat mudah dari segi kode, tantangan nyata dalam pembuatan ini adalah desain, terutama roda trim dan mendapatkan sensasi yang tepat.

Kode

Quadrant.inoArduino

Gunakan variabel setting dan serial monitor untuk menemukan nilai akhir setiap potensiometer, masukkan ke dalam array axisLimits.

#include <Joystick.h>
Joystick_ Joystick;
// put the max and min values from the analogRead in these arrays
// these are translated to a range of 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};
// turn axes on or off by setting these variables
bool a0Used = true;
bool a1Used = true;
bool a2Used = true;
bool a3Used = true;
bool a4Used = false;
bool a5Used = false;
// setting mode prints the pin value and translated value to the serial monitor
// int setting = -1; // no printing to the serial monitor
// int setting = 2; // values 0 - 5, print the pin values to the serial monitor
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){
  // translates values to a 0 - 1023 range
  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);
}

Bagian Kustom dan Enclosure

Satu tanpa tab jika Anda membutuhkannya. Satu yang saya gunakan. Sketchfab masih diproses. Berkas ini berisi semua bagian sebagai file STEP: released_u3k8QjPXzJ.stp

Skematik

Untuk menambahkan lebih banyak kontrol, hubungkan 5V dan GRD dan gunakan pin A1 hingga A5: quadrant_ZkMygPyRiE.fzz

Proses manufaktur

  1. Buat Animasi LCD dan Game Menarik dengan Arduino UNO
  2. Buat Voltmeter Cerdas dengan Arduino & Smartphone – Proyek DIY Mudah
  3. Pencatat Suhu & Kelembaban Arduino dengan DHT11 dan Ethernet Shield
  4. Buat Roda Trim Tab Analog Kompak untuk FlightGear dengan Arduino Nano
  5. Python 3 ke Arduino UNO: Kontrol Perintah Mudah dan Demo LED
  6. Bangun Automata Seluler Real-Time di Arduino dengan Layar OLED 128x64
  7. Membuat Radio FM Kompak dengan Arduino Nano dan RDA8057M
  8. Sistem Absensi RFID Real-Time dengan Arduino dan Google Sheets
  9. Integrasi IoT: Kontrol Jarak Jauh Arduino melalui Aplikasi Windows 10 UWP
  10. Penyetelan Roda vs. Posisi Roda: Hal yang Perlu Anda Ketahui