- Απαιτούμενα συστατικά
- Ενότητα PCF8591 ADC / DAC
- Καρφίτσες I2C στο Raspberry Pi
- Ενδιάμεση μονάδα PCF8591 ADC / DAC με Raspberry Pi
- Πρόγραμμα Python για αναλογική σε ψηφιακή μετατροπή (ADC)
Η αναλογική σε ψηφιακή μετατροπή είναι ένα πολύ σημαντικό καθήκον στα ενσωματωμένα ηλεκτρονικά, καθώς οι περισσότεροι αισθητήρες παρέχουν έξοδο ως αναλογικές τιμές και για να τα τροφοδοτήσουν σε μικροελεγκτή που κατανοούν μόνο δυαδικές τιμές, πρέπει να τις μετατρέψουμε σε Ψηφιακές τιμές. Για να μπορέσουμε να επεξεργαστούμε τα αναλογικά δεδομένα, οι μικροελεγκτές χρειάζονται αναλογικό σε ψηφιακό μετατροπέα.
Ορισμένοι μικροελεγκτές έχουν ενσωματωμένο ADC όπως Arduino, MSP430, PIC16F877A, αλλά μερικοί μικροελεγκτές δεν το έχουν όπως 8051, Raspberry Pi κ.λπ. και πρέπει να χρησιμοποιήσουμε κάποια εξωτερικά IC αναλογικού σε ψηφιακό μετατροπέα όπως ADC0804, ADC0808. Παρακάτω μπορείτε να βρείτε διάφορα παραδείγματα ADC με διαφορετικούς μικροελεγκτές:
- Πώς να χρησιμοποιήσετε το ADC στο Arduino Uno;
- Εκμάθηση Raspberry Pi ADC
- Διασύνδεση ADC0808 με 8051 μικροελεγκτή
- Ψηφιακό βολτόμετρο 0-25V με χρήση μικροελεγκτή AVR
- Πώς να χρησιμοποιήσετε το ADC στο STM32F103C8
- Πώς να χρησιμοποιήσετε το ADC στο MSP430G2
- Πώς να χρησιμοποιήσετε το ADC στο ARM7 LPC2148
- Χρήση της μονάδας ADC του μικροελεγκτή PIC με MPLAB και XC8
Σε αυτό το σεμινάριο, θα μάθουμε πώς να διασυνδέουμε τη μονάδα PCF8591 ADC / DAC με το Raspberry Pi.
Απαιτούμενα συστατικά
- Raspberry-pi
- Ενότητα PCF8591 ADC
- 100K ποτ
- Καλώδια βραχυκύκλωσης
Υποτίθεται ότι έχετε εγκαταστήσει το Raspberry Pi με το πιο πρόσφατο Raspbian OS και γνωρίζετε πώς να SSH στο Pi χρησιμοποιώντας ένα τερματικό λογισμικό όπως το putty. Εάν είστε νέοι στο Raspberry Pi, ακολουθήστε αυτό το άρθρο για να ξεκινήσετε με το Raspberry Pi. Ακόμα και αν αντιμετωπίσετε οποιοδήποτε πρόβλημα, τότε υπάρχουν πολλοί οδηγοί Raspberry Pi που μπορούν να βοηθήσουν.
Ενότητα PCF8591 ADC / DAC
Το PCF8591 είναι ένα 8 bit αναλογικό σε ψηφιακό ή 8 bit ψηφιακό σε αναλογικό μετατροπέα που σημαίνει ότι κάθε ακίδα μπορεί να διαβάσει αναλογικές τιμές έως και 256. Διαθέτει επίσης κύκλωμα LDR και θερμίστορ. Αυτή η ενότητα έχει τέσσερις αναλογικές εισόδους και μία αναλογική έξοδο. Λειτουργεί στην επικοινωνία I 2 C, οπότε υπάρχουν ακροδέκτες SCL και SDA για σειριακό ρολόι και διεύθυνση σειριακών δεδομένων. Απαιτεί τάση τροφοδοσίας 2,5-6V και έχει χαμηλό ρεύμα αναμονής. Μπορούμε επίσης να χειριστούμε την τάση εισόδου ρυθμίζοντας το κουμπί του ποτενσιόμετρου στη μονάδα. Υπάρχουν επίσης τρεις άλτες στο ταμπλό. Το J4 είναι συνδεδεμένο για να επιλέξει το κύκλωμα πρόσβασης θερμίστορ, το J5 είναι συνδεδεμένο για να επιλέξει το κύκλωμα πρόσβασης LDR / φωτοαντίστασηςκαι το J6 είναι συνδεδεμένο για να επιλέξετε το ρυθμιζόμενο κύκλωμα πρόσβασης τάσης. Υπάρχουν δύο LED στο D1 και το D2- D1 δείχνει την ένταση τάσης εξόδου και το D2 δείχνει την ένταση της τάσης τροφοδοσίας. Όσο υψηλότερη είναι η τάση εξόδου ή τροφοδοσίας, τόσο μεγαλύτερη είναι η ένταση των LED D1 ή D2. Μπορείτε επίσης να δοκιμάσετε αυτά τα LED χρησιμοποιώντας ποτενσιόμετρο σε VCC ή σε ακίδα AOUT.
Καρφίτσες I2C στο Raspberry Pi
Για να χρησιμοποιήσετε το PCF8591 με το Raspberry Pi, το πρώτο πράγμα που πρέπει να κάνετε είναι να γνωρίζετε τις καρφίτσες θύρας Raspberry Pi I2C και να ρυθμίσετε τη θύρα I2C στο Raspberry pi.
Ακολουθεί το Pin Diagram του Raspberry Pi 3 Model B + και οι καρφίτσες I2C GPIO2 (SDA) και GPIO3 (SCL) χρησιμοποιούνται σε αυτό το σεμινάριο.
Διαμόρφωση I2C στο Raspberry Pi
Από προεπιλογή, το I2C είναι απενεργοποιημένο στο Raspberry Pi. Έτσι πρώτα πρέπει να είναι ενεργοποιημένο. Για να ενεργοποιήσετε το I2C στο Raspberry Pi
1. Μεταβείτε στο τερματικό και πληκτρολογήστε sudo raspi-config.
2. Τώρα εμφανίζεται το Εργαλείο διαμόρφωσης λογισμικού Raspberry Pi.
3. Επιλέξτε Επιλογές διασύνδεσης και, στη συνέχεια, ενεργοποιήστε το I2C.
4. Αφού ενεργοποιήσετε το I2C επανεκκινήστε το Pi.
Σάρωση της διεύθυνσης I2C του PCF8591 χρησιμοποιώντας το Raspberry Pi
Τώρα για να ξεκινήσει η επικοινωνία με το PCF8591 IC, το Raspberry Pi πρέπει να γνωρίζει τη διεύθυνση I2C. Για να βρείτε τη διεύθυνση, συνδέστε πρώτα τον πείρο SDA και SCL του PCF8591 στον πείρο SDA και SCL του Raspberry Pi. Συνδέστε επίσης τις ακίδες + 5V και GND.
Τώρα ανοίξτε το τερματικό και πληκτρολογήστε την παρακάτω εντολή για να γνωρίζετε τη διεύθυνση της συνδεδεμένης συσκευής I2C, sudo i2cdetect –y 1 ή sudo i2cdetect –y 0
Αφού βρείτε τη διεύθυνση I2C, ήρθε η ώρα να δημιουργήσετε το κύκλωμα και να εγκαταστήσετε τις απαραίτητες βιβλιοθήκες για τη χρήση του PCF8591 με το Raspberry Pi.
Ενδιάμεση μονάδα PCF8591 ADC / DAC με Raspberry Pi
Το διάγραμμα κυκλώματος για διασύνδεση του PCF8591 με το Raspberry Pi είναι απλό. Σε αυτό το παράδειγμα διασύνδεσης, θα διαβάσουμε τις αναλογικές τιμές από οποιαδήποτε αναλογική καρφίτσα και θα τις εμφανίσουμε στο τερματικό Raspberry Pi. Μπορούμε να αλλάξουμε τις τιμές χρησιμοποιώντας ένα pot 100K.
Συνδέστε το VCC και το GND στο GPIO2 και στο GPIO του Raspberry Pi. Στη συνέχεια, συνδέστε το SDA και το SCL σε GPIO3 και GPIO5 αντίστοιχα. Τέλος, συνδέστε ένα δοχείο 100K με AIN0. Μπορείτε επίσης να προσθέσετε οθόνη LCD 16x2 για να εμφανίσετε τιμές ADC αντί να την εμφανίσετε στο Terminal. Μάθετε περισσότερα σχετικά με τη διασύνδεση LCD 16x2 με το Raspberry Pi εδώ.
Πρόγραμμα Python για αναλογική σε ψηφιακή μετατροπή (ADC)
Το πλήρες πρόγραμμα και το βίντεο εργασίας δίνονται στο τέλος αυτού του σεμιναρίου.
Πρώτον, εισαγάγετε τη βιβλιοθήκη smbus για επικοινωνία διαύλου I 2 C και βιβλιοθήκη χρόνου για να δώσετε χρόνο αναμονής μεταξύ της εκτύπωσης της τιμής.
εισαγωγή smbus χρόνος εισαγωγής
Τώρα ορίστε μερικές μεταβλητές. Η πρώτη μεταβλητή περιέχει τη διεύθυνση του διαύλου I 2 C και η δεύτερη μεταβλητή περιέχει τη διεύθυνση του πρώτου αναλογικού πείρου εισόδου.
διεύθυνση = 0x48 A0 = 0x40
Στη συνέχεια, δημιουργήσαμε ένα αντικείμενο της συνάρτησης SMBus (1) της βιβλιοθήκης smbus
λεωφορείο = smbus.SMBus (1)
Τώρα, ενώ η πρώτη γραμμή λέει στο IC να κάνει την αναλογική μέτρηση στον πρώτο αναλογικό πείρο εισόδου. Η δεύτερη γραμμή αποθηκεύει τη διεύθυνση που διαβάζεται σε αναλογική καρφίτσα σε μεταβλητή τιμή . Τέλος εκτυπώστε την τιμή.
ενώ True: bus.write_byte (διεύθυνση, A0) value = bus.read_byte (διεύθυνση) εκτύπωση (τιμή) time.sleep (0.1)
Τώρα, τέλος, αποθηκεύστε τον κώδικα python σε κάποιο αρχείο με.py entension και εκτελέστε τον κώδικα στο τερματικό raspberry Pi χρησιμοποιώντας την παρακάτω εντολή "
python filename.py
Πριν από την εκτέλεση του κώδικα βεβαιωθείτε ότι έχετε ενεργοποιήσει την επικοινωνία I 2 C και ότι όλες οι ακίδες είναι συνδεδεμένες όπως φαίνεται στο διάγραμμα, διαφορετικά θα εμφανιστούν σφάλματα. Οι αναλογικές τιμές πρέπει να αρχίσουν να εμφανίζονται στο τερματικό όπως παρακάτω. Ρυθμίστε το κουμπί του ποτ και θα δείτε τη σταδιακή αλλαγή στις τιμές. Μάθετε περισσότερα σχετικά με την εκτέλεση του προγράμματος
Ο πλήρης κώδικας python και το βίντεο δίνονται παρακάτω.