- Απαιτούμενα συστατικά
- Ενότητα PCF8591 ADC / DAC
- Διασύνδεση της μονάδας PCF8591 ADC / DAC με το Arduino
Η αναλογική σε ψηφιακή μετατροπή είναι ένα πολύ σημαντικό καθήκον στα ενσωματωμένα ηλεκτρονικά, καθώς οι περισσότεροι αισθητήρες παρέχουν έξοδο ως αναλογικές τιμές και για να τα τροφοδοτήσουν σε μικροελεγκτή που κατανοούν μόνο δυαδικές τιμές, πρέπει να τις μετατρέψουμε σε Ψηφιακές τιμές. Για να μπορέσουμε να επεξεργαστούμε τα αναλογικά δεδομένα, οι μικροελεγκτές χρειάζονται αναλογικό σε ψηφιακό μετατροπέα.
Ορισμένοι μικροελεγκτές έχουν ενσωματωμένο 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 με το Arduino.
Απαιτούμενα συστατικά
- Arduino UNO
- Ενότητα PCF8591 ADC
- 100K ποτ
- Καλώδια βραχυκύκλωσης
Ενότητα PCF8591 ADC / DAC
Το PCF8591 είναι ένα 8 bit αναλογικό σε ψηφιακό ή 8 bit ψηφιακό σε αναλογικό μετατροπέα που σημαίνει ότι κάθε ακίδα μπορεί να διαβάσει αναλογικές τιμές έως και 256. Διαθέτει επίσης κύκλωμα LDR και θερμίστορ. Αυτή η ενότητα έχει τέσσερις αναλογικές εισόδους και μία αναλογική έξοδο. Λειτουργεί στην επικοινωνία I 2 C, οπότε υπάρχουν ακροδέκτες SCL και SDA για σειριακό ρολόι και διεύθυνση σειριακών δεδομένων. Απαιτεί τάση τροφοδοσίας 2,5-6V και έχει χαμηλό ρεύμα αναμονής. Μπορούμε επίσης να χειριστούμε την τάση εισόδου ρυθμίζοντας το κουμπί του ποτενσιόμετρου στη μονάδα. Υπάρχουν επίσης τρεις άλτες στο ταμπλό. Το J4 είναι συνδεδεμένο για να επιλέξει το κύκλωμα πρόσβασης θερμίστορ, το J5 είναι συνδεδεμένο για να επιλέξει το κύκλωμα πρόσβασης LDR / φωτοαντίστασης και το J6 είναι συνδεδεμένο για να επιλέξετε το ρυθμιζόμενο κύκλωμα πρόσβασης τάσης. Για να αποκτήσετε πρόσβαση σε αυτά τα κυκλώματα, πρέπει να χρησιμοποιήσετε τις διευθύνσεις αυτών των jumpers: 0x50 για J6, 0x60 για J5 και 0x70 για J4. Υπάρχουν δύο LED στο D1 και το D2- D1 δείχνει την ένταση τάσης εξόδου και το D2 δείχνει την ένταση της τάσης τροφοδοσίας. Όσο υψηλότερη είναι η τάση εξόδου ή τροφοδοσίας, τόσο μεγαλύτερη είναι η ένταση των LED D1 ή D2. Μπορείτε επίσης να δοκιμάσετε αυτά τα LED χρησιμοποιώντας ποτενσιόμετρο σε VCC ή σε ακίδα AOUT.
Διασύνδεση της μονάδας PCF8591 ADC / DAC με το Arduino
Το πλήρες πρόγραμμα και το βίντεο εργασίας δίνονται στο τέλος αυτού του σεμιναρίου.
Πρώτον, πρέπει να ορίσουμε τη βιβλιοθήκη για επικοινωνία I 2 C και οθόνη LCD.
#περιλαμβάνω
Στη συνέχεια, ορίστε μερικές μακροεντολές. Η πρώτη μακροεντολή είναι για τον καθορισμό της διεύθυνσης του διαύλου δεδομένων για IC και η δεύτερη μακροεντολή είναι για τον καθορισμό της διεύθυνσης του πρώτου πείρου εισόδου της μονάδας, όπου δίνεται η είσοδος από το δοχείο.
#define PCF8591 (0x90 >> 1) # καθορισμός AIn0 0x00
Στη συνέχεια, ορίστε τις συνδέσεις ακίδων της οθόνης LCD με το Arduino και αρχικοποιήστε την τιμή που λαμβάνουμε στην αναλογική καρφίτσα.
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd (rs, en, d4, d5, d6, d7); int τιμή = 0;
Τώρα, ας έρθουμε στη λειτουργία εγκατάστασης . Εδώ, στην πρώτη γραμμή έχουμε αρχικοποιήσει την επικοινωνία I 2 C. Και στη δεύτερη γραμμή, αρχικοποιήσαμε την οθόνη LCD στην οποία εκτυπώνουμε τις αναλογικές τιμές. Μάθετε περισσότερα σχετικά με τη διασύνδεση LCD 16x2 με το Arduino εδώ.
άκυρη ρύθμιση () { Wire.begin (); lcd.begin (16,2); }
Στη λειτουργία βρόχου , η πρώτη γραμμή είναι να ξεκινήσει η μετάδοση, δηλαδή ξεκινά το PCF8591. Η δεύτερη γραμμή λέει στο IC να κάνει την αναλογική μέτρηση στον πρώτο αναλογικό πείρο εισόδου. Η τρίτη γραμμή τερματίζει τη μετάδοση και η τέταρτη γραμμή λαμβάνει τα μετρημένα δεδομένα από την αναλογική ακίδα
void loop () { Wire.beginTransmission (PCF8591); Wire.write (AIn0); Wire.endTransmission (); Wire.requestFrom (PCF8591, 1);
Στο επόμενο τμήμα, τοποθετήστε την τιμή ανάγνωσης από αναλογικό πείρο στη μεταβλητή τιμής που ορίστηκε προηγουμένως Και στις επόμενες γραμμές, εκτυπώστε αυτήν την τιμή στην οθόνη LCD.
Τιμή = Wire.read (); lcd.print ("Τιμή ADC ="); lcd.print (Τιμή); καθυστέρηση (500) lcd.clear ();}
Τέλος, ανεβάστε τον κωδικό στο Arduino και εκτελέστε τον. Οι αναλογικές τιμές θα αρχίσουν να εμφανίζονται στην οθόνη LCD. Ρυθμίστε το κουμπί του ποτ και θα δείτε τη σταδιακή αλλαγή στις τιμές.