ESP32 ADC – Membaca Nilai Analog dengan Arduino IDE

Artikel ini menunjukkan cara membaca input analog dengan ESP32 menggunakan Arduino IDE. Pembacaan analog berguna untuk membaca nilai dari resistor variabel seperti potensiometer, atau sensor analog.

Kami juga memiliki tutorial lain tentang cara menggunakan pin analog dengan papan ESP :

    ESP8266 ADC – Membaca Nilai Analog denganArduino IDE, MicroPython dan Lua

    Pembacaan Analog ESP32 dengan MicroPython

Tonton Videonya

Anda dapat menonton video tutorial atau terus membaca halaman ini untuk instruksi tertulis.

Input Analog (ADC)

Membaca nilai analog dengan ESP32 berarti Anda dapat mengukur tingkat tegangan yang bervariasi antara 0 V dan 3,3 V.

Tegangan yang diukur kemudian ditetapkan ke nilai antara 0 dan 4095, di mana 0 V sesuai dengan 0, dan 3,3 V sesuai dengan 4095. Setiap tegangan antara 0 V dan 3,3 V akan diberikan nilai yang sesuai di antaranya.

ADC adalah Non-linear

Idealnya, Anda akan mengharapkan perilaku linier saat menggunakan pin ADC ESP32. Namun, itu tidak terjadi. Apa yang akan Anda dapatkan adalah perilaku seperti yang ditunjukkan pada grafik berikut :

Perilaku ini berarti bahwa ESP32 Anda tidak dapat membedakan 3,3 V dari 3,2 V. Anda akan mendapatkan nilai yang sama untuk kedua tegangan: 4095.

Hal yang sama terjadi untuk nilai tegangan yang sangat rendah: untuk 0 V dan 0,1 V Anda akan mendapatkan nilai yang sama: 0. Anda harus mengingat hal ini saat menggunakan pin ADC ESP32.

Ada diskusi di GitHub tentang hal ini.

Fungsi analogRead()

Membaca input analog dengan ESP32 menggunakan Arduino IDE semudah menggunakan fungsi analogRead(). Ia menerima sebagai argumen, GPIO yang ingin Anda baca :

ESP32 mendukung pengukuran di 18 saluran berbeda. Hanya 15 yang tersedia di papan DEVKIT V1 DOIT (versi dengan 30 GPIO).

Ambil pinout papan ESP32 Anda dan temukan pin ADC. Ini disorot dengan batas merah pada gambar di bawah.

Pelajari lebih lanjut tentang GPIO ESP32: Referensi Pinout ESP32.

Pin input analog ini memiliki resolusi 12-bit. Ini berarti bahwa ketika Anda membaca input analog, jangkauannya dapat bervariasi dari 0 hingga 4095.

Fungsi Berguna Lainnya

Ada fungsi lain yang lebih canggih untuk digunakan dengan pin ADC yang dapat berguna dalam proyek lain.

    analogReadResolution(resolusi): mengatur bit sampel dan resolusi. Ini bisa menjadi nilai antara 9 (0 – 511) dan 12 bit (0 – 4095). Standarnya adalah resolusi 12-bit.

    analogSetWidth(width): mengatur bit sampel dan resolusi. Ini bisa menjadi nilai antara 9 (0 – 511) dan 12 bit (0 – 4095). Standarnya adalah resolusi 12-bit.

    analogSetCycles(cycles): mengatur jumlah siklus per sampel. Standarnya adalah 8. Rentang: 1 hingga 255.

    analogSetSamples(sampel): mengatur jumlah sampel dalam rentang. Standarnya adalah 1 sampel. Ini memiliki efek meningkatkan sensitivitas.

    analogSetClockDiv(atenuasi): mengatur pembagi untuk jam ADC. Standarnya adalah 1. Rentang: 1 hingga 255.

     analogSetAttenuation(atenuasi): mengatur redaman input untuk semua pin ADC. Standarnya adalah ADC_11db. Nilai yang diterima:

        1. ADC_0db: tidak menetapkan redaman. ADC dapat mengukur hingga sekitar 800 mV (input 1V = pembacaan ADC 1088).

        2. ADC_2_5db: Tegangan input ADC akan dilemahkan, memperluas jangkauan pengukuran hingga kira-kira. 1100mV. (input 1V = pembacaan ADC 3722).

        3. ADC_6db: Tegangan input ADC akan dilemahkan, memperluas jangkauan pengukuran hingga kira-kira. 1350 mV. (input 1V = pembacaan ADC 3033).

        4. ADC_11db: Tegangan input ADC akan dilemahkan, memperluas jangkauan pengukuran hingga kira-kira. 2600 mV. (input 1V = pembacaan ADC 1575).

analogSetPinAttenuation(pin, attenuation): mengatur redaman input untuk pin yang ditentukan. Standarnya adalah ADC_11db. Nilai redaman sama dari fungsi sebelumnya.

adcAttachPin(pin): Pasang pin ke ADC (juga menghapus mode analog lain yang mungkin aktif). Mengembalikan hasil TRUE atau FALSE.

adcStart(pin), adcBusy(pin) dan resultadcEnd(pin): memulai konversi ADC pada bus pin yang terpasang. Periksa apakah konversi pada bus ADC pin sedang berjalan (mengembalikan TRUE atau FALSE). Dapatkan hasil konversi: mengembalikan bilangan bulat 16-bit.

Baca Nilai Analog dari Potensiometer dengan ESP32

Untuk melihat bagaimana semuanya saling terkait, kami akan membuat contoh sederhana untuk membaca nilai analog dari potensiometer.

Untuk contoh ini, Anda memerlukan bagian-bagian berikut :

    ESP32 DOIT DEVKIT V1 Board (baca Papan pengembangan ESP32 Terbaik)

    Potensiometer

    Papan tempat memotong roti

    Kabel jumper

Skema

Hubungkan potensiometer ke ESP32 Anda. Pin tengah potensiometer harus terhubung ke GPIO 34. Anda dapat menggunakan diagram skema berikut sebagai referensi.

Kode

Kami akan memprogram ESP32 menggunakan Arduino IDE, jadi pastikan Anda telah menginstal add-on ESP32 sebelum melanjutkan:

    Instruksi WindowsPapan ESP32 di ArduinoIDE

    Instruksi Mac dan LinuxPapan ESP32 diArduino IDE

Buka Arduino IDE Anda dan salin kode berikut.

Kode ini hanya membaca nilai dari potensiometer dan mencetak nilai tersebut di Serial Monitor.

Dalam kode, Anda mulai dengan menentukan GPIO yang terhubung dengan potensiometer. Dalam contoh ini, GPIO 34.

Dalam setup(), inisialisasi komunikasi serial pada baud rate 115200.

Dalam loop(), gunakan fungsi analogRead() untuk membaca input analog dari potPin.

Terakhir, cetak nilai yang dibaca dari potensiometer di monitor serial.

Unggah kode yang diberikan ke ESP32 Anda. Pastikan Anda memilih papan kanan dan port COM di menu Alat.

Menguji Contoh

Setelah mengupload kode dan menekan tombol reset ESP32, buka Serial Monitor dengan baud rate 115200. Putar potensiometer dan lihat nilainya berubah.

Nilai maksimum yang akan Anda dapatkan adalah 4095 dan nilai minimumnya adalah 0.

Membungkus

Pada artikel ini Anda telah mempelajari cara membaca input analog menggunakan ESP32 dengan Arduino IDE. Kesimpulan:

    • Board ESP32 DEVKIT V1 DOIT (versi dengan 30 pin) memiliki 15 pin ADC yang dapat Anda gunakan untuk membaca input analog.

    • Pin ini memiliki resolusi 12 bit, yang berarti Anda bisa mendapatkan nilai dari 0 hingga 4095.

    • Untuk membaca nilai di Arduino IDE, Anda cukup menggunakan fungsi analogRead().

    • Pin ADC ESP32 tidak memiliki perilaku linier. Anda mungkin tidak akan dapat membedakan antara 0 dan 0,1V, atau antara 3,2 dan 3,3V. Anda perlu mengingatnya saat menggunakan pin ADC.

Kami harap panduan singkat ini bermanfaat bagi Anda. Jika Anda ingin mempelajari lebih lanjut tentang ESP32, daftar di kursus kami: Belajar ESP32 dengan Arduino IDE.

Panduan ESP32 lain yang mungkin juga Anda sukai :

    Tampilan OLED ESP32 dengan Arduino IDE

    ESP32 dengan Sensor Suhu dan Kelembaban DHTmenggunakan Arduino IDE

    Server Web ESP32 dengan pembacaan DHT

    20+ Proyek dan Tutorial ESP32

Posting Komentar

0 Komentar