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

Robotic Arm Controlled by Arduino and PC: 10 Steps
Robotic Arm Controlled by Arduino and PC: 10 Steps

Βίντεο: Robotic Arm Controlled by Arduino and PC: 10 Steps

Βίντεο: Robotic Arm Controlled by Arduino and PC: 10 Steps
Βίντεο: DIY Arduino Robot Arm - Controlled by Hand Gestures | Full Tutorial 2024, Νοέμβριος
Anonim
Image
Image
Θεωρία πίσω από το έργο
Θεωρία πίσω από το έργο

Τα ρομποτικά χέρια χρησιμοποιούνται ευρέως στη βιομηχανία. Είτε πρόκειται για εργασίες συναρμολόγησης, η συγκόλληση ή ακόμα και ένα χρησιμοποιείται για τη σύνδεση στο ISS (Διεθνής Διαστημικός Σταθμός), βοηθούν τους ανθρώπους στην εργασία ή αντικαθιστούν τον άνθρωπο εντελώς. Ο βραχίονας που έχω κατασκευάσει είναι μικρότερη αναπαράσταση του ρομποτικού βραχίονα που υποτίθεται ότι θα χρησιμοποιηθεί για κινούμενα αντικείμενα. Ελέγχεται από το arduino pro mini το οποίο έχει ήδη ενσωματωμένη βιβλιοθήκη για τον έλεγχο των servos. Τα Servos ελέγχονται από το PWM (Pulse Width Modulation) το οποίο δεν είναι δύσκολο να προγραμματιστεί αλλά αυτή η βιβλιοθήκη το διευκολύνει. Ο χρήστης μπορεί να ελέγχει τα servos με ποτενσιόμετρα που έχουν σχεδιαστεί για να λειτουργούν ως διαχωριστές τάσης ή από πρόγραμμα στον υπολογιστή που χρησιμοποιεί 4 ρυθμιστικά για τον έλεγχο σερβοκινητήρων.

Για αυτό το έργο έπρεπε να σχεδιάσω το προσαρμοσμένο PCB μου και να το φτιάξω, να δημιουργήσω τρισδιάστατα μοντέλα βραχιόνων και να γράψω κώδικα που τα ελέγχει όλα. Πάνω από αυτό κωδικοποίησα πρόσθετο πρόγραμμα σε python που στέλνει σήματα στο arduino το οποίο καταφέρνει να αποκωδικοποιήσει αυτό το σήμα και να μεταφέρει τα servos στη θέση που έχει ορίσει ο χρήστης.

Βήμα 1: Theory Behind Project

Θεωρία πίσω από το έργο
Θεωρία πίσω από το έργο

Το Arduino είναι εξαιρετικό με αυτόν τον τρόπο που προσφέρει δωρεάν βιβλιοθήκη για εργασία. Για αυτό το έργο χρησιμοποίησα τη βιβλιοθήκη Servo.h που διευκολύνει τον έλεγχο των σερβομηχανών.

Ο σερβοκινητήρας ελέγχεται από PWM -Pulse Width Modulation- που σημαίνει ότι για να ελέγξετε το σερβο πρέπει να κάνετε παλμούς βραχείας τάσης. Το σερβο μπορεί να αποκωδικοποιήσει το μήκος αυτού του σήματος και να περιστραφεί στη δεδομένη θέση. Και εδώ χρησιμοποίησα την ήδη αναφερθείσα βιβλιοθήκη. Δεν χρειάστηκε να υπολογίσω μόνος μου το μήκος του σήματος, αλλά χρησιμοποίησα τις συναρτήσεις της βιβλιοθήκης στις οποίες απλώς περνάω την παράμετρο σε μοίρες και κάνει σήμα.

Για τον έλεγχο των servos χρησιμοποίησα ποτενσιόμετρα που λειτουργούν ως διαχωριστές τάσης. Οι πίνακες Arduino έχουν πολλούς αναλογικούς/ψηφιακούς μετατροπείς που χρησιμοποίησα για το έργο. Βασικά το arduino παρακολουθεί την τάση στη μεσαία ακίδα στο ποτενσιόμετρο και αν περιστρέφεται προς τη μία πλευρά, είναι 0 Volts (τιμή = 0) και στην άλλη πλευρά είναι 5 Volts (τιμή = 1023). Αυτή η τιμή κλιμακώνεται στη συνέχεια από το εύρος 0 - 1023 έως 0 - 180 και στη συνέχεια μεταφέρεται στη λειτουργία που ήδη αναφέρθηκε.

Ένα άλλο θέμα είναι η σειριακή επικοινωνία με το arduino που θα καλύψω εν συντομία. Βασικά το πρόγραμμα που είναι γραμμένο σε υπολογιστή αποστέλλει τιμή που έχει επιλέξει ο χρήστης, το arduino μπορεί να το αποκωδικοποιήσει και να μεταφέρει το σερβο σε δεδομένη θέση

Βήμα 2: Σχεδιασμός PCB

Σχεδιασμός PCB
Σχεδιασμός PCB
Σχεδιασμός PCB
Σχεδιασμός PCB
Σχεδιασμός PCB
Σχεδιασμός PCB

Σχεδίασα 2 PCB - ένα για κύριο έλεγχο όπου είναι το arduino και καρφίτσες για servos και στο δεύτερο είναι ποτενσιόμετρα. Ο λόγος για 2 PCB είναι ότι ήθελα να ελέγξω το ρομποτικό χέρι από ασφαλή απόσταση. Και τα δύο κυκλώματα συνδέονται με καλώδιο δεδομένου μήκους - στην περίπτωσή μου 80 cm.

Για πηγή ενέργειας επέλεξα εξωτερικό προσαρμογέα, επειδή τα servos που χρησιμοποίησα καταναλώνουν πολύ περισσότερη ενέργεια από ό, τι μπορεί να παρέχει το arduino. Όπως μπορείτε να δείτε, υπάρχουν ορισμένοι πυκνωτές που δεν έχω αναφέρει ακόμα. Είναι πυκνωτές που χρησιμοποιούνται για φιλτράρισμα. Όπως γνωρίζετε τώρα, ο σερβοκινητήρας ελέγχεται από βραχυκύκλωμα. Αυτές οι παρορμήσεις μπορούν να μειώσουν την τάση τροφοδοσίας και τα ποτενσιόμετρα που είχαν προηγουμένως το εύρος 0-5 βολτ να έχουν τώρα μικρότερη εμβέλεια. Αυτό σημαίνει ότι η τάση στο μεσαίο πείρο αλλάζει και το arduino αποκτά αυτήν την τιμή και αλλάζει τη θέση που βρίσκεται ο σερβοκινητήρας. Αυτό μπορεί να συνεχιστεί για πάντα και προκαλεί ανεπιθύμητη ταλάντωση που μπορεί να εξαλειφθεί από ορισμένους πυκνωτές παράλληλα στην παροχή.

Βήμα 3: Κατασκευή PCB

Κατασκευή PCB
Κατασκευή PCB
Κατασκευή PCB
Κατασκευή PCB
Κατασκευή PCB
Κατασκευή PCB

Για την κατασκευή PCB σας προτείνω να το διαβάσετε.

Χρησιμοποίησα τη μέθοδο Iron on Glossy paper και λειτούργησε τέλεια.

Στη συνέχεια, κόλλησα εξαρτήματα στο PCB. Μπορείτε να δείτε ότι χρησιμοποίησα πρίζα arduino σε περίπτωση που θα το χρειαστώ στο μέλλον.

Βήμα 4: Σχεδιασμός του βραχίονα

Σχεδιασμός του βραχίονα
Σχεδιασμός του βραχίονα
Σχεδιασμός του βραχίονα
Σχεδιασμός του βραχίονα
Σχεδιασμός του βραχίονα
Σχεδιασμός του βραχίονα

Αυτό δεν ήταν σε καμία περίπτωση το πιο δύσκολο κομμάτι για την κατασκευή αυτού του έργου.

Ολόκληρη η εγκατάσταση αποτελείται από 8 μέρη όπου 4 δεν είναι κινούμενα μέρη - κουτί για ποτενσιόμετρα και βάση όπου βρίσκεται το arduino - και άλλα τέσσερα είναι ο ίδιος ο βραχίονας. Δεν θα μπω σε πολλές λεπτομέρειες εκτός από το ότι ο σχεδιασμός είναι αρκετά διαισθητικός και κατά κάποιο τρόπο απλός. Έχει σχεδιαστεί για να ταιριάζει με το προσαρμοσμένο PCB και τα servos τα οποία θα συμπεριλάβω στη λίστα μερών.

Βήμα 5: Εκτύπωση των ανταλλακτικών

Εκτύπωση των ανταλλακτικών
Εκτύπωση των ανταλλακτικών
Εκτύπωση των ανταλλακτικών
Εκτύπωση των ανταλλακτικών
Εκτύπωση των ανταλλακτικών
Εκτύπωση των ανταλλακτικών

Τα μέρη εκτυπώθηκαν στον εκτυπωτή Prusa. Κάποιες όψεις έπρεπε να γειωθούν λίγο και να ανοίξουν τρύπες. Επίσης, οι πυλώνες στήριξης έπρεπε να αφαιρεθούν.

Βήμα 6: Το βάζουμε όλα μαζί

Το βάζουμε όλα μαζί
Το βάζουμε όλα μαζί
Το βάζουμε όλα μαζί
Το βάζουμε όλα μαζί
Το βάζουμε όλα μαζί
Το βάζουμε όλα μαζί
Το βάζουμε όλα μαζί
Το βάζουμε όλα μαζί

Σε αυτό το βήμα όπως λέει ο τίτλος τα έβαλα όλα μαζί.

Στην αρχή κόλλησα σύρματα στα ποτενσιόμετρα και μετά αυτά τα καλώδια στο PCB. Τα ποτενσιόμετρα ταιριάζουν όμορφα σε τρύπες και κόλλησα ζεστά το PCB στους πυλώνες που ήταν τυπωμένοι στο κάτω μέρος του κουτιού. Μπορείτε να ανοίξετε τρύπες στον πίνακα και στο κουτί, αλλά διαπίστωσα ότι η κόλλησή του είναι κάτι παραπάνω από αρκετή. Στη συνέχεια έκλεισα και τα δύο μέρη του κουτιού και τα στερέωσα στη θέση τους με 4 βίδες που ταιριάζουν σε τρύπες που σχεδίασα.

Ως επόμενο βήμα έφτιαξα επίπεδη κορδέλα για να συνδέσω και τις δύο σανίδες.

Στο κύριο κουτί κόλλησα καλώδια από τον πείρο VCC του συνδέσμου για να μεταβώ και στη συνέχεια σε Vcc του σκάφους και από GND του σκάφους σε GND του συνδετήρα. Στη συνέχεια, κόλλησα θερμά τη φίσα στη θέση της και τη σανίδα σε κολώνες. Ο συνδετήρας ταιριάζει ακριβώς στην τρύπα, οπότε δεν χρειάζεται θερμή κόλλα.

Στη συνέχεια, χρησιμοποιώντας βίδες, στερέωσα τον κάτω σερβο στον πάτο του κουτιού.

Μετά από αυτό, έβαλα το πάνω μέρος του κουτιού στο κάτω μέρος και το ίδιο όπως με το κιβώτιο του ποτενσιόμετρου το στερέωσα με 4 βίδες.

Το επόμενο μέρος ήταν λίγο δύσκολο, αλλά κατάφερα να βάλω το υπόλοιπο χέρι με διάφορα παξιμάδια και τακάκια και δεν ήταν τόσο σφιχτό όσο περίμενα γιατί σχεδίασα κάποιες ανοχές μεταξύ των τμημάτων, οπότε είναι πιο εύκολο να δουλέψω μαζί τους.

Και ως τελευταίο βήμα έβαλα λίγη ταινία στο κάτω μέρος των κουτιών γιατί αλλιώς θα γλιστρούσαν.

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

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

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

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

Στη συνέχεια υπάρχει κενή ρύθμιση όπου ορίζονται οι ακίδες των servos.

Στη συνέχεια, υπάρχει κενός βρόχος - μέρος του προγράμματος που κάνει άπειρο βρόχο. Σε αυτό το μέρος, το πρόγραμμα παίρνει την τιμή από τις κλίμακες του ποτενσιόμετρου και τοποθετεί την έξοδο. Υπάρχει όμως ένα πρόβλημα ότι η τιμή από το ποτενσιόμετρο πηδά αρκετά, οπότε χρειάστηκε να προσθέσω φίλτρο που κάνει το μέσο όρο των τελευταίων 5 τιμών και μετά βάζει έξοδο. Αυτό αποτρέπει την ανεπιθύμητη ταλάντευση.

Το τελευταίο μέρος του προγράμματος διαβάζει δεδομένα από σειριακή θύρα και αποφασίζει τι θα κάνει με βάση τα δεδομένα που αποστέλλονται.

Προκειμένου να κατανοήσετε πλήρως τον κώδικα, σας προτείνω να επισκεφθείτε επίσημους ιστότοπους arduino.

Βήμα 8: Προγραμματισμός σε Python

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

Αυτό το μέρος αυτού του έργου δεν είναι απαραίτητο, αλλά νομίζω ότι δίνει μόνο μεγαλύτερη αξία σε αυτό το έργο.

Η Python προσφέρει χιλιάδες βιβλιοθήκες που είναι δωρεάν για χρήση, αλλά σε αυτό το έργο χρησιμοποιώ μόνο tkinter και σειριακές. Το Tkinter χρησιμοποιείται για GUI (Γραφική διεπαφή χρήστη) και το σειριακό όπως λέει το όνομά του χρησιμοποιείται για σειριακή επικοινωνία.

Αυτός ο κώδικας δημιουργεί GUI με 4 ρυθμιστικά που έχουν ελάχιστη τιμή 0 και μέγιστη 180. Μπορεί να σας υπονοεί ότι είναι σε μοίρες και κάθε ρυθμιστικό είναι προγραμματισμένο να ελέγχει ένα σερβο. Αυτό το πρόγραμμα είναι μάλλον απλό - παίρνει την τιμή και το στέλνει στο arduino. Αλλά ο τρόπος που στέλνει είναι ενδιαφέρον. Εάν επιλέξετε να αλλάξετε την τιμή του πρώτου σερβο σε 123 μοίρες, στέλνει στην τιμή του arduino 1123. Ο πρώτος αριθμός κάθε αριθμού που αποστέλλεται δείχνει ποιος σερβο πρόκειται να ελεγχθεί. Το Arduino διαθέτει κώδικα που μπορεί να το αποκωδικοποιήσει και να μετακινήσει το σωστό σερβο.

Βήμα 9: Λίστα μερών

Λίστα μερών
Λίστα μερών
  • Arduino Pro Mini 1 τεμάχιο
  • Servo FS5106B 1 τεμάχιο
  • Servo Futaba S3003 2 τεμάχια
  • Κεφαλίδα καρφιτσών 2x5 1 τεμάχιο
  • Κεφαλίδα καρφιτσών 1x3 6 τεμάχια
  • Πυκνωτής 220uF 3 τεμάχια
  • Micro Servo FS90 1 τεμάχιο
  • Συνδετήρας AWP-10 2 τεμάχια
  • Συνδετήρας FC681492 1 τεμάχιο
  • Διακόπτης P-B100G1 1 τεμάχιο
  • Υποδοχή 2x14 1 τεμάχιο
  • TTL-232R-5v-μετατροπέας 1 τεμάχιο
  • Ποτενσιόμετρο B200K 4 τεμάχια
  • και πολλές ακόμη βίδες, τακάκια και παξιμάδια

Βήμα 10: Τελικές σκέψεις

Σας ευχαριστώ που το διαβάσατε και ελπίζω ότι σας έχω δώσει τουλάχιστον κίνητρο. Αυτό είναι το πρώτο μου μεγαλύτερο έργο που έκανα μόνος μου χωρίς να αντιγράψω πράγματα από το Διαδίκτυο και την πρώτη ανάρτηση με οδηγίες. Ξέρω ότι ο βραχίονας θα μπορούσε να αναβαθμιστεί, αλλά είμαι ικανοποιημένος με αυτό προς το παρόν. Όλα τα μέρη και οι πηγαίοι κωδικοί είναι δωρεάν, μπορείτε να το χρησιμοποιήσετε και να το αλλάξετε με όποιον τρόπο θέλετε. Εάν έχετε οποιεσδήποτε ερωτήσεις, μη διστάσετε να τις ρωτήσετε στην ενότητα σχολίων. Μπορείτε επίσης να δείτε τα βίντεο, δεν είναι σε εξαιρετική ποιότητα, αλλά δείχνουν τη λειτουργικότητα του έργου.

Συνιστάται: