Mündəricat:

Sualtı maşın: 5 addım
Sualtı maşın: 5 addım

Video: Sualtı maşın: 5 addım

Video: Sualtı maşın: 5 addım
Video: Şehid olan esger dirilir .ŞOK .ŞOK.ŞOK 2024, Noyabr
Anonim
Sualtı Vasitə
Sualtı Vasitə
Sualtı Vasitə
Sualtı Vasitə

**************** BU TƏLİMAT HƏLƏ İLƏ İŞLƏDİR ****************

Bu Təlimat, Cənubi Florida Universitetindəki Makecourse (www.makecourse.com) layihə tələbinin yerinə yetirilməsi üçün yaradılmışdır.

Bu Təlimat, Cənubi Florida Universitetindəki Makecourse sinifim üçün hazırladığım sualtı vasitənin yaradılması haqqında qısa bir fikir olacaq. Bu Təlimat kitabında bir sənəd hesabatı, istifadə etdiyim Arduino Uno üçün yaratdığım nəzarət kodu və sualtı qurğunun necə yığılacağına dair ümumi məlumat verəcəyəm.

Addım 1: Materiallar

Materiallar
Materiallar
Materiallar
Materiallar
Materiallar
Materiallar

Burada istifadə olunan elektronika:

1x Arduino Uno

1x mobius fəaliyyət kamerası

A/V kabelinə 1x mobius fəaliyyət kamerası usb-b

1x sahə görünüşü 777 ekran

1x turnik dəniz 50A ESC (elektron sürət nəzarəti)

1x turnik dəniz proqramlaşdırma kartı

1x T-Motorlu Naviqator 400kv

1x YEP 20A BEC (batareyanın aradan qaldırılması dövrəsi)

6x hobbi king HK15139 suya davamlı servolar

2x paralel T konnektoru y qoşquları

2x18 düymlük servo uzatma telləri

6x6 düymlük servo uzatma telləri

2x 1300mah 3s Lipo batareyaları

2x 2500mah 4s Lipo batareyaları

Həm 5v, həm də 12v sabit çıxışı olan 1x güc paylayıcı lövhə

Tikinti materialları burada:

1x 3/16 düymlük kontrplak təbəqə

1x6 düymlük ID ABS göndərmə borusu

1 x silikon boru

1x banka çevik möhür

ABS 3D printer filamentinin 4x makaraları

1x24 düymlük çekmece

İstilik büzücü boru

1x10 fut skotç markası duraloc velcro

1x JB Weld plastik epoksi

1x 6.2 düym diametrli akril təhlükəsizlik kamerası günbəzi

2 dəfə IP68 ethernet keçidləri

2x24 düymlük cat6 ethernet kabeli

1x 200 fut cat6 ethernet kabeli

İstifadə olunan aparat belə idi:

24x 1/2 düymlük pirinç ağac vintlər

24x ------ vintlər (servolara daxildir)

İstifadə olunan vasitələr:

Philip's və Flat başlı tornavidalar

Allen açar dəsti

Lehimleme dəmir

İstilik silahı

3D printer (Monoprice Maker Select Plus istifadə etdim)

Addım 2: Proqramlaşdırma

Proqramlaşdırma
Proqramlaşdırma
Proqramlaşdırma
Proqramlaşdırma
Proqramlaşdırma
Proqramlaşdırma
Proqramlaşdırma
Proqramlaşdırma

Aşağıda, sualtı gəmini idarə etmək üçün yaradılmış kod var. Yüklənə bilməsi üçün.ino faylını da əlavə etdim.

Bu kod Arduino Uno üçün Arduino kompilyatoru vasitəsi ilə yaradılmışdır.

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

Müəllif: Jonah Powers Tarix: 11/9/2018 Məqsəd: Uzaqdan idarə olunan sualtı nəqliyyat vasitəsinə nəzarət kodu ****************************** ************************************************ ************************************************ **********************************/#include // Servo Kitabxanası daxil olmaqla Servo roll1; // Roll1 -in servo Servo roll2 elan edilməsi; // Roll2 -nin servo olaraq elan edilməsi Servo elev1; // elev1 -in servo olaraq elan edilməsi Servo elev2; // elev2 -nin servo olaraq elan edilməsi Servo yaw1; // yaw1 -in servo olaraq elan edilməsi Servo yaw2; // yaw2 -nin servo olaraq elan edilməsi Servo esc; // esc -in servo olaraq elan edilməsi

int pot1 = 0; // pot1 dəyişənini tam ədəd olaraq başlatmaq və onu 0 int pot2 = 1 -ə bərabər etmək; // Dəyişən pot2 -ni tamsayı olaraq başlatmaq və onu 2 -ə bərabər etmək int pot3 = 2; // Dəyişən pot3 -ü tam ədəd olaraq başlatmaq və onu 4 int pot4 = 3 -ə bərabər etmək; // Dəyişən pot4 -ü tam ədəd olaraq başlatmaq və onu 5 int val1 -ə bərabər etmək; // val1 dəyişənini int val2 tamsayı olaraq başlatmaq; // val2 dəyişənini int val3 tamsayı olaraq başlatmaq; // dəyişən val3 int val4 tamsayı olaraq başlatılır; // dəyişən val4 int val5 tamsayı olaraq başlatılır; // val5 dəyişənini int val6 tamsayı olaraq başlatmaq; // val6 dəyişənini int val7 tamsayı olaraq başlatmaq; // val7 dəyişənini int val8 tamsayı olaraq başlatmaq; // int mspeed tamsayı olaraq val8 dəyişəninin işə salınması; // mspeed dəyişənini tam ədəd kimi başlatmaq

void setup () {// Arduino başlatma mərhələsi Serial.begin (9600); // Serial monitör roll -un işə salınması1.attach (2); // Servo rulonun1 rəqəmsal pin 2 roll2.attach (3) -ə bağlanması; // Servo rulonun2 rəqəmsal pin 3 elev1.attach (5) -ə bərkidilməsi; // Servo elev1 rəqəmsal pin 5 elev2.attach (6) -ə bərkidilməsi; // servo elev2 rəqəmsal pin 6 yaw1.attach (8) -ə bərkidilməsi; // servo yaw1 rəqəmsal pinə 8 yaw2.attach (9) qoşulması; // servo yaw2 -ni rəqəmsal pin 9 -a bağlamaq esc.attach (11); // Servo escin rəqəmsal pin 11 -ə bağlanması roll1.write (90); // Servo rulonun1 mərkəzləşdirilmiş mövqeyinə yazılması2.write (90); // Servo rulonun2 mərkəzləşdirilmiş mövqeyinə yazılması elev1.write (90); // servo elev1 mərkəzləşdirilmiş mövqeyinə yazmaq elev2.write (90); // servo elev2 -ni mərkəzləşdirilmiş mövqeyinə yazmaq yaw1.write (90); // servo yaw1 mərkəzləşdirilmiş mövqeyinə yazmaq yaw2.write (90); // servo yaw2 -ni mərkəzləşdirilmiş vəziyyətinə yazmaq esc.write (180); // Mərkəzləşdirilmiş mövqe gecikməsinə servo esc yazmaq (2500); // 2 saniyə gözləyin esc.write (90); gecikmə (5000); }

void loop () {// Ana kod sonsuz döngə olduqda (analogRead (pot1) <1 && analogRead (pot2) <1 && analogRead (pot3) <1 && analogRead (pot4) = 485 && val1 <= 540) {// "Joystick" in (potansiometr) roll1.write (90) mərkəzli olub olmadığını yoxlamaq; // Servo roll1 -in mərkəz mövqe rulonuna yazılması2.write (90); // Mərkəz mövqeyinə servo roll2 yazmaq} else {// "Joystick" mərkəzli deyilsə nə etməli val1 = xəritə (val1, 0, 1023, 10, 170); // Val1 -in 10 -dan 170 -ə qədər xəritələnməsi və val1 roll1.write -ə təyin edilməsi (val1); // val1 roll2.write (val1) ilə təyin olunan pozitona servo roll1 yazmaq; // val1 tərəfindən müəyyən edilən pozitona servo roll2 yazmaq

val2 = analogRead (pot2); // Oxu pot2 (analog pin 2) və əgər val2 olaraq dəyər saxlasanız (val2> = 485 && val2 <= 540) {// "Joystick" in (potensiometr) mərkəzdə elev1.write (90) olub olmadığını yoxlamaq; // Servo elev1 -in mərkəz mövqeyinə yazılması elev2.write (90); // Servo elev2 mərkəz mövqeyinə yazmaq} else {// "Joystick" mərkəzli deyilsə nə etməli val3 = xəritə (val2, 0, 1023, 10, 170); // val2 -ni 10 -dan 170 -ə qədər xəritələmək və val3 -ə təyin etmək val4 = map (val2, 0, 1023, 170, 10); // Val2 -ni 170 -dən 10 -a qədər xəritələşdirmək və val4 -ə təyin etmək elev1.write (val3); // val3 elev2.write (val4) tərəfindən təyin olunan pozitona servo elev1 yazmaq; // val4 tərəfindən təyin olunan servo elev2 -nin pozitona yazılması

val5 = analogRead (pot3); // Oxu pot3 (analog pin 4) və əgər val5 olaraq dəyər saxlasanız (val5> = 485 && val5 <= 540) {// "Joystick" in (potensiometr) mərkəzli yaw1.write (90) olub olmadığını yoxlamaq; // servo yaw1 mərkəz mövqeyinə yazmaq yaw2.write (90); // Servis yaw2 mərkəz mövqeyinə yazmaq} else {// "Joystick" mərkəzli deyilsə nə etməli val6 = xəritə (val5, 0, 1023, 10, 170); // Val5 -in 10 -dan 170 -ə qədər xəritələnməsi və val6 -ya təyin edilməsi val7 = xəritə (val5, 0, 1023, 170, 10); // Val5 -in 10 -dan 170 -ə qədər xəritələndirilməsi və val7 -ə təyin edilməsi yaw1.write (val6); // val6 yaw2.write (val7) tərəfindən təyin olunan pozitona servo yaw1 yazmaq; // val7 tərəfindən təyin olunan pozitona servo yaw2 yazmaq}

val8 = analogRead (pot4); // Oxu qazanı4 (analog pin 5) və əgər val8 kimi saxlasanız (val8> 470 && val8 80 && val8 <80) || (mspeed80)) {// Motorun istiqamətini dəyişmək istədiyini yoxlamaq esc.write (80); gecikmə (1000); // 1000 milisaniyə gözləyir} esc.write (val8); // val8 mspeed = val8 ilə təyin olunan sürətə servo esc yazmaq; // Müqayisə üçün cari sürətin saxlanması}} Serial.print ("qaz"); // "Qəza" sözünü göstərmək üçün Serial Çapdan istifadə Serial.println (val8); // Qazın Serial.print ("rulon") olaraq təyin olunduğu dəyəri göstərmək üçün Serial Çapdan istifadə etmək; // "Roll" sözünü göstərmək üçün Serial Çapdan istifadə Serial.println (val1); // Serial Çapdan istifadə edərək rulonun Serial.print ("meydança") olaraq təyin olunduğu dəyəri göstərmək; // "Pitch" sözünü göstərmək üçün Serial Çapdan istifadə Serial.println (val3); // pitch1 -in Serial.println (val4) olaraq təyin olunduğu dəyəri göstərmək üçün Serial Çapdan istifadə etmək; // pitch2 -nin Serial.print ("yaw") olaraq təyin olunduğu dəyəri göstərmək üçün Serial Çapdan istifadə; // "Yaw" sözünü göstərmək üçün Serial Çapdan istifadə Serial.println (val6); // yaw1 -in Serial.println (val7) olaraq təyin olunduğu dəyəri göstərmək üçün Serial Çapdan istifadə etmək; // yaw2 -nin təyin olunduğu dəyəri göstərmək üçün Serial Çapdan istifadə edərək}

Addım 3: Dövrə

Sualtı gəmidə olan dövrənin fotoşəkili əlavə olunur.

Kabellərimi asanlaşdırmaq üçün Arduino üçün xüsusi bir qalxan yaratdım. Qalxan üçün Eagle Schematic & Board sənədlərini yüklədim. Lövhəni üyütmək üçün LPKF S63 istifadə etdim. İdarəetmə rulonunun ön hissəsindəki servolar Arduino -ya qoşulacaq

nəzarətçinin içərisindəki dövrə şəkli əlavə olunur.

Addım 4: 3D çaplı hissələr

Bütün bu faylları Monoprice Maker Select Plus -da çap etdim. Esun ABS 1.75mm Filamentdən istifadə etdim. Çap parametrlərim çap yatağının temperaturu üçün 105 dərəcə, ekstruderin temperaturu üçün isə 255 dərəcədir. Ön hissənin 6 nüsxəsinə ehtiyacınız istisna olmaqla, hər hissədən yalnız 1 ədəd lazımdır. Qeyd edək ki, bu hissələr divar qalınlığı 1000 mm -ə qədər çap olunmuşdur. Bu, hissələrin 100% doldurulması ilə basılması və mənfi üzmə qabiliyyətinə malik olması üçün edildi.

Addım 5: Montaj

********************************* TEZLİKLƏ *************** *******************

Tövsiyə: