Мазмұны:

Су асты көлігі: 5 қадам
Су асты көлігі: 5 қадам

Бейне: Су асты көлігі: 5 қадам

Бейне: Су асты көлігі: 5 қадам
Бейне: Өлді деп жерлемек болған еді. Бірақ Алланың қалауымен тірілген Бала 2024, Шілде
Anonim
Су асты көлігі
Су асты көлігі
Су асты көлігі
Су асты көлігі

**************** БҰЛ НҰСҚАУЛЫҚ ӘЛІМДЕ ЖҰМЫСТА

Бұл нұсқаулық Оңтүстік Флорида университетінің Makecourse жобасының талаптарын орындау үшін жасалған (www.makecourse.com).

Бұл нұсқаулық Оңтүстік Флорида университетінің Makecourse сыныбына мен ойлап тапқан су асты көлігінің құрылысына қысқаша шолу болады. Бұл нұсқаулықта мен есепшот материалдарымен қамтамасыз етемін, мен қолданған Arduino Uno басқару кодын және су асты қондырғысын қалай жинауға болатынын шолуды ұсынамын.

1 -қадам: материалдар

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

Мұнда қолданылатын электроника:

1x Arduino Uno

1x mobius экшн камерасы

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

1x далалық көрініс 777 дисплей экраны

1x турник 50A ESC (электронды жылдамдықты реттеу)

1x Turnigy теңіз бағдарламалау картасы

1x T-моторлы навигатор 400кв

1x YEP 20A BEC (батареяны жою схемасы)

6x хобби король HK15139 су өткізбейтін серво

2x параллель T-қосқышының ж

2х18 дюймдік серво ұзартқыш сымдар

6х 6 дюймдік серво ұзартқыш сымдар

2x 1300mah 3s Lipo батареялары

2x 2500mah 4s Lipo батареялары

5х және 12в бекітілген шығысы бар 1х қуат тарату тақтасы

Құрылыс материалдары мұнда:

1х 3/16 дюймдік фанера парағы

1x 6 дюймдік ABS жеткізу түтігі

1x силикон түтігі

1x банка икемді тығыздағыш

ABS 3D принтер жіптерінің 4x катушкалары

1х24 дюймдік тартпаның сырғытпасы

Жылуды төмендететін түтік

1x10 фут скотч бренді duraloc velcro

1x JB Weld пластикалық эпоксидті

1х 6,2 дюймдік акрилді қауіпсіздік камерасының күмбезі

2 рет IP68 Ethernet арқылы өту

2x 24 дюймдік cat6 Ethernet кабелі

1x 200 футтық cat6 Ethernet кабелі

Қолданылатын жабдық келесідей болды:

24x 1/2 дюймдік жезден жасалған ағаш бұрандалар

24x ------ бұрандалар (серводормен бірге беріледі)

Қолданылған құралдар:

Филипп және тегіс бұрандалы бұрағыштар

Аллен кілттер жиынтығы

Пісіру темірі

Жылу мылтығы

3D принтері (мен Monoprice Maker Select Plus қолдандым)

2 -қадам: бағдарламалау

Бағдарламалау
Бағдарламалау
Бағдарламалау
Бағдарламалау
Бағдарламалау
Бағдарламалау
Бағдарламалау
Бағдарламалау

Төменде суасты қондырғысын басқару үшін жасалған код берілген. Мен.ino файлын жүктеуге болатындай етіп тіркедім.

Бұл код Arduino Uno үшін Arduino компиляторы арқылы жасалған.

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

Автор: Джуна Пауэрс Күні: 11/9/2018 Мақсаты: Қашықтан басқарылатын су асты көлігінің бақылау коды ****************************** ************************************************ ************************************************ **********************************/#include // Сервистік кітапхананы қосқанда Servo roll1; // роллды Servo ролл2 деп жариялау; // роллды Servo elev1 серво деп жариялау1; // elev1 сервопривод2 серво деп жариялау; // 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 айнымалы мәнін бүтін инт val7 ретінде инициализациялау; // val7 айнымалы мәнін бүтін сан ретінде енгізу int val8; // val8 айнымалы мәнін Int mspeed бүтін сан ретінде инициализациялау; // mspeed айнымалы мәнін бүтін сан ретінде инициализациялау

void setup () {// Arduino инициализация кезеңі Serial.begin (9600); // Сериялық монитордың ролін инициализациялау roll1.attach (2); // Сервалық ролл1 цифрлық түйреуіш 2 ролл2.attach (3) бекіту; // Сервалық орамды2 цифрлық түйреуішке бекіту 3 elev1.attach (5); // servo elev1 цифрлық пин 5 elev2.attach (6) бекіту; // servo elev2 цифрлық пин 6 yaw1.attach (8) бекіту; // 8 yaw2.attach (9) цифрлық түйреуішіне yaw1 серво бекіту; // servo yaw2 цифрлық пин 9 esc.attach (11) бекіту; // Servo esc цифрлық түйрегішке бекіту 11 roll1.write (90); // Серво -ролл1 -ді оның орташаланған орамына жазу2.write (90); // Серво -ролл2 -ді орталықтандырылған күйге жазу elev1.write (90); // servo elev1 -ді орталықтандырылған позицияға жазу elev2.write (90); // servo elev2 -ді yaw1.write (90) орталықтандырылған күйіне жазу; // Сервис yaw1 -ді yaw2.write (90) орталық күйіне жазу; // Сервис yaw2 -ді оның орталық күйіне жазу esc.write (180); // Servo esc жазбасының орталықтандырылған күйге кешігуі (2500); // 2 секунд esc.write күтілуде (90); кешіктіру (5000); }

void loop () {// Негізгі код шексіз цикл үшін, егер (analogRead (pot1) <1 && analogRead (pot2) <1 && analogRead (pot3) <1 && analogRead (pot4) = 485 && val1 <= 540) {// «Джойстик» (потенциометр) орталықтандырылған roll1.write (90) екенін тексеру; // Серво -ролл1 орталық орамға жазу2.write (90); // Серво ролл2 орталық орталыққа жазу} else {// «Джойстик» орталықтандырылмаған болса не істеу керек val1 = карта (val1, 0, 1023, 10, 170); // val1 -ді 10 -нан 170 -ке дейін салыстыру және val1 roll1.write -ге тағайындау (val1); // val1 roll2.write (val1) анықтайтын позитонға servo roll1 жазу; // serv1 roll2 позициясына val1 арқылы анықталады

val2 = analogRead (pot2); // оқу pot2 (2 -ші аналогтық түйреуіш) және val2 ретінде мәнді сақтау, егер (val2> = 485 && val2 <= 540) {// «Джойстик» (потенциометр) elev1.write (90) ортасында орналасқанын тексеру; // servo elev1 орталық күйге көтерілу2.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) тағайындау; // val3 elev2.write (val4) анықтаған позитонға servo elev1 жазу; // serv4 elev2 позициясына val4 арқылы анықталады}

val5 = analogRead (pot3); // оқу pot3 (4 -ші аналогтық түйреуіш) және мәнін val5 ретінде сақтау, егер (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); // val6 yaw2.write (val7) анықтаған позитонға yaw1 сервоін жазу; // val7 анықталған позитонға yaw2 серво жазу

val8 = analogRead (pot4); // Оқу кастрюлі 4 (аналогтық түйреуіш 5) және val8 мәнін val8 ретінде сақтау 80) кешіктіру (1000); // 1000 миллисекунд күтілуде} esc.write (val8); // val8 mspeed = val8 анықтайтын жылдамдыққа esc servo жазу; // Салыстыру үшін ағымдағы жылдамдықты сақтау}} Serial.print («дроссель»); // «Throttle» сөзін көрсету үшін Serial Print пайдалану Serial.println (val8); // Дроссель Serial.print («ролл») мәнін көрсету үшін сериялық басып шығаруды пайдалану; // «Roll» сөзін көрсету үшін Serial Print пайдалану Serial.println (val1); // Сериялық басып шығаруды пайдалану, орам Serial.print («қадам») күйіне орнатылған мәнді көрсету үшін; // «Pitch» сөзін көрсету үшін Serial Print пайдалану Serial.println (val3); // pitch1 мәні Serial.println (val4) мәнін көрсету үшін Serial Print пайдалану; // Serial Print көмегімен pitch2 мәні Serial.print («yaw») мәнін көрсету үшін; // Serial.println (val6) «Yaw» сөзін көрсету үшін Serial Print пайдалану; // Serial Print функциясын қолдану yaw1 мәні Serial.println (val7) мәнін көрсету үшін; // Serial Print көмегімен yaw2 мәнін көрсету үшін}

3 -қадам: Электр тізбегі

Суға бататын қондырғыдағы схеманың суреті қоса берілген.

Мен сымды жеңілдету үшін Arduino үшін арнайы қалқан жасадым. Мен Eagle Schematic & Board файлдарын қалқанға жүктедім. Мен тақтаны тегістеу үшін LPKF S63 қолдандым. басқару тақтасы алдыңғы жағында орналасқан серверлер Arduino -ға қосылады

контроллер ішіндегі тізбектің фотосуреті қоса берілген.

4 -қадам: 3D басып шығарылған бөлшектер

Мен барлық файлдарды Monoprice Maker Select Plus -те басып шығардым. Мен Esun ABS 1.75мм жіпшесін қолдандым. Менің басып шығару параметрлері баспа температурасы үшін 105 градус C және экструдер температурасы үшін 255 градус болды. Әр бөліктің тек 1 бөлігі ғана қажет, тек сізге алдыңғы қанаттың 6 данасы қажет болады. Назар аударыңыз, бұл бөлшектер қабырғаның қалыңдығы 1000 мм етіп басылған. Бұл бөлшектер 100% толтырумен басып шығарылуы үшін жасалды, осылайша олар жағымсыз болады.

5 -қадам: құрастыру

********************************* ЖАҚЫНДА ШЫҒАДЫ *************** *******************

Ұсынылған: