Tabla de contenido:

Vehículo sumergible: 5 pasos
Vehículo sumergible: 5 pasos

Video: Vehículo sumergible: 5 pasos

Video: Vehículo sumergible: 5 pasos
Video: Cómo instalar bomba sumergible 2024, Mes de julio
Anonim
Vehículo sumergible
Vehículo sumergible
Vehículo sumergible
Vehículo sumergible

**************** ESTE INSTRUCTABLE AÚN ES UN TRABAJO EN CURSO ****************

Este Instructable fue creado en cumplimiento del requisito del proyecto de Makecourse en la Universidad del Sur de Florida (www.makecourse.com).

Este Instructable será un breve resumen de la creación del vehículo sumergible que diseñé y construí para mi clase de Makecourse en la Universidad del Sur de Florida. En este Instructable, proporcionaré una lista de materiales, el código de control que creé para el Arduino Uno que usé y una descripción general de cómo ensamblar el sumergible.

Paso 1: Materiales

Materiales
Materiales
Materiales
Materiales
Materiales
Materiales

La electrónica utilizada donde:

1x Arduino Uno

1x cámara de acción mobius

1x cámara de acción mobius usb-b a cable A / V

1x pantalla de visualización 777 de vista de campo

1x turnigy marine 50A ESC (control electrónico de velocidad)

1x tarjeta de programación marina turnigy

1x navegador con motor en T 400kv

1x YEP 20A BEC (circuito de eliminación de batería)

6x hobby king HK15139 servos a prueba de agua

2x conectores en T paralelos y arneses

2x cables de extensión de servo de 18 pulgadas

6 cables de extensión de servo de 6 pulgadas

2x baterías Lipo 1300mah 3s

2x 2500mah 4s baterías Lipo

1x tablero de distribución de energía con salidas fijas de 5v y 12v

Los materiales de construcción donde:

1x hoja de madera contrachapada de 3/16 de pulgada

Tubo de envío ABS ID de 1x 6 pulgadas

1x tubo de silicona

1x lata de sello flexible

4x carretes de filamento de impresora 3D ABS

1 diapositiva de cajón de 24 pulgadas

Tubo termorretráctil

1x 10 pies de velcro duraloc marca escocesa

1x epoxi plástico JB Weld

1 x domo de cámara de seguridad de acrílico de 6.2 pulgadas de diámetro

2 conexiones de Ethernet IP68

2x cable ethernet cat6 de 24 pulgadas

1x cable ethernet cat6 de 200 pies

El hardware utilizado fue:

24 tornillos para madera de latón de 1/2 pulgada

24x ------ tornillos (incluidos con los servos)

Las herramientas utilizadas:

Destornilladores Phillips y de cabeza plana

Juego de llaves Allen

Soldador

Pistola de calor

Impresora 3D (utilicé una Monoprice Maker Select Plus)

Paso 2: programación

Programación
Programación
Programación
Programación
Programación
Programación
Programación
Programación

A continuación se muestra el código que se creó para controlar el sumergible. También he adjuntado el archivo.ino para que se pueda descargar.

Este código fue creado para Arduino Uno usando el compilador Arduino.

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

Autor: Jonah Powers Fecha: 9/11/2018 Propósito: Código de control para vehículos sumergibles operados a distancia ***************************** ************************************************ ************************************************ *********************************** / #include // Incluyendo Servo Library Servo roll1; // Declarando que roll1 es un servo Servo roll2; // Declarando roll2 como un servo Servo elev1; // Declarar elev1 como servo Servo elev2; // Declarando elev2 como un servo Servo yaw1; // Declarando que yaw1 es un servo Servo yaw2; // Declarando que yaw2 es un servo Servo esc; // Declarando esc para ser un servo

int pot1 = 0; // Iniciando la variable pot1 como un número entero y poniéndola igual a 0 int pot2 = 1; // Inicializando la variable pot2 como un número entero y poniéndola igual a 2 int pot3 = 2; // Inicializando la variable pot3 como un número entero y estableciéndola igual a 4 int pot4 = 3; // Inicializando la variable pot4 como un entero y estableciéndola igual a 5 int val1; // Iniciando la variable val1 como un entero int val2; // Iniciando la variable val2 como un entero int val3; // Iniciando la variable val3 como un entero int val4; // Iniciando la variable val4 como un entero int val5; // Iniciando la variable val5 como un entero int val6; // Inicializando la variable val6 como un entero int val7; // Inicializando la variable val7 como un entero int val8; // Iniciando la variable val8 como un entero int mspeed; // Inicializando la variable mspeed como un entero

void setup () {// Etapa de inicialización de Arduino Serial.begin (9600); // Inicializando el monitor serial roll1.attach (2); // Conectando el servo roll1 al pin digital 2 roll2.attach (3); // Conectando servo roll2 al pin digital 3 elev1.attach (5); // Conectando el servo elev1 al pin digital 5 elev2.attach (6); // Conectando el servo elev2 al pin digital 6 yaw1.attach (8); // Conectando el servo yaw1 al pin digital 8 yaw2.attach (9); // Conectando el servo yaw2 al pin digital 9 esc.attach (11); // Conectando el servo esc al pin digital 11 roll1.write (90); // Escribiendo servo roll1 en su posición centrada roll2.write (90); // Escribiendo servo roll2 en su posición centrada elev1.write (90); // Escribiendo el servo elev1 en su posición central elev2.write (90); // Escribiendo el servo elev2 en su posición central yaw1.write (90); // Escribiendo el servo yaw1 en su posición centrada yaw2.write (90); // Escribiendo el servo yaw2 en su posición centrada esc.write (180); // Escribiendo el servo esc a su posición central delay (2500); // Esperando 2 segundos esc.write (90); retraso (5000); }

void loop () {// Código principal para hacer un bucle infinito if (analogRead (pot1) <1 && analogRead (pot2) <1 && analogRead (pot3) <1 && analogRead (pot4) = 485 && val1 <= 540) {// Comprobando si el "Joystick" (potenciómetro) está centrado roll1.write (90); // Escribiendo servo roll1 en la posición central roll2.write (90); // Escribiendo servo roll2 en la posición central} else {// Qué hacer si el "Joystick" no está centrado val1 = map (val1, 0, 1023, 10, 170); // Mapeando val1 de 10 a 170 y asignando a val1 roll1.write (val1); // Escribiendo servo roll1 en la posición definida por val1 roll2.write (val1); // Escribiendo servo roll2 a la posición definida por val1}

val2 = analogRead (pot2); // Leer pot2 (pin analógico 2) y guardar el valor como val2 if (val2> = 485 && val2 <= 540) {// Verificando si el "Joystick" (potenciómetro) está centrado elev1.write (90); // Escribiendo el servo elev1 en la posición central elev2.write (90); // Escribiendo el servo elev2 en la posición central} else {// Qué hacer si el "Joystick" no está centrado val3 = map (val2, 0, 1023, 10, 170); // Mapeando val2 de 10 a 170 y asignando a val3 val4 = map (val2, 0, 1023, 170, 10); // Mapeando val2 de 170 a 10 y asignando a val4 elev1.write (val3); // Escribiendo servo elev1 en la posición definida por val3 elev2.write (val4); // Escribiendo servo elev2 a la posición definida por val4}

val5 = analogRead (pot3); // Leer pot3 (pin analógico 4) y guardar el valor como val5 if (val5> = 485 && val5 <= 540) {// Verificando si el "Joystick" (potenciómetro) está centrado yaw1.write (90); // Escribiendo el servo yaw1 en la posición central yaw2.write (90); // Escribiendo el servo yaw2 en la posición central} else {// Qué hacer si el "Joystick" no está centrado val6 = map (val5, 0, 1023, 10, 170); // Mapeando val5 de 10 a 170 y asignando a val6 val7 = map (val5, 0, 1023, 170, 10); // Mapeando val5 de 10 a 170 y asignando a val7 yaw1.write (val6); // Escribiendo el servo yaw1 en la posición definida por val6 yaw2.write (val7); // Escribiendo servo yaw2 en la posición definida por val7}

val8 = analogRead (pot4); // Leer pot4 (pin analógico 5) y guardar el valor como val8 if (val8> 470 && val8 80 && val8 <80) || (mspeed80)) {// Verificando si el motor está a punto de cambiar de dirección esc.write (80); retraso (1000); // Esperando 1000 milisegundos} esc.write (val8); // Escribiendo el servo esc a la velocidad definida por val8 mspeed = val8; // Almacenando la velocidad actual para comparar}} Serial.print ("throttle"); // Usando Serial Print para mostrar la palabra "Throttle" Serial.println (val8); // Usando Serial Print para mostrar el valor que el acelerador está configurado en Serial.print ("roll"); // Usando Serial Print para mostrar la palabra "Roll" Serial.println (val1); // Usando Serial Print para mostrar el valor que el rollo está establecido en Serial.print ("pitch"); // Usando Serial Print para mostrar la palabra "Pitch" Serial.println (val3); // Usando Serial Print para mostrar el valor que pitch1 está establecido en Serial.println (val4); // Usando Serial Print para mostrar el valor que pitch2 está establecido en Serial.print ("yaw"); // Usando Serial Print para mostrar la palabra "Yaw" Serial.println (val6); // Usando Serial Print para mostrar el valor que yaw1 está establecido en Serial.println (val7); // Usando Serial Print para mostrar el valor que yaw2 está establecido en}

Paso 3: Circuito

Se adjunta una foto del circuito a bordo del sumergible.

Creé un escudo personalizado para Arduino para simplificar mi cableado. He subido los archivos Eagle Schematic & Board para el escudo. Usé una LPKF S63 para fresar la placa. los Servos en la parte delantera que el rollo de control se conectará a Arduino

adjunta hay una foto del circuito dentro del controlador.

Paso 4: Piezas impresas en 3D

Imprimí todos estos archivos en mi Monoprice Maker Select Plus. Usé filamento Esun ABS de 1,75 mm. Mi configuración de impresión fue de 105 grados C para la temperatura de la cama de impresión y 255 grados C para la temperatura de la extrusora. Solo se necesita 1 de cada parte, excepto que necesitará 6 copias del alerón delantero. Tenga en cuenta que estas piezas se imprimieron con un grosor de pared establecido en 1000 mm. Esto se hizo para que las piezas se imprimieran con un 100% de relleno para que tuvieran una flotabilidad negativa.

Paso 5: Montaje

********************************* PRÓXIMAMENTE, EN BREVE, PRONTO *************** *******************

Recomendado: