Inhaltsverzeichnis:

Tauchfahrzeug - Gunook
Tauchfahrzeug - Gunook

Video: Tauchfahrzeug - Gunook

Video: Tauchfahrzeug - Gunook
Video: Mini Transformer Tauchfahrzeug für Spezialeinheiten 2024, Juli
Anonim
Tauchfahrzeug
Tauchfahrzeug
Tauchfahrzeug
Tauchfahrzeug

**************** DIESE ANLEITUNG IST NOCH EINE ARBEIT IN PROGRESS ****************

Dieses Instructable wurde in Erfüllung der Projektanforderung des Makecourse an der University of South Florida (www.makecourse.com) erstellt.

Dieses Instructable wird ein kurzer Überblick über die Schaffung des Tauchfahrzeugs sein, das ich für meine Makecourse-Klasse an der University of South Florida entworfen und gebaut habe. In diesem Instructable werde ich eine Stückliste, den Steuercode, den ich für das Arduino Uno erstellt habe, und einen Überblick darüber, wie man das Tauchboot zusammenbaut, bereitstellen.

Schritt 1: Materialien

Materialien
Materialien
Materialien
Materialien
Materialien
Materialien

Die verwendete Elektronik wo:

1x Arduino Uno

1x Möbius-Action-Kamera

1x Mobius Action Kamera USB-B auf A/V Kabel

1x Field View 777 Bildschirm

1x Turnigy Marine 50A ESC (elektronische Geschwindigkeitsregelung)

1x Turnigy Marine Programmierkarte

1x T-Motor Navigator 400kv

1x YEP 20A BEC (Batteriebeseitigungsschaltung)

6x Hobby King HK15139 wasserdichte Servos

2x parallele T-Verbinder y Kabelbäume

2x 18 Zoll Servoverlängerungskabel

6x 6 Zoll Servoverlängerungskabel

2x 1300mAh 3s Lipo-Akkus

2x 2500mAh 4s Lipo Akkus

1x Stromverteilerplatine mit 5V und 12V festen Ausgängen

Die Baumaterialien, bei denen:

1x 3/16 Zoll Sperrholzplatte

1x 6 Zoll ID ABS Versandrohr

1x Silikonschlauch

1x Dose Flex Seal

4x Spulen ABS 3D Drucker Filament

1x 24 Zoll Schubladenführung

Schrumpfschlauch

1x 10 Fuß Duraloc-Klettverschluss der Marke Scotch

1x JB Weld Kunststoff-Epoxy

1x Acryl-Überwachungskamera-Dome mit einem Durchmesser von 6,2 Zoll

2x IP68-Ethernet-Passthroughs

2x 24-Zoll-Cat6-Ethernet-Kabel

1x 200 Fuß Cat6 Ethernetkabel

Die verwendete Hardware war:

24x 1/2 Zoll Messing Holzschrauben

24x ------ Schrauben (im Lieferumfang der Servos enthalten)

Die verwendeten Werkzeuge:

Philips und Flachkopfschraubendreher

Inbusschlüsselsatz

Lötkolben

Heißluftpistole

3D-Drucker (ich habe einen Monoprice Maker Select Plus verwendet)

Schritt 2: Programmierung

Programmierung
Programmierung
Programmierung
Programmierung
Programmierung
Programmierung
Programmierung
Programmierung

Unten ist der Code, der erstellt wurde, um das Tauchboot zu steuern. Ich habe auch die.ino-Datei angehängt, damit sie heruntergeladen werden kann.

Dieser Code wurde für das Arduino Uno mit dem Arduino-Compiler erstellt.

/**********************************************************************************************************************************************************************

Autor: Jonah Powers Datum: 09.11.2018 Zweck: Steuercode für ferngesteuertes Unterwasserfahrzeug ***************************** ************************************************* ************************************************* ************************************ / #include // Einschließlich Servobibliothek Servo roll1; // Deklarieren von Rolle1 als Servo-Servorolle2; // Deklarieren von roll2 zu einem Servo Servo elev1; // Deklaration von elev1 zu einem Servo Servo elev2; // Elev2 als Servo deklarieren Servo yaw1; // Deklaration von yaw1 zu einem Servo-Servo yaw2; // Deklaration von yaw2 zu einem Servo Servo esc; // Esc als Servo deklarieren

int pot1 = 0; // Variable pot1 als Integer initialisieren und gleich 0 setzen int pot2 = 1; // Variable pot2 als Integer initialisieren und gleich 2 setzen int pot3 = 2; // Variable pot3 als Integer initialisieren und gleich 4 setzen int pot4 = 3; // Variable pot4 als Integer initialisieren und gleich 5 setzen int val1; //Variable val1 als Integer initialisieren int val2; //Variable val2 als Integer initialisieren int val3; //Variable val3 als Integer initialisieren int val4; //Variable val4 als Integer initialisieren int val5; //Variable val5 als Integer initialisieren int val6; //Variable val6 als Integer initialisieren int val7; //Variable val7 als Integer initialisieren int val8; // Variable val8 als Integer initialisieren int mspeed; // Variable mspeed als Integer initialisieren

Void setup () {//Arduino-Initialisierungsphase Serial.begin (9600); //Initialisierung des seriellen Monitors roll1.attach(2); // Anbringen von Servo roll1 an digitalen Pin 2 roll2.attach (3); // Anbringen von Servoroll2 an digitalen Pin 3 elev1.attach (5); // Anbringen von Servo elev1 an digitalen Pin 5 elev2.attach (6); // Anbringen von Servo elev2 an digitalen Pin 6 yaw1.attach (8); // Anbringen von Servo yaw1 an digitalen Pin 8 yaw2.attach (9); // Anbringen von Servo yaw2 an digitalen Pin 9 esc.attach (11); // Anbringen des Servo-ESc an den digitalen Pin 11 roll1.write (90); // Servo roll1 in seine zentrierte Position schreiben roll2.write (90); // Servo roll2 in seine zentrierte Position schreiben elev1.write (90); // Schreiben von Servo elev1 in seine zentrierte Position elev2.write (90); // Servo elev2 in seine zentrierte Position schreiben yaw1.write (90); // Schreiben von Servo yaw1 in seine zentrierte Position yaw2.write (90); // Schreiben von Servo yaw2 in seine zentrierte Position esc.write (180); // Servo-Esc in seine zentrierte Positionsverzögerung schreiben (2500); // 2 Sekunden warten esc.write (90); Verzögerung (5000); }

Void Schleife () {//Hauptcode zum endlosen Schleifen if (analogRead (pot1)<1 && analogRead (pot2)<1 && analogRead (pot3)<1 && analogRead (pot4) = 485 && val1<= 540) {// Prüfen, ob "Joystick" (Potentiometer) zentriert ist roll1.write(90); // Servo roll1 in die Mittelposition schreiben roll2.write (90); // Servo Roll2 in die Mittelposition schreiben} else {//Was ist zu tun, wenn "Joystick" nicht zentriert ist val1 = map (val1, 0, 1023, 10, 170); // val1 von 10 auf 170 zuordnen und val1 zuweisen roll1.write (val1); // Schreiben von Servo roll1 in die durch val1 definierte Position roll2.write (val1); // Schreiben von Servoroll2 in die von val1 definierte Position}

val2 = analogRead (pot2); // Pot2 lesen (analoger Pin 2) und Wert als val2 speichern if (val2>= 485 && val2<= 540) {//Überprüfen, ob "Joystick" (Potentiometer) zentriert ist elev1.write (90); // Schreiben von Servo elev1 in die Mittelposition elev2.write (90); // Servo elev2 in die Mittelposition schreiben} else{//Was ist zu tun, wenn "Joystick" nicht zentriert ist val3 = map (val2, 0, 1023, 10, 170); // val2 von 10 auf 170 zuordnen und val3 val4 zuweisen = map (val2, 0, 1023, 170, 10); // val2 von 170 auf 10 zuordnen und val4 elev1.write (val3) zuweisen; // Schreiben von Servo elev1 in die durch val3 elev2.write (val4) definierte Position; // Schreiben von Servo elev2 in die von val4 definierte Position}

val5 = analogRead (pot3); // Pot3 (analoger Pin 4) lesen und Wert als val5 speichern if (val5>= 485 && val5<= 540) {//Überprüfen, ob "Joystick" (Potentiometer) zentriert ist yaw1.write (90); // Schreiben von Servo yaw1 in die Mittelposition yaw2.write (90); // Servo yaw2 in die Mittelposition schreiben} else{//Was ist zu tun, wenn "Joystick" nicht zentriert ist val6 = map (val5, 0, 1023, 10, 170); // val5 von 10 auf 170 zuordnen und val6 zuordnen val7 = map (val5, 0, 1023, 170, 10); // val5 von 10 auf 170 zuordnen und val7 zuweisen yaw1.write (val6); // Schreiben von Servo yaw1 in die von val6 definierte Position yaw2.write (val7); // Schreiben von Servo yaw2 in die von val7 definierte Position}

val8 = analogRead (pot4); //Pot4 lesen (analoger Pin 5) und Wert als val8 speichern if(val8>470 && val8 80 && val8<80)||(mspeed80)){//Überprüfen, ob der Motor dabei ist, die Richtung zu ändern esc.write(80); Verzögerung (1000); // 1000 Millisekunden warten} esc.write (val8); // Servo-Esc auf die durch val8 definierte Geschwindigkeit schreiben mspeed = val8; // Aktuelle Geschwindigkeit zum Vergleich speichern}} Serial.print ("Throttle"); // Verwenden von Serial Print, um das Wort "Throttle" anzuzeigen Serial.println (val8); // Verwenden von Serial Print, um den Wert anzuzeigen, der auf Serial.print ("roll") eingestellt ist; // Verwenden von Serial Print, um das Wort "Roll" anzuzeigen Serial.println (val1); // Verwenden von Serial Print, um den Wert anzuzeigen, den die Rolle auf Serial.print ("pitch") eingestellt hat; // Verwenden von Serial Print, um das Wort "Pitch" anzuzeigen Serial.println (val3); // Verwenden von Serial Print, um den Wert anzuzeigen, dass Pitch1 auf Serial.println (val4) gesetzt ist; // Verwenden von Serial Print, um den Wert anzuzeigen, dass Pitch2 auf Serial.print ("yaw") eingestellt ist; // Verwenden von Serial Print, um das Wort "Yaw" anzuzeigen Serial.println (val6); // Verwenden von Serial Print, um den Wert anzuzeigen, dass yaw1 auf Serial.println (val7) gesetzt ist; // Verwenden von Serial Print, um den Wert anzuzeigen, auf den yaw2 gesetzt ist}

Schritt 3: Schaltung

Anbei ein Foto der Schaltung an Bord des Tauchboots.

Ich habe ein benutzerdefiniertes Schild für den Arduino erstellt, um meine Verkabelung zu vereinfachen. Ich habe die Eagle-Schema- und Board-Dateien für das Schild hochgeladen. Zum Fräsen der Platine habe ich einen LPKF S63 verwendet. Die Servos an der Vorderseite der Steuerrolle werden an Arduino angeschlossen

Anbei ein Foto der Schaltung im Controller.

Schritt 4: 3D-gedruckte Teile

Ich habe alle diese Dateien auf meinem Monoprice Maker Select Plus gedruckt. Ich habe Esun ABS 1,75 mm Filament verwendet. Meine Druckeinstellungen waren 105 Grad C für die Druckbetttemperatur und 255 Grad C für die Extrudertemperatur. Es wird nur 1 von jedem Teil benötigt, außer dass Sie 6 Kopien des Frontflügels benötigen. Beachten Sie, dass diese Teile mit einer Wandstärke von 1000 mm gedruckt wurden. Dies geschah, damit die Teile mit 100% Füllung gedruckt wurden, damit sie einen negativen Auftrieb haben.

Schritt 5: Montage

********************************* KOMMT BALD *************** ******************