Оглавление:

Погружной аппарат: 5 ступеней
Погружной аппарат: 5 ступеней

Видео: Погружной аппарат: 5 ступеней

Видео: Погружной аппарат: 5 ступеней
Видео: Дренажный (погружной) насос Karcher SP 5 DUAL - новинка! 2024, Июль
Anonim
Подводный аппарат
Подводный аппарат
Подводный аппарат
Подводный аппарат

**************** ДАННАЯ ИНСТРУКЦИЯ В РАБОТЕ ЕЩЕ НЕ РАБОТАЕТ ****************

Это руководство было создано во исполнение требований проекта Makecourse в Университете Южной Флориды (www.makecourse.com).

Это руководство будет кратким обзором создания подводного аппарата, который я спроектировал и построил для моего класса Makecourse в Университете Южной Флориды. В этом руководстве я предоставлю список материалов, управляющий код, который я создал для Arduino Uno, который я использовал, и обзор того, как собрать подводный аппарат.

Шаг 1: материалы

Материалы
Материалы
Материалы
Материалы
Материалы
Материалы

Используемая электроника:

1x Arduino Uno

1x экшн-камера Mobius

1x экшн-камера mobius usb-b - кабель A / V

1x экран дисплея 777 с полевым обзором

1x Turnigy marine 50A ESC (электронный регулятор скорости)

1x карта морского программирования Turnigy

1x T-Motor Navigator 400кв

1x YEP 20A BEC (схема устранения аккумулятора)

6 водонепроницаемых сервоприводов Hobby King HK15139

2 параллельных Т-образных соединителя y жгутов

2x 18-дюймовых удлинительных провода для сервоприводов

6x 6-дюймовых удлинительных проводов для сервоприводов

2x 1300 мАч 3s Lipo батареи

2x 2500 мАч 4s Lipo батареи

1x плата распределения питания с фиксированными выходами 5 В и 12 В

Строительные материалы, в которых:

1x лист фанеры 3/16 дюйма

1x 6-дюймовая транспортировочная трубка из АБС-пластика

1x силиконовая трубка

1x банка гибкого уплотнения

4 катушки с нитью для 3D-принтера ABS

1x 24-дюймовый выдвижной ящик

Термоусадочная трубка

1x 10 футов липучки Duraloc марки Scotch

1x пластиковая эпоксидная смола JB Weld

1x 6,2-дюймовый купол для акриловой камеры безопасности

2 сквозных прохода Ethernet IP68

2x 24-дюймовый кабель Ethernet Cat6

1x 200-футовый кабель Ethernet Cat6

Используемое оборудование было:

24x 1/2 дюйма латунные шурупы по дереву

24x ------ винты (в комплекте с сервоприводами)

Используемые инструменты:

Отвертки с плоской головкой и Филиппа

Набор шестигранных ключей

Паяльник

Тепловая пушка

3D-принтер (я использовал Monoprice Maker Select Plus)

Шаг 2: программирование

Программирование
Программирование
Программирование
Программирование
Программирование
Программирование
Программирование
Программирование

Ниже приведен код, созданный для управления подводным аппаратом. Я также прикрепил файл.ino, чтобы его можно было скачать.

Этот код был создан для Arduino Uno с использованием компилятора Arduino.

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

Автор: Джона Пауэрс Дата: 9.11.2018 Цель: код управления для подводного аппарата с дистанционным управлением ***************************** ************************************************ ************************************************ *********************************** / #include // Включая серво-библиотеку Servo roll1; // Объявление roll1 сервоприводом Servo roll2; // Объявление roll2 сервоприводом Servo elev1; // Объявление elev1 сервоприводом Servo elev2; // Объявление elev2 сервоприводом Servo yaw1; // Объявление yaw1 как сервопривода Servo yaw2; // Объявление yaw2 сервоприводом Servo esc; // Объявление esc как сервопривода

int pot1 = 0; // Инициализация переменной pot1 как целого числа и установка ее равной 0 int pot2 = 1; // Инициализация переменной pot2 как целого числа и установка ее равной 2 int pot3 = 2; // Инициализация переменной pot3 как целого числа и установка ее равной 4 int pot4 = 3; // Инициализация переменной pot4 как целого числа и установка ее равной 5 int val1; // Инициализация переменной val1 как целого числа int val2; // Инициализация переменной val2 как целого числа int val3; // Инициализация переменной val3 как целого числа int val4; // Инициализация переменной val4 как целого числа int val5; // Инициализация переменной val5 как целого числа int val6; // Инициализация переменной val6 как целого числа int val7; // Инициализация переменной val7 как целого числа int val8; // Инициализация переменной val8 как целого числа int mspeed; // Инициализация переменной mspeed как целого числа

void setup () {// Этап инициализации Arduino Serial.begin (9600); // Инициализация серийного монитора roll1.attach (2); // Присоединение сервопривода roll1 к цифровому выводу 2 roll2.attach (3); // Присоединение сервопривода roll2 к цифровому выводу 3 elev1.attach (5); // Присоединяем серво elev1 к цифровому выводу 5 elev2.attach (6); // Присоединяем серво elev2 к цифровому выводу 6 yaw1.attach (8); // Присоединение сервопривода yaw1 к цифровому выводу 8 yaw2.attach (9); // Присоединение сервопривода yaw2 к цифровому выводу 9 esc.attach (11); // Присоединение сервопривода esc к цифровому выводу 11 roll1.write (90); // Записываем сервопривод roll1 в его центральное положение roll2.write (90); // Записываем серво roll2 в его центральное положение elev1.write (90); // Записываем серво elev1 в его центральное положение elev2.write (90); // Записываем серво elev2 в его центральное положение yaw1.write (90); // Записываем сервопривод yaw1 в его центральное положение yaw2.write (90); // Записываем сервопривод yaw2 в его центральное положение esc.write (180); // Записываем серво esc в его центральное положение delay (2500); // Ожидание 2 секунды esc.write (90); задержка (5000); }

void loop () {// Основной код для бесконечного цикла if (analogRead (pot1) <1 && analogRead (pot2) <1 && analogRead (pot3) <1 && analogRead (pot4) = 485 && val1 <= 540) {// Проверка центрирования «Джойстика» (потенциометра) roll1.write (90); // Записываем сервопривод roll1 в центральное положение roll2.write (90); // Запись серво roll2 в центральное положение} else {// Что делать, если «Джойстик» не отцентрован val1 = map (val1, 0, 1023, 10, 170); // Отображение значения val1 от 10 до 170 и присвоение значения val1 roll1.write (val1); // Записываем серво roll1 в позицию, определенную val1 roll2.write (val1); // Записываем серво roll2 в позицию, определенную val1}

val2 = аналоговое чтение (pot2); // Считываем pot2 (аналоговый вывод 2) и сохраняем значение как val2 if (val2> = 485 && val2 <= 540) {// Проверяем, центрирован ли «Джойстик» (потенциометр) elev1.write (90); // Записываем серво elev1 в центральную позицию elev2.write (90); // Запись сервомотора Elev2 в центральное положение} else {// Что делать, если «Джойстик» не отцентрован val3 = map (val2, 0, 1023, 10, 170); // Отображение значения val2 от 10 до 170 и присвоение значения val3 val4 = map (val2, 0, 1023, 170, 10); // Отображение значения val2 от 170 до 10 и присвоение значения val4 elev1.write (val3); // Записываем серво elev1 в позицию, определенную val3 elev2.write (val4); // Записываем серво elev2 в позицию, определенную val4}

val5 = analogRead (pot3); // Считываем pot3 (аналоговый вывод 4) и сохраняем значение как val5 if (val5> = 485 && val5 <= 540) {// Проверяем, центрирован ли «Джойстик» (потенциометр) yaw1.write (90); // Записываем сервопривод yaw1 в центральное положение yaw2.write (90); // Запись сервопривода yaw2 в центральное положение} else {// Что делать, если «Джойстик» не отцентрован val6 = map (val5, 0, 1023, 10, 170); // Отображение val5 от 10 до 170 и присвоение val6 val7 = map (val5, 0, 1023, 170, 10); // Отображение val5 от 10 до 170 и присвоение val7 yaw1.write (val6); // Записываем сервопривод yaw1 в позицию, определенную val6 yaw2.write (val7); // Записываем серво yaw2 в позицию, определенную val7}

val8 = аналоговое чтение (pot4); // Считываем pot4 (аналоговый вывод 5) и сохраняем значение как val8 if (val8> 470 && val8 80 && val8 <80) || (mspeed80)) {// Проверяем, собирается ли двигатель изменить направление esc.write (80); задержка (1000); // Ожидание 1000 миллисекунд} esc.write (val8); // Записываем серво esc в скорость, определенную val8 mspeed = val8; // Сохранение текущей скорости для сравнения}} Serial.print ("throttle"); // Использование последовательной печати для отображения слова "Throttle" Serial.println (val8); // Использование последовательной печати для отображения значения, которое дроссель установлен на Serial.print ("roll"); // Использование последовательной печати для отображения слова "Roll" Serial.println (val1); // Использование последовательной печати для отображения значения, для которого roll установлено значение Serial.print ("pitch"); // Использование последовательной печати для отображения слова "Шаг" Serial.println (val3); // Использование последовательной печати для отображения значения, которое для pitch1 установлено как Serial.println (val4); // Использование последовательной печати для отображения значения, которое для параметра pitch2 установлено значение Serial.print ("yaw"); // Использование последовательной печати для отображения слова "Yaw" Serial.println (val6); // Использование последовательной печати для отображения значения, которое yaw1 установлено на Serial.println (val7); // Использование последовательной печати для отображения значения, установленного для yaw2}

Шаг 3: Схема

Прилагаю фото схемы на борту подводного аппарата.

Я создал специальный экран для Arduino, чтобы упростить разводку. Я загрузил файлы схемы и платы Eagle для щита. Для фрезерования доски я использовал LPKF S63. сервоприводы на передней панели, которые управляют роликом, будут подключены к Arduino

прилагается фотография схемы внутри контроллера.

Шаг 4: детали, напечатанные на 3D-принтере

Я распечатал все эти файлы на своем Monoprice Maker Select Plus. Я использовал нить Esun ABS 1,75 мм. Мои настройки печати были 105 градусов C для температуры печатной платформы и 255 градусов C для температуры экструдера. Требуется только по 1 части каждой части, за исключением 6 копий переднего крыла. Обратите внимание, что эти детали были напечатаны с толщиной стенок 1000 мм. Это было сделано для того, чтобы детали были напечатаны со 100% заполнением и имели отрицательную плавучесть.

Шаг 5: Сборка

********************************* СКОРО БУДЕТ *************** *******************

Рекомендуемые: