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

Ρομποτικός βραχίονας Arduino: 5 βήματα
Ρομποτικός βραχίονας Arduino: 5 βήματα

Βίντεο: Ρομποτικός βραχίονας Arduino: 5 βήματα

Βίντεο: Ρομποτικός βραχίονας Arduino: 5 βήματα
Βίντεο: Moveo Robotic Arm Build #arduino #build #robot 2024, Ιούλιος
Anonim
Image
Image
Ρομποτικό μπράτσο Arduino
Ρομποτικό μπράτσο Arduino
Ρομποτικό μπράτσο Arduino
Ρομποτικό μπράτσο Arduino

Δεδομένου ότι είναι το πρώτο μου έργο μετά τα 15 μαθήματα του κιτ εκκίνησης Arduino, ο πραγματικός σκοπός του είναι να λάβω κριτικούς, συμβουλές, προτάσεις, ιδέες από οποιονδήποτε ξέρει περισσότερα από εμένα.

Αυτό το έργο αφορά έναν ρομποτικό βραχίονα, με 4 dofs και μια λαβή. Με αξιοπρεπώς χαμηλό προϋπολογισμό: η δομή έχει κοπεί από έναν φίλο, τα 4 σερβο ήταν 30 €, τα 2 χειριστήρια 4 €, μπουλόνια κ.λπ. για λιγότερο από 10 € και όλα τα υπόλοιπα (Arduino, σύρματα, σερβίς λαβής κ.λπ.)) είχε ήδη συμπεριληφθεί στο κιτ εκκίνησης. Συνολικά 40-45 € που είναι περίπου 45-50 δολάρια ΗΠΑ (την ίδια τιμή με ένα κιτ με μπράτσο, αλλά γεια, ήταν διασκεδαστικό να το φτιάχνω μόνος μου (και να μπερδεύω κάτι κάθε τόσο) και να μην ακολουθείτε οδηγίες όπως ένα μηχάνημα).

Δεδομένου ότι αυτό ήταν το πρώτο μου έργο και με δυνατότητα διδασκαλίας, συμμετείχα στο "'First Time Author" και σε μερικούς άλλους διαγωνισμούς, οπότε αν σας αρέσει, ψηφίστε το:)

Βήμα 1: ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΣΥΝΑΡΜΟΛΟΓΗΣΗ:

Πρώτα χρειαζόμουν μια δομή: Αυτό ήταν σίγουρα το μεγαλύτερο μέρος. Δεδομένου ότι δεν ήθελα να αντιγράψω και να επικολλήσω το έργο από κάποιον άλλο, πήρα ένα έργο ως αναφορά και εγώ (και μερικοί πιο εξειδικευμένοι συμμαθητές που με έσωσαν πραγματικά) άρχισε να το τροποποιεί ανάλογα με τις ανάγκες μας (διαφορετικά servos με διαφορετική ροπή, βάρος και διαστάσεις κ.λπ.). Έπρεπε να το φτιάξω μερικές φορές, καθένα από αυτά βρήκα κάτι λάθος και έπρεπε να επαναλάβουμε μερικά κομμάτια και να προσπαθήσουμε ξανά. Έχω επισυνάψει το αρχείο.dxf σε περίπτωση που θέλετε να το χρησιμοποιήσετε. Στη συνέχεια έπρεπε να αγοράσω τα ηλεκτρονικά: Τα περισσότερα από τα εξαρτήματα ήταν στάνταρ, το δύσκολο ήταν να επιλέξουμε τα servos. Υπολόγισα την απαιτούμενη ροπή με τον αντίχειρα, αργότερα δοκίμασα έναν πιο ακριβή υπολογισμό και διαπίστωσα ότι μπορεί να το είχα υπερβάλει λίγο. Προφανώς 6 kg/cm θα ήταν αρκετά για το 2ο σερβο (από τη βάση) και το δικό μου παρέχει 9-11 kg/cm. Λοιπόν, αυτό μου δίνει κάποια ασφάλεια και την ευκαιρία να φορτώσω έως και 2 κιλά φορτίου (κάτι που είναι αδύνατο, αλλά μου αρέσει που θα μπορούσα να το κάνω τεχνικά). Θα μπορούσα επίσης να είχα αγοράσει διαφορετικά servos, με μειωμένη ροπή ενώ απομακρυνόμουν από τη βάση, αλλά η αγορά πανομοιότυπων servos από τον ίδιο προμηθευτή ήταν μακράν η φθηνότερη επιλογή. Τροφοδοσία: Το Arduino σίγουρα δεν ήταν αρκετό για τα servos, αφού κάθε mg995 ισοφαρίζει 350mA και το microservo 9g αντλεί 100mA, συνολικά 350*4 +100 = 1500mA. Έτσι διέσωσα έναν φορτιστή (6V 1.5A) και κόλλησα δύο καλώδια βραχυκυκλωτή σε αυτό. (Αν μερικοί από εσάς μπορεί να χρειάζονται πραγματικές οδηγίες, ρωτήστε στα σχόλια και θα κάνω ό, τι καλύτερο μπορώ για να δημιουργήσω ένα βήμα προς βήμα οδηγός) Κατάλογος υλικών:- Δομή- Βίδα M5x7cm x5, μπουλόνια m5 x15 (βάση)- M3x16mm βίδα x18*- M3x20mm βίδα x13*- M3 μπουλόνια x40*- M3x8cm βίδα x3- Σφιγκτήρας (αλλιώς θα πέσει)- 3 πείροι- Arduino (ή κάτι άλλο για να το ελέγξετε, πρέπει να έχει τουλάχιστον 5 PWM)- Κάτι για να τροφοδοτεί 5-6V και τουλάχιστον 1.5A- τζόιστικ σαν 3x ps2- 4x TowerPro mg995 servos- 1x TowerPro 9g microservo (για τη λαβή) - Πολλά καλώδια βραχυκυκλωτήρων - Breadboard*(χρησιμοποίησα μπουλόνια και βίδες για να μπορώ να συναρμολογώ και να αποσυναρμολογώ γρήγορα, διαφορετικά θα μπορούσατε να τα αντικαταστήσετε σχεδόν όλα με βίδες ξυλουργικής)

Βήμα 2: ΚΩΔΙΚΟΣ:

Η ιδέα είναι να ελέγξουμε κάθε σερβο με έναν από τους δύο άξονες ενός χειριστηρίου που μοιάζει με ps2. Κάθε joystick φάνηκε να έχει διαφορετικές «τιμές ανάπαυσης» (η τιμή μεταξύ 0-1023 όταν είναι ακόμα) τόσο για τον άξονα y όσο και για το x. Αυτό ήταν ένα πρόβλημα, αφού η διαφορά ήταν σχεδόν μικρή (το ένα είχε το μηδέν στο y στο 623) και ήθελα να χρησιμοποιήσω τη συνάρτηση χάρτη για να μετατρέψω από 0-1023 σε μοίρες. Αλλά η συνάρτηση χάρτη πιστεύει ότι η υπόλοιπη τιμή είναι 1023/2. Αυτό έφερε σε κάθε σερβο που κινείται μόλις ενεργοποιήσω το Arduino, δεν ήταν καλό. Κατάφερα να το ξεπεράσω βρίσκοντας χειροκίνητα τη διαφορά μεταξύ της τιμής ανάγνωσης και κάθε διαφορετικής τιμής ανάπαυσης (την οποία υπολόγισα ξεχωριστά για κάθε χειριστήριο), στη συνέχεια Κάντε τον κώδικα συντομότερο και εξυπνότερο, τον έβαλα να διαβάσει τις υπόλοιπες τιμές στη συνάρτηση ρύθμισης και να τις αποθηκεύσει σε ορισμένες μεταβλητές. Ο νέος αλγόριθμος βασίζεται στη μετατροπή της αύξησης σε μοίρες, αλλά ήθελα πολύ χαμηλό βαθμό μοίρας για την αύξηση μου, οπότε Έπρεπε να το διαιρέσω για μια σταθερά: Δοκίμασα πολλές τιμές, μέχρι που κατέληξα στο τελικό 200 (μπορώ να προσθέσω ένα ποτενσιόμετρο για να αλλάξω χειροκίνητα αυτήν την τιμή στην επιθυμητή). Ο υπόλοιπος κώδικας είναι αρκετά τυπικός, υποθέτω, αν και θα ήταν πιο κομψό να βάλουμε τον υπολογισμό της προσαύξησης σε μια ξεχωριστή συνάρτηση.

Βήμα 3: ΗΛΕΚΤΡΟΝΙΚΗ:

ΗΛΕΚΤΡΟΝΙΚΑ ΕΙΔΗ
ΗΛΕΚΤΡΟΝΙΚΑ ΕΙΔΗ

Η καλωδίωση είναι η ίδια όπως φαίνεται στην εικόνα ή το αρχείο ψύξης: σήμα servos στις καρφίτσες: 5-6-9-10-11 και άξονας joystick σε αναλογικούς πείρους: A0-A1-A2-A3-A4 Το κύριο πρόβλημα που αντιμετώπισα ήταν ότι τα χειριστήρια έπρεπε να παρέχονται από το Arduino, ΟΧΙ από το φορτιστή που χρησιμοποιώ για τα σερβίς. Διαφορετικά, το σερβο θα τρελανόταν να κινείται τυχαία πέρα δώθε. Νομίζω ότι αυτό μπορεί να συμβαίνει επειδή, αν τους προμηθεύσω τον φορτιστή, το Arduino δεν θα είναι σε θέση να πει ακριβώς τη δυνητική διαφορά όταν τα μετακινώ, αλλά ξανά: Είμαι πολύ νέος στα ηλεκτρονικά, οπότε είναι απλώς μια εικασία. Η σύνδεση της γείωσης Arduino και του φορτιστή μέσω του breadboard βοήθησε στην πρόληψη τυχαίων και απροσδόκητων κινήσεων, για παρόμοιο λόγο της προμήθειας χειριστηρίων υποθέτω.

Βήμα 4: ΠΡΟΣΦΟΡΑ ΤΩΡΑ ΒΕΛΤΙΩΣΗ:

ΠΡΟΣΦΟΡΑ ΤΩΡΑ ΒΕΛΤΙΩΣΗ
ΠΡΟΣΦΟΡΑ ΤΩΡΑ ΒΕΛΤΙΩΣΗ

Δεδομένου ότι κάθε joystick μπορεί να ελέγξει 2 servos (1 ανά άξονα), χρειάζομαι 3 servos για να ελέγξω ολόκληρο το χέρι, αλλά δυστυχώς έχω μόνο 2 αντίχειρες. Έτσι σκέφτηκα ότι, αντί να ελέγχω κάθε σερβο, θα μπορούσα να ελέγξω μόνο τη θέση xyz του πιάστε και ανοίξτε-κλείστε τη λαβή, για συνολικά 4 άξονες, 2 χειριστήρια και 2 αντίχειρες! Ανακάλυψα ότι αυτό το πρόβλημα είναι γνωστό ως Inverse Kinematics, ανακάλυψα επίσης ότι δεν είναι καθόλου εύκολο. Η ιδέα είναι να γράψω (μη γραμμικές) εξισώσεις για την εύρεση της κατάστασης κάθε τελεστή (γωνίες για τα servos) δεδομένης της τελικής θέσης. Έχω ανεβάσει ένα χειρόγραφο χαρτί με τις εξισώσεις και αυτή τη στιγμή εργάζομαι σε έναν νέο κώδικα για να τις χρησιμοποιήσω. Δεν πρέπει να είναι πολύ δύσκολο, βασικά πρέπει να διαβάσω τα joystick, να χρησιμοποιήσω τις ενδείξεις τους για να τροποποιήσω τις συντεταγμένες xyz της λαβής και μετά να τις δώσω στις εξισώσεις μου, να υπολογίσω τις γωνίες servos και να τις γράψω.

Βήμα 5: ΜΕΛΛΟΝΤΙΚΕΣ ΒΕΛΤΙΩΣΕΙΣ:

Έτσι, είμαι αρκετά ικανοποιημένος με το αποτέλεσμα και θεωρώντας ότι είμαι εντελώς καινούργιος στα ηλεκτρονικά, το να μην ανατινάξω κάτι ή τον εαυτό μου ήταν ήδη μια τεράστια νίκη. Όπως είπα στην αρχή, οποιαδήποτε ιδέα για μελλοντικές βελτιώσεις, τόσο λογισμικό όσο και υλικό, είναι κάτι παραπάνω από ευπρόσδεκτο! Μέχρι στιγμής σκέφτηκα: 1. Το ποτενσιόμετρο για την τροποποίηση της «ευαισθησίας» των χειριστηρίων.2. Νέος κώδικας που θα τον κάνει να «ηχογραφήσει» κάποιες κινήσεις και να τις ξανακάνει (ίσως γρηγορότερες και συντομότερες από την ανθρώπινη συμβολή) 3. Είδος οπτικής/απόστασης/φωνής και δυνατότητα λήψης αντικειμένων χωρίς κάποιον να χρησιμοποιεί τα joystick4. Να μπορείς να σχεδιάζεις γεωμετρικά σχήματα Κάποια άλλη ιδέα; Μη διστάσετε να σχολιάσετε με τυχόν προτάσεις. Σας ευχαριστούμε

Συνιστάται: