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

Μενού Stepper Speed Control με οδηγό για Arduino: 6 βήματα
Μενού Stepper Speed Control με οδηγό για Arduino: 6 βήματα

Βίντεο: Μενού Stepper Speed Control με οδηγό για Arduino: 6 βήματα

Βίντεο: Μενού Stepper Speed Control με οδηγό για Arduino: 6 βήματα
Βίντεο: Using 28BYJ-48 Stepper Motor Push button Speed with 8 projects: Ultimate Video Tutorial Lesson 107 2024, Ιούλιος
Anonim
Μενού Stepper Speed Control με οδηγό για Arduino
Μενού Stepper Speed Control με οδηγό για Arduino
Μενού Stepper Speed Control με οδηγό για Arduino
Μενού Stepper Speed Control με οδηγό για Arduino
Μενού Stepper Speed Control με οδηγό για Arduino
Μενού Stepper Speed Control με οδηγό για Arduino

Αυτή η βιβλιοθήκη SpeedStepper είναι μια επανεγγραφή της βιβλιοθήκης AccelStepper για να επιτρέψει τον έλεγχο της ταχύτητας του βηματικού κινητήρα. Η βιβλιοθήκη SpeedStepper σάς επιτρέπει να αλλάξετε την καθορισμένη ταχύτητα κινητήρα και, στη συνέχεια, να επιταχύνει/επιβραδύνει στη νέα ρυθμισμένη ταχύτητα χρησιμοποιώντας τον ίδιο αλγόριθμο με τη βιβλιοθήκη AccelStepper. Η βιβλιοθήκη SpeedStepper σάς επιτρέπει επίσης να ορίσετε όριο συν και πλην και μια θέση "σπίτι". Υπάρχει μια εντολή goHome για επιστροφή στην αρχική θέση.

Περιορισμοί: Η βιβλιοθήκη SpeedStepper οδηγεί μόνο εξόδους κατεύθυνσης και βήματος και έτσι πρέπει να συνδεθεί με ένα πρόγραμμα οδήγησης κινητήρα, όπως το Easy Driver, για να οδηγήσει πραγματικά το βηματικό μοτέρ. Η βιβλιοθήκη AccelStepper παρέχει περισσότερες επιλογές οδήγησης που θα μπορούσαν να αντιγραφούν σε αυτήν τη βιβλιοθήκη εάν απαιτείται.

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

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

Αυτή η βιβλιοθήκη λειτουργεί σε Arduino Uno και Mega2560, αλλά για το πρωτότυπο χρησιμοποιήθηκε η μεγαλύτερη μνήμη / ταχύτερος επεξεργαστής SparkFun Redboard Turbo.

Αυτό το διδακτικό είναι επίσης διαθέσιμο online στο Stepper Speed Control Library for Arduino

Προμήθειες

Για την εκτέλεση του παραδείγματος σκιαγραφούνται μόνο ένα Arduino UNO ή Mega2560 και οι βιβλιοθήκες λογισμικού χρειάζονται

Για δοκιμές πάγκου της βιβλιοθήκης χρησιμοποιήθηκε ένα SparkFun Redboard Turbo με Easy Driver, 200 σκαλοπάτια/στροφές, βηματικό μοτέρ 12V 350mA και παροχή 12 DC 2Α ή μεγαλύτερη, π.χ. https://www.sparkfun.com/products/14934. USB A to Micro cable USB to TTL Serial Cable Arduino IDE V1.8.9 and a computer to run it. SpeedStepper librarypfodParser Library for the nonBlockingInput and pfodBufferedStream class millisDelay βιβλιοθήκη για μη αποκλεισμό καθυστερήσεων

Βήμα 1: Λειτουργίες βιβλιοθήκης

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

Η θέση του βήματος παρακολουθείται μετρώντας τον αριθμό των βημάτων (παλμών). Η βιβλιοθήκη περιορίζει τη θέση μεταξύ των θέσεων setPlusLimit (int32_t) και setMinusLimit (int32_t). Το όριο συν είναι πάντα> = 0 και το όριο μείον είναι πάντα <= 0. Κατά την εκκίνηση, η θέση του κινητήρα είναι 0 (σπίτι) και τα όρια ορίζονται σε πολύ μεγάλους αριθμούς +/- (περίπου +/- 1e9 βήματα). setAcceleration (float) ορίζει πόσο γρήγορα ο κινητήρας θα αλλάξει ταχύτητα είτε πάνω είτε κάτω. Καθώς ο κινητήρας πλησιάζει το όριο συν ή πλην θα επιβραδύνει με αυτόν τον ρυθμό μέχρι να σταματήσει στο όριο. Κατά την εκκίνηση η επιτάχυνση ρυθμίζεται σε 1,0 βήματα/δευτ./Δευτ. Η ρύθμιση επιτάχυνσης είναι πάντα αριθμός +ve. Το σύμβολο της ρύθμισης setSpeed (float) ορίζει την κατεύθυνση που θα κινηθεί ο κινητήρας.

setSpeed (float) ορίζει την ταχύτητα επιτάχυνσης / επιβράδυνσης του κινητήρα από την τρέχουσα ταχύτητά του. Η ταχύτητα που μπορεί να ρυθμιστεί μέσω του setSpeed (float) είναι περιορισμένη, σε απόλυτη τιμή, από τις ρυθμίσεις, setMaxSpeed (float), προεπιλεγμένα 1000 βήματα/δευτερόλεπτο και setMinSpeed (float), προεπιλογή 0,003 βήματα/sec. Αυτές οι προεπιλογές είναι επίσης τα απόλυτα σκληρά κωδικοποιημένα όρια ταχύτητας που θα δεχτεί η βιβλιοθήκη για τα setMaxSpeed () και setMinSpeed (). Εάν θέλετε να ορίσετε μέγιστη ταχύτητα> 1000 βήματα/δευτερόλεπτο, θα χρειαστεί να επεξεργαστείτε την πρώτη γραμμή στο αρχείο SpeedStepper.cpp για να αλλάξετε το maxMaxSpeed (1000) στη μέγιστη ταχύτητα που θέλετε. Στην πράξη, η μέγιστη ταχύτητα περιορίζεται επίσης από το χρόνο μεταξύ των κλήσεων στη μέθοδο run () της βιβλιοθήκης. Για 1000 βήματα / δευτερόλεπτο η μέθοδος run () πρέπει να καλείται τουλάχιστον κάθε 1mS. Δείτε την ενότητα Καθυστέρηση παρακάτω.

Προσπαθώντας να ρυθμίσετε μια ταχύτητα μικρότερη από την ελάχιστη ταχύτητα θα προκαλέσει το μοτέρ να σταματήσει. Κάθε ένας από αυτούς τους ρυθμιστές έχει ένα αντίστοιχο getter, δείτε το αρχείο SpeedStepper.h. Για ταχύτητα, το getSetSpeed () επιστρέφει την ταχύτητα που έχετε ορίσει μέσω του setSpeed (), ενώ το getSpeed () επιστρέφει την τρέχουσα ταχύτητα του κινητήρα που ποικίλλει καθώς επιταχύνεται/επιβραδύνεται σε εσάς που ρυθμίζετε την ταχύτητα. Εάν ο κινητήρας δεν πηγαίνει προς την κατεύθυνση που σκέφτεστε ένα +ve, μπορείτε να καλέσετε το invertDirectionLogic () για να αλλάξετε την κατεύθυνση που κινείται ο κινητήρας για +ve ταχύτητες.

Το getCurrentPosition () επιστρέφει την τρέχουσα θέση του κινητήρα σε σύγκριση με το «σπίτι» (0). Μπορείτε να παρακάμψετε την τρέχουσα θέση θέσης κινητήρα setCurrentPosition (int32_t). Η νέα θέση περιορίζεται να είναι εντός των καθορισμένων ορίων συν/πλην.

Αρχικά ο κινητήρας σταματά στη θέση 0. Η κλήση του setSpeed (50.0) θα προκαλέσει την επιτάχυνση στην κατεύθυνση +ve σε μέγιστη ταχύτητα 50 βημάτων/λεπτό. Η κλήση του hardStop () θα σταματήσει αμέσως τον κινητήρα εκεί που βρίσκεται. Από την άλλη πλευρά, η κλήση της μεθόδου διακοπής () θα θέσει την ταχύτητα στο μηδέν και θα επιβραδύνει τον κινητήρα σε στάση. Η κλήση stopAndSetHome () θα σταματήσει αμέσως τον κινητήρα και θα θέσει τη θέση του στο 0. Οι τιμές των ορίων συν/πλην δεν αλλάζουν, αλλά τώρα παραπέμπονται σε αυτήν τη νέα θέση 0 (αρχική). Η κλήση του goHome () θα επιστρέψει το βήμα σε αυτήν τη θέση 0 (σπίτι) και θα σταματήσει. Η κλήση του setSpeed () θα ακυρώσει την επιστροφή στο σπίτι.

Η βιβλιοθήκη SpeedStepper παρέχει επίσης έλεγχο προφίλ ταχύτητας μέσω των μεθόδων setProfile (SpeedProfileStruct* profileArray, size_t arrayLen), startProfile (), stopProfile (), για διακοπή ενός τρέχοντος προφίλ και isProfileRunning (). Δείτε το σκίτσο του παραδείγματος speedStepperProfile.

Βήμα 2: Εκτέλεση του παραδείγματος SpeedStepperPlot χωρίς κινητήρα

Εκτέλεση του παραδείγματος SpeedStepperPlot χωρίς κινητήρα
Εκτέλεση του παραδείγματος SpeedStepperPlot χωρίς κινητήρα

Εγκατάσταση Arduino IDE V1.8.9 Λήψη και εγκατάσταση της βιβλιοθήκης SpeedStepper Αποθήκευση του SpeedStepper.zip και στη συνέχεια χρήση του στοιχείου μενού Arduino IDE Sketch → Include Library → Add. ZIP βιβλιοθήκη για εισαγωγή της βιβλιοθήκης Λήψη και εγκατάσταση της βιβλιοθήκης millisDelay επίσης

Ανοίξτε το σκίτσο του παραδείγματος → SpeedStepper → speedStepperPlot (Επανεκκινήστε το IDE εάν είναι απαραίτητο). Αυτό το σκίτσο έχει ρυθμιστεί ώστε να λειτουργεί με Serial, π.χ. UNO και Mega κ.λπ. Για λειτουργία στο SparkFun Redboard Turbo δείτε παρακάτω.

Αυτό το παράδειγμα δεν χρειάζεται κανέναν πίνακα οδηγού ή βηματικό μοτέρ. Αυτά τα παραδείγματα χρησιμοποιούν D6 και D7 ως έξοδο. Μπορείτε να αλλάξετε τις ακίδες εξόδου σε οποιαδήποτε ψηφιακή έξοδο αλλάζοντας τις ρυθμίσεις STEP_PIN και DIR_PIN κοντά στο πάνω μέρος του σκίτσου.

Ανεβάστε το σκίτσο στην πλακέτα και, στη συνέχεια, ανοίξτε το Tools → Serial Plotter στα 115200 baud για να εμφανίσετε το διάγραμμα της ταχύτητας (RED) και της θέσης (BLUE) στον άξονα x. Το μείον όριο είναι -510. Η θέση σταματά στο ~ -390 επειδή η ταχύτητα έχει ζητηθεί στο 0,0. Στο σημείο 380 στον άξονα x, εκδίδεται το cmd goHome που επιστρέφει το βήμα στη θέση μηδέν.

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

Βήμα 3: Εκτέλεση του παραδείγματος SpeedStepperProfile χωρίς κινητήρα

Εκτέλεση του παραδείγματος SpeedStepperProfile χωρίς κινητήρα
Εκτέλεση του παραδείγματος SpeedStepperProfile χωρίς κινητήρα

Ανοίξτε το παράδειγμα σκίτσο των παραδειγμάτων → SpeedStepper → speedStepperPlot, αυτό το σκίτσο παράγει το παραπάνω διάγραμμα χρησιμοποιώντας το Serdu Plotter του Arduino και είναι ένα παράδειγμα εκτέλεσης ενός προδιαγεγραμμένου προφίλ ταχύτητας, για παράδειγμα, εάν τρέχετε μια αντλία.

Τα προφίλ ταχύτητας Stepper αποτελούνται από μια σειρά SpeedProfileStruct, η οποία ορίζεται στο αρχείο SpeedStepper.h.

struct SpeedProfileStruct {

ταχύτητα πλεύσης? // η ταχύτητα -στόχος στο τέλος αυτού του βήματος ανυπόγραφο μεγάλο deltaTms. // ο χρόνος επιτάχυνσης από την τρέχουσα ταχύτητα (στην αρχή αυτού του βήματος) στην ταχύτητα -στόχο}

Ορίστε έναν πίνακα SpeedProfileStruct που περιέχει την ταχύτητα -στόχο για κάθε βήμα και το χρόνο, deltaTms, σε mS, για να επιτύχετε αυτήν την ταχύτητα -στόχο από την προηγούμενη ταχύτητα -στόχο. Εάν το deltaTms είναι μηδενικό ή πολύ μικρό, τότε η ταχύτητα θα μεταβεί αμέσως στη νέα ταχύτητα -στόχο. Διαφορετικά, η απαιτούμενη επιτάχυνση θα υπολογιστεί setAcceleration () θα κληθεί ακολουθούμενη από μια κλήση στο setSpeed () για τη νέα ταχύτητα -στόχο. Σε όλες τις περιπτώσεις, το προφίλ θα περιοριστεί από τα υπάρχοντα όρια συν και πλην της θέσης και τις ρυθμίσεις ταχύτητας μέγ/λεπτό. Εάν θέλετε να κρατήσετε μια ταχύτητα, απλώς επαναλάβετε την προηγούμενη ταχύτητα με το χρόνο που θέλετε να διατηρηθεί. Δεδομένου ότι η νέα ταχύτητα -στόχος είναι ίδια με την τρέχουσα ταχύτητα, η υπολογιζόμενη επιτάχυνση θα είναι μηδενική και δεν θα υπάρξει καμία αλλαγή στην ταχύτητα.

Αυτός ο πίνακας SpeedProfileStruct παρήγαγε το παραπάνω διάγραμμα

const Προφίλ SpeedProfileStruct = {{0, 0}, // σταματήστε αμέσως αν δεν έχετε σταματήσει ήδη {0, 1000}, // κρατήστε το μηδέν για 1 δευτερόλεπτο {-50, 0}, // μεταβείτε στο -50 {-200, 2000}, // ράμπα έως -200 {-200, 6000}, // κρατήστε στα -200 για 6 δευτερόλεπτα {-50, 2000}, // ράμπα έως -50 {0, 0}, // // σταματήστε άμεσα {0, 1500}, // κρατήστε μηδέν για 1,5 δευτερόλεπτα {50, 0}, // μεταβείτε στο 50 {200, 2000}, // ράμπα στο 200 {200, 6000}, // κρατήστε το 200 για 6 δευτερόλεπτα {50, 2000}, // ράμπα στο 50 {0, 0}, // // σταματήστε άμεσα {0, 1000} // κρατήστε μηδέν // για σχεδίαση εξόδου}; const size_t PROFILE_LEN = sizeof (προφίλ) / sizeof (SpeedProfileStruct); // Υπολογίστε το μέγεθος του πίνακα προφίλ

Το προφίλ ορίζεται καλώντας το setProfile (SpeedProfileStruct* profileArray, size_t arrayLen) π.χ. stepper.setProfile (προφίλ, PROFILE_LEN);

Μόλις ρυθμιστεί το προφίλ, καλέστε το startProfile () για να ξεκινήσει να τρέχει από την τρέχουσα ταχύτητα του κινητήρα (συνήθως θα ξεκινήσετε από τη διακοπή). Στο τέλος του προφίλ, ο κινητήρας θα συνεχίσει να λειτουργεί με την τελευταία ταχύτητα -στόχο. Η μέθοδος isProfileRunning () μπορεί να κληθεί για να δει εάν το προφίλ εξακολουθεί να λειτουργεί. Εάν θέλετε να σταματήσετε το προφίλ νωρίς, μπορείτε να καλέσετε το stopProfile () το οποίο θα εγκαταλείψει το προφίλ και θα σταματήσει τον κινητήρα.

Βήμα 4: Εκτέλεση του παραδείγματος SpeedStepperSetup χωρίς κινητήρα

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

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

Εγκαταστήστε τις βιβλιοθήκες που χρησιμοποιούνται για την εκτέλεση του SpeedStepperPlot, παραπάνω και, στη συνέχεια, εγκαταστήστε επίσης τη βιβλιοθήκη pfodParser. Η βιβλιοθήκη pfodParser παρέχει τις κλάσεις NonBlockingInput και pfodBufferedStream που χρησιμοποιούνται για τον χειρισμό της εισόδου χρήστη και της εξόδου μενού με αποκλεισμό της εκτέλεσης του βρόχου ().

Ανοίξτε το παράδειγμα Παραδείγματα → SpeedStepper → speedSpeedSetup. Αυτό το σκίτσο έχει ρυθμιστεί ώστε να λειτουργεί με Serial, π.χ. UNO και Mega κ.λπ. Για λειτουργία στο SparkFun Redboard Turbo δείτε παρακάτω.

Αυτό το παράδειγμα δεν χρειάζεται κανέναν πίνακα οδηγού ή βηματικό μοτέρ. Αυτά τα παραδείγματα χρησιμοποιούν D6 και D7 ως έξοδο. Μπορείτε να αλλάξετε τις ακίδες εξόδου σε οποιαδήποτε ψηφιακή έξοδο αλλάζοντας τις ρυθμίσεις STEP_PIN και DIR_PIN κοντά στο πάνω μέρος του σκίτσου. Ανεβάστε το σκίτσο στον πίνακα και, στη συνέχεια, ανοίξτε το Tools → Serial Monitor στο 115200 για να δείτε το μενού SETUP.

SETUP pos: 0 sp: 0.00 +Lim: 500000 -Lim: -500 LATENCY: stepper: 492uS loop: 0uS p -set Home l -set limit h -goHome r -run>

Όταν εκτελείται το σκίτσο, η τρέχουσα θέση του βήματος λαμβάνεται ως η θέση «σπίτι» (0). Εάν πρέπει να επανατοποθετήσετε το βηματιστή στην πραγματική του θέση «σπίτι», εισαγάγετε την εντολή p για να εμφανιστεί το μενού SET HOME

SET HOME pos: 0 sp: 0,00 + Lim: 1073741808 -Lim: -1073741808 LATENCY: stepper: 752uS loop: 3852uS x -set Αρχική σελίδα εδώ και έξοδος + -Forward - -Reverse s -swap Forward/Reverse -hardStop >>

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

Χρησιμοποιήστε το + cmd για να αρχίσετε να μετακινείτε το βήμα προς τα εμπρός, αν το βρείτε να κινείται σε λάθος κατεύθυνση, εισαγάγετε μια εντολή χωρίς εντολή ή απλώς μια κενή γραμμή για να το σταματήσετε και, στη συνέχεια, χρησιμοποιήστε το scommand για να αλλάξετε την κατεύθυνση του Forward. Θα πρέπει να ενημερώσετε το σκίτσο για να συμπεριλάβετε μια κλήση στο invertDirectionLogic () στη ρύθμιση για να το διορθώσετε για την επόμενη εκτέλεση.

Χρησιμοποιήστε τα + / - cmds για να τοποθετήσετε το βήμα στη σωστή μηδενική θέση. Ο κινητήρας ξεκινά αργά και στη συνέχεια αυξάνει την ταχύτητά του καθώς προχωρά, απλά χρησιμοποιήστε και αδειάστε τη γραμμή για να τον σταματήσετε. Η μέγιστη ταχύτητα για αυτό και το μενού ορίων ορίζεται από το MAX_SETUP_SPEED στο επάνω μέρος του setupMenus.cpp.

Μόλις ο κινητήρας τοποθετηθεί στην αρχική του θέση, χρησιμοποιήστε το x cmd για να επαναρυθμίσετε την τρέχουσα θέση ως 0 και επιστρέψτε στο μενού SETUP.

Εάν πρέπει να ορίσετε τα όρια, συνήθως μόνο στην αρχική ρύθμιση, χρησιμοποιήστε το l cmd για να μπείτε στο μενού SET LIMITS

SET LIMITS pos: 0 sp: 0,00 + Lim: 1073741808 -Lim: -1073741808 LATENCY: stepper: 944uS loop: 5796uS l -setLimit here + -Forward - -Reverse h -goHome x -exit -hardStop>

Χρησιμοποιήστε το + cmd για μεγαλύτερη προώθηση στο όριο συν και, στη συνέχεια, χρησιμοποιήστε το l cmd για να το ορίσετε ως όριο συν. Η εντολή h μπορεί στη συνέχεια να χρησιμοποιηθεί για να επιστρέψει στο 0 και η - cmd για να μετακινηθεί εάν στρέφεται στη θέση του κινητήρα στο όριο μείον. Χρησιμοποιήστε ξανά το l cmd για να ορίσετε το όριο μείον. Σημειώστε τις θέσεις των ορίων συν και πλην και ενημερώστε τις δηλώσεις setPlusLimit και setMinusLimit της μεθόδου setup () με αυτές τις τιμές.

Όταν ορίζονται τα όρια, χρησιμοποιήστε το x cmd για να επιστρέψετε στο μενού SETUP και, στη συνέχεια, μπορείτε να χρησιμοποιήσετε το r cmd για να ανοίξετε το μενού RUN

RUN MENU pos: 0 sp: 3.31 + Lim: 500000 -Lim: -500 LATENCY: stepper: 944uS loop: 5796uS + -Speed up - -Speed down h -goHome -hardStop-Ταχύτητα παγώματος> +θέση: 4 sp: 9,49 +Lim: 500000-Lim: -500 ΧΡΟΝΟΔΟΤΗΣΗ: stepper: 792uS βρόχος: 5664uS pos: 42 sp: 29,15 +Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS βρόχος: 5664uS pos: 120 sp: 49.09 +Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS loop: 5664uS pos: 238 sp: 69.06 +Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS loop: 5664uS

Το + cmd αρχίζει να επιταχύνεται προς τα εμπρός και εκτυπώνει τη θέση και την ταχύτητα κάθε 2 δευτερόλεπτα. Όταν ο κινητήρας φτάσει στην ταχύτητα που θέλετε, μπορείτε να σταματήσετε την επιτάχυνση με οποιοδήποτε άλλο κλειδί (ή μια κενή είσοδο). Μπορείτε να μειώσετε την ταχύτητα χρησιμοποιώντας το - cmd προς τα κάτω για να σταματήσετε. Αν σταματήσει το - cmd θα επιταχυνθεί αντίστροφα.

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

Βήμα 5: Καθυστέρηση

Ο έλεγχος του βηματικού κινητήρα εξαρτάται από το λογισμικό που δίνει εντολή σε κάθε βήμα. Για να διατηρήσετε την καθορισμένη ταχύτητα, το σκίτσο σας πρέπει να καλέσει τη μέθοδο stepper.run () αρκετά συχνά για να ενεργοποιήσει το επόμενο βήμα την κατάλληλη στιγμή για την τρέχουσα ταχύτητα. Για έλεγχο μέσω αισθητήρων πρέπει να είστε σε θέση να επεξεργαστείτε γρήγορα νέες μετρήσεις. Η εκτύπωση θέσης/ταχύτητας περιλαμβάνει δύο μετρήσεις LATENCY για να σας επιτρέψει να ελέγξετε ότι το σκίτσο σας είναι αρκετά γρήγορο.

Stepper Latency (pfodBufferedStream)

Η καθυστέρηση stepper μετρά τη μέγιστη καθυστέρηση μεταξύ διαδοχικών κλήσεων στη μέθοδο stepper.run (). Για να λειτουργήσει ο βηματικός κινητήρας με 1000 βήματα ανά δευτερόλεπτο, η καθυστέρηση του βηματικού βήματος πρέπει να είναι μικρότερη από 1000uS (1mS). Η πρώτη έκδοση αυτού του σκίτσου είχε καθυστέρηση πολλών χιλιοστών του δευτερολέπτου. Για να ξεπεράσετε αυτές τις επιπλέον κλήσεις στη μέθοδο runStepper () (η οποία καλεί το stepper.run ()) όπου προστίθεται μέσω του κώδικα. Αυτό δεν έλυσε εντελώς το πρόβλημα επειδή το μενού και οι δηλώσεις εκτύπωσης εξόδου μπλόκαραν το σκίτσο μόλις γεμίσει το μικρό buffer Serial Tx. Για να αποφευχθεί αυτό το μπλοκάρισμα, το pfodBufferedStream από τη βιβλιοθήκη pfodParser χρησιμοποιήθηκε για να προσθέσει ένα buffer εκτύπωσης εξόδου 360 byte στο οποίο οι δηλώσεις εκτύπωσης θα μπορούσαν να γράψουν γρήγορα. Στη συνέχεια, το pfodBufferedStream απελευθερώνει τα byte με τον ρυθμό baud που έχει καθοριστεί σε αυτήν την περίπτωση 115200. Το pfodBufferedStream πρέπει να επιλέξει είτε να αποκλείσει όταν το buffer είναι γεμάτο είτε απλά να ρίξει τους χαρακτήρες υπερχείλισης. Εδώ είναι ρυθμισμένο να αποβάλλει τυχόν επιπλέον χαρακτήρες όταν το buffer είναι γεμάτο, έτσι ώστε το σκίτσο να μην αποκλείεται περιμένοντας την Serial να στείλει χαρακτήρες.

Loop Latency (NonBlockingInput)

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

Οι καθυστερήσεις λόγω των δηλώσεων εκτύπωσης καταργήθηκαν χρησιμοποιώντας το pfodBufferedStream παραπάνω, αλλά για να επεξεργαστείτε την είσοδο του χρήστη, πρέπει να λάβετε τον πρώτο χαρακτήρα της εισόδου και να αγνοήσετε την υπόλοιπη γραμμή. Η κλάση NonBlockingInput στη βιβλιοθήκη pfodParer χρησιμοποιείται για να επιστρέψει ένα μη-μηδενικό char όταν υπάρχει είσοδος, χρησιμοποιώντας readInput (), και για να καθαρίσει και να απορρίψει τους ακόλουθους χαρακτήρες, χρησιμοποιώντας το clearInput (), έως ότου δεν ληφθούν χαρακτήρες για 10mS χωρίς αποκλεισμό του βρόχου ()

Φυσικά, η καθυστέρηση βρόχου θα αυξηθεί από τον επιπλέον κώδικα που προσθέτετε για να διαβάσετε τους αισθητήρες και να υπολογίσετε τη νέα ταχύτητα ρύθμισης. Πολλές βιβλιοθήκες αισθητήρων επιλέγουν την καθυστέρηση (..) μεταξύ της έναρξης μιας μέτρησης και της ανάκτησης του αποτελέσματος. Θα χρειαστεί να ξαναγράψετε αυτές τις βιβλιοθήκες για να χρησιμοποιήσετε αντ 'αυτού το millisDelay, για να λάβετε τη μέτρηση μετά από μια κατάλληλη καθυστέρηση μη αποκλεισμού.

Βήμα 6: Εκτέλεση του SpeedStepperSetup With Stepper Motor και του SparkFun Redboard Turbo

Εκτέλεση SpeedStepperSetup With Stepper Motor και SparkFun Redboard Turbo
Εκτέλεση SpeedStepperSetup With Stepper Motor και SparkFun Redboard Turbo
Εκτέλεση SpeedStepperSetup With Stepper Motor και SparkFun Redboard Turbo
Εκτέλεση SpeedStepperSetup With Stepper Motor και SparkFun Redboard Turbo

Για να εκτελέσετε πραγματικά το σκίτσο SpeedStepperSetup θα χρειαστείτε βηματικό μοτέρ, πρόγραμμα οδήγησης και τροφοδοτικό και σε αυτό το παράδειγμα SparkFun Redboard Turbo.

Το παραπάνω διάγραμμα καλωδίωσης (έκδοση pdf) δείχνει τις συνδέσεις. Στο σκίτσο SpeedStepperSetup αλλάξτε το SERIAL define σε #define SERIAL Serial1

Stepper Motor, τροφοδοτικό, πρόγραμμα οδήγησης και προστασία

Υπάρχουν πολλοί τύποι και μεγέθη βηματικών κινητήρων. Εδώ χρησιμοποιείται ένας δοκιμαστικός βηματικός κινητήρας δύο πηνίων 12V 350mA. Για να τροφοδοτήσετε αυτό το stepper χρειάζεστε τροφοδοσία 12V ή μεγαλύτερη και μεγαλύτερη από 350mA.

Αυτή η βιβλιοθήκη παρέχει μόνο έξοδο κατεύθυνσης και βαθμίδας, οπότε χρειάζεστε ένα πρόγραμμα οδήγησης για διασύνδεση με το βηματικό μοτέρ. Το Easy Driver και το Big Easy Driver ελέγχουν το ρεύμα στα πηνία του κινητήρα, ώστε να μπορείτε να χρησιμοποιήσετε με ασφάλεια την παροχή ρεύματος υψηλότερης τάσης, για παράδειγμα χρησιμοποιώντας τροφοδοσία 6V για κινητήρα 3,3V. Το Easy Driver μπορεί να παρέχει μεταξύ 150mA/πηνίο και 700mA/πηνίο. Για υψηλότερα ρεύματα, το Big Easy Driver μπορεί να παρέχει έως και 2Α ανά πηνίο. Διαβάστε τις Συχνές Ερωτήσεις στο κάτω μέρος της σελίδας Easy Drive.

Αυτά τα παραδείγματα χρησιμοποιούν D6 και D7 ως έξοδο Βήμα και Κατεύθυνση. Μπορείτε να αλλάξετε τις ακίδες εξόδου σε οποιαδήποτε ψηφιακή έξοδο αλλάζοντας τις ρυθμίσεις STEP_PIN και DIR_PIN κοντά στο πάνω μέρος του σκίτσου.

Προγραμματισμός του Sparkfun Redboard Turbo

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

Συνδέστε το Easy Driver

Δύο πηνία stepper μοτέρ έχουν 4 καλώδια. Χρησιμοποιήστε ένα πολύμετρο για να βρείτε τα ζεύγη που συνδέονται σε κάθε πηνίο και στη συνέχεια συνδέστε το ένα πηνίο στους ακροδέκτες Easy Driver A και το άλλο πηνίο στον ακροδέκτη Β. Δεν έχει σημασία ποιος τρόπος θα τα συνδέσετε επειδή μπορείτε να χρησιμοποιήσετε το s cmd στο μενού ρυθμίσεων για να αλλάξετε την κατεύθυνση της κίνησης.

Το τροφοδοτικό του κινητήρα συνδέεται με καλώδιο M+ και GND Ρυθμίστε το λογικό επίπεδο της πλακέτας με τη σύνδεση 3/5V. Συντομεύστε το σύνδεσμο μαζί για εξόδους μικροεπεξεργαστή 3,3V, όπως το SparkFun Redboard Turbo (αν το αφήσετε ανοιχτό είναι κατάλληλο για ψηφιακά σήματα 5V, π.χ. UNO, Mega) Συνδέστε τις ακίδες GND, STEP, DIR στον μικροεπεξεργαστή GND και το βήμα και πείροι εξόδου dir. Δεν απαιτούνται άλλες συνδέσεις για την οδήγηση του κινητήρα.

Σειριακό καλώδιο USB σε TTL

Όταν μετακινείτε το σκίτσο SpeedStepperSetup από το Uno/Mega στο Redboard Turbo, μπορείτε αφελώς απλά να αντικαταστήσετε το #define SERIAL Serial με το #define SERIAL SerialUSB για να ταιριάξει στη σειριακή σύνδεση Redboard Turbo usb, ωστόσο θα διαπιστώσετε ότι η καθυστέρηση stepper που προκύπτει είναι περίπου 10mS. Αυτό είναι 10 φορές πιο αργό για το UNO. Αυτό οφείλεται στον τρόπο με τον οποίο ο επεξεργαστής Redboard χειρίζεται τη σύνδεση USB. Για να το ξεπεράσετε, συνδέστε ένα USB στο σειριακό καλώδιο TTL στο D0/D1 και ορίστε το#define SERIAL Serial1 για να χρησιμοποιήσετε τη σειριακή σύνδεση υλικού για τον έλεγχο του βηματικού κινητήρα. Η χρήση του Serial1 δίνει LATENCY: stepper: 345uS loop: 2016uS που είναι 3 φορές γρηγορότερο από το UNO για το stepper and loop latency

Τερματικό Πρόγραμμα

Το Serdu Monitor Arduino είναι λίγο πιο δύσκολο να χρησιμοποιηθεί για τον έλεγχο του βηματικού μοτέρ, καθώς πρέπει να εισαγάγετε το γρανάζι στη γραμμή cmd και στη συνέχεια να πατήσετε Enter για να το στείλετε. Ένα πιο γρήγορο και πιο αποκριτικό μέσο είναι να ανοίξετε ένα τερματικό παράθυρο, TeraTerm για υπολογιστή (ή CoolTerm Mac), συνδεδεμένο στη θύρα COM καλωδίου USB σε TTL. Στη συνέχεια, σε αυτό το παράθυρο πατώντας ένα πλήκτρο cmd το στέλνει αμέσως. Πατώντας Enter απλά στείλτε μια κενή γραμμή.

Ρύθμιση του εύρους στροφών του κινητήρα

Όπως έχει συνδεθεί παραπάνω, το Easy Drive έχει ρυθμιστεί για 1/8 βήματα, οπότε 1000 βήματα/δευτερόλεπτο θα στρέψει τον κινητήρα σε 1000/8/200 βήμα/περιστροφή = 0,625 στροφές ανά δευτερόλεπτο ή μέγιστη 37,5 στροφές ανά λεπτό. Αλλάζοντας τις εισόδους σε MS1/MS2 μπορείτε να κάνετε εναλλαγή μεταξύ 1/8,, ½ και πλήρων βημάτων. Για πλήρη βήματα συνδέστε MS1 και MS2 στο GND. Αυτό θα επιτρέψει ταχύτητες έως και 300 σ.α.λ. Η επιλογή των κατάλληλων ρυθμίσεων MS1/MS2 σάς επιτρέπει να προσαρμόσετε την εγκατεστημένη σχέση μετάδοσης μεταξύ του κινητήρα και του κινούμενου τμήματος.

Προστασία υλικού

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

Ρύθμιση ορίου ρεύματος κινητήρα

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

συμπέρασμα

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

Συνιστάται: