Kazalo:

Potopno vozilo: 5 korakov
Potopno vozilo: 5 korakov

Video: Potopno vozilo: 5 korakov

Video: Potopno vozilo: 5 korakov
Video: Крушение Подводной Атомной лодки USS Thresher 2024, November
Anonim
Potopno vozilo
Potopno vozilo
Potopno vozilo
Potopno vozilo

**************** TO NAVODILO JE ŠE DELO V TEKU ****************

Ta Instructable je nastal v skladu z zahtevami projekta Makecourse na Univerzi v Južni Floridi (www.makecourse.com).

Ta Instructable bo kratek pregled ustvarjanja potopnega vozila, ki sem ga oblikoval in izdelal za moj razred Makecourse na Univerzi v Južni Floridi. V tem navodilu bom predstavil gradivo, kontrolno kodo, ki sem jo ustvaril za Arduino Uno, ki sem jo uporabil, in pregled, kako sestaviti podvodno napravo.

1. korak: Materiali

Materiali
Materiali
Materiali
Materiali
Materiali
Materiali

Elektronika se uporablja pri:

1x Arduino Uno

1x akcijska kamera mobius

1x mobius akcijska kamera usb-b do A/V kabla

1x zaslon 777 s pogledom na polje

1x rečni motor 50A ESC (elektronski nadzor hitrosti)

1x pomorska programska kartica turnir

1x Navigator T-Motor 400kv

1x YEP 20A BEC (vezje za odstranjevanje baterij)

6x vodoodporni servo motorji za hobije king HK15139

2x vzporedni T-priključek y pasov

2x 18 -palčne servo podaljške

6x 6 -palčne servo podaljške

2x 1300mah 3s Lipo baterije

2x 2500mah 4s Lipo baterije

1x razdelilna plošča z fiksnimi izhodi 5v in 12v

Gradbeni materiali, kjer:

1x 3/16 palčni list vezanega lesa

1x 6 -palčna transportna cev ID ABS

1x silikonska cev

1x pločevina fleksibilnega tesnila

4x tuljave ABS 3D tiskalniške niti

1x 24 -palčni predal za predale

Termoskrčljiva cev

1x 10 čevljev duraloc velcro blagovne znamke scotch

1x JB Varilni plastični epoksid

1x akrilna varnostna kamera s premerom 6,2 palca

2x vmesniki Ethernet IP68

2x 24 -palčni ethernetni kabel cat6

1x Ethernet kabel cat6, 200 čevljev

Uporabljena strojna oprema je bila:

24x 1/2 palčni medeninasti vijaki za les

24x ------ vijaki (vključeni s servomotorji)

Uporabljena orodja:

Philipsov in ploski izvijač

Imenovan imbus ključ

Spajkalnik

Toplotna pištola

3D tiskalnik (uporabil sem Monoprice Maker Select Plus)

2. korak: Programiranje

Programiranje
Programiranje
Programiranje
Programiranje
Programiranje
Programiranje
Programiranje
Programiranje

Spodaj je koda, ki je bila ustvarjena za nadzor podvodne naprave. Priložil sem tudi datoteko.ino, da jo lahko prenesete.

Ta koda je bila ustvarjena za Arduino Uno s prevajalnikom Arduino.

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

Avtor: Jonah Powers Datum: 9.11.2018 Namen: Nadzorna koda za daljinsko vodeno potopno vozilo **************************** ************************************************ ************************************************ **********************************/#include // Vključno s servo knjižnico Servo roll1; // razglasitev roll1 za servo servo roll2; // razglasitev roll2 za servo servo elev1; // razglasitev elev1 za servo servo elev2; // razglasitev elev2 za servo servo yaw1; // razglasitev yaw1 kot servo servo yaw2; // razglasitev yaw2 za servo servo esc; // Razglasitev esc za servo

int pot1 = 0; // Inicializiranje spremenljivke pot1 kot celo število in njeno nastavitev na 0 int pot2 = 1; // Inticializiranje spremenljivke pot2 kot celo število in njeno nastavitev na 2 int pot3 = 2; // Inicializiranje spremenljivke pot3 kot celo število in nastavitev na 4 int pot4 = 3; // Inticializiranje spremenljivke pot4 kot celo število in njeno nastavitev na 5 int val1; // Inicializiranje spremenljivke val1 kot celo število int val2; // Inicializiranje spremenljivke val2 kot celo število int val3; // Inicializiranje spremenljivke val3 kot celo število int val4; // Inicializiranje spremenljivke val4 kot celo število int val5; // Inicializiranje spremenljivke val5 kot celo število int val6; // Inicializiranje spremenljivke val6 kot celo število int val7; // Inicializiranje spremenljivke val7 kot celo število int val8; // Inicializiranje spremenljivke val8 kot celo število int mspeed; // Inicializiranje spremenljivke mspeed kot celo število

void setup () {// Faza inicializacije Arduina Serial.begin (9600); // Inicializacija serijskega nadzornika roll1.attach (2); // pritrditev servo zvitka1 na digitalni zatič 2 zvitka2.priključek (3); // pritrditev servo zvitka2 na digitalni zatič 3 elev1.attach (5); // pritrditev servo elev1 na digitalni zatič 5 elev2.attach (6); // pritrditev servo elev2 na digitalni zatič 6 yaw1.attach (8); // pritrditev servo yaw1 na digitalni zatič 8 yaw2.attach (9); // pritrditev servo yaw2 na digitalni pin 9 esc.attach (11); // pritrditev servo esc na digitalni zatič 11 roll1.write (90); // Pisanje servo zvitka1 v centrirano pozicijo roll2.write (90); // Pisanje servo zvitka2 v središčni položaj elev1.write (90); // Pisanje servo elev1 v središčni položaj elev2.write (90); // Pisanje servo elev2 v središčni položaj yaw1.write (90); // Pisanje servo yaw1 v središčni položaj yaw2.write (90); // Pisanje servo yaw2 v njegov centriran položaj esc.write (180); // Zapis servo esc v zakasnitev centriranega položaja (2500); // Čakanje 2 sekundi esc.write (90); zamuda (5000); }

void loop () {// Glavna koda za neskončno zanko if (analogRead (pot1) <1 && analogRead (pot2) <1 && analogRead (pot3) <1 && analogRead (pot4) = 485 && val1 <= 540) {// Preverjanje, ali je "Joystick" (potenciometer) centriran roll1.write (90); // Pisanje servo zvitka1 v sredinski položaj roll2.write (90); // Zapis servo roll2 v središčni položaj} else {// Kaj storiti, če "Joystick" ni centriran val1 = map (val1, 0, 1023, 10, 170); // preslikava val1 od 10 do 170 in dodelitev val1 roll1.write (val1); // Zapis servo roll1 v položaj, ki ga določa val1 roll2.write (val1); // Zapis servo roll2 v položaj, ki ga določa val1}

val2 = analogRead (pot2); // Odčitavanje pot2 (analogni pin 2) in shranjevanje vrednosti kot val2 if (val2> = 485 && val2 <= 540) {// Preverjanje, ali je "Joystick" (potenciometer) centriran elev1.write (90); // Zapis servo elev1 v sredinski položaj elev2.write (90); // Zapis servo elev2 v središčni položaj} else {// Kaj storiti, če "Joystick" ni centriran val3 = map (val2, 0, 1023, 10, 170); // preslikava val2 od 10 do 170 in dodelitev val3 val4 = map (val2, 0, 1023, 170, 10); // preslikava val2 s 170 na 10 in dodelitev val4 elev1.write (val3); // Zapis servo elev1 v položaj, ki ga določa val3 elev2.write (val4); // Zapis servo elev2 v položaj, ki ga določa val4}

val5 = analogRead (pot3); // Odčitavanje pot3 (analogni pin 4) in shranjevanje vrednosti kot val5 if (val5> = 485 && val5 <= 540) {// Preverjanje, ali je "Joystick" (potenciometer) centriran yaw1.write (90); // Zapis servo yaw1 v sredinski položaj yaw2.write (90); // Zapis servo yaw2 v središčni položaj} else {// Kaj storiti, če "Joystick" ni centriran val6 = map (val5, 0, 1023, 10, 170); // Preslikava val5 od 10 do 170 in dodelitev val6 val7 = map (val5, 0, 1023, 170, 10); // preslikava val5 od 10 do 170 in dodelitev val7 yaw1.write (val6); // Zapis servo yaw1 v položaj, ki ga določa val6 yaw2.write (val7); // Zapis servo yaw2 v položaj, ki ga določa val7}

val8 = analogRead (pot4); // Odčitavanje pot4 (analogni pin 5) in shranjevanje vrednosti kot val8 if (val8> 470 && val8 80 && val8 <80) || (mspeed80)) {// Preverjanje, ali bo motor spremenil smer esc.write (80); zamuda (1000); // Čakanje 1000 milisekund} esc.write (val8); // Zapis servo esc na hitrost, ki jo določa val8 mspeed = val8; // Shranjevanje trenutne hitrosti za primerjavo}} Serial.print ("throttle"); // Uporaba Serial Print za prikaz besede "Throttle" Serial.println (val8); // Uporaba Serial Print za prikaz vrednosti, ki je nastavljena na Serial.print ("roll"); // Uporaba Serial Print za prikaz besede "Roll" Serial.println (val1); // Uporaba Serial Print za prikaz vrednosti, ki je nastavljena na Serial.print ("pitch"); // Uporaba Serial Print za prikaz besede "Pitch" Serial.println (val3); // Uporaba Serial Print za prikaz vrednosti, ki je pitch1 nastavljena na Serial.println (val4); // Uporaba Serial Print za prikaz vrednosti, ki je pitch2 nastavljena na Serial.print ("yaw"); // Uporaba Serial Print za prikaz besede "Yaw" Serial.println (val6); // Uporaba Serial Print za prikaz vrednosti, ki je yaw1 nastavljena na Serial.println (val7); // Uporaba serijskega tiskanja za prikaz vrednosti, ki je nastavljena na yaw2}

3. korak: Vezje

Priložena je fotografija vezja na krovu podvodne naprave.

Ustvaril sem ščit po meri za Arduino, da poenostavim ožičenje. Naložil sem datoteke Eagle Schematic & Board za ščit. Za rezkanje plošče sem uporabil LPKF S63. servomotorji na sprednji strani tega kontrolnega zvitka bodo priključeni na Arduino

priložena je fotografija vezja v krmilniku.

4. korak: 3D natisnjeni deli

Vse te datoteke sem natisnil na Monoprice Maker Select Plus. Uporabil sem Esun ABS 1,75 mm nit. Moje nastavitve tiskanja so bile 105 stopinj C za temperaturo tiskalne plasti in 255 stopinj C za temperaturo ekstruderja. Potreben je le 1 del vsakega dela, razen da potrebujete 6 kopij sprednjega krila. Upoštevajte, da so bili ti deli natisnjeni z debelino stene 1000 mm. To je bilo storjeno tako, da so bili deli natisnjeni s 100% polnitvijo, da bi bili negativno plavajoči.

5. korak: Montaža

********************************* PRIHAJA KMALU *************** *******************

Priporočena: