Índice:

Veículo submersível: 5 etapas
Veículo submersível: 5 etapas

Vídeo: Veículo submersível: 5 etapas

Vídeo: Veículo submersível: 5 etapas
Vídeo: Como funcionam as Bombas submersas? 2024, Novembro
Anonim
Veículo Submersível
Veículo Submersível
Veículo Submersível
Veículo Submersível

**************** ESTE INSTRUÍVEL AINDA É UM TRABALHO EM ANDAMENTO ****************

Este Instructable foi criado em cumprimento ao requisito do projeto do Makecourse na University of South Florida (www.makecourse.com).

Este Instructable será uma breve visão geral da criação do veículo submersível que projetei e construí para minha aula de Makecourse na University of South Florida. Neste Instructable, irei fornecer uma lista de materiais, o código de controle que criei para o Arduino Uno que usei e uma visão geral de como montar o submersível.

Etapa 1: Materiais

Materiais
Materiais
Materiais
Materiais
Materiais
Materiais

A eletrônica usada onde:

1x Arduino Uno

1x câmera de ação mobius

1x câmera de ação mobius usb-b para cabo A / V

1x field view 777 display display

1x marinho turnigy 50A ESC (controle eletrônico de velocidade)

1x cartão de programação marítima turnigy

1x T-Motor Navigator 400kv

1x YEP 20A BEC (circuito de eliminação de bateria)

6x servos impermeáveis HK15139 hobby king

2 conectores em T paralelos e chicotes

2 fios de extensão servo de 18 polegadas

Fios de extensão servo 6x 6 polegadas

2 baterias Lipo 1300mah 3s

2 baterias Lipo 2500mah 4s

1 placa de distribuição de energia com saídas fixas de 5v e 12v

Os materiais de construção onde:

1 folha de madeira compensada de 3/16 polegadas

1x tubo de transporte ABS ID de 6 polegadas

1 tubo de silicone

1 lata de vedação flexível

4 carretéis de filamento de impressora 3D ABS

1x corrediça de gaveta de 24 polegadas

Tubo termorretrátil

1x 3 metros de velcro duraloc da marca scotch

1x JB Weld plástico epóxi

1 x 6,2 polegadas de diâmetro de cúpula de câmera de segurança de acrílico

2 passagens Ethernet IP68

2x cabo ethernet cat6 de 24 polegadas

1 cabo ethernet cat6 de 200 pés

O hardware usado foi:

Parafusos de madeira de latão 24x 1/2 polegada

24x ------ parafusos (incluídos com servos)

As ferramentas utilizadas:

Chaves de fenda Philip e cabeça chata

Conjunto de chaves Allen

Ferro de solda

Pistola de calor

Impressora 3D (usei uma Monoprice Maker Select Plus)

Etapa 2: Programação

Programação
Programação
Programação
Programação
Programação
Programação
Programação
Programação

Abaixo está o código que foi criado para controlar o submersível. Também anexei o arquivo.ino para que ele possa ser baixado.

Este código foi criado para o Arduino Uno usando o compilador Arduino.

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

Autor: Jonah Powers Data: 2018-11-09 Objetivo: Código de Controle para Veículo Submersível Operado Remotamente ****************************** ************************************************** *************************************************** ************************************* / #include // Incluindo Servo Biblioteca Servo roll1; // Declarando roll1 como um servo Servo roll2; // Declarando roll2 como um servo Servo elev1; // Declarando elev1 como um servo Servo elev2; // Declarando elev2 como um servo Servo yaw1; // Declarando yaw1 como um servo Servo yaw2; // Declarando yaw2 como um servo Servo esc; // Declarando esc como um servo

int pot1 = 0; // Inicializando a variável pot1 como um inteiro e definindo-a igual a 0 int pot2 = 1; // Inicializando a variável pot2 como um inteiro e definindo-a igual a 2 int pot3 = 2; // Inicializando a variável pot3 como um inteiro e configurando-a igual a 4 int pot4 = 3; // Inicializando a variável pot4 como um inteiro e definindo-a igual a 5 int val1; // Inicializando a variável val1 como um inteiro int val2; // Inicializando a variável val2 como um inteiro int val3; // Inicializando a variável val3 como um inteiro int val4; // Inicializando a variável val4 como um inteiro int val5; // Inicializando a variável val5 como um inteiro int val6; // Inicializando a variável val6 como um inteiro int val7; // Inicializando a variável val7 como um inteiro int val8; // Inicializando a variável val8 como um inteiro int mspeed; // Inicializando a variável mspeed como um inteiro

void setup () {// Estágio de inicialização do Arduino Serial.begin (9600); // Inicializando o monitor serial roll1.attach (2); // Anexando servo roll1 ao pino digital 2 roll2.attach (3); // Conectando o servo roll2 ao pino digital 3 elev1.attach (5); // Conectando o servo elev1 ao pino digital 5 elev2.attach (6); // Conectando o servo elev2 ao pino digital 6 yaw1.attach (8); // Anexando servo yaw1 ao pino digital 8 yaw2.attach (9); // Anexando servo yaw2 ao pino digital 9 esc.attach (11); // Anexando servo esc ao pino digital 11 roll1.write (90); // Escrevendo servo roll1 em sua posição centralizada roll2.write (90); // Escrevendo servo roll2 em sua posição centralizada elev1.write (90); // Escrevendo servo elev1 em sua posição centralizada elev2.write (90); // Escrevendo servo elev2 em sua posição centralizada yaw1.write (90); // Escrevendo servo yaw1 em sua posição centrada yaw2.write (90); // Escrevendo servo yaw2 em sua posição centralizada esc.write (180); // Escrevendo o servo esc para sua posição central delay (2500); // Esperando 2 segundos esc.write (90); atraso (5000); }

void loop () {// Código principal para loop infinito if (analogRead (pot1) <1 && analogRead (pot2) <1 && analogRead (pot3) <1 && analogRead (pot4) = 485 && val1 <= 540) {// Verificando se "Joystick" (potenciômetro) está centrado roll1.write (90); // Escrevendo servo roll1 na posição central roll2.write (90); // Escrevendo servo roll2 na posição central} else {// O que fazer se "Joystick" não estiver centrado val1 = map (val1, 0, 1023, 10, 170); // Mapeando val1 de 10 a 170 e atribuindo a val1 roll1.write (val1); // Escrevendo servo roll1 na posição definida por val1 roll2.write (val1); // Escrevendo servo roll2 na posição definida por val1}

val2 = analogRead (pot2); // Lendo pot2 (pino analógico 2) e salve o valor como val2 if (val2> = 485 && val2 <= 540) {// Verificando se "Joystick" (potenciômetro) está centralizado elev1.write (90); // Escrevendo servo elev1 na posição central elev2.write (90); // Escrevendo servo elev2 na posição central} else {// O que fazer se "Joystick" não estiver centralizado val3 = map (val2, 0, 1023, 10, 170); // Mapeando val2 de 10 a 170 e atribuindo a val3 val4 = map (val2, 0, 1023, 170, 10); // Mapeando val2 de 170 a 10 e atribuindo a val4 elev1.write (val3); // Escrevendo servo elev1 na posição definida por val3 elev2.write (val4); // Escrevendo servo elev2 na posição definida por val4}

val5 = analogRead (pot3); // Lendo pot3 (pino analógico 4) e salve o valor como val5 if (val5> = 485 && val5 <= 540) {// Verificando se "Joystick" (potenciômetro) está centralizado yaw1.write (90); // Escrevendo servo yaw1 na posição central yaw2.write (90); // Escrevendo servo yaw2 na posição central} else {// O que fazer se "Joystick" não estiver centrado val6 = map (val5, 0, 1023, 10, 170); // Mapeando val5 de 10 a 170 e atribuindo a val6 val7 = map (val5, 0, 1023, 170, 10); // Mapeando val5 de 10 a 170 e atribuindo a val7 yaw1.write (val6); // Escrevendo servo yaw1 na posição definida por val6 yaw2.write (val7); // Escrevendo servo yaw2 na posição definida por val7}

val8 = analogRead (pot4); // Lendo pot4 (pino analógico 5) e salve o valor como val8 if (val8> 470 && val8 80 && val8 <80) || (mspeed80)) {// Verificando se o motor está prestes a mudar de direção esc.write (80); atraso (1000); // Esperando 1000 milissegundos} esc.write (val8); // Escrevendo servo esc para velocidade definida por val8 mspeed = val8; // Armazenando a velocidade atual para comparação}} Serial.print ("throttle"); // Usando Serial Print para mostrar a palavra "Throttle" Serial.println (val8); // Usando Serial Print para mostrar o valor que o regulador de pressão é definido como Serial.print ("roll"); // Usando Serial Print para mostrar a palavra "Roll" Serial.println (val1); // Usando Serial Print para mostrar o valor que o rolo está definido para Serial.print ("pitch"); // Usando Serial Print para mostrar a palavra "Pitch" Serial.println (val3); // Usando Serial Print para mostrar o valor que pitch1 é definido como Serial.println (val4); // Usando Serial Print para mostrar o valor que pitch2 é definido como Serial.print ("yaw"); // Usando Serial Print para mostrar a palavra "Yaw" Serial.println (val6); // Usando Serial Print para mostrar o valor que yaw1 é definido como Serial.println (val7); // Usando Serial Print para mostrar o valor que yaw2 está definido para}

Etapa 3: Circuito

Em anexo está uma foto do circuito a bordo do submersível.

Criei um escudo personalizado para o Arduino para simplificar minha fiação. Eu carreguei os arquivos Eagle Schematic & Board para o escudo. Usei um LPKF S63 para fresar a placa. os Servos na frente do rolo de controle serão conectados ao Arduino

em anexo está uma foto do circuito dentro do controlador.

Etapa 4: peças impressas em 3D

Eu imprimi todos esses arquivos em meu Monoprice Maker Select Plus. Usei Esun ABS 1.75mm Filament. Minhas configurações de impressão foram 105 graus C para a temperatura do leito de impressão e 255 graus C para a temperatura da extrusora. Apenas 1 de cada parte é necessária, exceto que você precisará de 6 cópias da asa dianteira. Observe que essas peças foram impressas com espessura de parede definida para 1000 mm. Isso foi feito para que as peças fossem impressas com 100% de preenchimento, de forma que ficassem com flutuabilidade negativa.

Etapa 5: Montagem

********************************* EM BREVE *************** *******************

Recomendado: