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

Arduino: Precision Lib για Stepper Motor: 19 Βήματα
Arduino: Precision Lib για Stepper Motor: 19 Βήματα

Βίντεο: Arduino: Precision Lib για Stepper Motor: 19 Βήματα

Βίντεο: Arduino: Precision Lib για Stepper Motor: 19 Βήματα
Βίντεο: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Ιούλιος
Anonim
Image
Image
Παγκόσμιες μεταβλητές
Παγκόσμιες μεταβλητές

Σήμερα, θα σας δείξω μια βιβλιοθήκη για οδηγό μοτέρ πλήρους βηματισμού με οριακούς διακόπτες και κίνηση κινητήρα με επιτάχυνση και μικροβημα. Αυτό το Lib, το οποίο λειτουργεί τόσο στο Arduino Uno όσο και στο Arduino Mega, σας επιτρέπει να μετακινείτε τους κινητήρες με βάση όχι μόνο τον αριθμό των βημάτων, αλλά και τα χιλιοστά. Και είναι αρκετά ακριβές επίσης.

Ένα σημαντικό χαρακτηριστικό αυτής της βιβλιοθήκης είναι ότι σας επιτρέπει να φτιάξετε τη δική σας μηχανή CNC, η οποία δεν είναι απαραίτητα μόνο το X, Y, αλλά και ένας διακόπτης ενότητας, για παράδειγμα, επειδή δεν είναι έτοιμο GRBL, αλλά μάλλον προγραμματισμός που σας επιτρέπει να φτιάξετε το ιδανικό μηχάνημα για εσάς.

Ωστόσο, η ακόλουθη δήλωση είναι μια σημαντική λεπτομέρεια! Αυτό το βίντεο απευθύνεται μόνο σε όσους έχουν ήδη συνηθίσει στον προγραμματισμό. Εάν δεν είστε εξοικειωμένοι με τον προγραμματισμό Arduino, θα πρέπει πρώτα να παρακολουθήσετε άλλα περισσότερα εισαγωγικά βίντεο στο κανάλι μου. Αυτό συμβαίνει επειδή συζητώ ένα προηγμένο θέμα σε αυτό το συγκεκριμένο βίντεο και εξηγώ λεπτομερέστερα το Lib που χρησιμοποιείται στο βίντεο: Step Motor with Acceleration and End of Stroke.

Βήμα 1: Βιβλιοθήκη StepDriver

Αυτή η βιβλιοθήκη καλύπτει τους τρεις πιο συνηθισμένους τύπους προγραμμάτων οδήγησης στην αγορά: A4988, DRV8825 και TB6600. Διαμορφώνει τις ακίδες των προγραμμάτων οδήγησης, επιτρέποντάς τους να πραγματοποιήσουν επαναφορά και τοποθέτηση σε κατάσταση αναστολής λειτουργίας, καθώς και να ενεργοποιήσουν και να απενεργοποιήσουν τις εξόδους του κινητήρα που λειτουργούν στον πείρο Ενεργοποίηση. Ορίζει επίσης τις εισόδους των ακίδων μικροβημάτων του οδηγού και περιορίζει τους διακόπτες και το επίπεδο ενεργοποίησής τους (υψηλό ή χαμηλό). Διαθέτει επίσης κωδικό κίνησης κινητήρα με συνεχή επιτάχυνση σε mm / s², μέγιστη ταχύτητα σε mm / s και ελάχιστη ταχύτητα σε mm / s.

Για όσους παρακολούθησαν τα μέρη 1 και 2 του βίντεο Step Motor with Acceleration και End of Stroke, κατεβάστε αυτήν τη νέα βιβλιοθήκη που είναι διαθέσιμη σήμερα, επειδή έκανα κάποιες αλλαγές σε αυτό το πρώτο αρχείο για να διευκολύνω τη χρήση του.

Βήμα 2: Παγκόσμιες μεταβλητές

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

Βήμα 3: Λειτουργίες - Ρύθμιση των ακίδων του προγράμματος οδήγησης

Λειτουργίες - Ρύθμιση των ακίδων του προγράμματος οδήγησης
Λειτουργίες - Ρύθμιση των ακίδων του προγράμματος οδήγησης

Εδώ, περιγράφω μερικές μεθόδους.

Ορίζω τη ρύθμιση Pinout και τις ακίδες Arduino ως έξοδο.

Βήμα 4: Λειτουργίες - Βασικές λειτουργίες του προγράμματος οδήγησης

Λειτουργίες - Βασικές λειτουργίες του προγράμματος οδήγησης
Λειτουργίες - Βασικές λειτουργίες του προγράμματος οδήγησης

Σε αυτό το μέρος, εργαζόμαστε με τη διαμόρφωση του προγράμματος οδήγησης και τις βασικές λειτουργίες του.

Βήμα 5: Λειτουργίες - Ρύθμιση βημάτων κινητήρα

Λειτουργίες - Ρύθμιση μοτέρ
Λειτουργίες - Ρύθμιση μοτέρ
Λειτουργίες - Ρύθμιση μοτέρ
Λειτουργίες - Ρύθμιση μοτέρ

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

Βήμα 6: Λειτουργίες - Ρύθμιση της λειτουργίας Βήματος κινητήρα

Λειτουργίες - Ρύθμιση της λειτουργίας Βήματος κινητήρα
Λειτουργίες - Ρύθμιση της λειτουργίας Βήματος κινητήρα
Λειτουργίες - Ρύθμιση της λειτουργίας Βήματος κινητήρα
Λειτουργίες - Ρύθμιση της λειτουργίας Βήματος κινητήρα
Λειτουργίες - Ρύθμιση της λειτουργίας Βήματος κινητήρα
Λειτουργίες - Ρύθμιση της λειτουργίας Βήματος κινητήρα

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

Βήμα 7: Λειτουργίες - Ρύθμιση των οριακών διακοπτών

Λειτουργίες - Ρύθμιση των οριακών διακοπτών
Λειτουργίες - Ρύθμιση των οριακών διακοπτών

Εδώ, πρέπει να διαβάσω ολόκληρες και boolean τιμές. Είναι απαραίτητο να ορίσετε εάν το ενεργό κλειδί είναι πάνω ή κάτω, ενώ ορίζετε το μέγιστο και το ελάχιστο τελικό τέλος.

Βήμα 8: Λειτουργίες - Ανάγνωση οριακών διακοπτών

Λειτουργίες - Ανάγνωση οριακών διακοπτών
Λειτουργίες - Ανάγνωση οριακών διακοπτών
Λειτουργίες - Ανάγνωση οριακών διακοπτών
Λειτουργίες - Ανάγνωση οριακών διακοπτών
Λειτουργίες - Ανάγνωση οριακών διακοπτών
Λειτουργίες - Ανάγνωση οριακών διακοπτών

Αυτό το μέρος είναι διαφορετικό από αυτό στο Lib που έκανα διαθέσιμο την περασμένη εβδομάδα. Γιατί το άλλαξα; Λοιπόν, δημιούργησα το eRead για να αντικαταστήσω κάποια άλλα. Εδώ, το eRead θα διαβάσει το LVL, το digitalRead (pin) και θα επιστρέψει TRUE. Όλα αυτά πρέπει να εκτελούνται σε υψηλό επίπεδο. Η παρακάτω εργασία με το ενεργό κλειδί θα είναι σε χαμηλό επίπεδο. Θα το χρησιμοποιήσω εδώ για να σας δείξω τον πίνακα "Αλήθεια".

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

Τώρα, σε αυτήν την εικόνα os με κωδικό bool DRV8825, δείχνω τον κινητήρα να κινείται ακόμα προς την αναπτυσσόμενη κατεύθυνση. Ωστόσο, ο διακόπτης μέγιστου ορίου ενεργοποιήθηκε. Ο μηχανισμός, λοιπόν, πρέπει να σταματήσει την κίνηση.

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

Εδώ, έχετε ήδη ενεργοποιήσει τον διακόπτη τερματισμού.

Βήμα 9: Λειτουργίες - Ρύθμιση κίνησης

Λειτουργίες - Ρύθμιση κίνησης
Λειτουργίες - Ρύθμιση κίνησης

Η κύρια χρησιμότητα της μεθόδου motionConfig είναι η μετατροπή του χιλιοστού ανά δευτερόλεπτο (μια μέτρηση που χρησιμοποιείται σε μηχανές CNC) σε βήματα, προκειμένου να ανταποκριθεί στον ελεγκτή ενός βηματικού κινητήρα. Σε αυτό το μέρος, λοιπόν, υποδεικνύω τις μεταβλητές για να κατανοήσουν τα βήματα και όχι τα χιλιοστά.

Βήμα 10: Λειτουργίες - Συνάρτηση κίνησης

Λειτουργίες - Συνάρτηση κίνησης
Λειτουργίες - Συνάρτηση κίνησης

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

Βήμα 11: Λειτουργίες - Συνάρτηση κίνησης - Μεταβλητές

Λειτουργίες - Συνάρτηση κίνησης - Μεταβλητές
Λειτουργίες - Συνάρτηση κίνησης - Μεταβλητές

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

Βήμα 12: Λειτουργίες - Λειτουργία κίνησης - Επιτάχυνση

Λειτουργίες - Λειτουργία κίνησης - Επιτάχυνση
Λειτουργίες - Λειτουργία κίνησης - Επιτάχυνση
Λειτουργίες - Λειτουργία κίνησης - Επιτάχυνση
Λειτουργίες - Λειτουργία κίνησης - Επιτάχυνση

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

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

Βήμα 13: Λειτουργίες - Λειτουργία κίνησης - Συνεχής ταχύτητα

Λειτουργίες - Λειτουργία κίνησης - Συνεχής ταχύτητα
Λειτουργίες - Λειτουργία κίνησης - Συνεχής ταχύτητα
Λειτουργίες - Λειτουργία κίνησης - Συνεχής ταχύτητα
Λειτουργίες - Λειτουργία κίνησης - Συνεχής ταχύτητα

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

Βήμα 14: Λειτουργίες - Λειτουργία κίνησης - Επιτάχυνση

Λειτουργίες - Λειτουργία κίνησης - Επιτάχυνση
Λειτουργίες - Λειτουργία κίνησης - Επιτάχυνση
Λειτουργίες - Λειτουργία κίνησης - Επιτάχυνση
Λειτουργίες - Λειτουργία κίνησης - Επιτάχυνση

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

Βήμα 15: Λειτουργίες - Λειτουργία κίνησης - Συνεχής ταχύτητα

Λειτουργίες - Λειτουργία κίνησης - Συνεχής ταχύτητα
Λειτουργίες - Λειτουργία κίνησης - Συνεχής ταχύτητα
Λειτουργίες - Λειτουργία κίνησης - Συνεχής ταχύτητα
Λειτουργίες - Λειτουργία κίνησης - Συνεχής ταχύτητα

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

Βήμα 16: Λειτουργίες - Μετακίνηση Λειτουργίας - Μετακίνηση στροφών

Λειτουργίες - Μετακίνηση Συνάρτησης - Μετακίνηση στροφών
Λειτουργίες - Μετακίνηση Συνάρτησης - Μετακίνηση στροφών

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

Βήμα 17: Διάγραμμα κίνησης - Ταχύτητα θέσης

Διάγραμμα κίνησης - Ταχύτητα θέσης
Διάγραμμα κίνησης - Ταχύτητα θέσης

Σε αυτό το γράφημα, έχω δεδομένα που εξήχθησαν από την εξίσωση που χρησιμοποιήσαμε στο τμήμα της Επιτάχυνσης. Πήρα τις τιμές και έπαιξα στο σειριακό Arduino και πήγα από αυτό στο Excel, το οποίο κατέληξε σε αυτόν τον πίνακα. Αυτός ο πίνακας δείχνει την πρόοδο του βήματος.

Βήμα 18: Διάγραμμα κίνησης - Θέση εναντίον Θέση

Motion Chart - Position Vs. Θέση
Motion Chart - Position Vs. Θέση

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

Βήμα 19: Motion Chart - Velocity Vs. Στιγμή

Motion Chart - Velocity Vs. Στιγμή
Motion Chart - Velocity Vs. Στιγμή

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

Συνιστάται: