Το Raspberry Pi είναι ένας πίνακας βασισμένος σε επεξεργαστή αρχιτεκτονικής ARM σχεδιασμένος για ηλεκτρονικούς μηχανικούς και χομπίστες. Το PI είναι μια από τις πιο αξιόπιστες πλατφόρμες ανάπτυξης έργων εκεί έξω τώρα. Με υψηλότερη ταχύτητα επεξεργαστή και 1 GB RAM, το PI μπορεί να χρησιμοποιηθεί για πολλά έργα υψηλού προφίλ, όπως η επεξεργασία εικόνας και το Internet of Things.
Για την εκτέλεση οποιωνδήποτε έργων υψηλού προφίλ, πρέπει να κατανοήσουμε τις βασικές λειτουργίες του PI. Θα καλύψουμε όλες τις βασικές λειτουργίες του Raspberry Pi σε αυτά τα σεμινάρια. Σε κάθε σεμινάριο θα συζητήσουμε μία από τις λειτουργίες του PI. Μέχρι το τέλος της σειράς σεμιναρίων θα μπορείτε να κάνετε έργα υψηλού προφίλ μόνοι σας. Ελέγξτε αυτά για να ξεκινήσετε με το Raspberry Pi και το Raspberry Pi Configuration.
Έχουμε συζητήσει τη δημιουργία LED Blinky, Button Interfacing και PWM σε προηγούμενα σεμινάρια. Σε αυτό το σεμινάριο θα ελέγξουμε την ταχύτητα ενός κινητήρα DC χρησιμοποιώντας την τεχνική Raspberry Pi και PWM. Το PWM (Pulse Width Modulation) είναι μια μέθοδος που χρησιμοποιείται για τη λήψη μεταβλητής τάσης από σταθερή πηγή ισχύος. Έχουμε συζητήσει για το PWM στο προηγούμενο σεμινάριο.
Υπάρχουν 40 καρφίτσες εξόδου GPIO στο Raspberry Pi 2. Αλλά από τους 40, μπορούν να προγραμματιστούν μόνο 26 ακροδέκτες GPIO (GPIO2 έως GPIO27). Ορισμένες από αυτές τις ακίδες εκτελούν ορισμένες ειδικές λειτουργίες. Με το ειδικό GPIO να παραμεριστεί, απομένουν 17 GPIO. Για να μάθετε περισσότερα για τις καρφίτσες GPIO, ανατρέξτε στο: Αναβοσβήνει LED με Raspberry Pi
Κάθε ένας από αυτούς τους ακροδέκτες 17 GPIO μπορεί να αποδώσει έως 15mA. Και το άθροισμα των ρευμάτων από όλες τις ακίδες GPIO δεν μπορεί να υπερβαίνει τα 50mA. Έτσι μπορούμε να αντλήσουμε κατά μέσο όρο 3mA από κάθε μία από αυτές τις ακίδες GPIO. Επομένως, δεν πρέπει να παραβιάζετε αυτά τα πράγματα εκτός και αν ξέρετε τι κάνετε.
Υπάρχουν πίνακες εξόδου ισχύος + 5V (Pin 2 & 4) και + 3.3V (Pin 1 & 17) για τη σύνδεση άλλων μονάδων και αισθητήρων. Αυτή η τροφοδοσία συνδέεται παράλληλα με την ισχύ του επεξεργαστή. Έτσι, η λήψη Υψηλού ρεύματος από αυτόν τον ηλεκτροκινητήρα επηρεάζει τον Επεξεργαστή. Υπάρχει μια ασφάλεια στην πλακέτα PI η οποία θα ενεργοποιηθεί μόλις εφαρμόσετε υψηλό φορτίο. Μπορείτε να τραβήξετε με ασφάλεια 100mA από τη ράγα + 3.3V. Μιλάμε για αυτό εδώ γιατί; συνδέουμε τον κινητήρα DC στο + 3.3V. Λαμβάνοντας υπόψη το όριο ισχύος, μπορούμε να συνδέσουμε μόνο κινητήρα χαμηλής ισχύος εδώ, εάν θέλετε να κινηθείτε κινητήρα υψηλής ισχύος, εξετάστε το ενδεχόμενο να τον ενεργοποιήσετε από ξεχωριστή πηγή ισχύος.
Απαιτούμενα στοιχεία:
Εδώ χρησιμοποιούμε το Raspberry Pi 2 Model B με το Raspbian Jessie OS. Όλες οι βασικές απαιτήσεις υλικού και λογισμικού συζητήθηκαν προηγουμένως, μπορείτε να το αναζητήσετε στην Εισαγωγή Raspberry Pi, εκτός από αυτό που χρειαζόμαστε:
- Σύνδεση ακίδων
- 220Ω ή 1ΚΩ αντίσταση (3)
- Μικρός κινητήρας DC
- Κουμπιά (2)
- Τρανζίστορ 2N2222
- 1N4007 Δίοδος
- Πυκνωτής - 1000uF
- Πίνακας ψωμιού
Επεξήγηση κυκλώματος:
Όπως ειπώθηκε νωρίτερα, δεν μπορούμε να αντλήσουμε περισσότερα από 15mA από οποιουσδήποτε ακροδέκτες GPIO και ο κινητήρας DC τραβάει περισσότερα από 15mA, επομένως το PWM που παράγεται από το Raspberry Pi δεν μπορεί να τροφοδοτηθεί απευθείας στον κινητήρα DC. Έτσι, εάν συνδέσουμε τον κινητήρα απευθείας στο PI για έλεγχο ταχύτητας, η πλακέτα μπορεί να υποστεί μόνιμη ζημιά.
Έτσι θα χρησιμοποιήσουμε ένα τρανζίστορ NPN (2N2222) ως συσκευή εναλλαγής. Αυτό το τρανζίστορ κινεί τον κινητήρα DC υψηλής ισχύος λαμβάνοντας σήμα PWM από το PI. Εδώ πρέπει να προσέξουμε ότι η λανθασμένη σύνδεση του τρανζίστορ μπορεί να φορτώσει πολύ την πλακέτα.
Ο κινητήρας είναι επαγωγικός και έτσι, ενώ αλλάζουμε τον κινητήρα, βιώνουμε επαγωγική κίνηση. Αυτό εμβολιασμού θα ζεσταθεί το τρανζίστορ σε μεγάλο βαθμό, γι 'αυτό θα είναι με τη χρήση διόδων (1N4007) για να παρέχουν προστασία σε τρανζίστορ κατά επαγωγικά τιτλοδότηση.
Προκειμένου να μειωθούν οι διακυμάνσεις τάσης, θα συνδέσουμε έναν πυκνωτή 1000uF σε όλη την παροχή ισχύος, όπως φαίνεται στο Διάγραμμα κυκλώματος.
Επεξήγηση εργασίας:
Μόλις όλα συνδεθούν σύμφωνα με το διάγραμμα κυκλώματος, μπορούμε να ενεργοποιήσουμε το PI για να γράψουμε το πρόγραμμα σε PYHTON.
Θα μιλήσουμε για λίγες εντολές που πρόκειται να χρησιμοποιήσουμε στο πρόγραμμα PYHTON.
Πρόκειται να εισαγάγουμε αρχείο GPIO από τη βιβλιοθήκη, η παρακάτω λειτουργία μας επιτρέπει να προγραμματίζουμε τις καρφίτσες GPIO του PI. Μετονομάζουμε επίσης "GPIO" σε "IO", οπότε στο πρόγραμμα όποτε θέλουμε να αναφερθούμε στις καρφίτσες GPIO θα χρησιμοποιήσουμε τη λέξη "IO".
εισαγάγετε RPi.GPIO ως IO
Μερικές φορές, όταν οι ακίδες GPIO, τις οποίες προσπαθούμε να χρησιμοποιήσουμε, μπορεί να κάνουν κάποιες άλλες λειτουργίες. Σε αυτήν την περίπτωση, θα λάβουμε προειδοποιήσεις κατά την εκτέλεση του προγράμματος. Η παρακάτω εντολή λέει στο PI να αγνοήσει τις προειδοποιήσεις και να συνεχίσει το πρόγραμμα.
IO.setwarnings (Λάθος)
Μπορούμε να παραπέμψουμε τους ακροδέκτες GPIO του PI, είτε με τον αριθμό καρφίτσας επί του σκάφους είτε με τον αριθμό λειτουργίας τους. Όπως το «PIN 35» στον πίνακα είναι «GPIO19». Λοιπόν, λέμε εδώ είτε πρόκειται να αντιπροσωπεύσουμε το pin εδώ με "35" ή "19".
IO.setmode (IO.BCM)
Ρυθμίζουμε το GPIO19 (ή το PIN35) ως πείρο εξόδου. Θα λάβουμε έξοδο PWM από αυτόν τον πείρο.
IO.setup (19, IO.IN)
Αφού ορίσουμε τον πείρο ως έξοδο, πρέπει να ρυθμίσουμε τον πείρο ως ακροδέκτη εξόδου PWM
p = IO.PWM (κανάλι εξόδου, συχνότητα σήματος PWM)
Η παραπάνω εντολή είναι για τη ρύθμιση του καναλιού και επίσης για τη ρύθμιση της συχνότητας του σήματος PWM. «p» εδώ είναι μια μεταβλητή που μπορεί να είναι οτιδήποτε. Χρησιμοποιούμε το GPIO19 ως κανάλι εξόδου PWM. Η « συχνότητα του σήματος PWM » έχει επιλεγεί 100, καθώς δεν θέλουμε να δούμε να αναβοσβήνει η λυχνία LED.
Η παρακάτω εντολή χρησιμοποιείται για να ξεκινήσει η παραγωγή σήματος PWM, το " DUTYCYCLE " είναι για τον καθορισμό του λόγου ενεργοποίησης, 0 σημαίνει ότι το LED θα είναι ON για 0% του χρόνου, 30 σημαίνει ότι το LED θα είναι ON για το 30% του χρόνου και 100 σημαίνει εντελώς ON.
p.start (ΑΥΤΟΚΙΝΗΤΟΣ)
Σε περίπτωση που η Συνθήκη στα στηρίγματα είναι αληθινή, οι δηλώσεις στο εσωτερικό του βρόχου θα εκτελεστούν μία φορά. Έτσι, εάν ο ακροδέκτης GPIO 26 πέσει χαμηλά, τότε οι δηλώσεις εντός του βρόχου IF θα εκτελεστούν μία φορά. Εάν ο ακροδέκτης GPIO 26 δεν πέσει χαμηλά, τότε οι δηλώσεις εντός του βρόχου IF δεν θα εκτελεστούν.
εάν (IO.input (26) == False):
Ενώ το 1: χρησιμοποιείται για το άπειρο βρόχο. Με αυτήν την εντολή, οι δηλώσεις εντός αυτού του βρόχου θα εκτελούνται συνεχώς.
Έχουμε όλες τις εντολές που απαιτούνται για να επιτύχουμε τον έλεγχο ταχύτητας με αυτό.
Αφού γράψετε το πρόγραμμα και το εκτελέσατε, το μόνο που μένει είναι να χειριστείτε το χειριστήριο. Έχουμε δύο κουμπιά συνδεδεμένα στο PI. ένα για αύξηση του Duty Cycle του σήματος PWM και άλλο για τη μείωση του Duty Cycle του σήματος PWM. Πατώντας ένα κουμπί, η ταχύτητα του κινητήρα DC αυξάνεται και πατώντας το άλλο κουμπί, η ταχύτητα του κινητήρα DC μειώνεται. Με αυτό έχουμε επιτύχει το DC Motor Speed Control από το Raspberry Pi.
Ελέγξτε επίσης:
- Έλεγχος ταχύτητας κινητήρα DC
- DC Motor Control με χρήση Arduino