Το Raspberry Pi είναι μια εξαιρετική συσκευή για διάφορα ηλεκτρονικά έργα, αλλά χρησιμοποιώντας έναν μετατροπέα ADC, μπορείτε να επεκτείνετε τις δυνατότητές του για τη μέτρηση αναλογικών σημάτων και την αλληλεπίδραση με ένα ευρύτερο φάσμα συσκευών.
Το Raspberry Pi δεν έχει τυπικά αναλογικές εισόδους. Αυτό το θέτει σε μειονεκτική θέση σε σύγκριση με πλακέτες που βασίζονται σε μικροελεγκτές όπως το Arduino.
Αλλά μην απελπίζεστε: υπάρχουν πολλές επιλογές που πρέπει να εξετάσετε. Μπορείτε να ξεκινήσετε με ένα Raspberry Pi και ένα εξωτερικό ADC. Σε αυτόν τον οδηγό, θα σας δώσουμε μια ολοκληρωμένη επισκόπηση του τρόπου χρήσης ενός μετατροπέα ADC με Raspberry Pi, εστιάζοντας στα βασικά βήματα και στα πιθανά οφέλη. Διαβάστε παρακάτω για να ανακαλύψετε πώς μπορείτε να αξιοποιήσετε στο έπακρο τη συσκευή σας και να την ενσωματώσετε αποτελεσματικά στα ηλεκτρονικά σας έργα. Επαληθεύω Τι είναι ο μετατροπέας αναλογικού σε ψηφιακό (ADC); Κατανοήστε το έργο του και τη σημασία του στην εποχή της ψηφιακής τεχνολογίας.

Γρήγοροι σύνδεσμοι
Γιατί θέλετε να προσθέσετε καταχωρήσεις;
Ο πραγματικός κόσμος είναι γεμάτος από φαινόμενα που μπορούν εύκολα να περιγραφούν χρησιμοποιώντας τάση, αν έχετε το σωστό κύκλωμα. Μετατρέψτε αυτές τις ηλεκτρικές τάσεις σε ψηφιακή μορφή και μπορείτε να τις καταγράψετε, να τις επεξεργαστείτε και να τις χρησιμοποιήσετε για τον έλεγχο των παραμέτρων και άλλων συσκευών.
Ίσως ψάχνετε να παρακολουθείτε την υγρασία του εδάφους σας, τη θερμοκρασία του θερμοκηπίου σας ή το βάρος του χάμστερ σας. Μπορεί να ψάχνετε να προσθέσετε έναν έλεγχο έντασης στο Pi σας, να δημιουργήσετε έναν ισοσταθμιστή ή να σχεδιάσετε ένα joystick από την αρχή. Οι δυνατότητες, λίγο πολύ, είναι απεριόριστες.
Επιλογές ADC
Λοιπόν, ποιο ADC είναι καλύτερο για αρχάριους;
Μεταξύ των πιο δημοφιλών και απλών επιλογών είναι τα chipset MCP3004 (Και MCP3008) από το Microchip. Θα λάβετε τέσσερα (ή οκτώ) κανάλια 10-bit, τα οποία μπορούν να διαβάσουν έως και 200k SPS. Από την άλλη, υπάρχουν συσκευές ADS111x της Texas Instruments, οι οποίες διαβάζουν 16 bit στα 860 SPS. Επομένως, υπάρχει μια αντιστάθμιση μεταξύ ταχύτητας και ακρίβειας (και, φυσικά, τιμής).
Πολλοί μικροελεγκτές διαθέτουν ενσωματωμένους μετατροπείς ADC. Το ATMega που βρίσκετε στο μέσο Arduino θα παρέχει πολλά κανάλια 10-bit, συν όλα τα άλλα. Αυτό είναι που επιτρέπει στο Arduino να παρέχει αναλογικές εισόδους όπου το Raspberry Pi δεν μπορεί. Εάν έχετε ήδη ένα Arduino που συμμετέχει στην εγκατάσταση σας και τα 10 bit είναι αρκετή ακρίβεια, αυτή μπορεί να είναι στην πραγματικότητα η πιο εύκολη μέθοδος.
Εδώ, θα το κρατήσουμε απλό, με το ADS1115 της Adafruit. Επαληθεύω Τα πλεονεκτήματα και τα μειονεκτήματα της χρήσης ενός κλώνου Arduino στα έργα σας.

Τι είναι ένας προγραμματιζόμενος ενισχυτής απολαβής;
Αυτό το τσιπ διαθέτει μερικά ενδιαφέροντα χαρακτηριστικά, συμπεριλαμβανομένου ενός Προγραμματιζόμενου ενισχυτή κέρδους (PGA). Το οποίο θα σας επιτρέψει να προσαρμόσετε ψηφιακά το επιθυμητό εύρος τιμών, έως ένα κλάσμα της τάσης. Με τον αριθμό των τιμών που μπορούν να αντιπροσωπεύουν τα 16 bit, αυτό θα σας επιτρέψει να ανιχνεύσετε διαφορές τόσο μικρές όσο λίγα microvolt.
Το πλεονέκτημα εδώ είναι ότι μπορείτε να αλλάξετε το κέρδος στη μέση. Άλλα τσιπ, όπως το MCP3004, ακολουθούν διαφορετική προσέγγιση. Έρχεται με μια πρόσθετη ακίδα, για την οποία μπορείτε να παρέχετε μια τάση αναφοράς.
Τι γίνεται με την πολυπλεξία;
Ένας πολυπλέκτης (ή mux) είναι ένας διακόπτης που σας επιτρέπει να διαβάζετε πολλαπλές εισόδους με ένα μόνο ADC. Εάν το τσιπ ADC σας έχει πολλές θύρες εισόδου, τότε συμβαίνει κάποια εσωτερική πολυπλεξία. Το mux του ADS1115 επιτρέπει τέσσερις εισόδους, τις οποίες μπορείτε να επιλέξετε μέσω εσωτερικών καταχωρητών.
Χειρισμός αρχείων
Το ADS1115 προσφέρει αυτές τις επιλογές, καθώς και μερικές άλλες. Μπορείτε να χειριστείτε τον πολυπλέκτη, να ρυθμίσετε το κέρδος, να ενεργοποιήσετε τον ενσωματωμένο συγκριτή, να αλλάξετε τον ρυθμό δειγματοληψίας και να θέσετε τη συσκευή σε κατάσταση αναστολής λειτουργίας χαμηλής κατανάλωσης, πατώντας μερικά πλήκτρα.
Αλλά πού είναι αυτά τα κλειδιά; Υπάρχουν μέσα στο πακέτο, με τη μορφή πολύ μικρών κομματιών μνήμης που ονομάζονται καταχωρητές. Για να ενεργοποιήσετε μια συγκεκριμένη δυνατότητα, απλώς ορίστε το σχετικό bit σε 1, αντί για 0.
Κοιτάζοντας ένα φύλλο δεδομένων ADS111xΘα διαπιστώσετε ότι αυτά τα μοντέλα διαθέτουν τέσσερις καταχωρητές, συμπεριλαμβανομένων καταχωρητών διαμόρφωσης που διέπουν τη συμπεριφορά της συσκευής.

Για παράδειγμα, τα bit 14 έως 12 ελέγχουν τον πολυπλέκτη. Χρησιμοποιώντας αυτά τα τρία bit, μπορείτε να επιλέξετε από οκτώ διαμορφώσεις. Ο αριθμός που θέλετε εδώ είναι "100", που θα δώσει τη διαφορά μεταξύ της μηδενικής καταχώρισης και του ελάχιστου. Από την άλλη πλευρά, τα bit 7 έως 5 ελέγχουν τον ρυθμό δειγματοληψίας. Εάν θέλετε το μέγιστο των 860 δειγμάτων ανά δευτερόλεπτο, μπορείτε να το ρυθμίσετε στο "111".
Μόλις μάθετε ποιες επιλογές θέλετε να ορίσετε, θα έχετε δύο byte για αποστολή στο ADC. Εάν αργότερα θέλετε να ορίσετε ένα μεμονωμένο bit εδώ ή εκεί, μπορείτε να το χειριστείτε μεμονωμένα χρησιμοποιώντας τελεστές bit.
Εδώ είναι που μπορεί να μπερδευτεί. Σε αυτήν την περίπτωση, το δυαδικό δεν αντιπροσωπεύει μια τιμή, αλλά μάλλον τις τιμές των μεμονωμένων μετασχηματιστών. Μπορείτε να εκφράσετε αυτές τις μεταβλητές ως έναν μεγάλο αριθμό, σε δεκαδικό ή δεκαεξαδικό. Αλλά αν θέλετε να αποφύγετε το άγχος, θα πρέπει να παραμείνετε στη δυαδική έκδοση, η οποία είναι πιο ευανάγνωστη.
Καλώδια σύνδεσης
Μπορείτε να συνδέσετε αυτόν τον προσαρμογέα απευθείας στον ενιαίο πίνακα. Θα δέχεται εισόδους θετικής τάσης μεταξύ 2 και 5.5 βολτ, πράγμα που σημαίνει ότι η ράγα 3.3 volt στο Raspberry Pi θα λειτουργεί μια χαρά.
Συνδέστε τις εισόδους SDA και SCL στις αντίστοιχες εισόδους στο RPi και κάντε τα ίδια πράγματα με τη γείωση και τα 3.3 V. Πάρτε ένα βολτόμετρο μεταξύ των γραμμών γείωσης και τάσης και, στη συνέχεια, βάλτε το μεσαίο καλώδιο στην πρώτη είσοδο του ADC. Αυτό είναι το μόνο που χρειάζεστε για να ξεκινήσετε!
Η ενασχόληση με το I2C
Διαφορετικά ADC λειτουργούν σε διαφορετικά πρωτόκολλα. Στην περίπτωση του ADS1115, θα χρησιμοποιήσουμε το I2C.
Το παρακάτω παράδειγμα θα αλληλεπιδράσει με το ADC χρησιμοποιώντας Python. Αλλά πριν το κάνετε αυτό, θα πρέπει να το ρυθμίσετε. Οι πρόσφατες εκδόσεις του Raspberry Pi OS το έχουν κάνει πολύ απλό. Παω σε Προτιμήσεις > Διαμόρφωση Raspberry Pi. Στη συνέχεια, από την καρτέλα Διεπαφές, ενεργοποιήστε το I2C.

Για να βεβαιωθείτε ότι όλα λειτουργούν, ανοίξτε το Terminal και εκτελέστε:
sudo i2cdetect -y 1Αυτή η εντολή θα παράγει ένα πλέγμα. Αν υποθέσουμε ότι όλα λειτουργούν και τα έχετε συνδέσει σωστά, θα δείτε μια νέα τιμή να εμφανίζεται στο πλέγμα. Αυτή είναι η διεύθυνση του ADC σας. Λάβετε υπόψη σας εδώ ότι είναι μια δεκαεξαδική τιμή, επομένως πρέπει να της τοποθετήσετε το πρόθεμα "0x" όταν το χρησιμοποιείτε στον παρακάτω κώδικα. Και εδώ είναι 0x48:

Αφού έχετε τη διεύθυνση, μπορείτε να χρησιμοποιήσετε τη βιβλιοθήκη SMBus για να στείλετε εντολές I2C. Εδώ θα ασχοληθείτε με δύο μεθόδους. Το πρώτο είναι write_word_data(), το οποίο δέχεται τρία ορίσματα: τη διεύθυνση της συσκευής, τον καταχωρητή στον οποίο γράφετε και την τιμή που θέλετε να γράψετε.
Το δεύτερο είναι read_word_data(), Το οποίο δέχεται μόνο τη διεύθυνση και το ιστορικό της συσκευής. Το ADC θα διαβάζει τις τάσεις συνεχώς και θα αποθηκεύει το αποτέλεσμα στον καταχωρητή μεταγωγής. Χρησιμοποιώντας αυτήν τη μέθοδο, μπορείτε να ανακτήσετε τα περιεχόμενα αυτής της εγγραφής.
Μπορείτε να ομορφύνετε λίγο το αποτέλεσμα και μετά να το εκτυπώσετε. Πριν επιστρέψετε στην αρχή του βρόχου, κάντε μια μικρή παύση. Αυτό θα διασφαλίσει ότι δεν θα κατακλύζεστε με δεδομένα.
από smbus εισαγωγή SMBus
εισαγωγή χρόνος adr = 0x48
λεωφορείο = SMBus(1)
# ορίστε τους καταχωρητές για ανάγνωση
CONFIGREG = 1
CONVERSIONREG = 0# ορίστε τον καταχωρητή διευθύνσεων ώστε να οδηγεί στον καταχωρητή διαμόρφωσης# εγγραφή στους καταχωρητές διαμόρφωσης
bus.write_word_data(addr, CONFIGREG, (0b00000100 << 8 | 0b10000010))
# ορίστε την κορυφή του εύρους
ΤΟΠ = 26300ενώΟι αληθινοί :
# διαβάστε το μητρώο
b = bus.read_word_data(addr, CONVERSIONREG)
# ανταλλάξτε τα δύο byte
b = ((β & 0xFF) < 8) | ((β >> 8) & 0xFF)
# αφαιρέστε το μισό εύρος για να μηδενίσετε τη βάση
β -= 0x8000# Διαιρέστε το αποτέλεσμα με το εύρος για να μας δώσετε μια τιμή μεταξύ μηδέν και ενός
β /= ΚΟΡΥΦΑΙΑ
# καπάκι σε ένα
b = πρακτικά(σι, 1)
Το # κάτω είναι μηδέν
b = max(σι, 0)
# δύο δεκαδικά ψηφία
b = γύρος(σι, 2)
αποτύπωμα(β) time.sleep(. 01)Σχεδόν τελείωσες. Ορίστε το εύρος τιμών που λαμβάνετε στην τιμή που προτιμάτε και, στη συνέχεια, περικόψτε το στον επιθυμητό αριθμό δεκαδικών ψηφίων. Μπορείτε να προσαρμόσετε τη λειτουργία εκτύπωσης έτσι ώστε να εκτυπώνει μια νέα τιμή μόνο όταν είναι διαφορετική από την τελευταία τιμή.
Αντιμετώπιση θορύβου
Τώρα, εκτός κι αν η ρύθμιση σας είναι πολύ ωραία, τακτοποιημένη και τακτοποιημένη, θα παρατηρήσετε κάποιο θόρυβο. Αυτό είναι το εγγενές μειονέκτημα της χρήσης 16 bit αντί μόνο δέκα: αυτή η μικρή ποσότητα θορύβου θα είναι πιο αισθητή.
Συνδέοντας τη διπλανή είσοδο (Είσοδος 1) στη γείωση και αλλάζοντας τη λειτουργία έτσι ώστε να συγκρίνετε την πρώτη και τη δεύτερη είσοδο, μπορείτε να έχετε πιο σταθερά αποτελέσματα. Μπορείτε επίσης να αντικαταστήσετε τα μακριά καλώδια συλλογής θορύβου με μικρότερα και να προσθέσετε μερικούς πυκνωτές καθώς κάνετε αυτή τη ρύθμιση. Η τιμή του ποτενσιόμετρου σας μπορεί επίσης να κάνει τη διαφορά.
Υπάρχουν επίσης επιλογές λογισμικού. Μπορείτε να δημιουργήσετε έναν κυλιόμενο μέσο όρο ή απλά να αγνοήσετε μικρές αλλαγές. Το μειονέκτημα είναι ότι ο πρόσθετος κωδικός θα επιβάλει ένα υπολογιστικό κόστος. Εάν γράφετε δηλώσεις υπό όρους σε μια γλώσσα υψηλού επιπέδου όπως η Python, λαμβάνοντας χιλιάδες δείγματα κάθε δευτερόλεπτο, αυτά τα κόστη θα αθροιστούν γρήγορα. Επαληθεύω Raspberry Pi and Sense HAT Temperature Monitoring Guide: Best Steps and Tips.
κοινές ερωτήσεις
Q1. Τι είναι ένας μετατροπέας ADC και πώς λειτουργεί με το Raspberry Pi;
Ο ADC (Analog-to-Digital Converter) είναι μια συσκευή που μετατρέπει τα αναλογικά σήματα σε ψηφιακά. Ένα ADC μπορεί να συνδεθεί σε ένα Raspberry Pi για να του επιτρέψει να διαβάζει αναλογικά σήματα από πηγές όπως αισθητήρες και περιβαλλοντικές μεταβλητές.
Ε2. Ποια είναι τα κύρια οφέλη από τη χρήση ενός μετατροπέα ADC με το Raspberry Pi;
- Επέκταση των δυνατοτήτων μέτρησης: Σας επιτρέπει να χρησιμοποιείτε αναλογικά σήματα όπως φως, θερμοκρασία, ήχος και άλλα.
- Μεγαλύτερη ακρίβεια: Η μετατροπή αναλογικών σημάτων σε ψηφιακά παρέχει μεγαλύτερη ακρίβεια στις μετρήσεις.
- Υποστηρίξτε μια ποικιλία συσκευών: Μπορεί να χρησιμοποιηθεί με ένα ευρύ φάσμα ηλεκτρονικών συσκευών και έργων Raspberry Pi.
Ε3. Πώς μπορώ να συνδέσω έναν μετατροπέα ADC σε ένα Raspberry Pi;
Ο μετατροπέας ADC μπορεί να συνδεθεί στο Raspberry Pi μέσω της διεπαφής GPIO χρησιμοποιώντας τα κατάλληλα καλώδια και υποδοχές. Πρέπει να είστε προσεκτικοί και να ακολουθήσετε τον οδηγό επικοινωνίας που συνοδεύει τον μετατροπέα ADC.
Q4. Μπορώ να χρησιμοποιήσω τον μετατροπέα ADC με όλες τις εκδόσεις του Raspberry Pi;
Ναι, το ADC μπορεί να χρησιμοποιηθεί με τις περισσότερες εκδόσεις του Raspberry Pi. Ωστόσο, ίσως χρειαστεί να εξετάσετε το ενδεχόμενο να συνδέσετε τον προσαρμογέα στην κατάλληλη θύρα GPIO για τη συγκεκριμένη έκδοση υλικού.
Q5. Η χρήση ενός μετατροπέα ADC απαιτεί εμπειρία προγραμματισμού;
Εξαρτάται από το εύρος του έργου. Σε απλές περιπτώσεις μπορούν να χρησιμοποιηθούν έτοιμες βιβλιοθήκες. Ωστόσο, ορισμένα έργα ενδέχεται να απαιτούν δεξιότητες προγραμματισμού για την αποτελεσματική χρήση των δεδομένων.
Προχωρώντας με πολλά πιθανά επόμενα βήματα
Η λήψη μετρήσεων μέσω I2C είναι πολύ απλή και το ίδιο ισχύει και για άλλες μεθόδους, όπως το SPI. Παρόλο που μπορεί να φαίνεται ότι υπάρχουν σημαντικές διαφορές μεταξύ των διαθέσιμων επιλογών ADC, η αλήθεια είναι ότι από τη στιγμή που εκτελείται μία, είναι εύκολο να εφαρμοστεί η γνώση στις άλλες.
Γιατί λοιπόν δεν πάμε τα πράγματα παρακάτω; Συνδέστε πολλά ποτενσιόμετρα μαζί ή δοκιμάστε να διαβάσετε φως, ήχο ή θερμοκρασία. Επεκτείνετε το χειριστήριο που μόλις δημιουργήσατε και δημιουργήστε μια ρύθμιση Raspberry Pi που είναι πραγματικά λειτουργική! Τώρα μπορείτε να δείτε Πιθανές προκλήσεις της αυτο-φιλοξενίας των έργων σας στο Raspberry Pi.










