Оглавление:
- Шаг 1: материалы
- Шаг 2: программирование
- Шаг 3: Схема
- Шаг 4: детали, напечатанные на 3D-принтере
- Шаг 5: Сборка
Видео: Погружной аппарат: 5 ступеней
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:52
**************** ДАННАЯ ИНСТРУКЦИЯ В РАБОТЕ ЕЩЕ НЕ РАБОТАЕТ ****************
Это руководство было создано во исполнение требований проекта 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: Сборка
********************************* СКОРО БУДЕТ *************** *******************
Рекомендуемые:
Аппарат УЛЬТРАЗВУКОВОЙ ЛЕВИТАЦИИ с использованием ARDUINO: 8 шагов (с изображениями)
УЛЬТРАЗВУКОВОЙ ЛЕВИТАЦИОННЫЙ аппарат с использованием ARDUINO: Очень интересно увидеть что-то, плавающее в воздухе или в свободном пространстве, например космические корабли пришельцев. в этом и заключается суть антигравитационного проекта. Предмет (в основном небольшой лист бумаги или термоколь) помещается между двумя ультразвуковыми преобразователями
Сделайте свой собственный аппарат для точечной сварки из необработанного аккумулятора с автомобильным аккумулятором !: 5 шагов
Сделайте свой собственный аппарат для точечной сварки на аккумуляторах с автомобильным аккумулятором! В этом проекте я покажу вам, как создать простой, но функциональный аппарат для точечной сварки на аккумуляторах. Его основным источником питания является автомобильный аккумулятор, и все его компоненты вместе стоят около 90 евро, что делает эту установку довольно низкой. Так что расслабьтесь и учитесь
Простой точечный сварочный аппарат, использующий автомобильный аккумулятор для сборки литий-ионного аккумулятора: 6 шагов
Простой точечный сварочный аппарат, использующий автомобильный аккумулятор для сборки литий-ионного аккумулятора: вот как я сделал точечный сварочный аппарат с автомобильным аккумулятором, который полезен для сборки литий-ионных (литий-ионных) аккумуляторов. Мне удалось построить пакет 3S10P и множество сварных швов с помощью этого аппарата для точечной сварки. Этот аппарат для точечной сварки с инструкциями включает в себя диаметр функционального блока
Аппарат для реабилитации пожилых людей: 4 шага
Машина для реабилитации пожилых людей: эта машина используется для помощи пожилым людям, которые хотели восстановить свою способность к реакции. Когда люди стареют, их реакционная способность ухудшается. Эта машина может помочь этим людям восстановить свою способность к реакции
BTS - 33 - Погружной: 11 ступеней
BTS - 33 - Submersible: это руководство научит вас делать погружные устройства с помощью трех переключателей