ESP32 ADC – Membaca Nilai Analog dengan Arduino IDE

Esp32 Adc Membaca Nilai Analog Dengan Arduino Ide



ADC (analog to digital converter) adalah rangkaian elektronika yang dilengkapi dengan papan mikrokontroler yang berbeda atau terintegrasi di dalam mikrokontroler. ADC digunakan untuk mengubah tegangan analog dari sensor yang berbeda menjadi bentuk digital. Seperti Arduino, ESP32 juga memiliki ADC yang dapat membaca data analog. Mari cari tahu lebih lanjut tentang ESP32 ADC.

Pengenalan ESP32 ADC

Papan ESP32 memiliki dua ADC 12-bit terintegrasi yang juga dikenal sebagai ADC SAR (Successive Approximation Registers). ADC papan ESP32 mendukung 18 saluran input analog yang berbeda yang berarti kita dapat menghubungkan 18 sensor analog yang berbeda untuk mengambil input dari mereka.

Tapi ini tidak terjadi di sini; saluran analog ini dibagi menjadi dua kategori saluran 1 dan saluran 2, kedua saluran ini memiliki beberapa pin yang tidak selalu tersedia untuk input ADC. Mari kita lihat apa saja pin ADC itu bersama yang lain.







Pin ADC ESP32

Seperti disebutkan sebelumnya papan ESP32 memiliki 18 saluran ADC. Dari 18 hanya 15 yang tersedia di papan DEVKIT V1 DOIT yang memiliki total 30 GPIO.



Lihat ke papan Anda dan identifikasi pin ADC seperti yang kami soroti pada gambar di bawah ini:







Pin ADC Saluran 1

Berikut ini adalah pemetaan pin papan DOIT ESP32 DEVKIT yang diberikan. ADC1 di ESP32 memiliki 8 saluran namun papan DOIT DEVKIT hanya mendukung 6 saluran. Tapi saya jamin ini masih lebih dari cukup.

ADC1 PIN GPIO ESP32
CH0 36
CH1 NA dalam 30 Pin Versi ESP32 (Devkit HARUS)
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 memiliki 10 saluran analog di ADC2. Meskipun ADC2 memiliki 10 saluran analog untuk membaca data analog, saluran ini tidak selalu tersedia untuk digunakan. ADC2 dibagikan dengan driver WiFi onboard, yang berarti pada saat papan menggunakan WIFI, ADC2 ini tidak akan tersedia. Solusi untuk masalah ini adalah menggunakan ADC2 hanya ketika driver Wi-Fi mati.

Gambar di bawah ini menunjukkan pemetaan pin saluran ADC2.

Cara Menggunakan ESP32 ADC

ESP32 ADC bekerja dengan cara yang mirip seperti Arduino hanya perbedaannya di sini adalah ADC 12 bit. Jadi, papan ESP32 memetakan nilai tegangan analog mulai dari 0 hingga 4095 dalam nilai diskrit digital.

  • Jika tegangan yang diberikan ke ESP32 ADC adalah nol saluran ADC nilai digitalnya akan menjadi nol.
  • Jika tegangan yang diberikan ke ADC maksimum berarti 3.3V nilai digital output akan sama dengan 4095.
  • Untuk mengukur tegangan yang lebih tinggi, kita dapat menggunakan metode pembagi tegangan.

Catatan: ESP32 ADC secara default diatur pada 12-bit, namun dimungkinkan untuk mengkonfigurasinya menjadi 0-bit, 10-bit, dan 11-bit. ADC default 12-bit dapat mengukur nilai 2^12=4096 dan tegangan analog berkisar dari 0V hingga 3.3V.

Batasan ADC pada ESP32

Berikut beberapa batasan ADC ESP32:

  • ESP32 ADC tidak dapat secara langsung mengukur tegangan lebih besar dari 3.3V.
  • Saat driver Wi-Fi diaktifkan, ADC2 tidak dapat digunakan. Hanya 8 saluran ADC1 yang dapat digunakan.
  • ADC ESP32 tidak terlalu linier; itu menunjukkan non-linier perilaku dan tidak dapat membedakan antara 3.2V dan 3.3V. Namun, dimungkinkan untuk mengkalibrasi ESP32 ADC. Di Sini adalah artikel yang akan memandu Anda untuk mengkalibrasi perilaku nonlinier ESP32 ADC.

Perilaku nonlinier ESP32 dapat dilihat pada serial monitor Arduino IDE.

Program ESP32 ADC Menggunakan Arduino IDE

Cara terbaik untuk memahami cara kerja ESP32 ADC adalah dengan mengambil potensiometer dan membaca nilai terhadap resistansi nol hingga maksimum. Berikut ini adalah gambar rangkaian ESP32 dengan potensiometer yang diberikan.

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

Perangkat keras

Gambar berikut menampilkan perangkat keras ESP32 dengan potensiometer. Berikut daftar komponen yang dibutuhkan:

  • Papan DOIT ESP32 DEVKIT
  • Potensiometer
  • Papan tempat memotong roti
  • Kabel jumper

Kode

Buka Arduino IDE dan unggah kode di bawah ini di papan ESP32. Untuk memeriksa cara menginstal dan mengkonfigurasi ESP32 dengan Arduino IDE klik di sini .

konstan ke dalam Pin_Potensiometer = 25 ; /*Potensiometer terhubung pada GPIO 25 (Analog ADC2_CH8)*/
ke dalam Val_Potensiometer = 0 ; /*Nilai pembacaan potensiometer akan disimpan di sini*/
ruang kosong mempersiapkan ( ) {
Serial. mulai ( 115200 ) ; /*Komunikasi serial dimulai*/
}
ruang kosong lingkaran ( ) {
Val_Potensiometer = analogBaca ( Pin_Potensiometer ) ; /*Membaca nilai potensiometer*/
Serial. println ( Val_Potensiometer ) ; /*Mencetak nilai Potensiometer*/
menunda ( 2000 ) ; /*delay 2 detik*/
}

Di sini, di kode di atas, kami menginisialisasi pin digital 25 untuk potensiometer pada papan ESP32. Selanjutnya untuk mengambil input variabel Val_Potentiometer diinisialisasi. Berikutnya Komunikasi serial dimulai dengan mendefinisikan baud rate.

Dalam lingkaran bagian dari kode menggunakan fungsi analogRead() nilai ADC akan dibaca pada pin 25 dari ESP32. Selanjutnya menggunakan Serial.print() semua nilai dicetak pada monitor serial.

Keluaran

Output menampilkan nilai analog yang dipetakan terhadap nilai diskrit digital. Ketika tegangan baca maksimum yaitu 3.3V output digital sama dengan 4095 dan ketika tegangan baca 0V output digital menjadi 0.

Kesimpulan

Konverter analog ke digital digunakan di mana-mana terutama ketika kita harus menghubungkan papan mikrokontroler dengan sensor dan perangkat keras analog. ESP32 memiliki dua saluran untuk ADC yaitu ADC1 dan ADC2. Kedua saluran ini bergabung untuk menyediakan 18 pin untuk menghubungkan sensor analog. Namun, 3 diantaranya tidak tersedia pada ESP32 versi 30 pin. Untuk melihat lebih lanjut tentang membaca nilai analog, baca artikel.