- Απαιτούμενα υλικά
- Κινητήρας Stepper (28BYJ-48)
- ULN2003 IC Driver Motor
- Διάγραμμα κυκλώματος και συνδέσεις
- Περιστρεφόμενος κινητήρας Stepper με STM32F103C8
- ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ STM32 για Stepper Motor
Ο κινητήρας Stepper είναι κινητήρας DC χωρίς ψήκτρες, ο οποίος μπορεί να περιστραφεί σε μικρές γωνίες, αυτές οι γωνίες ονομάζονται βήματα. Γενικά ο κινητήρας stepper χρησιμοποιεί 200 βήματα για να ολοκληρώσει την περιστροφή 360 μοιρών, σημαίνει ότι περιστρέφεται 1,8 μοίρες ανά βήμα. Ο κινητήρας Stepper χρησιμοποιείται σε πολλές συσκευές που χρειάζονται ακριβή περιστροφική κίνηση όπως ρομπότ, κεραίες, σκληρούς δίσκους κ.λπ. Μπορούμε να περιστρέψουμε τον κινητήρα stepper σε οποιαδήποτε συγκεκριμένη γωνία δίνοντάς του τις κατάλληλες οδηγίες. Κυρίως υπάρχουν δύο τύποι βηματικών κινητήρων, Unipolar και Bipolar. Το Unipolar είναι πιο εύκολο στη χρήση, τον έλεγχο και επίσης πιο εύκολο στη λήψη. Εδώ σε αυτό το σεμινάριο συνδέουμε το Stepper Motor με την πλακέτα STM32F103C8 (μπλε χάπι).
Απαιτούμενα υλικά
- STM32F103C8 (Μπλε χάπι)
- Κινητήρας Stepper (28BYJ-48)
- ULN2003 IC
- Ποτενσιόμετρο 10k
- Ψωμί
- Καλώδια αλτών
Κινητήρας Stepper (28BYJ-48)
Το 28BYJ-48 είναι ένας μονοπολικός κινητήρας Stepper που απαιτεί τροφοδοσία 5V. Ο κινητήρας έχει μονοπολική διάταξη 4 πηνίων και κάθε πηνίο έχει βαθμολογία για + 5V, επομένως είναι σχετικά εύκολο να ελεγχθεί με οποιονδήποτε μικροελεγκτή όπως το Arduino, το Raspberry Pi και το STM32. Αλλά χρειαζόμαστε ένα Motor Drive IC όπως το ULN2003 για να το οδηγήσουμε, γιατί οι βηματικοί κινητήρες καταναλώνετε υψηλό ρεύμα και μπορεί να προκαλέσει βλάβη στους μικροελεγκτές.
Ένα άλλο σημαντικό στοιχείο που πρέπει να παρατηρήσετε είναι το Stride Angle: 5.625 ° / 64. Αυτό σημαίνει ότι ο κινητήρας όταν λειτουργεί με ακολουθία 8 βημάτων θα κινείται 5,625 μοίρες για κάθε βήμα και θα πάρει 64 βήματα (5,625 * 64 = 360) για να ολοκληρώσει μια πλήρη περιστροφή. Άλλες προδιαγραφές παρέχονται στο δελτίο δεδομένων παρακάτω:
Ελέγξτε επίσης τη διασύνδεση με το Stepper Motor με άλλους μικροελεγκτές:
- Interfacing Stepper Motor με το Arduino Uno
- Έλεγχος κινητήρα Stepper με Raspberry Pi
- Stepper Motor Interfacing με 8051 μικροελεγκτή
- Διασύνδεση Stepper Motor με μικροελεγκτή PIC
Ο κινητήρας Stepper μπορεί επίσης να ελεγχθεί χωρίς κανένα μικροελεγκτή, δείτε αυτό το κύκλωμα οδήγησης κινητήρα Stepper.
ULN2003 IC Driver Motor
Χρησιμοποιείται για την οδήγηση του κινητήρα σύμφωνα με τους παλμούς που λαμβάνονται από τον μικροελεγκτή. Ακολουθεί το διάγραμμα εικόνας του ULN2003:
Οι ακίδες (IN1 έως IN7) είναι ακροδέκτες εισόδου και (OUT 1 έως OUT 7) είναι αντίστοιχοι ακροδέκτες εξόδου. Στο COM δίνεται θετική τάση πηγής που απαιτείται για συσκευές εξόδου. Περαιτέρω συνδέσεις για βηματικό κινητήρα δίνονται παρακάτω στην ενότητα διαγράμματος κυκλώματος.
Διάγραμμα κυκλώματος και συνδέσεις
Ακολουθεί η εξήγηση συνδέσεων για το παραπάνω διάγραμμα κυκλώματος.
STM32F103C8 (μπλε χάπι)
Όπως μπορούμε να δούμε στο παρακάτω διάγραμμα, οι ακίδες PWM υποδεικνύονται σε μορφή κυμάτων (~), υπάρχουν 15 τέτοιες ακίδες που μπορούν να χρησιμοποιηθούν για έξοδο παλμού σε κινητήρα stepper. Χρειαζόμαστε μόνο τέσσερις ακίδες, χρησιμοποιούμε (PA0 toPA3).
STM32F103C8 με ULN2003 Motor Driver IC
Οι ακίδες (PA0 έως PA3) θεωρούνται ως καρφίτσες εξόδου που συνδέονται με ακίδες εισόδου (IN1-IN4) του ULN2003 IC.
ΚΙΝΔΥΝΟΙ STM32F103C8 |
ΚΙΝΔΥΝΟΙ ULN2003 IC |
ΡΑ0 |
ΣΕ 1 |
ΡΑ1 |
ΙΝ2 |
PA2 |
ΙΝ3 |
ΡΑ3 |
IN4 |
5V |
ΚΟΜ |
GND |
GND |
ULN2003 IC με Stepper Motor (28BYJ-48)
Οι ακίδες εξόδου (OUT1-OUT4) του ULN2003 IC συνδέονται με τους ακροδέκτες του κινητήρα (πορτοκαλί, κίτρινο, ροζ και μπλε).
ΚΙΝΔΥΝΟΙ ULN2003 IC |
ΚΙΝΔΥΝΟΙ STEPPER MOTOR |
ΕΞΩ 1 |
ΠΟΡΤΟΚΑΛΙ |
OUT2 |
ΚΙΤΡΙΝΟΣ |
OUT3 |
ΡΟΖ |
OUT4 |
ΜΠΛΕ |
ΚΟΜ |
ΤΟ ΚΟΚΚΙΝΟ |
STM32F103C8 με ποτενσιόμετρο
Χρησιμοποιείται ποτενσιόμετρο για τον καθορισμό της ταχύτητας του κινητήρα stepper.
ΠΟΤΕΝΣΙΟΜΕΤΡΟ |
STM32F103C8 |
ΑΡΙΣΤΕΡΑ (ΕΙΣΟΔΟΣ) |
3.3 |
ΚΕΝΤΡΟ (ΕΞΟΔΟΣ) |
ΡΑ4 |
ΔΕΞΙΑ (GND) |
GND |
Περιστρεφόμενος κινητήρας Stepper με STM32F103C8
Ακολουθούν μερικά βήματα για τη λειτουργία του Stepper Motor:
- Ρυθμίστε την ταχύτητα του βηματικού κινητήρα με μεταβαλλόμενο ποτενσιόμετρο.
- Στη συνέχεια, εισαγάγετε χειροκίνητα βήματα για περιστροφή είτε δεξιόστροφα (+ τιμές) είτε αριστερόστροφα (-τιμές) μέσω SERIAL MONITER που υπάρχει στο ARDUINO IDE (Tools-> Serial monitor) ή CTRL + SHIFT + M.
- Σύμφωνα με την τιμή εισόδου που δίνεται στη σειριακή οθόνη, ορισμένα βήματα περιστροφής πραγματοποιούνται στον κινητήρα stepper.
Για παράδειγμα
ΔΙΑΘΕΣΗ ΣΤΗ ΣΕΙΡΑ ΠΑΡΑΚΟΛΟΥΘΗΣΗ |
ΠΕΡΙΣΤΡΟΦΗ |
2048 |
(360) CLK WISE |
1024 |
(180) CLK WISE |
512 |
(90) CLK WISE |
-2048 |
(-360) ANTI CLK WISE |
-1024 |
(-180) ANTI CLK WISE |
-512 |
(-90) ANTI CLK WISE |
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ STM32 για Stepper Motor
Όπως και το προηγούμενο σεμινάριο, προγραμματίσαμε το STM32F103C8 με το Arduino IDE μέσω θύρας USB χωρίς να χρησιμοποιήσουμε τον προγραμματιστή FTDI. Για να μάθετε σχετικά με τον προγραμματισμό STM32 με το Arduino IDE ακολουθήστε τον σύνδεσμο. Μπορούμε να προχωρήσουμε στον προγραμματισμό σαν Arduino. Ο πλήρης κωδικός δίνεται στο τέλος του έργου.
Πρώτα πρέπει να συμπεριλάβουμε τα αρχεία βιβλιοθήκης stepper #include
#περιλαμβάνω
Τότε ορίζουμε όχι. των βημάτων που πρέπει να ολοκληρωθούν κατά την περιστροφή, εδώ χρησιμοποιούμε 32 επειδή χρησιμοποιούμε το πλήρες βήμα (ακολουθία 4 βημάτων) έτσι (360/32 = 11,25 βαθμός). Έτσι για ένα βήμα, ο άξονας κινείται 11,25 μοίρες που είναι γωνία διασκελισμού. Στην ακολουθία 4 βημάτων, απαιτούνται 4 βήματα για μία πλήρη περιστροφή.
# καθορισμός ΒΗΜΑΤΑ 32
Μπορούμε επίσης να χρησιμοποιήσουμε τη λειτουργία μισού βήματος όπου υπάρχει γωνία διαδοχής 8 βημάτων (360/64 = 5.625).
Βήματα ανά επανάσταση = 360 / STEP ANGLE
Καθώς ρυθμίζουμε ταχύτητα, πρέπει να πάρουμε αναλογική τιμή από το PA4 που είναι συνδεδεμένο στο ποτενσιόμετρο. Πρέπει λοιπόν να δηλώσουμε το pin για αυτό
const int speedm = PA4
Στη συνέχεια, έχουμε μετατρέψει την αναλογική τιμή σε ψηφιακή αποθηκεύοντας αυτές τις τιμές σε μεταβλητή ακέραιου τύπου, μετά από αυτό πρέπει να αντιστοιχίσουμε τις τιμές ADC για τη ρύθμιση της ταχύτητας, ώστε να χρησιμοποιήσουμε την παρακάτω δήλωση. Μάθετε περισσότερα σχετικά με τη χρήση του ADC με STM32 εδώ.
int adc = analogRead (speedm); int αποτέλεσμα = χάρτης (adc , 0, 4096, 1, 1023);
Για να ρυθμίσουμε την ταχύτητα, χρησιμοποιούμε το stepper.setSpeed (αποτέλεσμα); Έχουμε εύρος ταχύτητας (1-1023).
Πρέπει να δημιουργήσουμε ένα στιγμιότυπο όπως παρακάτω για να ορίσουμε τους πείρους που συνδέονται με τον κινητήρα. Να είστε προσεκτικοί σε αυτά τα βήματα, καθώς οι περισσότεροι κάνουν λάθος εδώ σε αυτό το μοτίβο. Δίνουν λάθος μοτίβο και εξαιτίας αυτού δεν μπορούν να ενεργοποιηθούν τα πηνία.
Stepper stepper (ΒΗΜΑΤΑ, PA0, PA2, PA1, PA3);
Η παρακάτω δήλωση χρησιμοποιείται για να ληφθεί η τιμή των βημάτων από τη σειριακή οθόνη. Για παράδειγμα, χρειαζόμαστε 2048 τιμές για μία πλήρη περιστροφή (32 * 64 = 2048) που είναι 64 θα είναι η σχέση μετάδοσης και το 32 θα είναι ακολουθία μισού βήματος για μία περιστροφή.
rotate = Serial.parseInt ();
Ο παρακάτω κώδικας χρησιμοποιείται για την κλήση της παρουσίας και την εκτέλεση του κινητήρα. Εάν η τιμή περιστροφής είναι 1, καλεί τη λειτουργία stepper μία φορά και μία κίνηση γίνεται.
stepper.step (περιστροφή);
Ο πλήρης κώδικας με το βίντεο επίδειξης δίνεται παρακάτω. Ελέγξτε επίσης όλα τα έργα που σχετίζονται με τον κινητήρα stepper, με διασύνδεση με διάφορους άλλους μικροελεγκτές