Სარჩევი:

წყალქვეშა მანქანა: 5 ნაბიჯი
წყალქვეშა მანქანა: 5 ნაბიჯი

ვიდეო: წყალქვეშა მანქანა: 5 ნაბიჯი

ვიდეო: წყალქვეშა მანქანა: 5 ნაბიჯი
ვიდეო: 5 საშუალება თუ როგორ მოვატყუოთ ტვინი 2024, ნოემბერი
Anonim
წყალქვეშა მანქანა
წყალქვეშა მანქანა
წყალქვეშა მანქანა
წყალქვეშა მანქანა

**************** ეს ინსტრუქცია ჯერ კიდევ სამუშაო პროცესშია ****************

ეს ინსტრუქცია შეიქმნა სამხრეთ ფლორიდის უნივერსიტეტის Makecourse– ის საპროექტო მოთხოვნების შესასრულებლად (www.makecourse.com).

ეს ინსტრუქცია იქნება მოკლე მიმოხილვა იმ წყალქვეშა მანქანის შექმნის შესახებ, რომელიც მე შევიმუშავე და ავაშენე ჩემი სამხრეთი ფლორიდის უნივერსიტეტის მაკიაჟის კლასისთვის. ამ ინსტრუქციებში მე მოგაწვდით მასალებს, საკონტროლო კოდს, რომელიც მე გამოვიყენე Arduino Uno– სთვის, და მიმოხილვა, თუ როგორ უნდა შევიკრიბოთ წყალქვეშა.

ნაბიჯი 1: მასალები

მასალები
მასალები
მასალები
მასალები
მასალები
მასალები

ელექტრონიკა გამოიყენება იქ:

1x Arduino Uno

1x მობილურის სამოქმედო კამერა

1x mobius სამოქმედო კამერა usb-b to A/V კაბელი

1x საველე ხედი 777 ჩვენების ეკრანი

1x turnigy marine 50A ESC (ელექტრონული სიჩქარის კონტროლი)

1x turnigy საზღვაო პროგრამირების ბარათი

1x T-Motor Navigator 400 კვ

1x YEP 20A BEC (ბატარეის აღმოფხვრის წრე)

6x ჰობი მეფე HK15139 წყალგაუმტარი სერვისი

2x პარალელური T- კონექტორი y აღკაზმულობა

2 x 18 ინჩიანი servo გაფართოების მავთულები

6x6 ინჩიანი servo გაფართოების მავთულები

2x 1300mah 3s Lipo ბატარეები

2x 2500mah 4s Lipo ბატარეები

1x დენის გამანაწილებელი დაფა, როგორც 5 ვ, ასევე 12 ვ ფიქსირებული გამოსვლით

სამშენებლო მასალები, სადაც:

პლაივუდის 1x 3/16 დიუმიანი ფურცელი

1x 6 დიუმიანი ID ABS გადაზიდვის მილი

1x სილიკონის მილი

მოქნილი ბეჭდის 1 ქილა

4x კოჭა ABS 3D პრინტერის ძაფით

უჯრის 1x24 დიუმიანი სლაიდი

სითბოს შემცირების მილი

1x 10 ფუტი შოტლანდიური ბრენდის duraloc velcro

1x JB Weld პლასტიკური ეპოქსია

1x 6.2 ინჩი დიამეტრის აკრილის უსაფრთხოების კამერის გუმბათი

2x 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 მიზანი: დისტანციური მართვის წყალქვეშა ავტომობილის კონტროლის კოდი **************************** *********************************************** *********************************************** ********************************** # #მოიცავს // სერვო ბიბლიოთეკის ჩათვლით Servo roll1; // გამოაცხადოს roll1, როგორც servo Servo roll2; // გამოცხადება roll2 servo Servo lift1; // გამოცხადება lift1 სერვო Servo lift2; // გამოცხადება lift2 იყოს servo Servo yaw1; // yaw1- ის სერვო სერვო yaw2 გამოცხადება; // yaw2- ის გამოცხადება servo Servo esc; // esc- ის სერვოებად გამოცხადება

int pot1 = 0; // ცვლადის pot1 მთლიანი რიცხვის ინიციალიზაცია და მისი 0 ტოლი ტოლი pot2 = 1; // ცვლადი pot2 მთელი რიცხვის ინიციალიზაცია და მისი ტოლი 2 int pot3 = 2; // ცვლადი pot3 მთელი რიცხვის ინიციალიზაცია და მისი ტოლი 4 int pot4 = 3; // ცვლადის pot4 ინტიციალიზაცია მთელი რიცხვის სახით და მისი დადგენა 5 int val1– ის ტოლი; // ცვლადის ინტიციალიზაცია, როგორც მთელი რიცხვი int val2; // ცვლადის val2, როგორც მთელი რიცხვი int val3; // ცვლადის ინტიციალიზაცია, როგორც მთელი რიცხვი int val4; // ცვლადის ინიციალიზაცია, როგორც მთელი რიცხვი int val5; // ცვლადის ინტიციალიზაცია, როგორც მთელი რიცხვი int val6; // ცვლადის ინტიციალიზაცია, როგორც მთელი რიცხვი int val7; // ცვლადის ინტიციალიზაცია, როგორც მთელი რიცხვი int val8; // ცვლადის ინიციალიზაცია, როგორც მთელი რიცხვი int mspeed; // ცვლადი mspeed ინტილიზაცია მთელი რიცხვის სახით

void setup () {// არდუინოს ინიციალიზაციის ეტაპი Serial.begin (9600); // სერიული მონიტორის roll1.attach (2) ინიციალიზაცია; // servo roll1 ციფრული პინზე 2 roll2.attach (3) მიმაგრება; // servo roll2 ციფრული პინზე 3 lift1.attach (5) მიმაგრება; // servo lift1 ციფრული პინზე 5 lift2.attach (6) მიმაგრება; // servo lift2 ციფრული პინზე 6 yaw1.attach (8) მიმაგრება; // servo yaw1 ციფრული პინზე 8 yaw2.attach (9) მიმაგრება; // servo yaw2 ციფრული პინ 9 esc.attach (11) მიმაგრება; // ციფრული პინზე servo esc- ის მიმაგრება 11 roll1.write (90); // servo roll1- ის ჩაწერა მის ცენტრალურ პოზიციაზე roll2.write (90); // servo roll2- ის ჩაწერა მის ცენტრალურ პოზიციაზე lift1.write (90); // servo lift1- ის ჩაწერა მის ცენტრალურ პოზიციაზე lift2.write (90); // servo lift2 ჩაწერა ცენტრალურ პოზიციაზე yaw1.write (90); // servo yaw1- ის ჩაწერა მის ცენტრალურ პოზიციაზე yaw2.write (90); // servo 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); // servo roll1 ჩაწერა ცენტრალურ პოზიციაზე roll2.write (90); // servo roll2 ჩაწერა ცენტრალურ პოზიციაზე} სხვა {{რა უნდა გააკეთოს, თუ "ჯოისტიკი" არ არის ცენტრში val1 = რუკა (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, თუ (val2> = 485 && val2 <= 540) {// შემოწმება იმის დასადგენად, არის თუ არა "ჯოისტიკი" (პოტენომეტრი) ორიენტირებული lift1.write (90); // servo lift1 ჩაწერა ცენტრალურ პოზიციაზე lift2.write (90); // servo lift2 ჩაწერა ცენტრალურ პოზიციაზე} სხვა {{რა უნდა გააკეთოს, თუ "ჯოისტიკი" არ არის ცენტრში val3 = რუკა (val2, 0, 1023, 10, 170); // val2 10 – დან 170 – მდე დანიშვნა val3 val4 = რუკა (val2, 0, 1023, 170, 10); // val2 170 – დან 10 – მდე დანიშვნა და val4 lift1.write (val3); // წერა servo lift1 პოზიტიონზე განსაზღვრული val3 lift2.write (val4); // წერა servo lift2 to poziton განსაზღვრული val4}

val5 = analogRead (pot3); // კითხულობს pot3 (ანალოგიურ პინ 4) და შეინახავს მნიშვნელობას val5, თუ (val5> = 485 && val5 <= 540) {// შემოწმება იმის დასადგენად, არის თუ არა "ჯოისტიკი" (პოტენომეტრი) ცენტრირებული yaw1.write (90); // წერა servo yaw1 ცენტრალურ პოზიციაზე yaw2.write (90); // servo yaw2 ჩაწერა ცენტრალურ პოზიციაზე} სხვა {{რა უნდა გააკეთოს, თუ "ჯოისტიკი" არ არის ცენტრში val6 = რუკა (val5, 0, 1023, 10, 170); // val5- ის ასახვა 10 -დან 170 -მდე და მინიჭება val6 val7 = რუკა (val5, 0, 1023, 170, 10); // val5- ის ასახვა 10 -დან 170 -მდე და მინიჭება val7 yaw1.write (val6); // წერა servo yaw1 პოზიტიონზე განსაზღვრული val6 yaw2.write (val7); // წერა servo yaw2 პოზიტიონზე განსაზღვრული val7}

val8 = analogRead (pot4); // კითხულობს pot4 (ანალოგიურ პინ 5) და შეინახავს მნიშვნელობას, როგორც val8, თუ (val8> 470 && val8 80 && val8 <80) || (mspeed80)) {// შემოწმება თუ არა ძრავა მიმართულების შეცვლისას esc.write (80); დაგვიანება (1000); // ელოდება 1000 მილიწამს} esc.write (val8); // წერა servo esc სიჩქარით განსაზღვრული val8 mspeed = val8; // შედარებისთვის მიმდინარე სიჩქარის შენახვა}} Serial.print ("throttle"); // სერიული ბეჭდვის გამოყენება სიტყვა "Throttle" Serial.println (val8); // სერიული ბეჭდვის გამოყენება იმ მნიშვნელობის საჩვენებლად, რომლის დროსაც დაყენებულია გორაკი Serial.print ("როლი"); // სერიული ბეჭდვის გამოყენებით სიტყვა "როლი" საჩვენებლად 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: წრე

მიმაგრებულია წყალქვეშა ნავის ბორტზე არსებული მიკროსქემის ფოტო.

მე შევქმენი საბაჟო ფარი არდუინოსთვის, რომ გაემართლებინა ჩემი გაყვანილობა. მე ავტვირთე Eagle Schematic & Board ფაილები ფარისთვის. მე გამოვიყენე LPKF S63 დაფის დასაფქვავად. Servos წინა, რომ კონტროლის roll იქნება ჩართული Arduino

მიმაგრებულია კონტროლერის შიგნით ჩართვის ფოტო.

ნაბიჯი 4: 3D ნაბეჭდი ნაწილები

მე დავბეჭდე ყველა ეს ფაილი ჩემს Monoprice Maker Select Plus- ში. მე გამოვიყენე Esun ABS 1.75 მმ ბოჭკო. ჩემი ბეჭდვის პარამეტრები იყო 105 გრადუსი C დასაბეჭდი საწოლის ტემპერატურისთვის და 255 გრადუსი ცელექტრული ტემპერატურისთვის. თითოეული ნაწილიდან მხოლოდ 1 არის საჭირო, გარდა იმისა, რომ თქვენ დაგჭირდებათ წინა ფრთის 6 ეგზემპლარი. გაითვალისწინეთ, რომ ეს ნაწილები დაბეჭდილია კედლის სისქით 1000 მმ. ეს გაკეთდა ისე, რომ ნაწილები 100% -ით იბეჭდებოდეს, ასე რომ ისინი უარყოფითად მოძრაობდნენ.

ნაბიჯი 5: შეკრება

********************************* ᲛᲐᲚᲔ *************** *******************

გირჩევთ: