Sommario:

Veicolo sommergibile: 5 passaggi
Veicolo sommergibile: 5 passaggi

Video: Veicolo sommergibile: 5 passaggi

Video: Veicolo sommergibile: 5 passaggi
Video: La Nuova Gigantesca Portaerei Americana che Sconvolge il Mondo 2024, Novembre
Anonim
Veicolo sommergibile
Veicolo sommergibile
Veicolo sommergibile
Veicolo sommergibile

**************** QUESTO ISTRUZIONI È ANCORA UN LAVORO IN CORSO ****************

Questo Instructable è stato creato in adempimento dei requisiti di progetto del Makecourse presso la University of South Florida (www.makecourse.com).

Questo Instructable sarà una breve panoramica della creazione del veicolo sommergibile che ho progettato e costruito per la mia classe Makecourse presso l'Università della Florida del sud. In questo Instructable fornirò una distinta base, il codice di controllo che ho creato per Arduino Uno che ho usato e una panoramica su come assemblare il sommergibile.

Passaggio 1: materiali

Materiali
Materiali
Materiali
Materiali
Materiali
Materiali

L'elettronica utilizzata dove:

1x Arduino Uno

1x action cam mobius

1x action cam mobius da USB-B a cavo A/V

1x visualizzazione campo 777 schermo di visualizzazione

1x turnigy marine 50A ESC (controllo elettronico della velocità)

1x scheda di programmazione marina turnigy

1x Navigatore T-Motore 400kv

1x YEP 20A BEC (circuito di eliminazione della batteria)

6 servi impermeabili HK15139 per hobby king

2x connettori a T paralleli y cablaggi

2 cavi di prolunga servo da 18 pollici

6 cavi di prolunga servo da 6 pollici

2 batterie Lipo da 1300 mAh 3s

2 batterie Lipo 2500mAh 4s

1x scheda di distribuzione dell'alimentazione con uscite fisse 5v e 12v

I materiali di costruzione dove:

1x foglio di compensato da 3/16 di pollice

1 tubo di spedizione in ABS ID da 6 pollici

1x tubo di silicone

1x lattina di sigillo flessibile

4x bobine di filamento per stampante 3D in ABS

1x cassetto scorrevole da 24 pollici

Tubo termoretraibile

1x 10 piedi di scotch marca duraloc velcro

1x JB Weld plastica epossidica

1x cupola per telecamera di sicurezza acrilica da 6,2 pollici di diametro

2x passthrough ethernet IP68

2 cavi ethernet cat6 da 24 pollici

1x cavo ethernet cat6 da 200 piedi

L'hardware utilizzato è stato:

Viti per legno in ottone da 24x 1/2 pollici

24x ------ viti (incluse con i servi)

Gli strumenti utilizzati:

Philip's e cacciaviti a testa piatta

Set chiavi a brugola

Saldatore

Pistola termica

Stampante 3D (ho usato una Monoprice Maker Select Plus)

Passaggio 2: programmazione

Programmazione
Programmazione
Programmazione
Programmazione
Programmazione
Programmazione
Programmazione
Programmazione

Di seguito è riportato il codice che è stato creato per controllare il sommergibile. Ho anche allegato il file.ino in modo che possa essere scaricato.

Questo codice è stato creato per Arduino Uno utilizzando il compilatore Arduino.

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

Autore: Jonah Powers Data: 9/11/2018 Scopo: Codice di controllo per veicolo sommergibile a comando remoto ****************************** ************************************************** ************************************************** ************************************/ #include //Include servo libreria Servo roll1; //Dichiara che roll1 è un servo Servo roll2; //Dichiara che roll2 è un servo Servo elev1; //Dichiara che elev1 è un servo Servo elev2; //Dichiara che elev2 è un servo Servo imbardata1; //Dichiara che yaw1 è un servo Servo yaw2; //Dichiarando che yaw2 è un servo Servo esc; //Dichiara che esc è un servo

int pot1 = 0; //Inizializzazione variabile pot1 come numero intero e impostandola uguale a 0 int pot2 = 1; //Inizializzazione variabile pot2 come numero intero e impostandola uguale a 2 int pot3 = 2; //Inizializzazione variabile pot3 come numero intero e impostandola uguale a 4 int pot4 = 3; //Inizializzazione variabile pot4 come intero e impostandola uguale a 5 int val1; //Inizializzazione della variabile val1 come intero int val2; //Inizializzazione della variabile val2 come intero int val3; //Inizializzazione della variabile val3 come intero int val4; //Inizializzazione della variabile val4 come intero int val5; //Inizializzazione della variabile val5 come intero int val6; //Inizializzazione della variabile val6 come intero int val7; //Inizializzazione della variabile val7 come intero int val8; //Inizializzazione della variabile val8 come intero int mspeed; //Inizializzazione variabile mspeed come numero intero

void setup() { //Fase di inizializzazione Arduino Serial.begin(9600); //Inizializzazione del monitor seriale roll1.attach(2); //Collegamento del servo roll1 al pin digitale 2 roll2.attach(3); //Collegamento del servo roll2 al pin digitale 3 elev1.attach(5); //Collegamento del servo elev1 al pin digitale 5 elev2.attach(6); //Collegamento del servo elev2 al pin digitale 6 yaw1.attach(8); //Collegamento del servo yaw1 al pin digitale 8 yaw2.attach(9); //Collegamento del servo yaw2 al pin digitale 9 esc.attach(11); //Collegamento del servo esc al pin digitale 11 roll1.write(90); //Scrivere il servo roll1 nella sua posizione centrata roll2.write(90); //Scrivere servo roll2 nella sua posizione centrata elev1.write(90); //Scrivere servo elev1 nella sua posizione centrata elev2.write(90); //Scrivere servo elev2 nella sua posizione centrata yaw1.write(90); //Scrivere servo yaw1 nella sua posizione centrata yaw2.write(90); //Scrivere servo yaw2 nella sua posizione centrata esc.write(180); //Scrivere servo esc nella sua posizione centrata delay(2500); //In attesa di 2 secondi esc.write(90); ritardo (5000); }

void loop() { //Codice principale per eseguire un ciclo infinito if(analogRead(pot1)<1 && analogRead(pot2)<1 && analogRead(pot3)<1 && analogRead(pot4)= 485 && val1<= 540){ // Controllo per vedere se "Joystick" (potenziometro) è centrato roll1.write(90); //Scrivere il servo roll1 nella posizione centrale roll2.write(90); //Scrivere servo roll2 in posizione centrale } else{ //Cosa fare se "Joystick" non è centrato val1 = map(val1, 0, 1023, 10, 170); //Mapping val1 da 10 a 170 e assegnazione a val1 roll1.write(val1); //Scrivere servo roll1 nella posizione definita da val1 roll2.write(val1); //Scrivere servo roll2 nella posizione definita da val1 }

val2 = analogRead(pot2); //Lettura pot2 (pin analogico 2) e salvataggio valore come val2 if(val2>= 485 && val2<= 540){ //Controllo per vedere se "Joystick" (potenziometro) è centrato elev1.write(90); //Scrivere servo elev1 nella posizione centrale elev2.write(90); //Scrivere servo elev2 in posizione centrale } else{ //Cosa fare se "Joystick" non è centrato val3 = map(val2, 0, 1023, 10, 170); //Mapping val2 da 10 a 170 e assegnazione a val3 val4 = map(val2, 0, 1023, 170, 10); //Mapping val2 da 170 a 10 e assegnazione a val4 elev1.write(val3); //Scrivere servo elev1 nella posizione definita da val3 elev2.write(val4); //Scrivere servo elev2 nella posizione definita da val4 }

val5 = analogRead(pot3); //Lettura pot3 (pin analogico 4) e salvataggio valore come val5 if(val5>= 485 && val5<= 540){ //Controllo per vedere se "Joystick" (potenziometro) è centrato yaw1.write(90); //Scrivere servo yaw1 nella posizione centrale yaw2.write(90); //Scrivere servo yaw2 in posizione centrale } else{ //Cosa fare se "Joystick" non è centrato val6 = map(val5, 0, 1023, 10, 170); //Mapping val5 da 10 a 170 e assegnazione a val6 val7 = map(val5, 0, 1023, 170, 10); //Mappa val5 da 10 a 170 e assegna a val7 yaw1.write(val6); //Scrivere servo yaw1 nella posizione definita da val6 yaw2.write(val7); //Scrivo servo yaw2 nella posizione definita da val7 }

val8 = analogRead(pot4); //Lettura pot4 (pin analogico 5) e salvataggio valore come val8 if(val8 > 470 && val8 80 && val8<80)||(mspeed80)){ //Controllo per vedere se il motore sta per cambiare direzione esc.write(80); ritardo(1000); //In attesa di 1000 millisecondi } esc.write(val8); //Scrivere servo esc alla velocità definita da val8 mspeed=val8; //Memorizzazione della velocità corrente per il confronto } } Serial.print("throttle"); //Usando Serial Print per mostrare la parola "Throttle" Serial.println(val8); //Usando Serial Print per mostrare il valore che l'acceleratore è impostato su Serial.print("roll"); //Usando Serial Print per mostrare la parola "Roll" Serial.println(val1); //Usando Serial Print per mostrare il valore che roll è impostato su Serial.print("pitch"); //Usando Serial Print per mostrare la parola "Pitch" Serial.println(val3); //Usando Serial Print per mostrare il valore che pitch1 è impostato su Serial.println(val4); //Usando Serial Print per mostrare il valore che pitch2 è impostato su Serial.print("yaw"); //Usando Serial Print per mostrare la parola "Yaw" Serial.println(val6); //Usando Serial Print per mostrare il valore che yaw1 è impostato su Serial.println(val7); //Usando la stampa seriale per mostrare il valore che yaw2 è impostato su }

Passaggio 3: circuiti

In allegato una foto del circuito a bordo del sommergibile.

Ho creato uno shield personalizzato per Arduino per semplificare il mio cablaggio. Ho caricato i file Eagle Schematic & Board per lo scudo. Ho usato una LPKF S63 per fresare la tavola. i servi nella parte anteriore del rullo di controllo saranno collegati ad Arduino

allegata è una foto del circuito all'interno del controller.

Passaggio 4: parti stampate in 3D

Ho stampato tutti questi file sul mio Monoprice Maker Select Plus. Ho usato il filamento Esun ABS da 1,75 mm. Le mie impostazioni di stampa erano 105 gradi C per la temperatura del piano di stampa e 255 gradi C per la temperatura dell'estrusore. È necessaria solo 1 di ciascuna parte, tranne che avrai bisogno di 6 copie dell'ala anteriore. Nota che queste parti sono state stampate con lo spessore della parete impostato su 1000 mm. Questo è stato fatto in modo che le parti venissero stampate con il 100% di riempimento in modo che potessero galleggiare negativamente.

Passaggio 5: assemblaggio

********************************* PROSSIMAMENTE *************** *******************

Consigliato: