- Απαιτούμενα στοιχεία
- Διάγραμμα κυκλώματος και συνδέσεις
- SMT32F103C8 Καρφίτσα λεπτομέρειες
- Προγραμματισμός STM32 για Servo Motor
Στα ηλεκτρονικά, οι σερβοκινητήρες χρησιμοποιούνται ως επί το πλείστον σε ρομποτικά έργα λόγω της ακρίβειας και του εύχρηστου χειρισμού τους. Οι σερβοκινητήρες έχουν μικρότερο μέγεθος και είναι πολύ αποτελεσματικοί και ενεργειακά αποδοτικοί. Παρέχουν υψηλή ροπή και μπορούν να χρησιμοποιηθούν για ανύψωση ή ώθηση βαρών σύμφωνα με τις προδιαγραφές των κινητήρων. Σε αυτό το σεμινάριο θα μάθουμε για το Servo Motor και τον τρόπο διασύνδεσης του Servo με την πλακέτα STM32F103C8. Ένα ποτενσιόμετρο είναι επίσης διασυνδεδεμένο για να μεταβάλλει τη θέση του άξονα του σερβοκινητήρα, και μια οθόνη LCD για την εμφάνιση της τιμής γωνίας.
Απαιτούμενα στοιχεία
- Πίνακας STM32F103C8 (μπλε χάπι)
- Σερβο κινητήρας (SG90)
- LCD (16x2)
- Ποτενσιόμετρο
- Ψωμί
- Καλώδια αλτών
Διάγραμμα κυκλώματος και συνδέσεις
SMT32F103C8 Καρφίτσα λεπτομέρειες
Στο STM32F103C8, έχουμε 10 πείρους ADC (PA0-PB1), και εδώ χρησιμοποιούμε μόνο έναν πείρο (PA3) για αναλογικό διάδρομο () για τη ρύθμιση της θέσης του άξονα του κινητήρα με ποτενσιόμετρο. Επίσης, μεταξύ 15 ακίδων PWM STM32 (PA0, PA1, PA2, PA3, PA6, PA7, PA8, PA9, PA10, PB0, PB1, PB6, PB7, PB8, PB9), θα χρησιμοποιηθεί ένας πείρος για την παροχή παλμών στο Servo τον ακροδέκτη PWM του κινητήρα (συνήθως έχει πορτοκαλί χρώμα).
Μπορείτε να μάθετε περισσότερα για το PWM και το ADC διαβάζοντας παρακάτω σε λεπτομερή άρθρα:
- Πώς να χρησιμοποιήσετε το ADC στο STM32F103C8
- Διαμόρφωση πλάτους παλμού (PWM) σε STM32F103C8
Σύνδεση μεταξύ STM32F103C8 και LCD
STM32F103C8 | οθόνη υγρού κρυστάλλου |
GND | VSS |
+ 5V | VDD |
Στο κέντρο ποτενσιόμετρου PIN | V0 |
PB0 | RS |
GND | RW |
PB1 | μι |
PB10 | Δ4 |
PB11 | Δ5 |
PC13 | Δ6 |
PC14 | Δ7 |
+ 5V | ΕΝΑ |
GND | κ |
Σύνδεση μεταξύ Servo motor και STM32F103C8
STM32F103C8 |
ΣΕΡΒΟ |
+ 5V |
ΚΟΚΚΙΝΟ (+ 5V) |
ΡΑ0 |
ΠΟΡΤΟΚΑΛΙ (καρφίτσα PWM) |
GND |
ΚΑΦΕ (GND) |
Ποτενσιόμετρα Συνδέσεις
Έχουμε χρησιμοποιήσει ΔΥΟ ποτενσιόμετρα εδώ
1. Το ποτενσιόμετρο στα δεξιά χρησιμοποιείται για τη μεταβολή της αντίθεσης LCD. Έχει τρεις ακίδες, το αριστερό πείρο είναι για + 5V και το δεξί για GND και ο κεντρικός πείρος είναι συνδεδεμένος στο V0 της οθόνης LCD.
2. Το ποτενσιόμετρο στα αριστερά χρησιμοποιείται για τη μεταβολή της θέσης του άξονα του σερβοκινητήρα ελέγχοντας την αναλογική τάση εισόδου, ο αριστερός πείρος έχει είσοδο 3.3V και το δεξί έχει GND και η κεντρική έξοδος συνδέεται με (PA3) του STM32
Προγραμματισμός STM32 για Servo Motor
Όπως και το προηγούμενο σεμινάριό μας, προγραμματίσαμε το STM32F103C8 με το Arduino IDE μέσω θύρας USB χωρίς να χρησιμοποιήσουμε τον προγραμματιστή FTDI. Μπορούμε να προχωρήσουμε στον προγραμματισμό σαν Arduino. Ο πλήρης κωδικός δίνεται παρακάτω στο τέλος του έργου.
Πρώτα έχουμε συμπεριλάβει αρχεία βιβλιοθήκης για λειτουργίες σερβο και LCD:
#περιλαμβάνω
Στη συνέχεια δηλώθηκαν οι καρφίτσες για την οθόνη LCD και την αρχικοποίησαν. Επίσης δήλωσαν λίγες άλλες μεταβλητές για PWM και ποτενσιόμετρο:
const int rs = PB0, en = PB1, d4 = PB10, d5 = PB11, d6 = PC13, d7 = PC14; LiquidCrystal lcd (rs, en, d4, d5, d6, d7); int servoPin = PA0; int potPin = PA3;
Εδώ έχουμε δημιουργήσει μεταβλητό σερβο με τύπο δεδομένων Σέρβο και το επισυνάψαμε σε καρφίτσα PWM που είχε δηλωθεί προηγουμένως.
Σερβο σερβο; servo.attach (servoPin);
Στη συνέχεια, διαβάστε την αναλογική τιμή από τον πείρο PA3 καθώς είναι ένας πείρος ADC μετατρέπει την αναλογική τάση (0-3.3) σε ψηφιακή μορφή (0-4095)
analogRead (potPin);
Δεδομένου ότι η ψηφιακή έξοδος είναι ανάλυση 12 bit, πρέπει να λάβουμε τιμές στο εύρος του βαθμού (0-170), διαιρεί την τιμή ADC (0-4096) σύμφωνα με τη μέγιστη γωνία 170 βαθμούς, οπότε διαιρούμε με 24.
γωνία = (ανάγνωση / 24);
Η παρακάτω δήλωση κάνει τον σερβοκινητήρα να περιστρέφει τον άξονα με τη δεδομένη γωνία.
servo.write (γωνία);
Ο πλήρης κώδικας δίνεται παρακάτω και εξηγείται καλά από σχόλια