ESP32 ADC – Baca Nilai Analog dengan Arduino IDE

Esp32 Adc Baca Nilai Analog Dengan Arduino Ide



ADC (penukar analog kepada digital) ialah litar elektronik yang disertakan dengan papan mikropengawal yang berbeza atau disepadukan di dalam mikropengawal. ADC digunakan untuk menukar voltan analog daripada penderia yang berbeza ke dalam bentuk digital. Seperti Arduino, ESP32 juga mempunyai ADC yang boleh membaca data analog. Mari ketahui lebih lanjut mengenai ESP32 ADC.

Pengenalan ESP32 ADC

Papan ESP32 mempunyai dua ADC 12-bit bersepadu yang juga dikenali sebagai ADC SAR (Successive Approximation Registers). ADC papan ESP32 menyokong 18 saluran input analog berbeza yang bermakna kami boleh menyambungkan 18 penderia analog berbeza untuk mengambil input daripadanya.

Tetapi ini tidak berlaku di sini; saluran analog ini dibahagikan kepada dua kategori saluran 1 dan saluran 2, kedua-dua saluran ini mempunyai beberapa pin yang tidak selalu tersedia untuk input ADC. Mari lihat apakah pin ADC tersebut bersama-sama dengan yang lain.







Pin ADC ESP32

Seperti yang dinyatakan sebelum ini, papan ESP32 mempunyai 18 saluran ADC. Daripada 18 hanya 15 tersedia dalam papan DEVKIT V1 DOIT yang mempunyai sejumlah 30 GPIO.



Lihat pada papan anda dan kenal pasti pin ADC semasa kami menyerlahkannya dalam imej di bawah:







Pin ADC Saluran 1

Berikut ialah pemetaan pin papan ESP32 DEVKIT DOIT yang diberikan. ADC1 dalam ESP32 mempunyai 8 saluran namun papan DOIT DEVKIT hanya menyokong 6 saluran. Tetapi saya jamin ini masih lebih daripada mencukupi.

ADC1 PIN GPIO ESP32
CH0 36
CH1 NA dalam 30 Pin Versi ESP32 (Devkit MESTI)
CH2 ITU
CH3 39
CH4 32
CH5 33
CH6 3. 4
CH7 35

Gambar berikut menunjukkan saluran ESP32 ADC1:



Pin ADC Saluran 2

Papan DEVKIT DOIT mempunyai 10 saluran analog dalam ADC2. Walaupun ADC2 mempunyai 10 saluran analog untuk membaca data analog, saluran ini tidak selalu tersedia untuk digunakan. ADC2 dikongsi dengan pemacu WiFi onboard, yang bermaksud pada masa papan menggunakan WIFI ADC2 ini tidak akan tersedia. Penyelesaian kepada masalah ini ialah menggunakan ADC2 hanya apabila pemacu Wi-Fi dimatikan.

Imej di bawah menunjukkan pemetaan pin saluran ADC2.

Cara Menggunakan ESP32 ADC

ESP32 ADC berfungsi dengan cara yang sama seperti Arduino hanya perbezaan di sini ialah ia mempunyai 12 bit ADC. Jadi, papan ESP32 memetakan nilai voltan analog antara 0 hingga 4095 dalam nilai diskret digital.

  • Jika voltan diberikan kepada ESP32 ADC adalah sifar saluran ADC nilai digital akan menjadi sifar.
  • Jika voltan yang diberikan kepada ADC adalah maksimum bermakna 3.3V nilai digital keluaran akan sama dengan 4095.
  • Untuk mengukur voltan yang lebih tinggi, kita boleh menggunakan kaedah pembahagi voltan.

Catatan: ESP32 ADC secara lalai ditetapkan pada 12-bit, namun mungkin untuk mengkonfigurasinya menjadi 0-bit, 10-bit dan 11-bit. ADC lalai 12-bit boleh mengukur nilai 2^12=4096 dan voltan analog berjulat dari 0V hingga 3.3V.

Had ADC pada ESP32

Berikut ialah beberapa had ESP32 ADC:

  • ESP32 ADC tidak boleh secara langsung mengukur voltan lebih besar daripada 3.3V.
  • Apabila pemacu Wi-Fi didayakan ADC2 tidak boleh digunakan. Hanya 8 saluran ADC1 boleh digunakan.
  • ESP32 ADC tidak begitu linear; ia menunjukkan tidak lineariti tingkah laku dan tidak boleh membezakan antara 3.2V dan 3.3V. Walau bagaimanapun, adalah mungkin untuk menentukur ESP32 ADC. Di sini ialah artikel yang akan membimbing anda untuk menentukur kelakuan tidak linear ESP32 ADC.

Tingkah laku tidak linear ESP32 boleh dilihat pada monitor bersiri Arduino IDE.

Program ESP32 ADC Menggunakan Arduino IDE

Cara terbaik untuk memahami kerja ESP32 ADC adalah dengan mengambil potensiometer dan membaca nilai terhadap rintangan sifar kepada maksimum. Berikut ialah imej litar ESP32 dengan potensiometer yang diberikan.

Sambungkan pin tengah potensiometer dengan pin digital 25 ESP32 dan 2 pin terminal dengan pin 3.3V dan GND masing-masing.

Perkakasan

Imej berikut memaparkan perkakasan ESP32 dengan potensiometer. Berikut adalah senarai komponen yang diperlukan:

  • Papan ESP32 DEVKIT DOIT
  • Potensiometer
  • Papan roti
  • Wayar pelompat

Kod

Buka Arduino IDE dan muat naik kod di bawah dalam papan ESP32. Untuk menyemak cara memasang dan mengkonfigurasi ESP32 dengan Arduino IDE klik di sini .

const int Pin_Potentiometer = 25 ; /*Potensiometer disambungkan pada GPIO 25 (Analog ADC2_CH8)*/
int Val_Potentiometer = 0 ; /*Nilai bacaan potensiometer akan disimpan di sini*/
batal persediaan ( ) {
bersiri. bermula ( 115200 ) ; /*Komunikasi bersiri bermula*/
}
batal gelung ( ) {
Val_Potentiometer = analogBaca ( Pin_Potentiometer ) ; /*Membaca nilai potensiometer*/
bersiri. println ( Val_Potentiometer ) ; /*Mencetak nilai Potensiometer*/
kelewatan ( 2000 ) ; /*kelewatan 2 saat*/
}

Di sini dalam kod di atas, kami memulakan pin digital 25 untuk potensiometer pada papan ESP32. Seterusnya untuk mengambil input pembolehubah Val_Potentiometer dimulakan. Komunikasi bersiri seterusnya dimulakan dengan menentukan kadar baud.

Di dalam gelung sebahagian kod menggunakan fungsi analogRead() nilai ADC akan dibaca pada pin 25 ESP32. Seterusnya menggunakan Serial.print() semua nilai dicetak pada monitor bersiri.

Pengeluaran

Output memaparkan nilai analog yang dipetakan terhadap nilai diskret digital. Apabila voltan baca adalah maksimum iaitu output digital 3.3V adalah bersamaan dengan 4095 dan apabila voltan baca ialah 0V output digital menjadi 0.

Kesimpulan

Penukar analog kepada digital digunakan di mana-mana terutamanya apabila kita perlu antara muka papan mikropengawal dengan penderia dan perkakasan analog. ESP32 mempunyai dua saluran untuk ADC iaitu ADC1 dan ADC2. Kedua-dua saluran ini bergabung untuk menyediakan 18 pin untuk antara muka sensor analog. Walau bagaimanapun, 3 daripadanya tidak tersedia pada versi ESP32 30 pin. Untuk melihat lebih lanjut tentang membaca nilai analog, baca artikel.