Съдържание:

Потопяем автомобил: 5 стъпки
Потопяем автомобил: 5 стъпки

Видео: Потопяем автомобил: 5 стъпки

Видео: Потопяем автомобил: 5 стъпки
Видео: Тишина (5 серия) (1992) фильм 2024, Юли
Anonim
Потопяем автомобил
Потопяем автомобил
Потопяем автомобил
Потопяем автомобил

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

Тази инструкция е създадена в изпълнение на проектните изисквания на Makecourse в Университета на Южна Флорида (www.makecourse.com).

Тази инструкция ще бъде кратък преглед на създаването на потопяемия автомобил, който проектирах и построих за моя клас Makecourse в Университета на Южна Флорида. В този Instructable ще предоставя материал, контролния код, който създадох за Arduino Uno, който използвах, и преглед на това как да сглобявам потопяемия.

Стъпка 1: Материали

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

Използваната електроника, където:

1x Arduino Uno

1x мобилна екшън камера

1x мобилна екшън камера usb-b към A/V кабел

1x екран за изглед на поле 777

1x турнинен кораб 50A ESC (електронен контрол на скоростта)

1x карта за морско програмиране на турни

1x T-Motor Navigator 400kv

1x YEP 20A BEC (елиминираща батерия верига)

6x хоби king HK15139 водоустойчиви серво

2x паралелни Т-конектори y сбруи

2x 18 инчови серво удължителни проводници

6x 6 инчови серво удължителни проводници

2x 1300mah 3s Lipo батерии

2x 2500mah 4s Lipo батерии

1x разпределителна платка с фиксирани изходи 5v и 12v

Строителните материали, където:

1x 3/16 инчов лист шперплат

1x 6 -инчова тръба за идентификация от ABS

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

1x кутия с гъвкаво уплътнение

4x макари от ABS 3D принтер с нажежаема жичка

1x 24 -инчов плъзгач на чекмеджета

Термосвиваема тръба

1x 10 фута скоч марка duraloc велкро

1x JB Заваръчен пластмасов епоксид

1x акрилен купол за охранителна камера с диаметър 6,2 инча

2x проходи през Ethernet по IP68

2x 24 инчов Ethernet кабел cat6

1x 200 футов cat6 Ethernet кабел

Използваният хардуер беше:

24x 1/2 инчови месингови винтове за дърво

24x ------ винтове (включени в комплекта със сервоустройства)

Използваните инструменти:

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

Комплект ключове с шестостен

Поялник

Пистолет за горещ въздух

3D принтер (използвах Monoprice Maker Select Plus)

Стъпка 2: Програмиране

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

По -долу е кодът, създаден за управление на потопяемия. Прикачих също така.ino файла, за да може да бъде изтеглен.

Този код е създаден за Arduino Uno с помощта на компилатора Arduino.

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

Автор: Jonah Powers Дата: 9/11/2018 Предназначение: Контролен код за дистанционно управлявано потопяемо превозно средство ****************************** ************************************************** ************************************************** ************************************/#include // Включително Servo Library Servo roll1; // Обявяване на roll1 за серво Servo roll2; // Обявяване на roll2 за серво Servo elev1; // Обявяване на elev1 за серво Servo elev2; // Обявяване на elev2 за серво Servo yaw1; // Обявяване на yaw1 за серво Servo yaw2; // Обявяване на yaw2 за servo 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); // Прикрепване на серво ролка1 към цифров щифт 2 ролка2.закрепване (3); // Прикрепване на серво ролка2 към цифров щифт 3 elev1.attach (5); // Прикрепване на серво elev1 към цифров щифт 5 elev2.attach (6); // Прикрепване на servo elev2 към цифров щифт 6 yaw1.attach (8); // Прикрепване на серво yaw1 към цифров щифт 8 yaw2.attach (9); // Прикрепване на серво yaw2 към цифров щифт 9 esc.attach (11); // Прикрепване на серво esc към цифров щифт 11 roll1.write (90); // Записване на серво ролка1 в нейната центрирана позиция roll2.write (90); // Записване на серво ролка2 в центрирана позиция elev1.write (90); // Записване на серво elev1 до неговата центрирана позиция elev2.write (90); // Записване на servo elev2 в центрирана позиция yaw1.write (90); // Записване на серво yaw1 до неговата центрирана позиция yaw2.write (90); // Записване на серво yaw2 до неговата центрирана позиция esc.write (180); // Записване на серво esc до закъснение в центрирана позиция (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); // Записване на серво ролка1 в централно положение roll2.write (90); // Записване на серво ролка2 в централна позиция} else {// Какво да направите, ако „Джойстикът“не е центриран val1 = map (val1, 0, 1023, 10, 170); // Съпоставяне на val1 от 10 на 170 и присвояване на val1 roll1.write (val1); // Записване на servo roll1 в позиция, определена от val1 roll2.write (val1); // Записване на servo roll2 в позиция, определена от val1}

val2 = analogRead (pot2); // Четене на pot2 (аналогов щифт 2) и запазване на стойността като val2 if (val2> = 485 && val2 <= 540) {// Проверка дали "Джойстик" (потенциометър) е центриран elev1.write (90); // Записване на серво elev1 в централна позиция elev2.write (90); // Записване на servo 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); // Записване на servo elev1 в позиция, определена от val3 elev2.write (val4); // Записване на servo 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 = analogRead (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); // Използване на сериен печат за показване на стойността, която ролката е зададена на 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 Schematic & Board за щита. Използвах LPKF S63 за фрезоване на дъската. сервомоторите отпред, този контролен валяк ще бъдат включени в Arduino

приложена е снимка на веригата вътре в контролера.

Стъпка 4: 3D отпечатани части

Отпечатах всички тези файлове на моя Monoprice Maker Select Plus. Използвах Esun ABS 1.75mm нишка. Моите настройки за печат бяха 105 градуса C за температурата на печатното легло и и 255 градуса C за температурата на екструдера. Необходим е само 1 от всяка част, с изключение на това, че ще ви трябват 6 копия на предното крило. Обърнете внимание, че тези части са отпечатани с дебелина на стената, зададена на 1000 мм. Това беше направено така, че частите да бъдат отпечатани със 100% пълнеж, така че да бъдат отрицателно плаващи.

Стъпка 5: Монтаж

********************************* ОЧАКВАЙТЕ СКОРО *************** *******************

Препоръчано: