Inhoudsopgave:
- Stap 1: Materialen
- Stap 2: Programmeren
- Stap 3: Circuits
- Stap 4: 3D-geprinte onderdelen
- Stap 5: Montage
Video: Onderwatervoertuig: 5 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
**************** 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
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
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:
Game Design in Flick in 5 stappen: 5 stappen
Game-ontwerp in Flick in 5 stappen: Flick is een heel eenvoudige manier om een game te maken, vooral zoiets als een puzzel, visuele roman of avonturengame
Gezichtsdetectie op Raspberry Pi 4B in 3 stappen: 3 stappen
Gezichtsdetectie op Raspberry Pi 4B in 3 stappen: In deze Instructable gaan we gezichtsdetectie uitvoeren op Raspberry Pi 4 met Shunya O/S met behulp van de Shunyaface-bibliotheek. Shunyaface is een bibliotheek voor gezichtsherkenning/detectie. Het project streeft naar de hoogste detectie- en herkenningssnelheid met
Doe-het-zelfspiegel in eenvoudige stappen (met LED-stripverlichting): 4 stappen
DIY make-upspiegel in eenvoudige stappen (met behulp van LED-stripverlichting): In dit bericht heb ik een doe-het-zelfspiegel gemaakt met behulp van de LED-strips. Het is echt gaaf en je moet ze ook proberen
Hoe plug-ins in WordPress te installeren in 3 stappen: 3 stappen
Hoe plug-ins in WordPress te installeren in 3 stappen: In deze tutorial laat ik je de essentiële stappen zien om de WordPress-plug-in op je website te installeren. In principe kunt u plug-ins op twee verschillende manieren installeren. De eerste methode is via ftp of via cpanel. Maar ik zal het niet opsommen, want het is echt compl
Akoestische levitatie met Arduino Uno stap voor stap (8 stappen): 8 stappen
Akoestische levitatie met Arduino Uno Stap voor stap (8-stappen): ultrasone geluidstransducers L298N Vrouwelijke DC-adapter voeding met een mannelijke DC-pin Arduino UNOBreadboardHoe dit werkt: eerst upload je code naar Arduino Uno (het is een microcontroller uitgerust met digitale en analoge poorten om code te converteren (C++)