Taula de continguts:

Vehicle submergible: 5 passos
Vehicle submergible: 5 passos

Vídeo: Vehicle submergible: 5 passos

Vídeo: Vehicle submergible: 5 passos
Vídeo: The Making of the Deep Submergence Vehicle (DSV) Limiting Factor - A Documentary by Nick Verola 2024, Desembre
Anonim
Vehicle submergible
Vehicle submergible
Vehicle submergible
Vehicle submergible

**************** AQUEST INSTRUCTABLE ÉS AIXÍ UNA OBRA EN PROGRÉS ****************

Aquest instructable es va crear per complir els requisits del projecte del Makecourse de la Universitat del Sud de Florida (www.makecourse.com).

Aquest instructiu serà una breu visió general de la creació del vehicle submergible que vaig dissenyar i construir per a la meva classe Makecourse a la Universitat del sud de Florida. En aquest instructiu proporcionaré una llista de materials, el codi de control que he creat per a l’Arduino Uno que he utilitzat i una visió general de com muntar el submergible.

Pas 1: materials

Materials
Materials
Materials
Materials
Materials
Materials

L'electrònica utilitzada on:

1x Arduino Uno

1x càmera d'acció mobius

1x càmera d'acció mobius usb-b a cable A / V

1x pantalla de visualització de camp 777

1x turnigy marine 50A ESC (control electrònic de velocitat)

1x targeta de programació turnigy marine

1x T-Motor Navigator 400kv

1x YEP 20A BEC (circuit d’eliminació de bateries)

6x servos impermeables hobby king HK15139

2x connectors en paral·lel i arnesos

2 cables d'extensió de servo de 18 polzades

Cables d'extensió de servo de 6x 6 polzades

2x bateries Lipo de 1300 mah 3s

2x bateries Lipo de 2500 mah 4s

1x placa de distribució de potència amb sortides fixes tant de 5v com de 12v

Els materials de construcció on:

1x full de fusta contraxapada de 3/16 polzades

1x tub d’enviament d’ID ABS de 6 polzades

1x tub de silicona

1x llauna de segellat flexible

4x bobines de filament d’impressora 3D ABS

1x portaobjectes de 24 polzades

Tub de contracció de calor

1x 10 peus de velcro duraloc de la marca scotch

1x epoxi de plàstic soldat JB

Càmera de seguretat acrílica 1x 6,2 polzades de diàmetre

2 passos Ethernet IP68

Cable ethernet de 2x 24 polzades cat6

1 cable Ethernet cat6 de 200 peus

El maquinari utilitzat va ser:

Cargols de fusta de llautó de 24x 1/2 polzada

24x ------ cargols (inclosos amb servos)

Les eines utilitzades:

Tornavisos de capçalera Philip i Flat

Joc de claus Allen

Soldador

Pistola de calor

Impressora 3D (he utilitzat un Monoprice Maker Select Plus)

Pas 2: programació

Programació
Programació
Programació
Programació
Programació
Programació
Programació
Programació

A continuació es mostra el codi que es va crear per controlar el submergible. També he adjuntat el fitxer.ino perquè es pugui descarregar.

Aquest codi es va crear per a l'Arduino Uno mitjançant el compilador Arduino.

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

Autor: Jonah Powers Data: 9/11/2018 Finalitat: Codi de control per a un vehicle submergible operat a distància ****************************** *************************************************** *************************************************** ************************************ / #include // Inclou Servo Library Servo roll1; // Declarar roll1 com a servo Servo roll2; // Declarar roll2 com a servo Servo elev1; // Declarar elev1 com a servo Servo elev2; // Declarar elev2 com a servo servo yaw1; // Declarar Yaw1 com a servo Servo Yaw2; // Declarar yaw2 com a servo Servo esc; // Declarar esc com a servo

int pot1 = 0; // Inicialitzant la variable pot1 com a enter i establint-la igual a 0 int pot2 = 1; // Inicialitzant la variable pot2 com a enter i establint-la igual a 2 int pot3 = 2; // Inicialitzant la variable pot3 com a enter i establint-la en 4 int pot4 = 3; // Inicialitzant la variable pot4 com a enter i establint-la igual a 5 int val1; // Variable inicialitzadora val1 com a enter int val2; // Variable inicialitzadora val2 com a enter int val3; // Variable inicialitzadora val3 com a enter int val4; // Variable inicialitzadora val4 com a enter int val5; // Variable inicialitzadora val5 com a enter int val6; // Variable inicialitzadora val6 com a enter int val7; // Variable inicialitzadora val7 com a enter int val8; // Inicialitzant la variable val8 com un enter int mspeed; // Variable inicialitzant mspeed com a enter

void setup () {// Etapa d'inicialització d'Arduino Serial.begin (9600); // Inicialització de la monitora sèrie roll1.attach (2); // Col·locació del servo roll1 al pin digital 2 roll2.attach (3); // Fixació del servo roll2 al pin digital 3 elev1.attach (5); // Fixació del servo elev1 al pin digital 5 elev2.attach (6); // Fixació del servo elev2 al pin digital 6 yaw1.attach (8); // Fixació del servo yaw1 al pin digital 8 yaw2.attach (9); // Fixació del servo yaw2 al pin digital 9 esc.attach (11); // Fixació del servo esc al pin digital 11 roll1.write (90); // Escrivint el rotlle servo1 a la seva posició central roll2.write (90); // Servo roll2 d’escriptura a la seva posició centrada elev1.write (90); // Escrivint el servo elev1 a la seva posició centrada elev2.write (90); // Escrivint el servo elev2 a la seva posició central yaw1.write (90); // Escrivint servo yaw1 a la seva posició central yaw2.write (90); // Escrivint el servo yaw2 a la seva posició central esc.write (180); // Escriure servo esc a la seva posició de retard centrada (2500); // Esperant 2 segons esc.write (90); retard (5000); }

void loop () {// Codi principal per fer un bucle infinitament si (analogRead (pot1) <1 && analogRead (pot2) <1 && analogRead (pot3) <1 && analogRead (pot4) = 485 && val1 <= 540) {// Comprovant si el "Joystick" (potenciòmetre) està centrat roll1.write (90); // Escriptura del servo roll1 a la posició central roll2.write (90); // Escriptura del servo roll2 a la posició central} else {// Què cal fer si el "Joystick" no està centrat val1 = mapa (val1, 0, 1023, 10, 170); // Assignació de val1 de 10 a 170 i assignació a val1 roll1.write (val1); // Escriptura del servo roll1 al positó definit per val1 roll2.write (val1); // Escriptura del servo roll2 al positó definit per val1}

val2 = analogRead (pot2); // Llegint pot2 (pin analògic 2) i deseu el valor com val2 if (val2> = 485 && val2 <= 540) {// Comprovant si el "Joystick" (potenciòmetre) està centrat elev1.write (90); // Escrivint el servo elev1 a la posició central elev2.write (90); // Escriure el servo elev2 a la posició central} else {// Què cal fer si el "Joystick" no està centrat val3 = mapa (val2, 0, 1023, 10, 170); // Assignació de val2 de 10 a 170 i assignació a val3 val4 = mapa (val2, 0, 1023, 170, 10); // Assignació de val2 de 170 a 10 i assignació a val4 elev1.write (val3); // Servo d'escriptura elev1 a positó definit per val3 elev2.write (val4); // Escriptura del servo elev2 al positó definit per val4}

val5 = analogRead (pot3); // Llegint pot3 (pin analògic 4) i deseu el valor com val5 if (val5> = 485 && val5 <= 540) {// Comprovant si el "Joystick" (potenciòmetre) està centrat yaw1.write (90); // Escrivint servo yaw1 a la posició central yaw2.write (90); // Escriure el servo yaw2 a la posició central} else {// Què cal fer si el "Joystick" no està centrat val6 = mapa (val5, 0, 1023, 10, 170); // Assignació de val5 de 10 a 170 i assignació a val6 val7 = mapa (val5, 0, 1023, 170, 10); // Assignació de val5 de 10 a 170 i assignació a val7 yaw1.write (val6); // Escrivint servo yaw1 a positó definit per val6 yaw2.write (val7); // Servo d'escriptura yaw2 al positó definit per val7}

val8 = analogRead (pot4); // Llegint pot4 (pin analògic 5) i deseu el valor com val8 if (val8> 470 && val8 80 && val8 <80) || (mspeed80)) {// Comprovar si el motor està a punt de canviar de direcció esc.write (80); retard (1000); // Esperant 1000 mil·lisegons} esc.write (val8); // Escriure servo esc a la velocitat definida per val8 mspeed = val8; // Emmagatzematge de la velocitat actual per a la comparació}} Serial.print ("accelerador"); // Utilitzant Serial Print per mostrar la paraula "Throttle" Serial.println (val8); // Utilitzant Serial Print per mostrar el valor que l’accelerador s’estableix en Serial.print ("roll"); // Utilitzant Serial Print per mostrar la paraula "Roll" Serial.println (val1); // Utilitzant Serial Print per mostrar el valor que el rodatge està definit en Serial.print ("pitch"); // Utilitzant Serial Print per mostrar la paraula "Pitch" Serial.println (val3); // Utilitzant Serial Print per mostrar el valor que pitch1 està definit a Serial.println (val4); // Utilitzant Serial Print per mostrar el valor que pitch2 està definit a Serial.print ("yaw"); // Utilitzant Serial Print per mostrar la paraula "Yaw" Serial.println (val6); // Utilitzant Serial Print per mostrar el valor que yaw1 s'estableix en Serial.println (val7); // Utilització de la impressió en sèrie per mostrar el valor que es defineix a yaw2}

Pas 3: Circuit

Adjunta una foto del circuit a bord del submergible.

Vaig crear un blindatge personalitzat per a l’Arduino per simplificar el cablejat. He penjat els fitxers Eagle Schematic & Board per a l'escut. Vaig utilitzar un LPKF S63 per fresar la placa. els Servos de la part davantera que controlen el rotllo es connectaran a Arduino

s'adjunta una foto del circuit a l'interior del controlador.

Pas 4: peces impreses en 3D

He imprès tots aquests fitxers al meu Monoprice Maker Select Plus. He utilitzat filament Esun ABS 1,75 mm. La meva configuració d'impressió era de 105 graus C per a la temperatura del llit d'impressió i de 255 graus C per a la temperatura de l'extrusora. Només es necessita 1 de cada part, tret que necessiteu 6 còpies de l’ala frontal. Tingueu en compte que aquestes peces es van imprimir amb un gruix de paret ajustat a 1000 mm. Això es va fer de manera que les peces s’imprimissin amb un 100% de farciment de manera que fossin negatives.

Pas 5: Muntatge

********************************* PRÒXIMAMENT *************** *******************

Recomanat: