Mengubah Nilai Sensor Menjadi Data Digital dengan ADC Raspberry Pi Pico

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:


Pin GPIO

Kanal ADC

GP26

ADC0

GP27

ADC1

GP28

ADC2


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:


Potensiometer

Raspberry Pi Pico

Kaki 1

3V3(OUT)

Kaki tengah

GP26 / ADC0

Kaki 3

GND


 


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.

Posting Komentar

0 Komentar