Inhoudsopgave:

Onderwatervoertuig: 5 stappen
Onderwatervoertuig: 5 stappen

Video: Onderwatervoertuig: 5 stappen

Video: Onderwatervoertuig: 5 stappen
Video: NIEUWE HEIST IN GTA! MEGA ONDERZEEËR GEKOCHT! 🤑 - GTA 5 The Cayo Perico Heist #1 (Nederlands) 2024, November
Anonim
Onderwatervoertuig
Onderwatervoertuig
Onderwatervoertuig
Onderwatervoertuig

**************** DIT INSTRUCTABLE IS NOG STEEDS EEN WERK IN UITVOERING ****************

Deze Instructable is gemaakt ter vervulling van de projectvereiste van de Makecourse aan de University of South Florida (www.makecourse.com).

Deze Instructable zal een kort overzicht geven van de creatie van het onderwatervoertuig dat ik heb ontworpen en gebouwd voor mijn Makecourse-klas aan de Universiteit van Zuid-Florida. In deze Instructable zal ik een stuklijst geven, de besturingscode die ik heb gemaakt voor de Arduino Uno die ik heb gebruikt, en een overzicht van hoe de duikboot te monteren.

Stap 1: Materialen

Materialen
Materialen
Materialen
Materialen
Materialen
Materialen

De gebruikte elektronica waar:

1x Arduino Uno

1x mobius actiecamera

1x mobius action camera usb-b naar A/V kabel

1x veldweergave 777 weergavescherm

1x turnigy marine 50A ESC (elektronische snelheidsregeling)

1x turnigy scheepsprogrammeerkaart

1x T-motornavigator 400kv

1x YEP 20A BEC (batterij-eliminatiecircuit)

6x hobby king HK15139 waterdichte servo's

2x parallelle T-connector y-harnassen

2x 18 inch servoverlengkabels

6x 6 inch servo-verlengdraden

2x 1300mah 3s Lipo-batterijen

2x 2500mah 4s Lipo-batterijen

1x stroomverdeelbord met zowel 5v als 12v vaste uitgangen

De bouwmaterialen waar:

1x 3/16 inch plaat multiplex

1x 6 inch ID ABS verzendbuis

1x siliconen buis

1x blikje flex seal

4 spoelen ABS 3D-printerfilament

1x 24 inch ladegeleider

Krimpkous:

1x 10 voet scotch merk duraloc klittenband

1x JB Weld kunststof epoxy

1x 6,2 inch diameter acryl beveiligingscamera dome

2x IP68 ethernet-doorvoeren

2x 24 inch cat6 ethernetkabel

1x 200 voet cat6 ethernetkabel

De gebruikte hardware was:

24x 1/2 inch messing houtschroeven

24x ------ schroeven (meegeleverd met servo's)

De gebruikte hulpmiddelen:

Philips en platte schroevendraaiers

Inbussleutel set

Soldeerbout

Hitte geweer

3D-printer (ik gebruikte een Monoprice Maker Select Plus)

Stap 2: Programmeren

Programmeren
Programmeren
Programmeren
Programmeren
Programmeren
Programmeren
Programmeren
Programmeren

Hieronder staat de code die is gemaakt om de onderzeeër te besturen. Ik heb ook het.ino-bestand bijgevoegd zodat het kan worden gedownload.

Deze code is gemaakt voor de Arduino Uno met behulp van de Arduino-compiler.

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

Auteur: Jonah Powers Datum: 11/9/2018 Doel: Controlecode voor op afstand bediend onderwatervoertuig ****************************** ************************************************** ************************************************** ***********************************/ #include //Include Servo Library Servo roll1; // Roll1 verklaren als een servo Servo roll2; // Roll2 verklaren als een servo Servo elev1; // Verklaren dat elev1 een servo Servo elev2 is; // Verklaren dat elev2 een servo Servo yaw1 is; // Yaw1 verklaren als een servo Servo yaw2; // Verklaren dat yaw2 een servo Servo esc is; // Verklaren dat esc een servo is

int pot1 = 0; //Variabele pot1 initialiseren als een geheel getal en deze gelijk stellen aan 0 int pot2 = 1; //Variabele pot2 initialiseren als een geheel getal en deze gelijk stellen aan 2 int pot3 = 2; // Variabele pot3 initialiseren als een geheel getal en deze gelijk stellen aan 4 int pot4 = 3; //Variabele pot4 initialiseren als een geheel getal en deze gelijk stellen aan 5 int val1; //Variabele val1 initialiseren als een geheel getal int val2; //Variabele val2 initialiseren als een geheel getal int val3; //Variabele val3 initialiseren als een geheel getal int val4; //Variabele val4 initialiseren als een geheel getal int val5; //Variabele val5 initialiseren als een geheel getal int val6; //Variabele val6 initialiseren als een geheel getal int val7; //Variabele val7 initialiseren als een geheel getal int val8; //Variabele val8 initialiseren als een geheel getal int mspeed; // Variabele mspeed initialiseren als een geheel getal

void setup () {// Arduino-initialisatiefase Serial.begin (9600); // Initialisatie van de seriële monitor roll1.attach (2); // Servo roll1 bevestigen aan digitale pin 2 roll2.attach (3); // Servo roll2 bevestigen aan digitale pin 3 elev1.attach (5); // Servo elev1 koppelen aan digitale pin 5 elev2.attach (6); // Servo elev2 bevestigen aan digitale pin 6 yaw1.attach (8); // Servo yaw1 koppelen aan digitale pin 8 yaw2.attach (9); // Servo yaw2 bevestigen aan digitale pin 9 esc.attach (11); // Servo esc bevestigen aan digitale pin 11 roll1.write (90); // Servo roll1 naar zijn gecentreerde positie schrijven roll2.write (90); // Servo roll2 naar zijn gecentreerde positie schrijven elev1.write (90); // Servo elev1 naar zijn gecentreerde positie schrijven elev2.write (90); // Servo elev2 naar zijn gecentreerde positie schrijven yaw1.write (90); // Servo yaw1 naar zijn gecentreerde positie schrijven yaw2.write (90); // Servo yaw2 naar zijn gecentreerde positie schrijven esc.write (180); // Schrijven van servo esc naar zijn gecentreerde vertraging (2500); // Wacht 2 seconden esc.write (90); vertraging (5000); }

void loop() {//Hoofdcode om oneindig te herhalen if(analogRead(pot1)<1 && analogRead(pot2)<1 && analogRead(pot3)<1 && analogRead(pot4)= 485 && val1<= 540){ // Controleren of "Joystick" (potentiometer) gecentreerd is roll1.write(90); // Schrijven van servo roll1 naar middenpositie roll2.write (90); // Servo roll2 naar middenpositie schrijven } else { // Wat te doen als "Joystick" niet gecentreerd is val1 = map (val1, 0, 1023, 10, 170); // Val1 toewijzen van 10 tot 170 en toewijzen aan val1 roll1.write (val1); // Servo roll1 schrijven naar positie gedefinieerd door val1 roll2.write (val1); // Servo roll2 schrijven naar positie gedefinieerd door val1}

val2 = analoog lezen (pot2); // Lezen van pot2 (analoge pin 2) en waarde opslaan als val2 if (val2>= 485 && val2<= 540) {//Controleren of "Joystick" (potentiometer) gecentreerd is elev1.write (90); // Servo elev1 naar middenpositie schrijven elev2.write (90); // Servo elev2 naar middenpositie schrijven } else { // Wat te doen als "Joystick" niet gecentreerd is val3 = map (val2, 0, 1023, 10, 170); // Val2 in kaart brengen van 10 tot 170 en toewijzen aan val3 val4 = map (val2, 0, 1023, 170, 10); // Val2 toewijzen van 170 tot 10 en toewijzen aan val4 elev1.write (val3); // Schrijven van servo elev1 naar positie gedefinieerd door val3 elev2.write (val4); // Servo elev2 schrijven naar positie gedefinieerd door val4}

val5 = analoog lezen (pot3); // Lezen van pot3 (analoge pin 4) en sla de waarde op als val5 if (val5>= 485 && val5<= 540) {//Controleren of "Joystick" (potentiometer) gecentreerd is yaw1.write (90); // Servo yaw1 naar middenpositie schrijven yaw2.write (90); // Servo yaw2 naar middenpositie schrijven } else { // Wat te doen als "Joystick" niet gecentreerd is val6 = map (val5, 0, 1023, 10, 170); // Val5 in kaart brengen van 10 tot 170 en toewijzen aan val6 val7 = map (val5, 0, 1023, 170, 10); // Val5 toewijzen van 10 tot 170 en toewijzen aan val7 yaw1.write (val6); // Servo yaw1 schrijven naar positie gedefinieerd door val6 yaw2.write (val7); // Servo yaw2 schrijven naar positie gedefinieerd door val7}

val8 = analoog lezen (pot4); // Lezen van pot4 (analoge pin 5) en sla de waarde op als val8 if (val8> 470 && val8 80 && val8<80)||(mspeed80)) {//Controleren of de motor op het punt staat van richting te veranderen esc.write(80); vertraging (1000); // 1000 milliseconden wachten } esc.write (val8); // Servo esc schrijven naar snelheid gedefinieerd door val8 mspeed=val8; // Huidige snelheid opslaan ter vergelijking } } Serial.print ("throttle "); // Serial Print gebruiken om het woord "Throttle" Serial.println (val8) te tonen; //Serial Print gebruiken om de waarde weer te geven die throttle is ingesteld op Serial.print ("roll "); // Serial Print gebruiken om het woord "Roll" Serial.println (val1) te tonen; //Serial Print gebruiken om de waarde weer te geven die rol is ingesteld op Serial.print("pitch"); //Serial Print gebruiken om het woord "Pitch" Serial.println (val3) te tonen; // Serial Print gebruiken om de waarde te tonen die pitch1 is ingesteld op Serial.println (val4); //Serial Print gebruiken om de waarde te tonen die pitch2 is ingesteld op Serial.print("yaw"); // Serial Print gebruiken om het woord "Yaw" te tonen Serial.println (val6); // Serial Print gebruiken om de waarde weer te geven die yaw1 is ingesteld op Serial.println (val7); // Serial Print gebruiken om de waarde te tonen waarop yaw2 is ingesteld }

Stap 3: Circuits

Bijgevoegd is een foto van het circuit aan boord van de duikboot.

Ik heb een aangepast schild voor de Arduino gemaakt om mijn bedrading te vereenvoudigen. Ik heb de Eagle Schematic & Board-bestanden voor het schild geüpload. Ik heb een LPKF S63 gebruikt om het bord te frezen. de servo's aan de voorkant die de stuurrol in Arduino zullen pluggen

bijgevoegd is een foto van het circuit in de controller.

Stap 4: 3D-geprinte onderdelen

Ik heb al deze bestanden afgedrukt op mijn Monoprice Maker Select Plus. Ik gebruikte Esun ABS 1,75 mm filament. Mijn afdrukinstellingen waren 105 graden C voor de printbedtemperatuur en 255 graden C voor de extrudertemperatuur. Er is slechts 1 van elk onderdeel nodig, behalve dat je 6 exemplaren van de voorvleugel nodig hebt. Merk op dat deze onderdelen zijn bedrukt met een wanddikte ingesteld op 1000 mm. Dit werd gedaan zodat de onderdelen met 100% vulling zouden worden bedrukt, zodat ze een negatief drijfvermogen zouden hebben.

Stap 5: Montage

********************************* KOMT BINNENKORT *************** ****************

Aanbevolen: