Πίνακας περιεχομένων:

Υποβρύχιο όχημα: 5 βήματα
Υποβρύχιο όχημα: 5 βήματα

Βίντεο: Υποβρύχιο όχημα: 5 βήματα

Βίντεο: Υποβρύχιο όχημα: 5 βήματα
Βίντεο: Ξόδεψα 10 ΕΚΑΤΟΜΜΥΡΙΑ για υποβρύχιο στο GTA Online 2024, Ιούλιος
Anonim
Υποβρύχιο όχημα
Υποβρύχιο όχημα
Υποβρύχιο όχημα
Υποβρύχιο όχημα

**************** ΑΥΤΟ ΤΟ ΟΔΗΓΙΟ ΕΙΝΑΙ ΑΚΟΜΑ ΕΡΓΟ ΣΕ ΠΡΟΟΔΟ ****************

Αυτό το Instructable δημιουργήθηκε για να εκπληρώσει την απαίτηση έργου του Makecourse στο Πανεπιστήμιο της Νότιας Φλόριντα (www.makecourse.com).

Αυτό το Instructable θα είναι μια σύντομη εικόνα της δημιουργίας του υποβρύχιου οχήματος που σχεδίασα και κατασκεύασα για την τάξη Makecourse στο Πανεπιστήμιο της Νότιας Φλόριντα. Σε αυτό το Instructable θα σας δώσω έναν λογαριασμό υλικών, τον κωδικό ελέγχου που δημιούργησα για το Arduino Uno που χρησιμοποίησα και μια επισκόπηση του τρόπου συναρμολόγησης του υποβρύχιου.

Βήμα 1: Υλικά

Υλικά
Υλικά
Υλικά
Υλικά
Υλικά
Υλικά

Τα ηλεκτρονικά που χρησιμοποιούνται όταν:

1x Arduino Uno

1x κάμερα δράσης mobius

1x καλώδιο δράσης mobius usb-b σε καλώδιο A/V

Οθόνη 1x προβολής πεδίου 777

1x turnigy marine 50A ESC (ηλεκτρονικός έλεγχος ταχύτητας)

1x κάρτα προγραμματισμού turnigy marine

1x T-Motor Navigator 400kv

1x YEP 20A BEC (κύκλωμα εξάλειψης μπαταρίας)

Αδιάβροχα σερβίς 6x hobby king HK15139

2x παράλληλες ζώνες σύνδεσης T

2 x 18 ιντσών σερβο καλώδια επέκτασης

6 x 6 ιντσών σερβο καλώδια επέκτασης

Μπαταρίες Lipo 2x 1300mah 3s 3s

Μπαταρίες 2x 2500mah 4s Lipo

Πίνακας διανομής ισχύος 1x με σταθερές εξόδους 5v και 12v

Τα υλικά κατασκευής όπου:

1x φύλλο κόντρα πλακέ 3/16 ιντσών

Σωλήνας αποστολής 1x 6 ιντσών ABS

1x σωλήνα σιλικόνης

1x δοχείο εύκαμπτης σφράγισης

4 φορές καρούλια νήματος εκτυπωτή 3D ABS

Διαφάνεια συρταριού 1x24 ιντσών

Σωλήνας συρρίκνωσης θερμότητας

1x 10 πόδια σκωτσέζικης μάρκας duraloc velcro

1x πλαστικό εποξικό JB Weld

Θόλος ακρυλικής κάμερας ασφαλείας διαμέτρου 6x2,2 ιντσών

2x διέλευση IP68 ethernet

2x καλώδιο Ethernet 24 ιντσών cat6

1x καλώδιο Ethernet 200 ποδιών cat6

Το υλικό που χρησιμοποιήθηκε ήταν:

Ορειχάλκινες βίδες 24x 1/2 ιντσών

24x ------ βίδες (περιλαμβάνονται με servos)

Τα εργαλεία που χρησιμοποιήθηκαν:

Κατσαβίδια Philip's και Flat head

Σετ κλειδιών Άλεν

Συγκολλητικό σίδερο

Θερμικό όπλο

3D εκτυπωτής (χρησιμοποίησα Monoprice Maker Select Plus)

Βήμα 2: Προγραμματισμός

Προγραμματισμός
Προγραμματισμός
Προγραμματισμός
Προγραμματισμός
Προγραμματισμός
Προγραμματισμός
Προγραμματισμός
Προγραμματισμός

Παρακάτω είναι ο κώδικας που δημιουργήθηκε για τον έλεγχο του υποβρύχιου. Έχω προσαρτήσει επίσης το αρχείο.ino έτσι ώστε να μπορεί να μεταφορτωθεί.

Αυτός ο κώδικας δημιουργήθηκε για το Arduino Uno χρησιμοποιώντας τον μεταγλωττιστή Arduino.

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

Συντάκτης: Jonah Powers Ημερομηνία: 11/9/2018 Σκοπός: Κωδικός Ελέγχου για Απομακρυσμένο Υποβρύχιο Όχημα **************************** ********************************************** ********************************************** **********************************/#include // Including Servo Library Servo roll1; // Διακήρυξη του roll1 ως σερβο σερβο ρολό2. // Διακήρυξη του roll2 ως σερβο σερβο ανελ1 // Διακήρυξη του lift1 ως σερβο σερβο ανυψωτή2. // Διακήρυξη του2 για servo 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); // Αρχικοποίηση του σειριακού ρολού moniter 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 στην κεντραρισμένη θέση του // Γράφοντας 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) {// Έλεγχος για να δείτε αν το "Joystick" (ποτενσιόμετρο) είναι κεντραρισμένο roll1.write (90). // Γράφοντας servo roll1 στην κεντρική θέση roll2.write (90); // Γράφοντας servo roll2 στην κεντρική θέση} else {// Τι να κάνετε αν το "Joystick" δεν είναι στο κέντρο val1 = map (val1, 0, 1023, 10, 170); // Χαρτογράφηση val1 από 10 έως 170 και ανάθεση σε val1 roll1.write (val1); // Γράφοντας servo roll1 σε poziton που ορίζεται από val1 roll2.write (val1); // Γράφοντας servo roll2 στο positon που ορίζεται από το val1}

val2 = analogRead (pot2); // Ανάγνωση pot2 (αναλογικός πείρος 2) και αποθήκευση τιμής ως val2 εάν (val2> = 485 && val2 <= 540) {// Έλεγχος για να διαπιστωθεί εάν το "Joystick" (ποτενσιόμετρο) είναι κεντραρισμένο σε ανυψωμένο επίπεδο1.write (90); // Γράψιμο servo lift1 στην κεντρική θέση lift2.write (90); // Γράφοντας servo lift2 στην κεντρική θέση} else {// Τι να κάνετε εάν το "Joystick" δεν είναι κεντραρισμένο val3 = map (val2, 0, 1023, 10, 170); // Χαρτογράφηση val2 από 10 έως 170 και ανάθεση σε val3 val4 = χάρτης (val2, 0, 1023, 170, 10). // Χαρτογράφηση val2 από 170 έως 10 και ανάθεση σε val4 lift1.write (val3); // Γράφοντας servo lift1 σε poziton που ορίζεται από val3 lift2.write (val4); // Γράφοντας servo lift2 σε poziton που ορίζεται από το val4}

val5 = analogRead (pot3); // Ανάγνωση pot3 (αναλογικό pin 4) και αποθήκευση τιμής ως val5 if (val5> = 485 && val5 <= 540) {// Έλεγχος για να διαπιστωθεί εάν το "Joystick" (ποτενσιόμετρο) είναι κεντροθετημένο yaw1.write (90); // Γράφοντας servo yaw1 στην κεντρική θέση yaw2.write (90); // Γράφοντας servo yaw2 στην κεντρική θέση} else {// Τι να κάνετε εάν το "Joystick" δεν είναι κεντραρισμένο val6 = map (val5, 0, 1023, 10, 170); // Χαρτογράφηση val5 από 10 έως 170 και ανάθεση σε val6 val7 = χάρτης (val5, 0, 1023, 170, 10). // Χαρτογράφηση val5 από 10 έως 170 και ανάθεση σε val7 yaw1.write (val6); // Γράψιμο servo yaw1 στο positon που ορίζεται από val6 yaw2.write (val7); // Γράφοντας servo yaw2 στο positon που ορίζεται από το val7}

val8 = analogRead (pot4); // Ανάγνωση pot4 (αναλογικό pin 5) και αποθήκευση τιμής ως val8 if (val8> 470 && val8 80 && val8 <80) || (mspeed80)) {// Έλεγχος για να δείτε αν ο κινητήρας πρόκειται να αλλάξει κατεύθυνση esc.write (80)? καθυστέρηση (1000)? // Αναμονή 1000 χιλιοστά του δευτερολέπτου} esc.write (val8); // Γραφή servo esc σε ταχύτητα που ορίζεται από val8 mspeed = val8; // Αποθήκευση τρέχουσας ταχύτητας για σύγκριση}} Serial.print ("γκάζι"); // Χρήση Serial Print για εμφάνιση της λέξης "Throttle" Serial.println (val8); // Χρήση σειριακής εκτύπωσης για την εμφάνιση της τιμής που έχει ρυθμιστεί το γκάζι σε Serial.print ("roll"). // Χρήση Serial Print για εμφάνιση της λέξης "Roll" Serial.println (val1); // Χρήση σειριακής εκτύπωσης για την εμφάνιση της τιμής που έχει οριστεί το ρολό σε Serial.print ("βήμα"). // Χρήση Serial Print για εμφάνιση της λέξης "Pitch" Serial.println (val3); // Χρήση σειριακής εκτύπωσης για την εμφάνιση της τιμής που έχει ορίσει το pitch1 σε Serial.println (val4); // Χρήση σειριακής εκτύπωσης για την εμφάνιση της τιμής που έχει ορίσει το pitch2 σε Serial.print ("yaw"). // Χρήση Serial Print για εμφάνιση της λέξης "Yaw" Serial.println (val6); // Χρήση Serial Print για την εμφάνιση της τιμής που έχει ορίσει το yaw1 σε Serial.println (val7); // Χρήση σειριακής εκτύπωσης για την εμφάνιση της τιμής που έχει οριστεί στο yaw2}

Βήμα 3: Κυκλώματα

Επισυνάπτεται φωτογραφία του κυκλώματος επί του υποβρύχιου.

Δημιούργησα μια προσαρμοσμένη ασπίδα για το Arduino για να απλοποιήσω την καλωδίωσή μου. Έχω ανεβάσει τα αρχεία Eagle Schematic & Board για την ασπίδα. Χρησιμοποίησα ένα LPKF S63 για να αλέσω τον πίνακα. το Servos στο μπροστινό μέρος του ρολού ελέγχου θα συνδεθεί στο Arduino

επισυνάπτεται μια φωτογραφία του κυκλώματος μέσα στο χειριστήριο.

Βήμα 4: Τμήματα εκτυπωμένων 3D

Εκτύπωσα όλα αυτά τα αρχεία στο Monoprice Maker Select Plus. Χρησιμοποίησα νήμα Esun ABS 1,75mm. Οι ρυθμίσεις εκτύπωσης ήταν 105 βαθμοί C για τη θερμοκρασία κρεβατιού εκτύπωσης και 255 βαθμοί Κελσίου για τη θερμοκρασία εξωθητή. Απαιτείται μόνο 1 από κάθε μέρος εκτός από το ότι θα χρειαστείτε 6 αντίγραφα της μπροστινής πτέρυγας. Σημειώστε ότι αυτά τα μέρη εκτυπώθηκαν με πάχος τοιχώματος σε 1000mm. Αυτό έγινε έτσι ώστε τα μέρη να τυπωθούν με 100% πλήρωση, ώστε να είναι αρνητικά πλευστά.

Βήμα 5: Συναρμολόγηση

********************************* ΕΡΧΟΜΑΙ ΣΥΝΤΟΜΑ *************** *******************

Συνιστάται: