Spisu treści:

Pojazd podwodny: 5 kroków
Pojazd podwodny: 5 kroków

Wideo: Pojazd podwodny: 5 kroków

Wideo: Pojazd podwodny: 5 kroków
Wideo: Blade Loki - Podwodny (Nut Ferment 5) 2024, Listopad
Anonim
Pojazd podwodny
Pojazd podwodny
Pojazd podwodny
Pojazd podwodny

**************** TA INSTRUKCJA JEST NADAL W TOKU ****************

Ten Instructable został stworzony w celu spełnienia wymagań projektowych Makecourse na University of South Florida (www.makecourse.com).

Ten Instructable będzie krótkim przeglądem tworzenia pojazdu podwodnego, który zaprojektowałem i zbudowałem na zajęcia Makecourse na Uniwersytecie Południowej Florydy. W tym Instruktażowym przedstawię zestawienie materiałów, kod kontrolny, który stworzyłem dla Arduino Uno, którego użyłem, oraz przegląd sposobu montażu łodzi podwodnej.

Krok 1: Materiały

Materiały
Materiały
Materiały
Materiały
Materiały
Materiały

Zastosowana elektronika gdzie:

1x Arduino Uno

1x kamera akcji mobius

1x kamera sportowa mobius kabel usb-b do A/V

1x ekran wyświetlacza 777 widoku pola;

1x turnigy marine 50A ESC (elektroniczna regulacja prędkości)

1x karta programowania morskiego turnigy;

1x T-Motor Navigator 400kv

1x YEP 20A BEC (obwód eliminacji baterii)

6x wodoodporny król hobby HK15139

2x równoległe trójniki i wiązki

2x18-calowe przedłużacze serwo

Przedłużacze serwo 6x6 cali

2x1300 mah 3s baterie Lipo

2x 2500 mah 4s baterie Lipo

1x tablica rozdzielcza zasilania ze stałymi wyjściami 5V i 12V

Materiały budowlane, w których:

1x3/16 cala arkusz sklejki

1x6 cali ID ABS rura wysyłkowa

1x silikonowa rurka

1x puszka elastycznej uszczelki

4x szpule filamentu do drukarki 3D ABS

1x24 calowa prowadnica szuflady

Rurki termokurczliwe

1x 10 stóp szkockiej marki duraloc na rzep

1x plastikowa żywica epoksydowa JB Weld

1x akrylowa kopuła kamery bezpieczeństwa o średnicy 6,2 cala;

2x przepusty Ethernet IP68

2x24-calowy kabel ethernet cat6;

1x200 stóp kabel ethernet cat6;

Zastosowany sprzęt to:

24x 1/2 cala mosiężne wkręty do drewna

24x ------ śruby (w zestawie z serwomechanizmami)

Użyte narzędzia:

Śrubokręty Filipa i Śrubokręty z płaskim łbem

Zestaw kluczy imbusowych

Lutownica

Opalarka

Drukarka 3D (użyłem Monoprice Maker Select Plus)

Krok 2: Programowanie

Programowanie
Programowanie
Programowanie
Programowanie
Programowanie
Programowanie
Programowanie
Programowanie

Poniżej znajduje się kod, który został stworzony do sterowania łodzią podwodną. Dołączyłem również plik.ino, aby można go było pobrać.

Ten kod został stworzony dla Arduino Uno przy użyciu kompilatora Arduino.

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

Autor: Jonah Powers Data: 11.09.2018 Cel: Kod kontrolny dla zdalnie sterowanego pojazdu podwodnego ****************************** ************************************************** ************************************************** ************************************/ #include //W tym biblioteka serwo Servo roll1; //Deklarowanie roll1 jako serwa Servo roll2; //Deklarowanie roll2 jako serwa Servo elev1; //Deklarowanie elev1 jako serwa Servo elev2; //Deklarowanie elev2 jako serwa Servo yaw1; //Deklarowanie yaw1 jako serwa Servo yaw2; //Deklarowanie yaw2 jako serwa Servo esc; //Deklarowanie esc jako serwa

int pot1 = 0; //Inicjalizacja zmiennej pot1 jako liczby całkowitej i ustawienie jej na 0 int pot2 = 1; //Inicjalizacja zmiennej pot2 jako liczby całkowitej i ustawienie jej na 2 int pot3 = 2; //Inicjalizacja zmiennej pot3 jako liczby całkowitej i ustawienie jej na 4 int pot4 = 3; //Inicjalizacja zmiennej pot4 jako liczby całkowitej i ustawienie jej na 5 int val1; //Inicjalizacja zmiennej wart1 jako liczby całkowitej int wart2; //Inicjalizacja zmiennej wart2 jako liczby całkowitej int wart3; //Inicjalizacja zmiennej wart3 jako liczby całkowitej int wart4; //Inicjalizacja zmiennej wart4 jako liczby całkowitej int wart5; //Inicjalizacja zmiennej wart5 jako liczby całkowitej int wart6; //Inicjalizacja zmiennej val6 jako liczby całkowitej int val7; //Inicjalizacja zmiennej val7 jako liczby całkowitej int val8; //Inicjalizacja zmiennej val8 jako liczby całkowitej int mspeed; //Inicjalizacja zmiennej mspeed jako liczby całkowitej

void setup() { //Etap inicjalizacji Arduino Serial.begin(9600); //Inicjowanie monitora szeregowego roll1.attach(2); //Podłączenie serwomechanizmu roll1 do pinu cyfrowego 2 roll2.attach(3); //Podłączenie serwo roll2 do pinu cyfrowego 3 elev1.attach(5); //Podłączenie serwomechanizmu elev1 do pinu cyfrowego 5 elev2.attach(6); //Podłączenie serwomechanizmu elev2 do cyfrowego pinu 6 yaw1.attach(8); //Podłączenie serwomechanizmu yaw1 do cyfrowego pinu 8 yaw2.attach(9); //Podłączenie serwomechanizmu yaw2 do cyfrowego pinu 9 esc.attach(11); //Podłączenie serwomechanizmu esc do pinu cyfrowego 11 roll1.write(90); //Zapis serwa roll1 do jego wyśrodkowanej pozycji roll2.write(90); //Zapis serwo roll2 do jego wyśrodkowanej pozycji elev1.write(90); //Zapis serwomechanizmu elev1 do jego wyśrodkowanej pozycji elev2.write(90); //Zapis serwomechanizmu elev2 do jego wyśrodkowanej pozycji yaw1.write(90); //Zapis yaw1 serwomechanizmu do jego wyśrodkowanej pozycji yaw2.write(90); //Zapisanie odchylenia serwa2 do jego wyśrodkowanej pozycji esc.write(180); //Zapis serwa esc do jego wyśrodkowanej pozycji delay(2500); //Czekam 2 sekundy esc.write(90); opóźnienie(5000); }

void loop() { //Kod główny do nieskończonej pętli if(analogRead(pot1)<1 && analogRead(pot2)<1 && analogRead(pot3)<1 && analogRead(pot4)= 485 && val1<= 540){ // Sprawdzanie czy "Joystick" (potencjometr) jest wyśrodkowany roll1.write(90); //Zapis serwa roll1 do pozycji środkowej roll2.write(90); //Zapisywanie serwomechanizmu roll2 do pozycji środkowej } else{ //Co zrobić, jeśli "Joystick" nie jest wyśrodkowany val1 = map(val1, 0, 1023, 10, 170); //Mapowanie val1 od 10 do 170 i przypisanie do val1 roll1.write(val1); //Zapis serwa roll1 do pozycji zdefiniowanej przez val1 roll2.write(val1); //Zapis serwo roll2 do pozycji zdefiniowanej przez val1 }

val2 = odczyt analogowy(pot2); //Odczyt pot2 (pin analogowy 2) i zapisz wartość jako val2 if(val2>= 485 && val2<= 540){ //Sprawdzenie, czy "Joystick" (potencjometr) jest wyśrodkowany elev1.write(90); //Zapis serwomechanizmu elev1 do pozycji środkowej elev2.write(90); //Zapis serwa elev2 do pozycji środkowej } else{ //Co zrobić, jeśli "Joystick" nie jest wyśrodkowany val3 = map(val2, 0, 1023, 10, 170); //Mapowanie val2 od 10 do 170 i przypisanie do val3 val4 = map(val2, 0, 1023, 170, 10); //Mapowanie val2 od 170 do 10 i przypisanie do val4 elev1.write(val3); //Zapis serwa elev1 do pozycji zdefiniowanej przez val3 elev2.write(val4); //Zapis serwa elev2 do pozycji zdefiniowanej przez val4 }

val5 = odczyt analogowy(pot3); //Odczyt pot3 (pin analogowy 4) i zapisz wartość jako val5 if(val5>= 485 && val5<= 540){ //Sprawdzenie, czy "Joystick" (potencjometr) jest wyśrodkowany yaw1.write(90); //Zapis serwomechanizmu yaw1 do pozycji środkowej yaw2.write(90); //Zapisywanie odchylenia serwa2 na pozycję środkową } else{ //Co zrobić, jeśli "Joystick" nie jest wyśrodkowany val6 = map(val5, 0, 1023, 10, 170); //Mapowanie val5 od 10 do 170 i przypisanie do val6 val7 = map(val5, 0, 1023, 170, 10); //Mapowanie val5 od 10 do 170 i przypisanie do val7 yaw1.write(val6); //Zapis serwa yaw1 do pozycji zdefiniowanej przez val6 yaw2.write(val7); //Zapis yaw2 serwa do pozycji zdefiniowanej przez val7 }

val8 = odczyt analogowy(pot4); //Odczyt pot4 (pin analogowy 5) i zapisz wartość jako val8 if(val8 > 470 && val8 80 && val8<80)||(mspeed80)){ //Sprawdzenie, czy silnik ma zamiar zmienić kierunek esc.write(80); opóźnienie (1000); //Oczekiwanie 1000 milisekund } esc.write(val8); //Zapis serwa esc do prędkości określonej przez val8 mspeed=val8; //Przechowywanie aktualnej prędkości do porównania } } Serial.print("przepustnica "); //Użycie Serial Print do wyświetlenia słowa „Throttle” Serial.println(val8); //Użycie Serial Print do pokazania wartości, dla której przepustnica jest ustawiona na Serial.print("roll "); //Użycie Serial Print do wyświetlenia słowa „Roll” Serial.println(val1); //Użycie Serial Print, aby wyświetlić wartość, dla której rolka jest ustawiona na Serial.print("podziałka"); //Użycie Serial Print do wyświetlenia słowa „Pitch” Serial.println(val3); //Użycie Serial Print, aby wyświetlić wartość, dla której pitch1 jest ustawiony na Serial.println(val4); //Użycie Serial Print do pokazania wartości, dla której pitch2 jest ustawiony na Serial.print("odchylenie"); //Użycie Serial Print do wyświetlenia słowa "Yaw" Serial.println(val6); //Użycie Serial Print do pokazania wartości, dla której yaw1 jest ustawione na Serial.println(val7); //Korzystanie z wydruku szeregowego do pokazania wartości ustawionej na yaw2 }

Krok 3: Obwody

W załączeniu zdjęcie obwodu na pokładzie łodzi podwodnej.

Stworzyłem niestandardową osłonę dla Arduino, aby uprościć okablowanie. Przesłałem pliki Eagle Schematic & Board dla tarczy. Do wyfrezowania deski użyłem LPKF S63. Serwa z przodu, które sterują rolką, zostaną podłączone do Arduino

w załączeniu zdjęcie układu wewnątrz sterownika.

Krok 4: Części drukowane 3D

Wszystkie te pliki wydrukowałem na moim urządzeniu Monoprice Maker Select Plus. Użyłem filamentu Esun ABS 1,75mm. Moje ustawienia drukowania to 105 stopni C dla temperatury stołu i 255 stopni C dla temperatury ekstrudera. Potrzebna jest tylko 1 z każdej części, z wyjątkiem tego, że będziesz potrzebować 6 kopii przedniego skrzydła. Zauważ, że te części zostały wydrukowane z grubością ścianki ustawioną na 1000 mm. Zrobiono to tak, aby części były drukowane ze 100% wypełnieniem, aby miały ujemną pływalność.

Krok 5: Montaż

********************************* WKRÓTCE *************** ********************

Zalecana: