Raspberry Pi Pico memiliki fitur ADC (Analog-to-Digital Converter) yang memungkinkan mikrokontroler membaca sinyal analog dari berbagai sensor. Dengan ADC, perubahan tegangan yang dihasilkan sensor dapat diubah menjadi data digital yang dapat diproses oleh program. Kemampuan ini sangat berguna ketika Raspberry Pi Pico digunakan untuk membuat berbagai proyek elektronika, seperti membaca sensor cahaya LDR, potensiometer, sensor suhu, sensor tekanan, dan sensor analog lainnya. Pada tutorial ini, kita akan mempelajari cara menggunakan ADC Raspberry Pi Pico dengan MicroPython. Sebagai contoh, sebuah potensiometer akan digunakan untuk menghasilkan tegangan analog yang nilainya dapat diubah-ubah. Raspberry Pi Pico kemudian membaca tegangan tersebut melalui pin ADC dan menampilkannya sebagai nilai digital pada Thonny IDE.
Apa Itu ADC?
ADC atau Analog-to-Digital Converter adalah bagian dari mikrokontroler yang berfungsi untuk mengubah sinyal analog menjadi data digital. Sinyal analog memiliki nilai yang dapat berubah secara terus-menerus. Contohnya adalah tegangan dari sensor yang dapat berubah dari 0 V, 0,5 V, 1 V, 1,5 V, dan seterusnya. Sedangkan komputer dan mikrokontroler bekerja menggunakan data digital. Oleh karena itu, sinyal analog perlu dikonversi terlebih dahulu agar dapat diproses oleh program. Secara sederhana, prosesnya dapat digambarkan seperti berikut:
Sensor → Tegangan Analog → ADC Raspberry Pi Pico → Nilai Digital → Program
Sebagai contoh, ketika sensor menghasilkan tegangan yang lebih tinggi, ADC akan menghasilkan nilai digital yang lebih besar. Sebaliknya, ketika tegangan sensor turun, nilai ADC juga akan ikut turun.
Fungsi ADC pada Proyek Elektronika
ADC dapat digunakan untuk membaca berbagai komponen dan sensor analog, misalnya:
- LDR (Light Dependent Resistor) untuk mendeteksi intensitas cahaya.
- Sensor suhu analog.
- Sensor kelembapan analog.
- Potensiometer.
- Sensor tekanan.
- Sensor gas dengan keluaran analog.
- Joystick analog.
- Berbagai modul sensor yang memiliki pin output analog.
Dengan ADC, Raspberry Pi Pico tidak hanya dapat mengetahui apakah sebuah input bernilai HIGH atau LOW, tetapi juga dapat membaca tingkatan nilai sinyal analog.
Baca juga: Deteksi Gerakan dengan PIR HC-SR501 pada Raspberry Pi Pico
ADC pada Raspberry Pi Pico
Raspberry Pi Pico menggunakan mikrokontroler RP2040 yang memiliki ADC dengan resolusi 12-bit.
Secara teori, ADC 12-bit memiliki 2¹² = 4096 nilai. Artinya, rentang pembacaan ADC secara internal berada pada 0 sampai 4095. Namun, ketika menggunakan MicroPython dan fungsi read_u16(), nilai ADC dikembalikan dalam rentang 0 sampai 65535. Nilai tersebut merupakan representasi yang diskalakan dari pembacaan ADC 12-bit. Dengan demikian:
- Tegangan mendekati 0 V → nilai ADC mendekati 0
- Tegangan sekitar 1,65 V → nilai ADC sekitar 32768
- Tegangan sekitar 3,3 V → nilai ADC mendekati 65535
Nilai tersebut kemudian dapat digunakan dalam program untuk melakukan berbagai perhitungan atau mengendalikan komponen lain.
Pin ADC Raspberry Pi Pico
Raspberry Pi Pico menyediakan beberapa pin yang dapat digunakan sebagai input ADC. Pin ADC eksternal yang umum digunakan adalah:
Untuk tutorial ini, Anda akan menggunakan GP26 atau ADC.
Catatan: Input ADC Raspberry Pi Pico bekerja pada rentang tegangan hingga sekitar 3,3 V. Jangan memberikan tegangan 5 V secara langsung ke pin ADC karena dapat merusak GPIO atau mikrokontroler.
Komponen yang Dibutuhkanr]
Untuk mencoba tutorial ADC Raspberry Pi Pico, siapkan beberapa komponen berikut:
- 1 × Raspberry Pi Pico
- 1 × Potensiometer, misalnya 5 kΩ
- Breadboard
- Kabel jumper
- Kabel USB
- Komputer/laptop
- Thonny IDE
Potensiometer digunakan sebagai sumber tegangan analog yang nilainya dapat diubah dengan memutar knop.
Rangkaian ADC Raspberry Pi Pico dengan Potensiometer
Potensiometer memiliki tiga kaki. Dua kaki digunakan sebagai sumber tegangan dan ground, sedangkan kaki tengah menghasilkan tegangan yang dapat berubah-ubah. Hubungkan potensiometer dengan Raspberry Pi Pico sebagai berikut:
Dengan rangkaian tersebut, ketika knop potensiometer diputar, tegangan pada kaki tengah akan berubah. Tegangan tersebut kemudian dibaca oleh ADC Raspberry Pi Pico melalui GPIO26.
Cara Kerja Rangkaian
Prinsip kerja rangkaian cukup sederhana. Ketika knop potensiometer berada di salah satu sisi, tegangan output dapat mendekati 0 V. ADC kemudian membaca nilai yang rendah. Ketika knop berada di posisi tengah, tegangan output berada di sekitar pertengahan rentang tegangan. Nilai ADC juga berada di sekitar nilai tengah. Ketika knop diputar ke sisi lainnya, tegangan output dapat mendekati 3,3 V sehingga nilai ADC menjadi semakin besar. Secara sederhana:
0 V → ADC rendah
1,65 V → ADC sekitar setengah
3,3 V → ADC tinggi
Membaca Nilai ADC Raspberry Pi Pico dengan MicroPython
Setelah rangkaian selesai dibuat, Anda dapat menggunakan MicroPython untuk membaca nilai ADC. MicroPython menyediakan modul machine yang dapat digunakan untuk mengakses hardware Raspberry Pi Pico. Berikut contoh program sederhananya:
from machine import ADC
from time import sleep
adc = ADC(26)
while True:
nilai_adc = adc.read_u16()
print("Nilai ADC:", nilai_adc)
sleep(0.5)
Penjelasan Program
Baris berikut digunakan untuk mengimpor fungsi ADC dari modul machine:
from machine import ADC
Kemudian Anda dapat membuat objek ADC menggunakan GPIO26:
adc = ADC(26)
GPIO26 merupakan salah satu pin yang terhubung dengan ADC pada Raspberry Pi Pico. Selanjutnya, program membaca nilai ADC menggunakan:
nilai_adc = adc.read_u16()
Fungsi read_u16() menghasilkan nilai dalam rentang 0 hingga 65535. Nilai tersebut kemudian ditampilkan pada Shell Thonny menggunakan:
print("Nilai ADC:", nilai_adc)
Perintah sleep(0.5) digunakan untuk memberikan jeda selama 0,5 detik sebelum pembacaan berikutnya.
Mengubah Nilai ADC Menjadi Tegangan
Nilai digital dari ADC sering kali belum cukup untuk mengetahui kondisi sebenarnya dari sensor. Anda juga dapat mengubah nilai ADC tersebut menjadi nilai tegangan dalam satuan Volt. Karena read_u16() menghasilkan nilai antara 0 sampai 65535, tegangan dapat dihitung menggunakan rumus:
Tegangan = (Nilai ADC / 65535) × 3,3
Keterangan:
- Nilai ADC = hasil pembacaan read_u16()
- 65535 = nilai maksimum pembacaan read_u16()
- 3,3 V = tegangan referensi yang digunakan dalam contoh ini
Contoh Perhitungan
Misalnya Raspberry Pi Pico mendapatkan nilai ADC 32768, maka:
Tegangan = (32768 / 65535) × 3,3
Hasilnya kurang lebih 1,65 V.
Jadi, nilai ADC sekitar 32768 menunjukkan tegangan input sekitar 1,65 V.
Program ADC untuk Menampilkan Nilai Digital dan Tegangan
Agar hasil pembacaan lebih informatif, Anda dapat membuat program yang menampilkan nilai ADC sekaligus tegangan. Gunakan program berikut:
from machine import ADC
from time import sleep
adc = ADC(26)
while True:
nilai_adc = adc.read_u16()
tegangan = (nilai_adc / 65535) * 3.3
print("Nilai ADC :", nilai_adc)
print("Tegangan :", round(tegangan, 2), "V")
print("--------------------")
sleep(0.5)
Program tersebut akan menghasilkan output seperti di bawah ini:
Nilai sebenarnya akan berubah sesuai dengan posisi knop potensiometer.
Menguji ADC Raspberry Pi Pico
Setelah program dijalankan melalui Thonny IDE, buka bagian Shell untuk melihat hasil pembacaan. Coba putar knop potensiometer secara perlahan. Ketika knop diputar, perhatikan nilai ADC yang ditampilkan. Jika rangkaian bekerja dengan benar, nilai tersebut akan berubah mengikuti perubahan tegangan pada pin GP26.
1. Saat Tegangan Rendah
Ketika tegangan input mendekati 0 V, nilai ADC akan mendekati 0.
2. Saat Tegangan Berada di Tengah
Ketika tegangan input berada di sekitar 1,65 V, nilai ADC akan berada di sekitar 32768.
3. Saat Tegangan Tinggi
Ketika tegangan input mendekati 3,3 V, nilai ADC akan mendekati 65535.
Dengan demikian, Anda dapat melihat bahwa ADC Raspberry Pi Pico mengubah perubahan tegangan analog menjadi nilai digital yang dapat dibaca oleh program.
Contoh Penggunaan ADC untuk Sensor
Potensiometer pada tutorial ini hanya digunakan sebagai contoh untuk memahami cara kerja ADC. Dalam proyek sebenarnya, potensiometer dapat digantikan dengan berbagai sensor analog. Misalnya, jika Anda menggunakan LDR, perubahan intensitas cahaya akan menyebabkan perubahan tegangan pada rangkaian pembagi tegangan. Tegangan tersebut kemudian dapat dibaca oleh ADC Raspberry Pi Pico. Alur kerjanya menjadi:
Perubahan cahaya → Perubahan resistansi LDR → Perubahan tegangan → ADC → Nilai digital
Nilai digital tersebut kemudian dapat digunakan untuk membuat sistem otomatis. Contohnya:
- Menyalakan LED ketika kondisi gelap.
- Mengatur tingkat kecerahan LED.
- Mengaktifkan buzzer ketika intensitas cahaya tertentu tercapai.
- Menampilkan nilai sensor pada LCD atau OLED.
- Mengirim data sensor ke perangkat lain.
Hal yang Perlu Diperhatikan Saat Menggunakan ADC
Ada beberapa hal penting yang perlu diperhatikan ketika menggunakan ADC Raspberry Pi Pico.
1. Jangan Memberikan Tegangan Lebih dari 3,3 V
Pin ADC Raspberry Pi Pico tidak dirancang untuk menerima input analog 5 V secara langsung. Jika sensor memiliki output analog lebih dari 3,3 V, diperlukan rangkaian tambahan seperti voltage divider untuk menurunkan tegangan sebelum masuk ke pin ADC.
2. Pastikan Ground Terhubung
Sensor dan Raspberry Pi Pico harus memiliki referensi ground yang sama. Untuk rangkaian sederhana, pastikan:
GND sensor → GND Raspberry Pi Pico
Tanpa ground yang sama, hasil pembacaan ADC dapat menjadi tidak sesuai atau tidak stabil.
3. Gunakan Pin ADC yang Benar
Pastikan kabel output analog sensor terhubung ke pin ADC, seperti GP26, GP27, atau GP28. Jangan menghubungkan output sensor ke pin GPIO biasa jika tujuan utamanya adalah membaca nilai analog.
Perbedaan Input Digital dan ADC
ADC menjadi penting karena terdapat perbedaan antara membaca input digital dan membaca input analog. Input digital pada dasarnya hanya mengenali dua kondisi LOW atau HIGH. Sedangkan ADC dapat membaca perubahan nilai tegangan dalam suatu rentang. Sebagai contoh, jika menggunakan sensor cahaya:
Input digital:
Gelap → LOW
Terang → HIGH
Sedangkan dengan ADC:
Gelap → 5000
Redup → 15000
Sedang → 30000
Terang → 50000
Dengan ADC, informasi yang diperoleh menjadi lebih detail sehingga lebih mudah digunakan untuk membuat sistem yang membutuhkan batas atau tingkat tertentu.
Baca juga: Komunikasi UART Raspberry Pi Pico dan ESP32: Mengirim Data Serial
Dalam praktik, hasil dan kendala yang ditemui bisa berbeda tergantung perangkat, konfigurasi, versi library, dan sistem yang digunakan.
- Diskusi umum dan tanya jawab praktik: https://t.me/edukasielektronika
- Kendala spesifik dan kasus tertentu: http://bit.ly/Chatarduino






0 Komentar