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

Προσθετικό χέρι που λειτουργεί με μυοαισθητήρα: 8 βήματα
Προσθετικό χέρι που λειτουργεί με μυοαισθητήρα: 8 βήματα

Βίντεο: Προσθετικό χέρι που λειτουργεί με μυοαισθητήρα: 8 βήματα

Βίντεο: Προσθετικό χέρι που λειτουργεί με μυοαισθητήρα: 8 βήματα
Βίντεο: Ρύθμιση μπρασελέ σε ρολόι 2024, Ενδέχεται
Anonim
Image
Image

Αυτό το έργο είναι η ανάπτυξη ενός προσθετικού βραχίονα για ακρωτηριασμένα άτομα. Ο στόχος αυτού του έργου είναι η δημιουργία ενός προσιτού προσθετικού βραχίονα για άτομα που δεν μπορούν να αντέξουν οικονομικά έναν επαγγελματικό.

Καθώς αυτό το έργο βρίσκεται ακόμα στη φάση της πρωτοτυπίας, μπορεί πάντα να είναι καλύτερο καθώς προς το παρόν μπορεί μόνο να ανοίξει και να κλείσει την παλάμη, ώστε να μπορεί να πιάσει πράγματα! Παρ 'όλα αυτά, είναι ένα DIY προσθετικό βραχίονα που μπορεί να γίνει στο σπίτι ή σε ένα τοπικό εργαστήριο fab.

Βήμα 1: Απαιτούνται υλικά, εργαλεία και μηχανές

Μηχανές:

  1. Τρισδιάστατος εκτυπωτής
  2. Κόφτης λέιζερ
  3. Desktop CNC Machine

Εργαλεία:

  1. Πετονιά
  2. Νήμα 3mm
  3. Τρυπάνι
  4. Υπερκόλλα
  5. Πένσα τρυπών
  6. Πολύμετρο
  7. Σταθμός συγκόλλησης
  8. Κερί που μπορεί να επεξεργαστεί
  9. Πυρίτιο για καλούπια

Υλικά:

  1. Φύλλο χαλκού
  2. 1x ATMEGA328P-AU
  3. Κρύσταλλος 1x 16MHz
  4. 1x αντίσταση 10k
  5. 2x πυκνωτές 22pF
  6. Πυκνωτής 1x 10uF
  7. Πυκνωτής 1x 1uF
  8. 1x πυκνωτής 0.1uF
  9. 1x μυοαισθητήρα
  10. 5x μικρο σερβοκινητήρες
  11. 1x Arduino UNO

Λογισμικό:

  1. Arduino IDE
  2. Fusion360
  3. Κούρα
  4. Αετός
  5. ΣΕΙΡΗΤΙ

Βήμα 2: Σχεδιασμός 2D & 3D

2D & 3D Σχεδιασμός
2D & 3D Σχεδιασμός
2D & 3D Σχεδιασμός
2D & 3D Σχεδιασμός
2D & 3D Σχεδιασμός
2D & 3D Σχεδιασμός

Τρισδιάστατος σχεδιασμός

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

Η παλάμη είναι αρκετά δύσκολο να σχεδιαστεί καθώς τα δάχτυλα πρέπει να έχουν διαφορετικές αναλογίες μεταξύ τους. Ετσι:

Δάχτυλα: Κατέβασα τα δάχτυλα από το έργο inmoov.

Παλάμη:

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

Πήχης:

  1. Σε διαφορετικά επίπεδα, δημιούργησα δύο σκίτσα και χρησιμοποίησα την εντολή έλλειψης. Χρησιμοποίησα την εντολή loft after για να δημιουργήσω το επιθυμητό σχήμα.
  2. Στη συνέχεια, η εντολή κέλυφος χρησιμοποιήθηκε για να γίνει κοίλη και η εντολή διαχωρισμού για να το κόψω στη μέση, ώστε να μπορώ να σχεδιάσω σε αυτό και για την καλύτερη προσβασιμότητα για όταν τοποθετώ τα ηλεκτρονικά μου μέσα.
  3. Ένα σκίτσο έγινε επίσης κοντά στον καρπό, εξωθήθηκε και ενώθηκε με τον κύριο πήχη έτσι ώστε να μπορεί να συνδεθεί με την παλάμη.
  4. Έχοντας την ορατότητα να σχεδιάσω μέσα στο αντιβράχιο, δημιούργησα ένα σκίτσο στις διαστάσεις των πέντε κινητήρων που θα χρησιμοποιούσα, ένα για κάθε δάχτυλο και το PCB μου (πλακέτα τυπωμένου κυκλώματος) που θα χρησιμοποιούσα. Στη συνέχεια τα εξώθησα μέχρι να φτάσουν στο επιθυμητό ύψος και διέγραψα τα περιττά μέρη στο πίσω μέρος του κυλίνδρου χρησιμοποιώντας το πίσω μέρος.
  5. Τέλος, τα ανοίγματα για τα μπουλόνια σχεδιάστηκαν, με τρόπο που δεν είναι τόσο ορατά στη συνολική σχεδίαση, ώστε το αντιβράχιο να μπορεί να κλείσει χρησιμοποιώντας παρόμοιες εντολές όπως παραπάνω.

Τελειώνοντας το σχέδιο, επέλεξα κάθε σώμα και το κατέβασα ως αρχείο.stl και το τύπωσα 3D ξεχωριστά.

2D Σχεδιασμός

Καθώς ήθελα να χωριστούν οι αλιευτικές μου γραμμές ενώ λειτουργούν από τα μοτέρ, αποφάσισα να τους φτιάξω οδηγούς. Για αυτό, δεν χρειάστηκε πραγματικά να σχεδιάσω κάτι νέο, αλλά να χρησιμοποιήσω τη μικρότερη έλλειψη όταν χρησιμοποιούσα την εντολή loft για να δημιουργήσω το αντιβράχιο.

Εξήγαγα το σκίτσο του ως αρχείο.dxf αφού χρησιμοποίησα τον κόφτη λέιζερ. Αφού είχα το επιθυμητό μου σχήμα, άνοιξα τρύπες 0,8mm μέσα στην υποδοχή που θεώρησα απαραίτητη.

Βήμα 3: Τρισδιάστατη εκτύπωση

Τρισδιάστατη εκτύπωση
Τρισδιάστατη εκτύπωση
Τρισδιάστατη εκτύπωση
Τρισδιάστατη εκτύπωση
Τρισδιάστατη εκτύπωση
Τρισδιάστατη εκτύπωση
Τρισδιάστατη εκτύπωση
Τρισδιάστατη εκτύπωση

Μετά την εξαγωγή κάθε αρχείου stl, χρησιμοποίησα την Cura για να δημιουργήσω τον.gcode των διαφορετικών τμημάτων των δακτύλων, της παλάμης και του αντιβραχίου. Οι ρυθμίσεις που χρησιμοποιούνται απεικονίζονται στις παραπάνω εικόνες. Το υλικό των τρισδιάστατων εκτυπωμένων τμημάτων είναι PLA.

Βήμα 4: Χύτευση και χύτευση

Χύτευση και χύτευση
Χύτευση και χύτευση
Χύτευση και χύτευση
Χύτευση και χύτευση
Χύτευση και χύτευση
Χύτευση και χύτευση

Ο σκοπός του χύτευσης της παλάμης είναι το προσθετικό χέρι να έχει ισχυρότερο κράτημα καθώς το PLA θα μπορούσε να είναι ολισθηρό.

Τρισδιάστατος σχεδιασμός

  1. Χρησιμοποιώντας το προϋπάρχον σκίτσο της παλάμης, προσπάθησα να μιμηθώ την παλάμη μας σχεδιάζοντας κάποιους κύκλους σε αυτήν χρησιμοποιώντας την εντολή τόξου.
  2. Μετά, τα εξώθησα σε διαφορετικά ύψη και χρησιμοποίησα την εντολή φιλέτο για να εξομαλύνω τις άκρες των εσωτερικών "κύκλων".
  3. Στη συνέχεια, σχεδίασα ένα κουτί με τις ίδιες διαστάσεις με το κερί που επεξεργάστηκα και έβαλα εκεί το αρνητικό του σχεδιασμού μου χρησιμοποιώντας την περικοπή στην εντολή συνδυασμού.

Διαδικασία CAM

Αφού είχα έτοιμο το σχέδιο για άλεση χρησιμοποιώντας το μηχάνημα CNC της επιφάνειας εργασίας, έπρεπε να δημιουργήσω το gcode για αυτό. Στην περίπτωσή μου, χρησιμοποιούσα το μηχάνημα Roland MDX-40 CNC!

  1. Αρχικά, μπήκα στο περιβάλλον CAM του Fusion360.
  2. Στη συνέχεια, επέλεξα μια "νέα ρύθμιση" στο μενού ρυθμίσεων.
  3. Επέλεξα τις σωστές παραμέτρους (δείτε εικόνες) και πάτησα το ok.
  4. Στη συνέχεια, κάτω από το μενού 3D, επέλεξα την προσαρμοστική εκκαθάριση και επέλεξα τις σωστές παραμέτρους μετά την εισαγωγή του εργαλείου που χρησιμοποίησα όπως φαίνεται στις εικόνες.
  5. Τέλος, επέλεξα την προσαρμοστική εκκαθάριση και έκανα κλικ στη διαδικασία ανάρτησης. Βεβαιώθηκα ότι ήταν για τη μηχανή roland mdx-40 και έκανα κλικ εντάξει για να λάβω τον gcode.
  6. Μετά από αυτό, άλεσα το μπλοκ κεριού σύμφωνα με το σχέδιό μου χρησιμοποιώντας το μηχάνημα.

Χύτευση του πυριτίου

  1. Πρώτον, ανακάτεψα προσεκτικά τα δύο διαλύματα πυριτίου για να μην προκαλέσω φυσαλίδες αέρα, ακολουθώντας το φύλλο δεδομένων (σύνδεσμος που βρέθηκε στα υλικά), λαμβάνοντας υπόψη την αναλογία ανάμιξης, τη διάρκεια ζωής του δοχείου και τον χρόνο αποξήρανσης.
  2. Στη συνέχεια, το έριξα στο καλούπι μου από το χαμηλότερο σημείο, φροντίζοντας το σημείο επαφής να παραμένει σταθερό και η διάμετρος του διαλύματος που χύθηκε να είναι όσο το δυνατόν πιο λεπτή, προκειμένου να αποφευχθούν οι φυσαλίδες αέρα.
  3. Αφού έριξα το πυρίτιο στο καλούπι μου, έπρεπε να βεβαιωθώ ότι δεν υπήρχαν φυσαλίδες αέρα μέσα, οπότε έτρεμα το καλούπι χρησιμοποιώντας ένα τρυπάνι με ένα πλάγιο καρφί.
  4. Τέλος, καθώς ξέχασα να το κάνω στο σχέδιό μου, έβγαλα τρύπες στο πυρίτιο μου αφού ήταν έτοιμο, χρησιμοποιώντας την πένσα, με τρόπο που να ταιριάζουν με τις τρύπες που υπήρχαν στην επιφάνεια της παλάμης.

Βήμα 5: Σχεδιασμός και Παραγωγή Ηλεκτρονικών

Σχεδιασμός και Παραγωγή Ηλεκτρονικών
Σχεδιασμός και Παραγωγή Ηλεκτρονικών
Σχεδιασμός και Παραγωγή Ηλεκτρονικών
Σχεδιασμός και Παραγωγή Ηλεκτρονικών
Σχεδιασμός και Παραγωγή Ηλεκτρονικών
Σχεδιασμός και Παραγωγή Ηλεκτρονικών

Προκειμένου να σχεδιάσω τον πίνακα μου και να καταλάβω τι συμβαίνει στις ακίδες του μικροελεγκτή, έπρεπε να διαβάσω το φύλλο δεδομένων αυτού. Ως βασικό PCB, χρησιμοποίησα το micro satshakit και στη συνέχεια το τροποποίησα σύμφωνα με τις ανάγκες του συστήματός μου.

Καθώς το satshakit είναι ένας πίνακας με βάση το arduino DIY, θα μπορούσα να το τροποποιήσω σύμφωνα με τις αναζητήσεις μου για συνδέσεις των εξαρτημάτων μου με το arduino. Έτσι, ο μυοαισθητήρας συνδέεται με το arduino χρησιμοποιώντας έναν πείρο GND, έναν πείρο VCC και έναν αναλογικό πείρο. Ενώ, ένας σερβοκινητήρας χρησιμοποιεί έναν πείρο GND, έναν πείρο VCC και έναν πείρο PWM. Έτσι, έπρεπε να εκθέσω συνολικά έξι ακίδες GND και VCC λαμβάνοντας υπόψη την τροφοδοσία του πίνακα, έναν αναλογικό και πέντε ακροδέκτες PWM. Επίσης, έπρεπε να λάβω υπόψη μου την έκθεση των ακίδων για τον προγραμματισμό του πίνακα (οι οποίοι είναι MISO, MOSI, SCK, RST, VCC και GND).

Τα βήματα που έκανα ήταν:

  1. Πρώτα, κατέβασα τα αρχεία αετών του micro-satshakit.
  2. Στη συνέχεια, τροποποίησα το micro-satshakit σύμφωνα με τις ανάγκες μου χρησιμοποιώντας το Eagle. Μπορείτε να βρείτε έναν οδηγό για τον τρόπο χρήσης του Eagle εδώ και εδώ.
  3. Μετά τη ριζοβολία του πίνακα μου, το εξήγαγα ως αρχείο-p.webp" />

Αφού έκανα τις εσωτερικές και εξωτερικές διαδρομές του πίνακα μου ως png, ήρθε η ώρα να δημιουργήσω τον κωδικό τους για να μπορέσω να τον αλέσω στο μηχάνημα cnc της roland mdx-40. Για τη δημιουργία του.gcode χρησιμοποίησα μονάδες fab. Οι ρυθμίσεις που πρέπει να ορίζονται σε μονάδες fab και βρίσκονται εδώ.

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

Ο λόγος για τον οποίο φτιάχνω τη δική μου πλακέτα PCB αντί να χρησιμοποιώ Arduino UNO είναι ο χώρος που εξοικονομώ όταν χρησιμοποιώ τη δική μου πλακέτα.

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

Συνέλευση
Συνέλευση
Συνέλευση
Συνέλευση
Συνέλευση
Συνέλευση

Έτσι, μετά την εκτύπωση των δακτύλων:

  1. Έπρεπε να ανοίξω τις εσωτερικές τρύπες με τρυπάνι διαμέτρου 3,5 mm και τις εξωτερικές τρύπες με τρυπάνι διαμέτρου 3 mm. Μέσα σε τρύπες σημαίνει το μέρος που όταν συνδέονται τα μέρη είναι από την εσωτερική και την εξωτερική τρύπα, το μέρος που όταν συνδέεται είναι από έξω.
  2. Μετά από αυτό, έπρεπε να κολλήσω πρώτα με το δεύτερο δάχτυλο και το τρίτο με το τέταρτο.
  3. Μετά από αυτό, ένωσα τα μέρη 1+2 με 3+4 με 5 μέσω των μικρών οπών χρησιμοποιώντας ένα νήμα με διάμετρο 3mm.
  4. Τέλος, τα δάχτυλα ήταν έτοιμα να συναρμολογηθούν με την παλάμη και μετά με το αντιβράχιο.

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

Η μία γραμμή περνούσε από την πίσω πλευρά του δακτύλου μέσω του σωλήνα στον σύνδεσμο της παλάμης και του αντιβραχίου και η άλλη γραμμή πήγαινε από την μπροστινή πλευρά του δακτύλου στην τρύπα στο εσωτερικό της παλάμης και στον πήχη

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

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

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

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

Πριν γράψω το πρόγραμμα, έπρεπε να κάνω το τροποποιημένο micro-satshakit να μπορεί να προγραμματιστεί. Για να γίνει αυτό, έπρεπε να ακολουθήσω τα παρακάτω βήματα:

  1. Συνδέστε το Arduino Uno στον υπολογιστή.
  2. Επιλέξτε τη σωστή θύρα και την πλακέτα Arduino Uno κάτω από τα εργαλεία.
  3. Στην ενότητα> Αρχείο> Παραδείγματα, βρείτε και ανοίξτε το σκίτσο "ArduinoISP".
  4. Ανεβάστε το σκίτσο στο Arduino.
  5. Αποσυνδέστε το Arduino από τον υπολογιστή.
  6. Συνδέστε την πλακέτα με το Arduino ακολουθώντας το σχηματικό σχήμα της εικόνας.
  7. Συνδέστε το Arduino στον υπολογιστή.
  8. Επιλέξτε τον πίνακα "Arduino/Genuino Uno" και τον προγραμματιστή "Arduino ως ISP".
  9. Κάντε κλικ στο> Εργαλεία> Εγγραφή εκκίνησης.
  10. Αφού ολοκληρωθεί επιτυχώς ο φορτωτής εκκίνησης, μπορούμε να γράψουμε το πρόγραμμά μας:

// συμπεριλαμβανομένης της βιβλιοθήκης που χρησιμοποίησα για τους σερβοκινητήρες

#include #include SoftwareSerial mySerial (7, 8); #define MYO_PIN A0 int sensorValue; τάση πλωτήρα? // να ορίσω ένα όνομα στο σερβο μου VarSpeedServo servo1; VarSpeedServo servo2; VarSpeedServo servo3; VarSpeedServo servo4; VarSpeedServo servo5; #define PINKY 5 #define PINKY_PIN 10 #define RINGFINGER 4 #define RINGFINGER_PIN 9 #define MIDDLE 3 #define MIDDLE_PIN 3 #define INDEX 2 #define INDEX_PIN 5 #define THUMB 1 #deinPUMP_PINPIN_PINUM); // τον πείρο στον οποίο έχω συνδέσει τον κινητήρα μου servo1.attach (THUMB_PIN). servo2.attach (INDEX_PIN); servo3.attach (MIDDLE_PIN); servo4.attach (RINGFINGER_PIN); servo5.attach (PINKY_PIN); defaultPosition (THUMB, 40); defaultPosition (INDEX, 40); defaultPosition (MIDDLE, 40); defaultPosition (RINGFINGER, 40); defaultPosition (ΡΟΖ, 40) mySerial.begin (9600); mySerial.print ("Αρχικοποίηση …"); } void loop () {sensorValue = analogRead (A0); τάση = αισθητήραςΑξία * (5.0 / 1023.0); mySerial.println (τάση); καθυστέρηση (100)? εάν (τάση> 1) {closePosition (ΡΟΖ, 60); closePosition (RINGFINGER, 60). closePosition (MIDDLE, 60); closePosition (INDEX, 60). closePosition (THUMB, 60). } else {openPosition (PINKY, 60); openPosition (RINGFIGER, 60). openPosition (MIDDLE, 60); openPosition (INDEX, 60). openPosition (THUMB, 60). }} void defaultPosition (uint8_t δάχτυλο, uint8_t _speed) {if (finger == PINKY) servo5.write (90, _speed, true); αλλιώς εάν (δάχτυλο == RINGFINGER) servo4.write (70, _speed, true); αλλιώς εάν (δάχτυλο == ΜΕΣΟ) servo3.write (20, _speed, true); else if (δάχτυλο == INDEX) servo2.write (20, _speed, true); else if (δάχτυλο == THUMB) servo1.write (20, _speed, true); } void closePosition (uint8_t δάχτυλο, uint8_t _speed) {if (finger == PINKY) servo5.write (180, _speed, true); αλλιώς εάν (δάχτυλο == RINGFINGER) servo4.write (180, _speed, true); αλλιώς εάν (δάχτυλο == ΜΕΣΟ) servo3.write (180, _speed, true); else if (δάχτυλο == INDEX) servo2.write (180, _speed, true); αλλιώς εάν (δάχτυλο == THUMB) servo1.attach (180, _speed, true); } void openPosition (uint8_t δάχτυλο, uint8_t _speed) {if (finger == PINKY) servo5.write (0, _speed, true); αλλιώς εάν (δάχτυλο == RINGFINGER) servo4.write (0, _speed, true); αλλιώς εάν (δάχτυλο == ΜΕΣΟ) servo3.write (0, _speed, true); else if (δάχτυλο == INDEX) servo2.write (0, _speed, true); else if (δάχτυλο == THUMB) servo1.write (0, _speed, true); } // Αφού γράψουμε το πρόγραμμα, το ανεβάζουμε στον πίνακα με> Sketch> Μεταφόρτωση χρησιμοποιώντας προγραμματιστή // Τώρα μπορείτε να συνδέσετε το micro satshakit σας από το arduino σας και να το τροφοδοτήσετε μέσω του power bank // Και voila !! Έχεις προσθετικό χέρι

Συνιστάται: