Πίνακας περιεχομένων:
- Βήμα 1: Υλικά
- Βήμα 2: Προγραμματισμός
- Βήμα 3: Κυκλώματα
- Βήμα 4: Τμήματα εκτυπωμένων 3D
- Βήμα 5: Συναρμολόγηση
Βίντεο: Υποβρύχιο όχημα: 5 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:36
**************** ΑΥΤΟ ΤΟ ΟΔΗΓΙΟ ΕΙΝΑΙ ΑΚΟΜΑ ΕΡΓΟ ΣΕ ΠΡΟΟΔΟ ****************
Αυτό το 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: Συναρμολόγηση
********************************* ΕΡΧΟΜΑΙ ΣΥΝΤΟΜΑ *************** *******************
Συνιστάται:
Αυτοκίνητο ρομποτικό όχημα αρχαρίων με αποφυγή σύγκρουσης: 7 βήματα
Αρχαίο αυτοκινούμενο ρομποτικό όχημα με αποφυγή σύγκρουσης: Γεια σας! Καλώς ορίσατε στο εκπαιδευτικό μου για αρχάριους, πώς να φτιάξετε το δικό σας αυτοκινούμενο ρομποτικό όχημα με αποφυγή συγκρούσεων και πλοήγηση GPS. Πάνω είναι ένα βίντεο στο YouTube που δείχνει το ρομπότ. Είναι ένα μοντέλο για να δείξει πώς ένας πραγματικός αυτόνομος
Υποβρύχιο τηλεχειριστήριο Drone: 10 βήματα (με εικόνες)
Υποβρύχιο τηλεχειριστήριο Drone: Αποφάσισα να φτιάξω αυτό το ROV με σκοπό την εξερεύνηση και τον θαυμασμό του υποβρύχιου κόσμου επειδή δεν υπάρχουν πολλά οικονομικά υποβρύχια drones εκεί έξω. Αν και απαιτεί πολύ χρόνο, έρευνα και αυτοδιδακτισμό, είναι ένα διασκεδαστικό έργο
Υποβρύχιο Rover: 3 Βήματα
Underwater Rover: Σε αυτό το έργο, λύνουμε το πρόβλημα των ανεξερεύνητων ωκεανών μας δημιουργώντας ένα υποβρύχιο rover. Αυτό το rover θα είναι σε θέση να αναλύσει τα μεγάλα βάθη του ωκεανού και να συλλέξει δεδομένα στο άμεσο περιβάλλον του. Πολλές εταιρείες που βρίσκονται σε
Ένας εύκολος τρόπος για να λάβετε δεδομένα από το όχημά σας: 4 βήματα
Ένας εύκολος τρόπος για να λάβετε δεδομένα από το όχημά σας: Εδώ σας παρουσιάζουμε έναν εύκολο τρόπο λήψης δεδομένων από την υποδοχή OBD-II του οχήματός σας, καθώς και δεδομένα GPS. Το OBD-II, το δεύτερο On-Board Diagnostics, είναι ένας όρος αυτοκινήτου που αναφέρεται στην ικανότητα αυτοδιάγνωσης και αναφοράς ενός οχήματος. Τα συστήματα OBD δίνουν
BTS - Ομάδα 28 (R2 -DTimbs) Υποβρύχιο/Υποβρύχιο: 17 Βήματα
BTS - Team 28 (R2 -DTimbs) Submersible/Submarine: Σεμινάριο για την κατασκευή ενός υποβρυχίου από υλικά που βρίσκονται στο τοπικό κατάστημα υλικού. Το τελευταίο υποβρύχιο θα μπορεί να κινείται προς τα εμπρός, προς τα πίσω, να στρίβει, να ανεβαίνει και να κινείται κάτω σε όλο το νερό