ESP32 ADC – Διαβάστε τις αναλογικές τιμές με το Arduino IDE

Esp32 Adc Diabaste Tis Analogikes Times Me To Arduino Ide



Το ADC (αναλογικός σε ψηφιακός μετατροπέας) είναι ένα ηλεκτρονικό κύκλωμα που συνοδεύεται από διαφορετικές πλακέτες μικροελεγκτή ή ενσωματωμένο στο εσωτερικό του μικροελεγκτή. Το ADC χρησιμοποιείται για τη μετατροπή της αναλογικής τάσης από διαφορετικούς αισθητήρες σε ψηφιακή μορφή. Όπως το Arduino, το ESP32 διαθέτει επίσης ένα ADC που μπορεί να διαβάσει αναλογικά δεδομένα. Ας μάθουμε περισσότερα για το ESP32 ADC.

ESP32 ADC Εισαγωγή

Η πλακέτα ESP32 έχει δύο ενσωματωμένους ADC 12-bit γνωστούς και ως SAR (Successive Approximation Registers) ADC. Οι ADC της πλακέτας ESP32 υποστηρίζουν 18 διαφορετικά αναλογικά κανάλια εισόδου, πράγμα που σημαίνει ότι μπορούμε να συνδέσουμε 18 διαφορετικούς αναλογικούς αισθητήρες για να λάβουμε είσοδο από αυτά.

Αλλά αυτό δεν συμβαίνει εδώ. Αυτά τα αναλογικά κανάλια χωρίζονται σε δύο κατηγορίες κανάλι 1 και κανάλι 2, και τα δύο αυτά κανάλια έχουν κάποιες ακίδες που δεν είναι πάντα διαθέσιμες για είσοδο ADC. Ας δούμε ποιες είναι αυτές οι ακίδες ADC μαζί με άλλες.







ESP32 ADC Pins

Όπως αναφέρθηκε προηγουμένως, η πλακέτα ESP32 έχει 18 κανάλια ADC. Από τα 18 μόνο τα 15 είναι διαθέσιμα στην πλακέτα DEVKIT V1 DOIT με συνολικά 30 GPIO.



Κοιτάξτε στον πίνακα σας και αναγνωρίστε τις ακίδες ADC όπως τις επισημάναμε στην παρακάτω εικόνα:







Κανάλι 1 Καρφίτσες ADC

Ακολουθεί η δεδομένη αντιστοίχιση ακίδων της πλακέτας ESP32 DEVKIT DOIT. Το ADC1 στο ESP32 έχει 8 κανάλια, ωστόσο η πλακέτα DOIT DEVKIT υποστηρίζει μόνο 6 κανάλια. Αλλά εγγυώμαι ότι αυτά είναι ακόμα περισσότερα από αρκετά.

ADC1 GPIO PIN ESP32
CH0 36
CH1 NA σε έκδοση 30 ακίδων ESP32 (Το Devkit ΠΡΕΠΕΙ)
CH2 ΟΤΙ
CH3 39
CH4 32
CH5 33
CH6 3. 4
CH7 35

Η παρακάτω εικόνα δείχνει κανάλια ESP32 ADC1:



Καρφίτσες ADC καναλιού 2

Οι πλακέτες DEVKIT DOIT διαθέτουν 10 αναλογικά κανάλια στο ADC2. Αν και το ADC2 έχει 10 αναλογικά κανάλια για ανάγνωση αναλογικών δεδομένων, αυτά τα κανάλια δεν είναι πάντα διαθέσιμα για χρήση. Το ADC2 είναι κοινόχρηστο με ενσωματωμένα προγράμματα οδήγησης WiFi, πράγμα που σημαίνει ότι τη στιγμή που η πλακέτα χρησιμοποιεί WIFI, αυτά τα ADC2 δεν θα είναι διαθέσιμα. Η λύση σε αυτό το πρόβλημα είναι να χρησιμοποιήσετε το ADC2 μόνο όταν το πρόγραμμα οδήγησης Wi-Fi είναι απενεργοποιημένο.

Η παρακάτω εικόνα δείχνει την αντιστοίχιση καρφιτσών του καναλιού ADC2.

Πώς να χρησιμοποιήσετε το ESP32 ADC

Το ESP32 ADC λειτουργεί με παρόμοιο τρόπο όπως το Arduino η μόνη διαφορά εδώ είναι ότι έχει ADC 12 bit. Έτσι, η πλακέτα ESP32 αντιστοιχίζει τις τιμές αναλογικής τάσης που κυμαίνονται από 0 έως 4095 σε ψηφιακές διακριτές τιμές.

  • Εάν η τάση που δίνεται στο ESP32 ADC είναι μηδέν, ένα κανάλι ADC, η ψηφιακή τιμή θα είναι μηδέν.
  • Εάν η τάση που δίνεται στο ADC είναι μέγιστη σημαίνει 3,3 V, η ψηφιακή τιμή εξόδου θα είναι ίση με 4095.
  • Για να μετρήσουμε υψηλότερη τάση, μπορούμε να χρησιμοποιήσουμε τη μέθοδο διαιρέτη τάσης.

Σημείωση: Το ESP32 ADC έχει οριστεί από προεπιλογή στα 12 bit, ωστόσο είναι δυνατό να ρυθμιστεί σε 0 bit, 10 bit και 11 bit. Το προεπιλεγμένο ADC 12-bit μπορεί να μετρήσει την τιμή 2^12=4096 και η αναλογική τάση κυμαίνεται από 0V έως 3,3V.

Περιορισμός ADC στο ESP32

Ακολουθούν ορισμένοι περιορισμοί του ESP32 ADC:

  • Το ESP32 ADC δεν μπορεί να μετρήσει απευθείας τάση μεγαλύτερη από 3,3 V.
  • Όταν τα προγράμματα οδήγησης Wi-Fi είναι ενεργοποιημένα, το ADC2 δεν μπορεί να χρησιμοποιηθεί. Μπορούν να χρησιμοποιηθούν μόνο 8 κανάλια ADC1.
  • Το ESP32 ADC δεν είναι πολύ γραμμικό. δείχνει μη γραμμικότητα συμπεριφορά και δεν μπορεί να διακρίνει μεταξύ 3,2V και 3,3V. Ωστόσο, είναι δυνατή η βαθμονόμηση του ESP32 ADC. Εδώ είναι ένα άρθρο που θα σας καθοδηγήσει στη βαθμονόμηση της συμπεριφοράς μη γραμμικότητας του ESP32 ADC.

Η συμπεριφορά μη γραμμικότητας του ESP32 φαίνεται στη σειριακή οθόνη του Arduino IDE.

Προγραμματίστε το ESP32 ADC χρησιμοποιώντας Arduino IDE

Ο καλύτερος τρόπος για να κατανοήσετε τη λειτουργία του ESP32 ADC είναι να πάρετε ένα ποτενσιόμετρο και να διαβάσετε τιμές έναντι μηδενικής αντίστασης στο μέγιστο. Ακολουθεί η δεδομένη εικόνα κυκλώματος του ESP32 με ποτενσιόμετρο.

Συνδέστε τη μεσαία ακίδα του ποτενσιόμετρου με την ψηφιακή ακίδα 25 του ESP32 και 2 ακροδέκτες με ακίδα 3,3V και GND αντίστοιχα.

Σκεύη, εξαρτήματα

Η παρακάτω εικόνα εμφανίζει το υλικό του ESP32 με ποτενσιόμετρο. Ακολουθεί η λίστα των απαραίτητων εξαρτημάτων:

  • Πλακέτα ESP32 DEVKIT DOIT
  • Ποτενσιόμετρο
  • Breadboard
  • Καλώδια βραχυκυκλωτήρα

Κώδικας

Ανοίξτε το Arduino IDE και ανεβάστε τον παρακάτω κώδικα στην πλακέτα ESP32. Για να ελέγξετε πώς να εγκαταστήσετε και να ρυθμίσετε το ESP32 με το Arduino IDE κάντε κλικ εδώ .

συνθ ενθ Pin_Ποτενσιόμετρο = 25 ; /*Ποτενσιόμετρο συνδεδεμένο στο GPIO 25 (Αναλογικό ADC2_CH8)*/
ενθ Val_Ποτενσιόμετρο = 0 ; /*Η τιμή ανάγνωσης του ποτενσιόμετρου θα αποθηκευτεί εδώ*/
κενός εγκατάσταση ( ) {
Κατα συρροη. να αρχίσει ( 115200 ) ; /*Αρχίζει η σειριακή επικοινωνία*/
}
κενός βρόχος ( ) {
Val_Ποτενσιόμετρο = αναλογικήΑνάγνωση ( Pin_Ποτενσιόμετρο ) ; /*Ανάγνωση τιμής ποτενσιόμετρου*/
Κατα συρροη. println ( Val_Ποτενσιόμετρο ) ; /*Εκτύπωση τιμής ποτενσιόμετρου*/
καθυστέρηση ( 2000 ) ; /*καθυστέρηση 2 δευτερολέπτων*/
}

Εδώ στον παραπάνω κώδικα, αρχικοποιούμε την ψηφιακή ακίδα 25 για ποτενσιόμετρο στην πλακέτα ESP32. Δίπλα στην είσοδο, αρχικοποιείται μια μεταβλητή Val_Potentiometer. Η επόμενη σειριακή επικοινωνία ξεκινά με τον καθορισμό του ρυθμού baud.

Στο βρόχος μέρος του κώδικα που χρησιμοποιεί τη συνάρτηση analogRead() Οι τιμές ADC θα διαβαστούν στον ακροδέκτη 25 του ESP32. Στη συνέχεια, χρησιμοποιώντας το Serial.print() όλες οι τιμές εκτυπώνονται στη σειριακή οθόνη.

Παραγωγή

Η έξοδος εμφανίζει αναλογικές τιμές που αντιστοιχίζονται σε ψηφιακές διακριτές τιμές. Όταν η τάση ανάγνωσης είναι μέγιστη, δηλαδή 3,3V ψηφιακή έξοδος είναι ίση με 4095 και όταν η τάση ανάγνωσης είναι 0V η ψηφιακή έξοδος γίνεται 0.

συμπέρασμα

Οι μετατροπείς αναλογικού σε ψηφιακό χρησιμοποιούνται παντού, ειδικά όταν πρέπει να διασυνδέσουμε τις πλακέτες μικροελεγκτών με αναλογικούς αισθητήρες και υλικό. Το ESP32 έχει δύο κανάλια για το ADC που είναι το ADC1 και το ADC2. Αυτά τα δύο κανάλια συνδυάζονται για να παρέχουν 18 ακίδες για τη διασύνδεση αναλογικών αισθητήρων. Ωστόσο, 3 από αυτά δεν είναι διαθέσιμα στην έκδοση ESP32 30 pin. Για να δείτε περισσότερα σχετικά με την ανάγνωση αναλογικών τιμών, διαβάστε το άρθρο.