Cara Kerja ADC Arduino Uno dan Contohnya

Arduino Uno memiliki kemampuan untuk membaca tegangan analog melalui pin atau terminal yang disebut sebagai analog pin, mulai dari A0 hingga A5. Ini berarti bahwa Arduino Uno dapat membaca hingga enam tegangan analog yang berbeda secara bersamaan. Keuntungannya adalah bahwa satu papan mikrokontroler dapat mengambil output tegangan analog dari enam sensor yang berbeda secara efisien.

Pada halaman ini, fokusnya adalah membahas pembacaan tegangan analog DC sebagai dasar pemahaman terhadap cara kerja Analog-to-Digital Converter (ADC) pada Arduino Uno. Pembahasan tentang pembacaan tegangan analog AC akan ditangani di lain waktu pada halaman yang berbeda karena membutuhkan pemahaman tentang rumus matematika yang lebih mendalam.

Penting untuk dicatat bahwa pembacaan pada analog pin dilakukan secara bergantian. Artinya, Arduino Uno tidak dapat membaca tegangan analog dari semua pin secara bersamaan. Sebagai contoh, jika Anda memiliki tiga sensor suhu yang terhubung ke pin A0, A1, dan A2, Anda perlu membaca tegangan analog pada A0 terlebih dahulu, kemudian A1, dan seterusnya. Tidak ada aturan yang mengatur urutan pin mana yang harus dibaca terlebih dahulu karena hal ini tergantung pada preferensi Anda atau programmer yang mengembangkan aplikasi tersebut.

Membuat Proyek ADC Arduino Uno

Sebelum Anda mulai membuat proyek menggunakan ADC Arduino Uno, ada beberapa hal penting yang perlu diketahui:

1. Tegangan Referensi Internal 5 Volt

Secara default, Arduino Uno menggunakan tegangan referensi internal sebesar 5 Volt untuk ADC-nya. Artinya, jika Anda melakukan pembacaan tegangan pada pin analog, jangkauan tegangan yang bisa diukur atau dibaca adalah antara 0 hingga 5 Volt.

Jika sensor atau perangkat lain yang Anda gunakan memiliki output maksimum 5 Volt, Anda dapat langsung menulis program pembacaan tegangan analog pada pin analog Arduino Uno.

2. Tegangan Referensi Internal 1,1 Volt

Jika tegangan maksimum dari output sensor atau perangkat elektronik yang Anda gunakan adalah 1,1 Volt, Anda perlu menggunakan tegangan referensi internal 1,1 Volt.

Untuk mengaktifkan tegangan referensi internal 1,1 Volt pada Arduino Uno, Anda perlu menambahkan perintah analogReference(INTERNAL) dalam blok void setup(). Contohnya:

void setup() {
    analogReference(INTERNAL);
}

3. Tegangan Referensi Eksternal

Jika tegangan analog yang akan dibaca oleh Arduino Uno memiliki nilai maksimum di luar rentang 1,1 Volt dan 5 Volt (namun di bawah 5 Volt), opsi yang paling sesuai adalah menggunakan tegangan referensi eksternal. Anda bisa melakukan ini dengan menghubungkan pin AREF Arduino Uno dengan tegangan DC eksternal yang Anda inginkan, maksimum 5 Volt.

Ini memungkinkan Anda untuk menyesuaikan tegangan referensi sesuai kebutuhan. Anda bisa melihat pin AREF pada gambar Arduino Uno. Jika Anda ingin kemampuan untuk mengatur tegangan eksternal, misalnya untuk keperluan pengujian atau percobaan, Anda dapat menggunakan potensiometer yang dihubungkan ke pin AREF, seperti yang ditunjukkan pada gambar.

Poin-poin ini penting untuk dipahami sebelum Anda mulai menggunakan ADC Arduino Uno dalam proyek Anda, karena memastikan bahwa Anda menggunakan tegangan referensi yang sesuai akan membantu Anda mendapatkan pembacaan tegangan yang akurat sesuai dengan kebutuhan Anda.

Untuk menggunakan tegangan referensi eksternal pada Arduino Uno, Anda perlu menambahkan perintah analogReference(EXTERNAL) dalam blok void setup(). Berikut adalah contoh penggunaan tegangan eksternal pada Arduino Uno:

void setup() {
    analogReference(EXTERNAL);
}

Dengan menuliskan perintah ini dalam blok void setup(), Arduino Uno akan menggunakan tegangan referensi eksternal sebagai referensi untuk pembacaan tegangan analog. Ini memungkinkan Anda untuk menyesuaikan tegangan referensi sesuai kebutuhan Anda, misalnya, untuk mengukur tegangan yang diluar rentang tegangan referensi internal.

4. Resolusi ADC 10 Bit

Resolusi ADC (Analog-to-Digital Converter) pada Arduino Uno adalah 10 bit. Artinya, setiap pembacaan tegangan analog yang diambil akan diinterpretasikan dalam bentuk bilangan biner 10 bit. Jika kita mengonversi nilai biner tersebut ke dalam desimal, nilai maksimum tegangan yang dapat diukur pada pin analog adalah sama dengan tegangan referensi, yang hasilnya adalah 1023.

5. Waktu Konversi (Conversion Time)

Waktu yang diperlukan untuk mengonversi tegangan analog menjadi digital pada ADC Arduino Uno adalah sebanyak 13 siklus clock. Pada kondisi normal single-ended, ini berarti proses konversi membutuhkan 13 siklus clock. Arduino Uno memiliki prescaler 7 bit untuk menentukan nilai sample rate ADC.

Sebagai contoh, jika prescaler diatur pada 128 dan Arduino Uno memiliki clock source sebesar 16 MHz, maka sample rate maksimum yang diizinkan adalah 16MHz / 128 / 13 = 9615 Hz, atau dalam penghitungan sederhana, 9600 Hz. Ini adalah frekuensi maksimum pada ADC Arduino Uno untuk mengambil sampel tegangan analog dan mengonversinya menjadi digital.

Membuat Proyek ADC Arduino Uno Menggunakan Sloeber IDE

Anda dapat membuat proyek ADC Arduino Uno dengan menggunakan Sloeber IDE. Sloeber IDE memiliki keunggulan dalam hal melihat dan mengedit source code library yang digunakan, yang merupakan fitur yang tidak dimiliki oleh Arduino IDE.

Untuk membuat proyek ADC Arduino Uno menggunakan Sloeber IDE, Anda dapat mengikuti langkah-langkah berikut:

1. Menjalankan Sloeber IDE: Mulailah dengan menjalankan Sloeber IDE. Anda dapat melakukannya dengan meng-klik file executable bernama “sloeber-ide”.

2. Membuat Proyek Baru: Setelah Sloeber IDE terbuka, langkah selanjutnya adalah membuat proyek baru. Untuk melakukan ini, klik menu “File” kemudian pilih “New” dan kemudian “Arduino Sketch”.

 

3. Beri Nama Proyek: Berikan nama pada proyek Anda di kotak dialog yang muncul, lalu klik tombol Next.

ADC Arduino Uno

4. Isi Platform dan Board: Isikan platform folder dan board yang Anda gunakan. Pada contoh ini, Anda menggunakan Arduino Uno. Setelah selesai, klik tombol Next.

ADC Arduino Uno

5. Selesaikan Pembuatan Proyek: Klik tombol Finish untuk menyelesaikan pembuatan proyek.

Setelah itu, Anda akan melihat proyek Anda dalam tab Project Explorer, dan dapat mulai menulis program Arduino di jendela Arduino_ADC.ino. Ini memungkinkan Anda untuk menulis program Arduino dengan cara yang sama seperti yang Anda lakukan dengan Arduino IDE.

Jendela ini mirip dengan lingkungan pengembangan Arduino IDE. Anda dapat menuliskan kode program Anda di sini, menggunakan sintaks yang sama seperti yang Anda lakukan dalam Arduino IDE. Ini mencakup menulis setup, loop, dan fungsi-fungsi lainnya yang mungkin Anda perlukan untuk proyek Anda.

Dengan cara ini, menggunakan Sloeber IDE memberikan fleksibilitas untuk menulis dan mengedit kode Arduino Anda dengan fitur tambahan yang mungkin tidak tersedia dalam Arduino IDE, seperti kemampuan untuk melihat dan mengedit source code library.

ADC Arduino Uno

Kode Program program ADC Arduino Uno

#include "Arduino.h"

float nilai;
float hasil;

void setup() {
    Serial.begin(9600);
}

void loop() {
    nilai = analogRead(A0);
    hasil = (nilai / 1023.0) * 5.0;

    Serial.print("A0 : ");
    Serial.print(hasil);
    Serial.println(" volt");

    Serial.print("Desimal: ");
    Serial.println(nilai);

    delay(1000);
}

Output:

Aθ: 5.00 Volt
Desimal: 1023.00
AO : 5.00 Volt
Desimal: 1023.00
AO : 5.00 Volt
Desimal: 1023.00

Penjelasan Kode:

float nilai;: Ini mendeklarasikan variabel global bernama nilai dengan tipe data float. Variabel ini digunakan untuk menyimpan nilai tegangan analog yang dibaca dari pin A0.

float hasil;: Mendeklarasikan variabel global bernama hasil dengan tipe data float. Variabel ini akan digunakan untuk menyimpan hasil konversi tegangan analog menjadi tegangan dalam volt.

void setup() {}: Ini adalah blok program di mana Anda bisa menulis kode inisialisasi. Kode yang Anda tulis di sini akan dieksekusi sekali saat Arduino pertama kali dinyalakan. Ini biasanya digunakan untuk melakukan persiapan awal seperti memulai komunikasi serial.

void loop() {}: Ini adalah blok program di mana Anda menulis kode yang akan dijalankan secara berulang kali. Setiap kode di dalam blok ini akan dieksekusi dari atas ke bawah dan kemudian kembali ke awal lagi, terus menerus.

Serial.begin(9600);: Ini adalah perintah untuk memulai komunikasi serial dengan kecepatan 9600 baud. Ini memungkinkan Arduino untuk berkomunikasi dengan perangkat lain melalui port serial.

nilai = analogRead(A0);: Perintah ini membaca nilai tegangan analog yang masuk ke pin A0 dan menyimpannya dalam variabel nilai. Hasil pembacaan ini adalah bilangan antara 0 dan 1023, sesuai dengan resolusi ADC Arduino Uno.

hasil = ((nilai / 1023) * 5.0);: Di sini, nilai analog dari pin A0 dibagi dengan 1023 (nilai maksimum resolusi ADC) dan dikalikan dengan 5.0 (tegangan referensi) untuk mendapatkan nilai tegangan dalam volt. Hasilnya disimpan dalam variabel hasil.

Serial.print("A0 : ");: Perintah ini mencetak teks “A0 : ” ke Serial Monitor IDE.

Serial.print(hasil);: Ini mencetak nilai hasil konversi tegangan analog ke Serial Monitor IDE.

Serial.println(" Volt");: Ini mencetak teks “Volt” ke Serial Monitor IDE setelah nilai tegangan dicetak. Ini akan membuat nilai tegangan dan satuan (Volt) muncul di baris yang berbeda di Serial Monitor.

Pembacaan Tegangan Analog pada Analog pin A0 dan A1

Untuk melakukan pembacaan dua tegangan analog dari potensiometer atau sensor lainnya, Anda perlu menghubungkan sumber tegangan analog ke dua pin analog Arduino, misalnya A0 dan A1. Sumber tegangan analog ini biasanya merupakan keluaran dari sensor atau potensiometer.

Dalam percobaan ini, kita menggunakan dua potensiometer yang dihubungkan ke pin A0 dan A1 pada Arduino. Potensiometer adalah komponen yang memungkinkan kita mengatur tegangan keluaran dengan memutar knobnya. Dengan mengubah posisi knob pada potensiometer, kita dapat mengubah tegangan keluaran dari potensiometer tersebut. Rangkaian ini memungkinkan kita untuk menguji pembacaan dua tegangan analog secara bersamaan oleh Arduino Uno.

Dengan mengakses dua pin analog tersebut, kita bisa membaca kedua tegangan analog tersebut dalam program Arduino dan melakukan pengolahan data sesuai kebutuhan aplikasi kita. Misalnya, kita bisa menggunakan data dari kedua potensiometer tersebut untuk mengontrol perangkat elektronik, melakukan pemantauan lingkungan, atau membuat sistem kendali otomatis.

ADC Arduino Uno

ADC (Analog to Digital Converter) Arduino Uno memungkinkan Anda untuk membaca tegangan analog dari berbagai sumber, dan pin atau terminal A0 hingga A5 secara khusus dianggap sebagai pin analog. Ini berarti, Anda dapat membaca hingga 6 tegangan analog yang berbeda dengan satu papan mikrokontroler.

#include "Arduino.h"
float nilai;
float hasil;

void setup() {
    Serial.begin(9600);
}

void loop() {
    nilai = analogRead(A0);
    hasil = (nilai / 1023.0) * 5.0;
    Serial.print("A0 : ");
    Serial.print(hasil);
    Serial.println(" Volt");

    nilai = analogRead(A1);
    hasil = (nilai / 1023.0) * 5.0;
    Serial.print("A1 : ");
    Serial.print(hasil);
    Serial.println(" Volt");

    delay(1000);
    Serial.println(" ");
}

Output:

AO : 2.72 volt
A1 : 3.47 Volt
Ae : 2.72 Volt
A1 : 3.47 Volt

Jika Anda memiliki banyak sensor dengan output tegangan analog, yang maksimalnya adalah 6 pada Arduino Uno, Anda dapat menuliskan program pembacaan analogRead dari pin A0 hingga A5 secara bergantian atau berurutan. Ini berarti Anda bisa membaca tegangan dari setiap sensor satu per satu.

Contoh pada gambar menunjukkan bagaimana Anda bisa membaca tegangan dari dua sensor, yaitu sensor pada pin A0 dan A1 secara bergantian. Pertama, program membaca tegangan dari sensor pada pin A0 dan menyimpannya dalam variabel. Kemudian, program membaca tegangan dari sensor pada pin A1 dan menyimpannya dalam variabel lain. Setelah itu, program dapat melakukan pemrosesan atau tindakan lain dengan menggunakan data yang telah dibaca.

Dengan cara ini, Anda dapat membuat program untuk membaca tegangan dari banyak sensor yang terhubung ke pin analog Arduino secara berurutan. Ini memberi fleksibilitas dalam mengintegrasikan banyak sensor dalam satu proyek dan melakukan pemantauan atau pengukuran yang kompleks.

Tinggalkan komentar