Πίνακας περιεχομένων:
- Προμήθειες
- Βήμα 1: Κατασκευή
- Βήμα 2: Καλωδίωση
- Βήμα 3: Θεωρία ελέγχου
- Βήμα 4: Χρήση MPU 6050
- Βήμα 5: Κωδικοποίηση
- Βήμα 6: Διαδικασία συντονισμού PID
- Βήμα 7: Συμπέρασμα
Βίντεο: Robot Self-Balancing Robot: 7 Βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:32
Αυτό το διδακτικό θα περάσει από τη διαδικασία σχεδιασμού και κατασκευής ενός ρομπότ που εξισορροπεί. Ως σημείωση, θέλω απλώς να πω ότι τα ρομπότ που εξισορροπούν δεν είναι μια νέα ιδέα και έχουν κατασκευαστεί και τεκμηριωθεί από άλλους. Θέλω να χρησιμοποιήσω αυτήν την ευκαιρία για να μοιραστώ μαζί σας την ερμηνεία μου για αυτό το ρομπότ.
Τι είναι το αυτορυθμιζόμενο ρομπότ;
Ένα αυτορυθμιζόμενο ρομπότ είναι ένα σύστημα που χρησιμοποιεί αδρανειακά δεδομένα μέτρησης, που συλλέγονται από έναν ενσωματωμένο αισθητήρα, για να προσαρμόζει συνεχώς τη θέση του για να διατηρείται όρθια.
Πώς λειτουργεί;
Μια απλή αναλογία που πρέπει να λάβετε υπόψη είναι ένα ανεστραμμένο εκκρεμές. Όπου το κέντρο μάζας βρίσκεται πάνω από το σημείο περιστροφής. Ωστόσο, στην περίπτωσή μας, περιορίζουμε το εκκρεμές σε 1 βαθμό ελευθερίας έχοντας έναν άξονα περιστροφής, στην περίπτωσή μας τον άξονα περιστροφής των δύο τροχών. Δεδομένου ότι κάθε είδους διαταραχή θα προκαλέσει την πτώση του ρομπότ, χρειαζόμαστε μια μέθοδο για να διατηρούμε ενεργά το ρομπότ ισορροπημένο. Εδώ παίζει ρόλο ο αλγόριθμος κλειστού βρόχου (ελεγκτής PID), γνωρίζοντας ποια κατεύθυνση πέφτει το ρομπότ μας, μπορούμε να προσαρμόσουμε την κατεύθυνση περιστροφής των κινητήρων μας για να διατηρήσουμε το σύστημα ισορροπημένο.
Πώς λειτουργεί ο αλγόριθμος κλειστού βρόχου;
Η βασική αρχή για τη διατήρηση του ρομπότ σε ισορροπία είναι, εάν το ρομπότ πέφτει προς τα εμπρός, θα αντισταθμίσει μετακινώντας το κάτω μέρος του ρομπότ προς τα εμπρός για να πιάσει τον εαυτό του και συνεπώς να κρατηθεί κάθετο. Ομοίως, εάν το ρομπότ πέφτει προς τα πίσω θα αντισταθμίσει μετακινώντας το κάτω μέρος του ρομπότ προς τα πίσω για να πιάσει τον εαυτό του.
Έτσι, πρέπει να κάνουμε δύο πράγματα εδώ, πρώτα, πρέπει να υπολογίσουμε τη γωνία κλίσης (Roll) που βιώνει το ρομπότ και ως αποτέλεσμα, πρέπει να ελέγξουμε την κατεύθυνση περιστροφής των κινητήρων.
Πώς θα μετρήσουμε τη γωνία κλίσης;
Για να μετρήσουμε τη γωνία κλίσης θα χρησιμοποιήσουμε μια μονάδα αδρανειακής μέτρησης. Αυτές οι ενότητες ενσωματώνουν επιταχυνσιόμετρο και γυροσκόπιο.
- Το επιταχυνσιόμετρο είναι μια ηλεκτρομαγνητική συσκευή που μετρά τη σωστή επιτάχυνση, αυτή είναι η επιτάχυνση ενός σώματος σε ένα στιγμιαίο πλαίσιο ανάπαυσης.
- Το γυροσκόπιο είναι μια ηλεκτρομηχανική συσκευή που μετρά τη γωνιακή ταχύτητα και χρησιμοποιείται για τον προσδιορισμό του προσανατολισμού της συσκευής.
Ωστόσο, το πρόβλημα με τη χρήση τέτοιων αισθητήρων είναι ότι:
- Το επιταχυνσιόμετρο είναι πολύ θορυβώδες αλλά είναι σταθερό με την πάροδο του χρόνου, η γωνία ποικίλλει με απότομες οριζόντιες κινήσεις
- Η τιμή του γυροσκοπίου, από την άλλη πλευρά, θα μετατοπιστεί με την πάροδο του χρόνου, αλλά αρχικά, είναι αρκετά ακριβής
Για αυτό το διδακτικό, δεν πρόκειται να εφαρμόσω ένα φίλτρο, αν δεν χρησιμοποιήσω την ενσωματωμένη ψηφιακή επεξεργασία κίνησης (DMP). Άλλοι έχουν χρησιμοποιήσει ένα συμπληρωματικό φίλτρο για να λάβουν ένα ομαλό σήμα, μπορείτε να επιλέξετε όποια μέθοδο σας αρέσει. καθώς το ρομπότ ισορροπεί με οποιαδήποτε από τις δύο εφαρμογές.
Προμήθειες
Μέρη:
- Arduino Pro Mini 3.3V 8 με ATMEGA328 8 Mhz
- Σειριακή μονάδα προσαρμογέα FT232RL 3.3V 5.5V FTDI USB to TTL
- Μονάδα GY-521 με MPU-6050
- Ένα ζευγάρι μοτέρ N20 micro gear 6V - 300rpm
- L298N πρόγραμμα οδήγησης κινητήρα
- LM2596S Μετατροπέας μπάκας DC σε DC
- Μπαταρία (επαναφορτιζόμενη μπαταρία ιόντων λιθίου 9.7V)
- Ιμάντας μπαταρίας
- Δύο πρωτότυπες πλακέτες κυκλωμάτων PCB
- Αρσενικά και θηλυκά καρφίτσες καλώδια jumper
Εργαλεία:
- Συγκολλητικό σίδερο και συγκόλληση
- Νάιλον εξάγωνο διαχωριστικό διαχωριστικό
- Σετ κατσαβιδιών ακριβείας
- Τρισδιάστατος εκτυπωτής
Βήμα 1: Κατασκευή
Δεδομένου ότι είχα πρόσβαση σε έναν 3D εκτυπωτή, αποφάσισα να εκτυπώσω 3D το πλαίσιο και να χρησιμοποιήσω αναμονές για να συνδέσω τα πάντα μαζί.
Το ρομπότ αποτελείται από 4 στρώματα
- Το κάτω στρώμα συνδέει τους κινητήρες και διαθέτει σημεία στήριξης για τη μονάδα οδηγού κινητήρα L298N
- Το επόμενο στρώμα φιλοξενεί τον πρωτότυπο πίνακα με το Arduino pro mini και επικεφαλίδες συγκολλημένες σε αυτό
- Το τρίτο στρώμα τοποθετεί το IMU
- Το επάνω στρώμα, το οποίο ονομάζω "στρώμα προφυλακτήρα", περιέχει την μπαταρία, τον μετατροπέα buck και έναν νομισματικό διακόπτη
Η βασική μου αρχή σχεδιασμού ήταν να διατηρώ τα πάντα αρθρωτά. Ο λόγος για αυτό ήταν εάν κάτι πήγε στραβά με ένα από τα εξαρτήματα, θα μπορούσα εύκολα να το αντικαταστήσω ή εάν χρειαζόμουν ένα στοιχείο για άλλο έργο, μπορώ εύκολα να το πάρω χωρίς να ανησυχώ ότι δεν θα μπορέσω να χρησιμοποιήσω ξανά το σύστημα.
Βήμα 2: Καλωδίωση
Συγκολλήσα μερικές πινέζες γυναικείων κεφαλίδων σε έναν πίνακα για να ταιριάξω με τις καρφίτσες κεφαλίδας Arduino pro mini. Μετά από αυτό, κόλλησα τις ανδρικές κεφαλίδες που καρφίτσωσαν τον πίνακα για να επιτρέψουν την πρόσβαση στο I/O. Τα υπόλοιπα εξαρτήματα τοποθετήθηκαν στο τρισδιάστατο εκτυπωμένο πλαίσιο και συνδέθηκαν χρησιμοποιώντας καλώδια βραχυκυκλωτήρων.
Βήμα 3: Θεωρία ελέγχου
Τώρα προχωράμε στον πυρήνα του έργου. Για να διατηρήσουμε το ρομπότ ισορροπημένο, πρέπει να δημιουργήσουμε ένα κατάλληλο σήμα ελέγχου για να οδηγήσουμε τους κινητήρες στη σωστή κατεύθυνση και στη σωστή ταχύτητα για να διατηρήσουμε το ρομπότ ισορροπημένο και σταθερό. Για να γίνει αυτό, θα χρησιμοποιήσουμε έναν δημοφιλή αλγόριθμο βρόχου ελέγχου γνωστό ως ελεγκτή PID. Όπως υποδηλώνει το ακρωνύμιο, υπάρχουν τρεις όροι σε αυτόν τον ελεγκτή, αυτοί είναι οι αναλογικοί, αναπόσπαστοι και παράγωγοι όροι. Κάθε ένα από αυτά συνοδεύεται από συντελεστές που καθορίζουν την επιρροή τους στο σύστημα. Συχνά το πιο χρονοβόρο μέρος της εφαρμογής του ελεγκτή είναι ο συντονισμός των κερδών για κάθε μοναδικό σύστημα για να έχει την καλύτερη δυνατή απόκριση.
- Ο αναλογικός όρος πολλαπλασιάζει άμεσα το σφάλμα για να δώσει μια έξοδο, οπότε όσο μεγαλύτερο είναι το σφάλμα τόσο μεγαλύτερη είναι η απόκριση
- Ο ολοκληρωμένος όρος παράγει μια απάντηση που βασίζεται στη συσσώρευση του σφάλματος για τη μείωση του σφάλματος σταθερής κατάστασης. Όσο περισσότερο το σύστημα είναι ανισόρροπο τόσο γρήγορα θα ανταποκρίνονται οι κινητήρες
- Ο παράγωγος όρος είναι το παράγωγο του σφάλματος που χρησιμοποιείται για την πρόβλεψη της μελλοντικής απόκρισης και με αυτόν τον τρόπο μειώνει την ταλάντωση λόγω υπέρβασης της σταθερής κατάστασης.
Η βασική αρχή αυτού του αλγορίθμου είναι ο συνεχής υπολογισμός της γωνίας κλίσης που είναι η διαφορά μεταξύ της επιθυμητής θέσης και της τρέχουσας θέσης, αυτό είναι γνωστό ως σφάλμα. Στη συνέχεια, χρησιμοποιεί αυτές τις τιμές σφάλματος και υπολογίζει το άθροισμα των αναλογικών, ολοκληρωμένων και παραγώγων αποκρίσεων για να λάβει μια έξοδο, που είναι τα σήματα ελέγχου που αποστέλλονται στους κινητήρες. Ως αποτέλεσμα, εάν το σφάλμα είναι μεγάλο, το σήμα ελέγχου που αποστέλλεται στους κινητήρες θα περιστρέφει τους κινητήρες με μεγάλη ταχύτητα για να φτάσει σε ισορροπημένη κατάσταση. Ομοίως, εάν το σφάλμα είναι μικρό, το σήμα ελέγχου θα περιστρέψει τους κινητήρες σε χαμηλή ταχύτητα για να διατηρήσει το ρομπότ ισορροπημένο.
Βήμα 4: Χρήση MPU 6050
Βιβλιοθήκη MPU6050
github.com/jrowberg/i2cdevlib/tree/master/…
Βαθμονόμηση αντισταθμίσεων Δεν είναι όλοι οι αισθητήρες ακριβείς αντιγραφές του ενός. Ως αποτέλεσμα, εάν δοκιμάσετε δύο MPU 6050, μπορεί να λάβετε διαφορετικές τιμές για το επιταχυνσιόμετρο και το γυροσκόπιο όταν τοποθετηθούν ακίνητα στην ίδια επιφάνεια. Για να ξεπεράσουμε αυτήν τη σταθερή μετατόπιση γωνίας πρέπει να γιορτάσουμε κάθε αισθητήρα που χρησιμοποιούμε. Εκτέλεση αυτού του σεναρίου:
www.i2cdevlib.com/forums/topic/96-arduino-…
γραμμένο από τον Luis Rodenas, θα έχουμε αντισταθμίσεις. Τα σφάλματα μετατόπισης μπορούν να εξαλειφθούν καθορίζοντας τις τιμές μετατόπισης στη ρουτίνα εγκατάστασης ().
Χρήση του ψηφιακού επεξεργαστή κίνησης
Το MPU6050 περιέχει DMP (Motηφιακός Επεξεργαστής Κίνησης).
Τι είναι το DMP; Μπορείτε να σκεφτείτε το DMP ως ενσωματωμένο μικροελεγκτή που επεξεργάζεται την πολύπλοκη κίνηση από το γυροσκόπιο 3 αξόνων και το επιταχυνσιόμετρο 3 αξόνων στο mpu6050, χρησιμοποιώντας τους δικούς του αλγόριθμους σύντηξης κίνησης. Εκφόρτωση της επεξεργασίας που διαφορετικά θα γινόταν από το Arduino
Πως να το χρησιμοποιήσεις? Για να καταλάβετε πώς να χρησιμοποιήσετε το DMP, περάστε από το παράδειγμα σκίτσου MPU6050_DMP6 που συνοδεύει τη βιβλιοθήκη MPU6050 (στο Arduino IDE: Αρχείο-> Παράδειγμα-> MPU6050-> MPU6050_DMP6). Αυτή είναι επίσης μια καλή ευκαιρία για να ελέγξετε ότι ο αισθητήρας σας λειτουργεί πραγματικά και ότι η καλωδίωση είναι σωστή
Βήμα 5: Κωδικοποίηση
Χρησιμοποίησα το Arduino IDE και μια διεπαφή FTDI για να προγραμματίσω το Arduino pro mini.
Χρησιμοποιώντας το παράδειγμα σκίτσου (MPU6050_DMP6) που συνοδεύει τη βιβλιοθήκη MPU6050 ως βασικό κώδικα, πρόσθεσα τις λειτουργίες PID () και MotorDriver ().
Προσθέστε τη βιβλιοθήκη
- MPU6050: Για να χρησιμοποιήσετε τον αισθητήρα MPU6050, θα χρειαστεί να κατεβάσετε τη βιβλιοθήκη προγραμματιστή I2C από τον Jeff Rowberg και να την προσθέσετε στο φάκελο Arduino «βιβλιοθήκες» που βρίσκεται στα αρχεία προγράμματος στον υπολογιστή σας.
- Wire: Χρειαζόμαστε επίσης τη βιβλιοθήκη Wire για να μας επιτρέψει να επικοινωνούμε με συσκευές I2C.
Ψευδοκώδικας
Συμπεριλάβετε Βιβλιοθήκες:
- Wire.h
- MPU6050
- I2Cdev.h
Αρχικοποίηση μεταβλητών, σταθερών και αντικειμένων
Ρύθμιση ()
- Ορίστε τη λειτουργία καρφίτσας για τον έλεγχο των κινητήρων
- Ορίστε τη λειτουργία καρφίτσας για τη λυχνία LED κατάστασης
- Αρχικοποιήστε το MPU6050 και ορίστε τιμές μετατόπισης
PID ()
Υπολογίστε την τιμή PID
MotorDriver (απόκριση PID)
Χρησιμοποιήστε την τιμή PID για να ελέγξετε την ταχύτητα και την κατεύθυνση των κινητήρων
Βρόχος ()
- Λάβετε δεδομένα από το DMP
- Καλέστε τις λειτουργίες PID () a MotorDriver ()
Βήμα 6: Διαδικασία συντονισμού PID
Αυτό είναι το πιο κουραστικό μέρος του έργου και απαιτεί λίγη υπομονή, εκτός αν γίνετε πολύ τυχεροί. Εδώ είναι τα βήματα:
- Ορίστε τον όρο I και D σε 0
- Κρατώντας το ρομπότ, ρυθμίστε το Ρ έτσι ώστε το ρομπότ να αρχίσει να ταλαντεύεται για τη θέση ισορροπίας
- Με το σετ Ρ, αυξήστε το I έτσι ώστε το ρομπότ να επιταχύνει πιο γρήγορα όταν βρίσκεται εκτός ισορροπίας. Με τα P και I είναι σωστά συντονισμένα, το ρομπότ θα πρέπει να μπορεί να ισορροπεί για τουλάχιστον μερικά δευτερόλεπτα, με κάποια ταλάντωση
- Τέλος, η αύξηση D μειώνει την ταλάντωση
Εάν η πρώτη προσπάθεια δεν δώσει ικανοποιητικά αποτελέσματα, επαναλάβετε τα βήματα με διαφορετική τιμή P. Επίσης, λάβετε υπόψη ότι μπορείτε να ρυθμίσετε λεπτομερώς τις τιμές PID στη συνέχεια, για να αυξήσετε περαιτέρω την απόδοση. Οι τιμές εδώ εξαρτώνται από το υλικό, μην εκπλαγείτε αν λάβετε πολύ μεγάλες ή πολύ μικρές τιμές PID.
Βήμα 7: Συμπέρασμα
Οι μικροκινητήρες που χρησιμοποιήθηκαν ήταν να επιβραδύνουν για να αντιδράσουν σε μεγάλες διαταραχές και δεδομένου ότι το σύστημα ήταν πολύ ελαφρύ, δεν υπήρχε αρκετή αδράνεια για να επιτευχθεί το επιθυμητό εφέ εκκρεμούς, οπότε αν το ρομπότ γέρνει προς τα εμπρός θα κλίνει απλώς υπό γωνία και θα τρέχει προς τα εμπρός. Τέλος, οι τροχοί με 3D εκτύπωση ήταν μια κακή επιλογή καθώς συνεχίζουν να γλιστρούν.
Προτάσεις για βελτίωση:
- Ταχύτεροι κινητήρες με υψηλότερη ροπή, δηλαδή για κινητήρες DC είναι υψηλότερη η τάση τάσης η μεγαλύτερη ροπή
- πάρετε μια βαρύτερη μπαταρία ή απλώς μετακινήστε τη μάζα λίγο υψηλότερα
- Αντικαταστήστε τους τροχούς 3D με λαστιχένιους τροχούς για μεγαλύτερη πρόσφυση
Συνιστάται:
Kid's Quad Hacking Into in a Self Driving, Line Following and Obstacle Detecting Vehicle: 4 βήματα
Kid's Quad Hacking Into a Self Driving, Line Following and Obstacle Detecting Vehicle .: Στο σημερινό Instructable θα μετατρέψουμε ένα 1000Watt (Ναι το ξέρω πολύ!) Το Electric Kid's quad σε ένα αυτόματο όχημα, ακολουθώντας τη γραμμή και αποφεύγοντας εμπόδια! Επίδειξη βίντεο: https: //youtu.be/bVIsolkEP1kΓια αυτό το έργο θα χρειαστούμε τα ακόλουθα υλικά
Cast Glimmer Jewels With Self Made On/Off Switch: 4 Βήματα
Cast Glimmer Jewels With Self Made On/Off Switch: Inspired by the Glue-Juwel Glimmer Ring from " Make: Make it Glow " από την Emily Coker και την Kelli Townel Θα ήθελα να σας δείξω μια εναλλακτική λύση εξοικονόμησης ενέργειας: Glimmer Jewels που μπορείτε να ενεργοποιήσετε και να απενεργοποιήσετε, για να ταιριάζει με την πραγματική σας ανάγκη για λάμψη, χρησιμοποιώντας ένα swi
The Unpluginator - Self -Unplugging Useless Box: 4 βήματα (με εικόνες)
The Unpluginator - Self -Unplugging Useless Box: Αυτό είναι ένα παράδειγμα άχρηστης μηχανής. Ο μόνος σκοπός του είναι να αποσυνδέσει το δικό του τροφοδοτικό. Είναι σε μεγάλο βαθμό τρισδιάστατη εκτύπωση, με τα απαραίτητα ηλεκτρονικά. Όλη η σχεδίαση και η προσομοίωση έγιναν στο Fusion 360, όλος ο προγραμματισμός έγινε στο Arduino
Self Walking Robot: 7 Βήματα
Self Walking Robot: Τι έφτιαξα; ● Ένα bot που μπορεί να εκπαιδευτεί να περπατά (να προχωράει) σε διαφορετικές επιφάνειες. Το bot απεικονίζει ένα απλό πλάσμα με 4 πόδια «χωρίς γόνατο» που παλεύει να προχωρήσει. Γνωρίζει ότι μπορεί να προσανατολίσει κάθε ένα από τα πόδια με 3 δυνατούς τρόπους μόνο. Τώρα
Self-learning Chaotic Robot: 3 Βήματα
Self-learning Chaotic Robot: Σας ενδιαφέρει η μηχανική μάθηση, ρομπότ AI και och; Δεν χρειάζεται να δουλέψεις σε κάποιο φανταχτερό πανεπιστήμιο. Αυτή είναι μια περιγραφή του χαοτικού ρομπότ μου. Είναι ένα πολύ απλό ρομπότ για να δείξει πώς να χρησιμοποιεί τον κώδικα αυτομάθησης και πώς να τον εφαρμόζει σε