Cuprins:

Vehicul submersibil: 5 pași
Vehicul submersibil: 5 pași

Video: Vehicul submersibil: 5 pași

Video: Vehicul submersibil: 5 pași
Video: TUTORIAL: Demontare broasca incuietoare hayon portbagaj VW Golf 5 in 5 pasi 2024, Noiembrie
Anonim
Vehicul submersibil
Vehicul submersibil
Vehicul submersibil
Vehicul submersibil

**************** ACEST INSTRUCTABIL ESTE ÎNCĂ O LUCRU ÎN PROGRES ****************

Acest Instructable a fost creat pentru îndeplinirea cerințelor de proiect ale Makecourse la Universitatea din Florida de Sud (www.makecourse.com).

Acest instructabil va fi o scurtă vedere asupra creației vehiculului submersibil pe care l-am proiectat și construit pentru clasa mea Makecourse de la Universitatea din Florida de Sud. În acest instructabil voi furniza o listă de materiale, codul de control pe care l-am creat pentru Arduino Uno pe care l-am folosit și o prezentare generală a modului de asamblare a submersibilului.

Pasul 1: Materiale

Materiale
Materiale
Materiale
Materiale
Materiale
Materiale

Electronica utilizată unde:

1x Arduino Uno

1x cameră de acțiune mobius

1x camera de acțiune mobius USB-B la cablu A / V

1x vizualizare câmp ecran 777

1x turnigy marine 50A ESC (control electronic al vitezei)

1x placă de programare turnigy marine

1x T-Motor Navigator 400kv

1x YEP 20A BEC (circuit de eliminare a bateriei)

6x servos impermeabile hobby king HK15139

2x conector T în paralel

2 fire de prelungire servo de 18 inch

Firuri de extensie servo 6x 6 inch

2x baterii Lipo 1300mah 3s

2x 2500mah 4s baterii Lipo

1x placă de distribuție a puterii cu ieșiri fixe atât de 5v, cât și de 12v

Materialele de construcție în care:

1 foaie de placaj de 3/16 inch

1x tub de transport ABS de 6 inci

1x tub de silicon

1x cutie de etanșare flexibilă

4x bobine din filament pentru imprimantă 3D ABS

1x glisier sertar de 24 inch

Tub termocontractabil

1x 10 picioare de velcro duraloc marca scotch

1x JB Wox plastic epoxidic

1x cupolă de cameră de securitate acrilică cu diametru de 6,2 inci

2 passthrough-uri ethernet IP68

Cablu ethernet 2x 24 inch cat6

1x cablu Ethernet cat6 de 200 picioare

Hardware-ul folosit a fost:

Șuruburi de lemn de alamă de 24x 1/2 inch

24x ------ șuruburi (incluse cu servomotoare)

Instrumentele utilizate:

Șurubelnițe cu capul lui Philip și Flat

Set chei Allen

Ciocan de lipit

Pistol cu aer cald

Imprimantă 3D (am folosit un Monoprice Maker Select Plus)

Pasul 2: Programare

Programare
Programare
Programare
Programare
Programare
Programare
Programare
Programare

Mai jos este codul care a fost creat pentru a controla submersibilul. De asemenea, am atașat fișierul.ino, astfel încât să poată fi descărcat.

Acest cod a fost creat pentru Arduino Uno folosind compilatorul Arduino.

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

Autor: Jonah Powers Data: 11.11.2018 Scop: Cod de control pentru vehicul submersibil acționat de la distanță ****************************** *************************************************** *************************************************** ************************************ / #include // Inclusiv Servo Library Servo roll1; // Declararea rolului 1 drept servo Servo roll2; // Declararea rolului 2 ca fiind un servo Servo elev1; // Declararea elev1 drept servo Servo elev2; // Declararea elev2 a fi un servo Serv yaw1; // Declararea yaw1 ca servo servo Yaw2; // Declararea yaw2 a fi un servo Servo esc; // Declararea esc a fi un servo

int pot1 = 0; // Intitializarea variabilei pot1 ca număr întreg și setarea ei egală cu 0 int pot2 = 1; // Intitializarea variabilei pot2 ca număr întreg și setarea ei egală cu 2 int pot3 = 2; // Intitializarea variabilei pot3 ca număr întreg și setarea ei egală cu 4 int pot4 = 3; // Intitializarea variabilei pot4 ca număr întreg și setarea ei egală cu 5 int val1; // Variabila de inițializare val1 ca număr întreg int val2; // Intitializarea variabilei val2 ca număr întreg int val3; // Variabila de inițializare val3 ca număr întreg int val4; // Intitializarea variabilei val4 ca număr întreg int val5; // Variabila de inițializare val5 ca un întreg int val6; // Intitializarea variabilei val6 ca număr întreg int val7; // Variabila de inițializare val7 ca număr întreg int val8; // Intitializarea variabilei val8 ca un întreg int mspeed; // Intitializarea variabilei mspeed ca număr întreg

void setup () {// Etapa de inițializare Arduino Serial.begin (9600); // Inițializarea moniterului serial roll1.attach (2); // Atașarea servo roll1 la pinul digital 2 roll2.attach (3); // Atașarea servo roll2 la pinul digital 3 elev1.attach (5); // Atașarea servo elev1 la pinul digital 5 elev2.attach (6); // Atașarea servo elev2 la pinul digital 6 yaw1.attach (8); // Atașarea servo yaw1 la pinul digital 8 yaw2.attach (9); // Atașarea servo yaw2 la pinul digital 9 esc.attach (11); // Atașarea servo esc la pinul digital 11 roll1.write (90); // Scrierea servo roll1 în poziția sa centrală roll2.write (90); // Scrierea servo roll2 în poziția sa centrată elev1.write (90); // Scrierea servo elev1 în poziția sa centrată elev2.write (90); // Scrierea servo elev2 în poziția sa centrală yaw1.write (90); // Scrierea servo yaw1 în poziția sa centrală yaw2.write (90); // Scrierea servo yaw2 în poziția sa centrată esc.write (180); // Scrierea servo esc în întârzierea poziției sale centrate (2500); // Se așteaptă 2 secunde esc.write (90); întârziere (5000); }

void loop () {// Codul principal pentru a se bucla la infinit dacă (analogRead (pot1) <1 && analogRead (pot2) <1 && analogRead (pot3) <1 && analogRead (pot4) = 485 && val1 <= 540) {// Verificând dacă „Joystick” (potențiometru) este centrat roll1.write (90); // Scrierea servo roll1 în poziția centrală roll2.write (90); // Scrierea servo roll2 în poziția centrală} else {// Ce trebuie făcut dacă „Joystick” nu este centrat val1 = hartă (val1, 0, 1023, 10, 170); // Cartografierea val1 de la 10 la 170 și atribuirea val1 roll1.write (val1); // Scriere servo roll1 la pozitiv definit de val1 roll2.write (val1); // Scrierea servo roll2 la pozitiv definit de val1}

val2 = analogRead (pot2); // Citind pot2 (pinul analogic 2) și salvați valoarea ca val2 if (val2> = 485 && val2 <= 540) {// Verificând dacă „Joystick” (potențiometru) este centrat elev1.write (90); // Scrierea servo elev1 în poziția centrală elev2.write (90); // Scrierea servo elev2 în poziția centrală} else {// Ce trebuie făcut dacă „Joystick” nu este centrat val3 = hartă (val2, 0, 1023, 10, 170); // Cartografierea val2 de la 10 la 170 și atribuirea la val3 val4 = hartă (val2, 0, 1023, 170, 10); // Cartografierea val2 de la 170 la 10 și atribuirea val4 elev1.write (val3); // Scrierea servo elev1 la pozitiv definit de val3 elev2.write (val4); // Scrierea servo elev2 la pozitiv definit de val4}

val5 = analogRead (pot3); // Citind pot3 (pinul analogic 4) și salvați valoarea ca val5 if (val5> = 485 && val5 <= 540) {// Verificând dacă „Joystick” (potențiometru) este centrat yaw1.write (90); // Scrierea servo yaw1 în poziția centrală yaw2.write (90); // Scrierea servo yaw2 în poziția centrală} else {// Ce trebuie făcut dacă „Joystick” nu este centrat val6 = hartă (val5, 0, 1023, 10, 170); // Cartografierea val5 de la 10 la 170 și atribuirea la val6 val7 = hartă (val5, 0, 1023, 170, 10); // Cartografierea val5 de la 10 la 170 și atribuirea lui val7 yaw1.write (val6); // Scrierea servo yaw1 la pozitiv definit de val6 yaw2.write (val7); // Scrierea servo yaw2 la pozitiv definit de val7}

val8 = analogRead (pot4); // Citind pot4 (pinul analogic 5) și salvați valoarea ca val8 dacă (val8> 470 && val8 80 && val8 <80) || (mspeed80)) {// Verificând dacă motorul este pe cale să schimbe direcția esc.write (80); întârziere (1000); // Se așteaptă 1000 de milisecunde} esc.write (val8); // Scriere servo esc la viteza definita de val8 mspeed = val8; // Stocarea vitezei curente pentru comparație}} Serial.print ("accelerație"); // Utilizarea Serial Print pentru a afișa cuvântul "Accelerator" Serial.println (val8); // Utilizarea Serial Print pentru a arăta valoarea că accelerația este setată la Serial.print ("roll"); // Utilizarea Serial Print pentru a afișa cuvântul "Roll" Serial.println (val1); // Utilizarea Serial Print pentru a afișa valoarea pe care rola este setată la Serial.print ("pitch"); // Utilizarea Serial Print pentru a afișa cuvântul „Pitch” Serial.println (val3); // Utilizarea Serial Print pentru a arăta valoarea că pitch1 este setat la Serial.println (val4); // Utilizarea Serial Print pentru a afișa valoarea că pitch2 este setat la Serial.print ("yaw"); // Utilizarea Serial Print pentru a afișa cuvântul „Yaw” Serial.println (val6); // Utilizarea Serial Print pentru a afișa valoarea că yaw1 este setat la Serial.println (val7); // Utilizarea Serial Print pentru a arăta valoarea pe care yaw2 este setată}

Pasul 3: Circuit

Atașată este o fotografie a circuitului de la bordul submersibilului.

Am creat un scut personalizat pentru Arduino pentru a-mi simplifica cablarea. Am încărcat fișierele Eagle Schematic & Board pentru scut. Am folosit un LPKF S63 pentru frezarea plăcii. Servo-urile din partea din față care rulează controlul vor fi conectate la Arduino

atașat este o fotografie a circuitului din interiorul controlerului.

Pasul 4: Părți imprimate 3D

Am tipărit toate aceste fișiere pe Monoprice Maker Select Plus. Am folosit Esun ABS 1.75mm Filament. Setările mele de imprimare au fost 105 grade C pentru temperatura patului de imprimare și 255 grade C pentru temperatura extruderului. Este necesar doar 1 din fiecare parte, cu excepția faptului că veți avea nevoie de 6 copii ale aripii frontale. Rețineți că aceste piese au fost tipărite cu grosimea peretelui setată la 1000 mm. Acest lucru a fost făcut astfel încât piesele să fie tipărite cu umplutură 100%, astfel încât să fie negativ.

Pasul 5: Asamblare

********************************* IN CURAND *************** *******************

Recomandat: