- ADC0804 και Raspberry Pi:
- Απαιτούμενα στοιχεία:
- Επεξήγηση κυκλώματος:
- Επεξήγηση προγραμματισμού:
- Εργαζόμενος:
Το 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
Σε αυτό το σεμινάριο, θα διεπαφή ένα τσιπ ADC (Αναλογική σε ψηφιακή μετατροπή) στο Raspberry Pi. Γνωρίζουμε όλες τις παραμέτρους του αναλογικού, σημαίνει ότι διαφέρουν συνεχώς με την πάροδο του χρόνου. Ας πούμε για μια θερμοκρασία του δωματίου, η θερμοκρασία του δωματίου ποικίλλει με το χρόνο συνεχώς. Αυτή η θερμοκρασία παρέχεται με δεκαδικά ψηφία. Αλλά στον ψηφιακό κόσμο, δεν υπάρχουν δεκαδικά ψηφία, επομένως πρέπει να μετατρέψουμε την αναλογική τιμή σε ψηφιακή τιμή. Αυτή η διαδικασία μετατροπής γίνεται με τεχνική ADC. Μάθετε περισσότερα για το ADC εδώ: Εισαγωγή στο ADC0804
ADC0804 και Raspberry Pi:
Οι κανονικοί ελεγκτές έχουν κανάλια ADC αλλά για PI δεν υπάρχουν κανάλια ADC που παρέχονται εσωτερικά. Έτσι, εάν θέλουμε να διασυνδέσουμε οποιονδήποτε αναλογικό αισθητήρα χρειαζόμαστε μια μονάδα μετατροπής ADC Έτσι, για τους σκοπούς αυτούς θα μεταβούμε στο Interface ADC0804 με το Raspberry Pi.
Το ADC0804 είναι ένα τσιπ σχεδιασμένο για τη μετατροπή αναλογικού σήματος σε ψηφιακά δεδομένα 8 bit. Αυτό το τσιπ είναι μια από τις δημοφιλείς σειρές ADC. Είναι μια μονάδα μετατροπής 8bit, επομένως έχουμε τιμές ή 0 έως 255 τιμές. Με τάση μέτρησης έως 5V, θα έχουμε μια αλλαγή για κάθε 19,5mV. Ακολουθεί το Pinout του ADC0804:
Τώρα ένα άλλο σημαντικό πράγμα εδώ είναι, το ADC0804 λειτουργεί στα 5V και έτσι παρέχει έξοδο σε λογικό σήμα 5V. Σε έξοδο 8 ακίδων (που αντιπροσωπεύει 8 bit), κάθε ακίδα παρέχει έξοδο + 5V για να αντιπροσωπεύει τη λογική'1 '. Το πρόβλημα λοιπόν είναι ότι η λογική PI είναι + 3.3v, οπότε δεν μπορείτε να δώσετε λογική +5V στον ακροδέκτη + 3.3V GPIO του PI. Εάν δώσετε + 5V σε οποιονδήποτε ακροδέκτη GPIO PI, η πλακέτα θα υποστεί ζημιά.
Έτσι, στο επίπεδο λογικής σταδιακής από + 5V, θα χρησιμοποιούμε κύκλωμα διαχωριστή τάσης. Έχουμε συζητήσει το Voltage Divider Circuit που το εξετάσαμε προηγουμένως για περαιτέρω διευκρίνιση. Αυτό που θα κάνουμε είναι, χρησιμοποιούμε δύο αντιστάσεις για να διαιρέσουμε τη λογική +5V σε λογικές 2 * 2,5V. Έτσι μετά τη διαίρεση θα δώσουμε λογική + 2.5v στο PI. Έτσι, κάθε φορά που η λογική «1» παρουσιάζεται από το ADC0804 θα δούμε + 2.5V στο PI GPIO Pin, αντί για + 5V.
Μάθετε περισσότερα για τις καρφίτσες GPIO του Raspberry Pi εδώ και ακολουθήστε τα προηγούμενα σεμινάρια μας.
Απαιτούμενα στοιχεία:
Εδώ χρησιμοποιούμε το Raspberry Pi 2 Model B με το Raspbian Jessie OS. Όλες οι βασικές απαιτήσεις υλικού και λογισμικού συζητήθηκαν προηγουμένως, μπορείτε να το αναζητήσετε στην Εισαγωγή Raspberry Pi, εκτός από αυτό που χρειαζόμαστε:
- Σύνδεση ακίδων
- 220Ω ή 1KΩ αντίσταση (17 τεμάχια)
- 10K ποτ
- Πυκνωτής 0.1μF (2 τεμάχια)
- ADC0804 IC
- Πίνακας ψωμιού
Επεξήγηση κυκλώματος:
Λειτουργεί σε τάση τροφοδοσίας + 5v και μπορεί να μετρήσει ένα εύρος μεταβλητής τάσης σε εύρος 0-5V.
Οι συνδέσεις για διασύνδεση ADC0804 με Raspberry PI, φαίνονται στο διάγραμμα κυκλώματος παραπάνω.
Ο ADC έχει πάντα πολύ θόρυβο, αυτός ο θόρυβος μπορεί να επηρεάσει σημαντικά την απόδοση, οπότε χρησιμοποιούμε πυκνωτή 0.1uF για φιλτράρισμα θορύβου. Χωρίς αυτό θα υπάρξουν πολλές διακυμάνσεις στην έξοδο.
Το τσιπ λειτουργεί σε ρολόι ταλαντωτή RC (Resistor-Capacitor). Όπως φαίνεται στο διάγραμμα κυκλώματος, τα C2 και R20 σχηματίζουν ένα ρολόι. Το σημαντικό πράγμα που πρέπει να θυμάστε εδώ είναι ότι ο πυκνωτής C2 μπορεί να αλλάξει σε χαμηλότερη τιμή για υψηλότερο ρυθμό μετατροπής ADC. Ωστόσο, με μεγαλύτερη ταχύτητα θα υπάρξει μείωση της ακρίβειας. Έτσι, εάν η εφαρμογή απαιτεί μεγαλύτερη ακρίβεια, επιλέξτε τον πυκνωτή με υψηλότερη τιμή και για υψηλότερη ταχύτητα επιλέξτε τον πυκνωτή με χαμηλότερη τιμή.
Επεξήγηση προγραμματισμού:
Μόλις όλα συνδεθούν σύμφωνα με το διάγραμμα κυκλώματος, μπορούμε να ενεργοποιήσουμε το 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)
Ορίζουμε 8 ακίδες ως καρφίτσες εισόδου. Θα εντοπίσουμε 8 bit δεδομένων ADC από αυτές τις ακίδες.
IO.setup (4, IO.IN) IO.setup (17, IO.IN) IO.setup (27, IO.IN) IO.setup (22, IO.IN) IO.setup (5, IO.IN) IO.setup (6, IO.IN) IO.setup (13, IO.IN) IO.setup (19, IO.IN)
Σε περίπτωση που η συνθήκη στα τιράντες είναι αληθινή, οι δηλώσεις μέσα στο βρόχο θα εκτελεστούν μία φορά. Έτσι, εάν ο ακροδέκτης GPIO 19 πηγαίνει ψηλά, τότε οι δηλώσεις εντός του βρόχου IF θα εκτελεστούν μία φορά. Εάν ο ακροδέκτης GPIO 19 δεν πάει ψηλά, δεν θα εκτελεστούν οι δηλώσεις εντός του βρόχου IF.
if (IO.input (19) == True):
Η παρακάτω εντολή χρησιμοποιείται ως βρόχος για πάντα, με αυτήν την εντολή οι δηλώσεις μέσα σε αυτόν τον βρόχο θα εκτελούνται συνεχώς.
Ενώ 1:
Περαιτέρω επεξήγηση του Προγράμματος δίνεται στην Ενότητα Κώδικα παρακάτω.
Εργαζόμενος:
Αφού γράψετε το πρόγραμμα και το εκτελέσετε, θα δείτε το «0» στην οθόνη. «0» σημαίνει 0 βολτ στην είσοδο.
Αν προσαρμόσουμε το pot 10K που είναι συνδεδεμένο στο chip, θα δούμε την αλλαγή των τιμών στην οθόνη. Οι τιμές στην οθόνη συνεχίζουν να κυλούν συνεχώς, αυτές είναι οι ψηφιακές τιμές που διαβάζει το PI.
Πείτε αν φτάσουμε το pot στο μεσαίο σημείο, έχουμε + 2.5V στην είσοδο ADC0804. Βλέπουμε λοιπόν 128 στην οθόνη όπως φαίνεται παρακάτω.
Για αναλογική τιμή + 5V, θα έχουμε 255.
Έτσι, μεταβάλλοντας το δοχείο αλλάζουμε την τάση από 0 έως + 5V στην είσοδο ADC0804. Με αυτό το PI διαβάστε τιμές από 0-255. Οι τιμές εκτυπώνονται στην οθόνη.
Έχουμε λοιπόν το Interfaced ADC0804 στο Raspberry Pi.