- PWM (Διαμόρφωση πλάτους παλμού):
- Servo Motor και PWM:
- Απαιτούμενα στοιχεία:
- Διάγραμμα κυκλώματος:
- Επεξήγηση εργασίας και προγραμματισμού:
Το Raspberry Pi είναι ένας πίνακας βασισμένος σε επεξεργαστή αρχιτεκτονικής ARM σχεδιασμένος για ηλεκτρονικούς μηχανικούς και χομπίστες. Το PI είναι μια από τις πιο αξιόπιστες πλατφόρμες ανάπτυξης έργων εκεί έξω τώρα. Με υψηλότερη ταχύτητα επεξεργαστή και 1 GB RAM, το PI μπορεί να χρησιμοποιηθεί για πολλά έργα υψηλού προφίλ, όπως η επεξεργασία εικόνας και το Internet of Things.
Για την εκτέλεση οποιωνδήποτε έργων υψηλού προφίλ, πρέπει να κατανοήσουμε τις βασικές λειτουργίες του PI. Θα καλύψουμε όλες τις βασικές λειτουργίες του Raspberry Pi σε αυτά τα σεμινάρια. Σε κάθε σεμινάριο θα συζητήσουμε μία από τις λειτουργίες του PI. Μέχρι το τέλος αυτής της σειράς Raspberry Pi Tutorial, θα μπορείτε να κάνετε έργα υψηλού προφίλ μόνοι σας. Παρακολουθήστε τα παρακάτω σεμινάρια:
- Ξεκινώντας με το Raspberry Pi
- Διαμόρφωση Raspberry Pi
- LED Blinky
- Διασύνδεση κουμπιών Raspberry Pi
- Παραγωγή Raspberry Pi PWM
- Έλεγχος DC Motor με χρήση Raspberry Pi
- Έλεγχος κινητήρα Stepper με Raspberry Pi
- Interfacing Shift Register με Raspberry Pi
- Εκμάθηση Raspberry Pi ADC
Σε αυτό το σεμινάριο θα ελέγξουμε το Servo Motor με το Raspberry Pi. Πριν πάμε στο σερβο, ας μιλήσουμε για το PWM επειδή προέρχεται η ιδέα του ελέγχου του Servo Motor.
PWM (Διαμόρφωση πλάτους παλμού):
Έχουμε μιλήσει προηγουμένως για το PWM πολλές φορές: Διαμόρφωση πλάτους παλμού με ATmega32, PWM με Arduino Uno, PWM με 555 χρονοδιακόπτη IC και PWM με Arduino Due. Το PWM σημαίνει «Pulse Width Modulation». Το PWM είναι μια μέθοδος που χρησιμοποιείται για τη λήψη μεταβλητής τάσης από ένα σταθερό τροφοδοτικό. Για καλύτερη κατανόηση, το PWM εξετάζει το παρακάτω κύκλωμα,
Στην παραπάνω εικόνα, εάν ο διακόπτης κλείνει συνεχώς για μια χρονική περίοδο, η λυχνία LED θα είναι «ON» κατά τη διάρκεια αυτής της περιόδου συνεχώς. Εάν ο διακόπτης είναι κλειστός για μισό δευτερόλεπτο και ανοίξει για το επόμενο μισό δευτερόλεπτο, τότε η λυχνία LED θα είναι αναμμένη μόνο στο πρώτο μισό δευτερόλεπτο. Τώρα η αναλογία για την οποία το LED είναι αναμμένο σε ολόκληρο τον χρόνο ονομάζεται Duty Cycle και μπορεί να υπολογιστεί ως εξής:
Κύκλος λειτουργίας = Χρόνος ενεργοποίησης / (Χρόνος ενεργοποίησης + χρόνος απενεργοποίησης)
Κύκλος εργασίας = (0,5 / (0,5 + 0,5)) = 50%
Έτσι, η μέση τάση εξόδου θα είναι 50% της τάσης της μπαταρίας.
Καθώς αυξάνουμε την ταχύτητα ΕΝΕΡΓΟΠΟΙΗΣΗΣ και ΑΠΕΝΕΡΓΟΠΟΙΗΣΗΣ σε επίπεδο, θα βλέπουμε τη λυχνία LED να είναι αμυδρή αντί να είναι ΕΝΕΡΓΟΠΟΙΗΜΕΝΗ και ΑΝΕΝΕΡΓΗ. Αυτό συμβαίνει επειδή τα μάτια μας δεν μπορούν να πιάσουν σαφώς συχνότητες υψηλότερες από 25Hz. Σκεφτείτε τον κύκλο των 100 ms, ενώ η λυχνία LED είναι σβηστή για 30msec και ON για 70 msec. Θα έχουμε το 70% της σταθερής τάσης στην έξοδο, οπότε το LED θα ανάβει συνεχώς με το 70% της έντασης.
Το Duty Ratio κυμαίνεται από 0 έως 100. Το '0' σημαίνει εντελώς ΑΠΕΝΕΡΓΟΠΟΙΗΜΕΝΟ και το '100' είναι εντελώς ΕΝΕΡΓΟΠΟΙΗΜΕΝΟ. Αυτή η αναλογία Duty είναι πολύ σημαντική για το Servo Motor. Η θέση του Servo Motor καθορίζεται από αυτό το Duty Ratio. Ελέγξτε αυτό για επίδειξη PWM με LED και Raspberry Pi.
Servo Motor και PWM:
Το Servo Motor είναι ένας συνδυασμός κινητήρα DC, συστήματος ελέγχου θέσης και γραναζιών. Οι σερβοί έχουν πολλές εφαρμογές στον σύγχρονο κόσμο και με αυτό, διατίθενται σε διάφορα σχήματα και μεγέθη. Θα χρησιμοποιήσουμε το SG90 Servo Motor σε αυτό το σεμινάριο, είναι ένα από τα δημοφιλή και φθηνότερα. Το SG90 είναι σερβο 180 μοιρών. Έτσι με αυτό το σερβο μπορούμε να τοποθετήσουμε τον άξονα από 0-180 μοίρες.
Ένας Servo Motor έχει κυρίως τρία καλώδια, ένα για θετική τάση, ένα άλλο για γείωση και το τελευταίο για ρύθμιση θέσης. Το κόκκινο καλώδιο συνδέεται στην τροφοδοσία, το καλώδιο καφέ συνδέεται στη γείωση και το κίτρινο καλώδιο (ή ΛΕΥΚΟ) συνδέεται στο σήμα.
Σε σερβο, έχουμε ένα σύστημα ελέγχου που παίρνει το σήμα PWM από τον πείρο σήματος. Αποκωδικοποιεί το σήμα και λαμβάνει την αναλογία λειτουργίας από αυτό. Μετά από αυτό, συγκρίνει την αναλογία με τις προκαθορισμένες τιμές θέσεων. Εάν υπάρχει διαφορά στις τιμές, προσαρμόζει ανάλογα τη θέση του σερβο. Έτσι, η θέση του άξονα του σερβοκινητήρα βασίζεται στην αναλογία λειτουργίας του σήματος PWM στον πείρο σήματος.
Η συχνότητα του σήματος PWM (Pulse Width Modulated) μπορεί να διαφέρει ανάλογα με τον τύπο του σερβοκινητήρα. Για SG90 η συχνότητα του σήματος PWM είναι 50Hz. Για να μάθετε τη συχνότητα λειτουργίας του σερβο σας, ελέγξτε το φύλλο δεδομένων για το συγκεκριμένο μοντέλο. Έτσι, όταν επιλεγεί η συχνότητα, το άλλο σημαντικό πράγμα εδώ είναι το DUTY RATIO του σήματος PWM.
Ο παρακάτω πίνακας δείχνει τη θέση Servo για το συγκεκριμένο Duty Ratio. Μπορείτε να πάρετε οποιαδήποτε γωνία στο μεταξύ επιλέγοντας την τιμή ανάλογα. Έτσι, για 45º σερβο η αναλογία Duty πρέπει να είναι «5» ή 5%.
ΘΕΣΗ |
ΚΑΘΗΚΟΝΤΟΣ ΡΑΤΙΟ |
0º |
2.5 |
90º |
7.5 |
180º |
12.5 |
Πριν από τη διασύνδεση του Servo Motor με το Raspberry Pi, μπορείτε να δοκιμάσετε το servo σας με τη βοήθεια αυτού του Servo Motor Tester Circuit. Δείτε επίσης τα παρακάτω έργα Servo:
- Servo Motor Control με χρήση του Arduino
- Servo Motor Control με Arduino Due
- Servo Motor Interfacing με 8051 μικροελεγκτή
- Servo Motor Control χρησιμοποιώντας MATLAB
- Servo Motor Control από Flex Sensor
- Έλεγχος θέσης σερβο με βάρος (αισθητήρας δύναμης)
Απαιτούμενα στοιχεία:
Εδώ χρησιμοποιούμε το Raspberry Pi 2 Model B με το Raspbian Jessie OS. Όλες οι βασικές απαιτήσεις υλικού και λογισμικού συζητήθηκαν προηγουμένως, μπορείτε να το αναζητήσετε στην Εισαγωγή Raspberry Pi, εκτός από αυτό που χρειαζόμαστε:
- Σύνδεση ακίδων
- Πυκνωτής 1000uF
- SG90 σερβοκινητήρας
- Ψωμί
Διάγραμμα κυκλώματος:
Το A1000µF πρέπει να είναι συνδεδεμένο μέσω της ράγας τροφοδοσίας + 5V, διαφορετικά το PI μπορεί να κλείσει τυχαία ενώ ελέγχει το σερβο.
Επεξήγηση εργασίας και προγραμματισμού:
Μόλις όλα συνδεθούν σύμφωνα με το διάγραμμα κυκλώματος, μπορούμε να ενεργοποιήσουμε το PI για να γράψουμε το πρόγραμμα σε PYHTON.
Θα μιλήσουμε για λίγες εντολές που πρόκειται να χρησιμοποιήσουμε στο πρόγραμμα PYHTON, Πρόκειται να εισαγάγουμε αρχείο GPIO από τη βιβλιοθήκη, η παρακάτω λειτουργία μας επιτρέπει να προγραμματίζουμε τις καρφίτσες GPIO του PI. Μετονομάζουμε επίσης "GPIO" σε "IO", οπότε στο πρόγραμμα όποτε θέλουμε να αναφερθούμε στις καρφίτσες GPIO θα χρησιμοποιήσουμε τη λέξη "IO".
εισαγάγετε RPi.GPIO ως IO
Μερικές φορές, όταν οι ακίδες GPIO, τις οποίες προσπαθούμε να χρησιμοποιήσουμε, μπορεί να κάνουν κάποιες άλλες λειτουργίες. Σε αυτήν την περίπτωση, θα λάβουμε προειδοποιήσεις κατά την εκτέλεση του προγράμματος. Η παρακάτω εντολή λέει στο PI να αγνοήσει τις προειδοποιήσεις και να συνεχίσει το πρόγραμμα.
IO.setwarnings (Λάθος)
Μπορούμε να παραπέμψουμε τους ακροδέκτες GPIO του PI, είτε με τον αριθμό καρφίτσας επί του σκάφους είτε με τον αριθμό λειτουργίας τους. Όπως το «PIN 29» στον πίνακα είναι «GPIO5». Λοιπόν, λέμε εδώ ότι θα αντιπροσωπεύσουμε το pin εδώ με «29» ή «5».
IO.setmode (IO.BCM)
Ρυθμίζουμε το PIN39 ή το GPIO19 ως πείρο εξόδου. Θα λάβουμε έξοδο PWM από αυτόν τον πείρο.
IO.setup (19, IO.OUT)
Αφού ρυθμίσουμε τον ακροδέκτη εξόδου, πρέπει να ρυθμίσουμε τον ακροδέκτη ως ακροδέκτη εξόδου PWM, p = IO.PWM (κανάλι εξόδου, συχνότητα σήματος PWM)
Η παραπάνω εντολή είναι για τη ρύθμιση του καναλιού και επίσης για τη ρύθμιση της συχνότητας του καναλιού ». «p» εδώ είναι μια μεταβλητή που μπορεί να είναι οτιδήποτε. Χρησιμοποιούμε το GPIO19 ως το κανάλι εξόδου PWM. "Συχνότητα σήματος PWM" θα επιλέξουμε 50, καθώς η συχνότητα λειτουργίας SG90 είναι 50Hz.
Η παρακάτω εντολή χρησιμοποιείται για την έναρξη της παραγωγής σήματος PWM. Το « DUTYCYCLE » είναι για τον καθορισμό του λόγου «Ενεργοποίηση» όπως εξηγήθηκε προηγουμένως, p.start (ΑΥΤΟΚΙΝΗΤΟΣ)
Η παρακάτω εντολή χρησιμοποιείται ως βρόχος για πάντα, με αυτήν την εντολή οι δηλώσεις μέσα σε αυτόν τον βρόχο θα εκτελούνται συνεχώς.
Ενώ 1:
Εδώ το πρόγραμμα για τον έλεγχο του σερβο χρησιμοποιώντας Raspberry Pi παρέχει ένα σήμα PWM στο GPIO19. Ο λόγος Duty του σήματος PWM αλλάζει μεταξύ τριών τιμών για τρία δευτερόλεπτα. Έτσι, για κάθε δευτερόλεπτο, το Servo περιστρέφεται σε μια θέση που καθορίζεται από το Duty Ratio. Το σερβο περιστρέφεται συνεχώς σε 0º, 90º και 180º σε τρία δευτερόλεπτα.