Indholdsfortegnelse:

Nedsænket køretøj: 5 trin
Nedsænket køretøj: 5 trin

Video: Nedsænket køretøj: 5 trin

Video: Nedsænket køretøj: 5 trin
Video: 5. Fem små aber - Sangskattekisten 2024, November
Anonim
Nedsænket køretøj
Nedsænket køretøj
Nedsænket køretøj
Nedsænket køretøj

***************** DENNE INSTRUKTIVELSE ER STADIG ET ARBEJDE I GANG *****************

Denne instruktør blev oprettet for at opfylde projektkravet fra Makecourse ved University of South Florida (www.makecourse.com).

Denne instruktionsbog vil være et kort overblik over oprettelsen af det nedsænkelige køretøj, som jeg designede og byggede til min Makecourse -klasse ved University of South Florida. I denne Instructable vil jeg levere en regning af materialer, kontrolkoden, jeg oprettede til Arduino Uno, jeg brugte, og en oversigt over, hvordan du samler nedsænkningen.

Trin 1: Materialer

Materialer
Materialer
Materialer
Materialer
Materialer
Materialer

Elektronikken bruges, hvor:

1x Arduino Uno

1x mobius action kamera

1x mobius action kamera usb-b til A/V kabel

1x feltvisning 777 skærm

1x turnigy marine 50A ESC (elektronisk hastighedskontrol)

1x turnigy marine programmeringskort

1x T-Motor Navigator 400kv

1x YEP 20A BEC (batteri eliminerings kredsløb)

6x hobby king HK15139 vandtætte servoer

2x parallelle T-stik og seler

2x 18 tommer servo forlængerledninger

6x 6 tommer servoforlængerledninger

2x 1300mah 3s Lipo batterier

2x 2500mah 4s Lipo batterier

1x strømfordelingsbord med både 5v og 12v faste udgange

Byggematerialerne hvor:

1x 3/16 tommer ark krydsfiner

1x 6 tommer ID ABS forsendelsesrør

1x silikonerør

1x dåse flexforsegling

4x spoler ABS 3D -printerfilament

1x 24 tommer skuffeskub

Varmekrympeslange

1x 10 fod skotsk mærke duraloc velcro

1x JB svejset plast epoxy

1x 6,2 tommer diameter akryl sikkerhedskamera kuppel

2x IP68 ethernet -gennemføringer

2x 24 tommer cat6 ethernet kabel

1x 200 fod cat6 ethernet -kabel

Den anvendte hardware var:

24x 1/2 tommer messing træskruer

24x ------ skruer (følger med servoer)

De anvendte værktøjer:

Philip's og fladskruetrækkere

Allen -nøglesæt

Loddekolbe

Varmepistol

3D -printer (jeg brugte en Monoprice Maker Select Plus)

Trin 2: Programmering

Programmering
Programmering
Programmering
Programmering
Programmering
Programmering
Programmering
Programmering

Nedenfor er den kode, der blev oprettet for at styre nedsænket. Jeg har også vedhæftet.ino -filen, så den kan downloades.

Denne kode blev oprettet til Arduino Uno ved hjælp af Arduino -kompilatoren.

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

Forfatter: Jonah Powers Dato: 11/9/2018 Formål: Kontrolkode for fjernbetjent nedsænket køretøj ****************************** ************************************************* ************************************************* ***********************************/#include // Inklusive Servo Library Servo roll1; // Deklarere rulle1 til at være en servoservorulle2; // Deklarere roll2 til at være en servo Servo elev1; // Deklarere elev1 til at være en servo Servo elev2; // erklærer elev2 for at være en servo Servo yaw1; // Deklarere yaw1 til at være en servo Servo yaw2; // Deklarere yaw2 til at være en servo Servo esc; // erklærer esc for at være en servo

int pot1 = 0; // Intitialisering af variabel pot1 som et heltal og indstilling af det lig med 0 int pot2 = 1; // Intitialisering af variabel pot2 som et heltal og indstilling af det lig med 2 int pot3 = 2; // Intitialisering af variabel pot3 som et heltal og indstilling af det lig med 4 int pot4 = 3; // Intitialisering af variabel pot4 som et heltal og indstilling af det lig med 5 int val1; // Intitialiserende variabel val1 som et heltal int val2; // Intitialiserende variabel val2 som et heltal int val3; // Intitialiserende variabel val3 som et heltal int val4; // Intitialiserende variabel val4 som et heltal int val5; // Intitialiserende variabel val5 som et heltal int val6; // Intitialiserende variabel val6 som et heltal int val7; // Intitialiserende variabel val7 som et heltal int val8; // Intitialiserende variabel val8 som et heltal int mspeed; // Intitialiserende variabel mspeed som et heltal

tomrumsopsætning () {// Arduino -initialiseringstrin Serial.begin (9600); // Initialiserer seriel moniterrulle1.attach (2); // Fastgørelse af servorulle1 til digital pin 2 roll2. Vedhæftning (3); // Fastgørelse af servorulle2 til digital pin 3 elev1. Vedhæftning (5); // Fastgørelse af servo elev1 til digital pin 5 elev2. Vedhæftning (6); // Fastgørelse af servo elev2 til digital pin 6 yaw1. Fastgørelse (8); // Fastgørelse af servo yaw1 til digital pin 8 yaw2. Fastgørelse (9); // Fastgørelse af servo yaw2 til digital pin 9 esc.attach (11); // Vedhæftning af servo esc til digital pin 11 roll1.write (90); // Skrive servorulle1 til dens centrerede position roll2.write (90); // Skrive servorulle2 til sin centrerede position elev1.write (90); // Skrive servo elev1 til sin centrerede position elev2.write (90); // Skrive servo elev2 til sin centrerede position yaw1.write (90); // Skrive servo yaw1 til sin centrerede position yaw2.write (90); // Skrive servo yaw2 til sin centrerede position esc.write (180); // Skrive servo esc til sin centrerede positionsforsinkelse (2500); // Venter 2 sekunders esc.write (90); forsinkelse (5000); }

void loop () {// Hovedkode til loop loop uendeligt hvis (analogRead (pot1) <1 && analogRead (pot2) <1 && analogRead (pot3) <1 && analogRead (pot4) = 485 && val1 <= 540) {// Kontrollerer, om "Joystick" (potentiometer) er centreret roll1.write (90); // Skrive servorulle1 til midterpositionrulle2.skrive (90); // Skrive servorulle2 til midterposition} ellers {// Hvad skal jeg gøre, hvis "Joystick" ikke er centreret val1 = map (val1, 0, 1023, 10, 170); // Kortlægning af val1 fra 10 til 170 og tildeling til val1 roll1.write (val1); // Skrive servorulle1 til positon defineret af val1 roll2.write (val1); // Skrive servo roll2 til positon defineret af val1}

val2 = analogRead (pot2); // Læser pot2 (analog pin 2) og gem værdien som val2 if (val2> = 485 && val2 <= 540) {// Kontrollerer om "Joystick" (potentiometer) er centreret elev1.write (90); // Skrive servo elev1 til midterposition elev2.write (90); // Skrive servo elev2 til midterposition} ellers {// Hvad skal jeg gøre, hvis "Joystick" ikke er centreret val3 = map (val2, 0, 1023, 10, 170); // Kortlægning af val2 fra 10 til 170 og tildeling til val3 val4 = map (val2, 0, 1023, 170, 10); // Kortlægning af val2 fra 170 til 10 og tildeling til val4 elev1.write (val3); // Skrive servo elev1 til positon defineret af val3 elev2.write (val4); // Skrive servo elev2 til positon defineret af val4}

val5 = analogRead (pot3); // Læser pot3 (analog pin 4) og gem værdi som val5 hvis (val5> = 485 && val5 <= 540) {// Kontrollerer om "Joystick" (potentiometer) er centreret yaw1.write (90); // Skrive servo yaw1 til midterposition yaw2.write (90); // Skrive servo yaw2 til midterposition} ellers {// Hvad skal jeg gøre, hvis "Joystick" ikke er centreret val6 = map (val5, 0, 1023, 10, 170); // Kortlægning af val5 fra 10 til 170 og tildeling til val6 val7 = map (val5, 0, 1023, 170, 10); // Kortlægning af val5 fra 10 til 170 og tildeling til val7 yaw1.write (val6); // Skrive servo yaw1 til positon defineret af val6 yaw2.write (val7); // Skrive servo yaw2 til positon defineret af val7}

val8 = analogRead (pot4); // Læser pot4 (analog pin 5) og gem værdien som val8 if (val8> 470 && val8 80 && val8 <80) || (mspeed80)) {// Kontrollerer, om motoren er ved at ændre retning esc.write (80); forsinkelse (1000); // Venter 1000 millisekunder} esc.write (val8); // Skrive servo esc til hastighed defineret af val8 mspeed = val8; // Lagring af nuværende hastighed til sammenligning}} Serial.print ("gas"); // Brug af Serial Print til at vise ordet "Throttle" Serial.println (val8); // Brug af Serial Print til at vise den værdi, som gashåndtaget er indstillet til Serial.print ("roll"); // Brug af Serial Print til at vise ordet "Roll" Serial.println (val1); // Brug af Serial Print til at vise den værdi, rollen er indstillet til Serial.print ("pitch"); // Brug af Serial Print til at vise ordet "Pitch" Serial.println (val3); // Brug af Serial Print til at vise den værdi, pitch1 er indstillet til Serial.println (val4); // Brug af Serial Print til at vise den værdi, pitch2 er indstillet til Serial.print ("yaw"); // Brug af Serial Print til at vise ordet "Yaw" Serial.println (val6); // Brug af Serial Print til at vise den værdi, yaw1 er indstillet til Serial.println (val7); // Brug Serial Print til at vise den værdi, yaw2 er indstillet til}

Trin 3: Kredsløb

Vedhæftet er et foto af kredsløbet ombord på nedsænkbare.

Jeg lavede et brugerdefineret skjold til Arduino for at forenkle mine ledninger. Jeg har uploadet Eagle Schematic & Board -filerne til skjoldet. Jeg brugte en LPKF S63 til at fræse brættet. Servoerne foran, der styrerullen, sættes i Arduino

vedhæftet er et foto af kredsløbet inde i controlleren.

Trin 4: 3D -printede dele

Jeg har udskrevet alle disse filer på min Monoprice Maker Select Plus. Jeg brugte Esun ABS 1,75 mm filament. Mine udskriftsindstillinger var 105 grader C for print sengens temperatur og og 255 grader C for ekstruderens temperatur. Kun 1 af hver del er nødvendig, bortset fra at du skal bruge 6 kopier af frontfløjen. Bemærk, at disse dele blev trykt med en vægtykkelse på 1000 mm. Dette blev gjort for at dele skulle blive trykt med 100% udfyldning, så de ville være negativt flydende.

Trin 5: Montering

******************************* KOMMER SNART *************** ********************

Anbefalede: