Penerapan ADC pada Arduino Uno Menggunakan Proteus

Tujuan Praktikum

Setelah praktikum ini, mahasiswa mampu:

  1. Memahami prinsip kerja ADC pada Arduino Uno
  2. Menjelaskan hubungan tegangan analog – nilai digital ADC
  3. Memahami pengaruh resolusi ADC dan sampling
  4. Mengimplementasikan pembacaan ADC menggunakan Proteus
  5. Mengonversi nilai ADC menjadi tegangan aktual

Dasar Teori Singkat (Ringkas & Relevan)

    • Arduino Uno memiliki ADC 10-bit
    • Jumlah level digital:

210=1024⇒(0–1023)

    • Resolusi ADC @ 5V:

Rumusa – Penerapan ADC pada Arduino Uno Menggunakan Proteus

Rumus Konversi:

Rumusi – Penerapan ADC pada Arduino Uno Menggunakan Proteus

Alat dan Bahan (Proteus)

🧰 Software:

        • Proteus ISIS

🔌 Komponen:

        • Arduino Uno
        • Potentiometer (10kΩ)
        • Voltmeter (Proteus)
        • Resistor (opsional)
        • Virtual Terminal (Serial Monitor)
        • Power & Ground

Rangkaian Praktikum di Proteus

🔧 Konfigurasi Rangkaian:

    • Potensiometer:
      • Pin 1 → 5V
      • Pin 2 (wiper) → A0 Arduino
      • Pin 3 → GND
    • Virtual Terminal:
      • RX → TX Arduino
    • Voltmeter:
      • Dipasang di wiper potensiometer

📌 Potensiometer = sumber sinyal analog variabel

Langkah Praktikum

Langkah 1 — Buat Rangkaian di Proteus

  1. Buka Proteus
  2. Buat rangkaian sesuai konfigurasi
  3. Pastikan koneksi A0, 5V, dan GND benar

Langkah 2 — Program Pembacaan ADC (Dasar)

void setup() {

  Serial.begin(9600);

}




void loop() {

  int adcValue = analogRead(A0);

  Serial.println(adcValue);

  delay(500);

}

▶ Jalankan simulasi
▶ Putar potensiometer
▶ Amati nilai 0–1023

Langkah 3 — Konversi ADC ke Tegangan

void setup() {

  Serial.begin(9600);

}




void loop() {

  int adcValue = analogRead(A0);

  float voltage = adcValue * (5.0 / 1023.0);




  Serial.print("ADC = ");

  Serial.print(adcValue);

  Serial.print(" | Tegangan = ");

  Serial.print(voltage);

  Serial.println(" V");




  delay(500);

}

📌 Bandingkan:

  • Tegangan di Serial Monitor
  • Tegangan di Voltmeter Proteus

Percobaan Sampling ADC

Langkah 4 — Pengaruh Sampling Rate

Ubah delay:

delay(1000); // sampling lambat

Lalu:

delay(50); // sampling cepat

Amati:

  • Respons perubahan nilai
  • Kehalusan pembacaan

📌 Kesimpulan:

  • Sampling cepat → respons lebih halus
  • Sampling lambat → perubahan terasa patah

Percobaan Tegangan Referensi ADC

Langkah 5 — ADC dengan Internal Reference (1.1V)

void setup() {

  Serial.begin(9600);

  analogReference(INTERNAL);

}




void loop() {

  int adcValue = analogRead(A0);

  float voltage = adcValue * (1.1 / 1023.0);

  Serial.println(voltage);

  delay(500);

}

📌 Bandingkan:

  • Range pembacaan
  • Resolusi lebih tinggi untuk tegangan kecil

Tabel Pengamatan

Tegangan Voltmeter (V)Nilai ADCTegangan Terhitung (V)

Contoh Hasil Pengamatan

Contoh pengisian tabel pengamatan dengan Vref 5 V (nilai teoretis ADC = V × 1023 / 5):

Tegangan Voltmeter (V)Nilai ADCTegangan Terhitung (V)
0,0000,00
1,252561,25
2,505122,50
3,757673,75
5,0010235,00

Selisih satu digit wajar karena kuantisasi ADC. Satu langkah ADC pada Vref 5 V ≈ 4,9 mV.

Pembahasan Tugas 1: Resolusi ADC

  • Vref 5 V: 5 / 1024 ≈ 4,88 mV per langkah.
  • Vref 3,3 V (lewat pin AREF): 3,3 / 1024 ≈ 3,22 mV per langkah.
  • Vref internal 1,1 V: 1,1 / 1024 ≈ 1,07 mV per langkah.

Makin kecil Vref, makin halus resolusinya, tetapi rentang tegangan yang bisa diukur ikut mengecil. Pilih Vref sedikit di atas tegangan maksimum sinyal.

Penting: jika memakai referensi eksternal di pin AREF, panggil analogReference(EXTERNAL) sebelum analogRead() pertama. Menyambung tegangan ke AREF saat mode DEFAULT dapat merusak mikrokontroler.

Menyaring Derau dengan Moving Average

const int N = 10;
int buf[N];
int idx = 0;
long total = 0;

void setup() {
  Serial.begin(9600);
  for (int i = 0; i < N; i++) buf[i] = 0;
}

void loop() {
  total -= buf[idx];
  buf[idx] = analogRead(A0);
  total += buf[idx];
  idx = (idx + 1) % N;

  float rata = total / (float)N;
  float tegangan = rata * 5.0 / 1023.0;
  Serial.println(tegangan, 3);
  delay(50);
}

Moving average membuat pembacaan lebih stabil, dengan konsekuensi respons sedikit lebih lambat.

Dari Nilai ADC ke Satuan Teknik

Sensor industri sering mengeluarkan 0–5 V atau 1–5 V (dari 4–20 mA melalui resistor 250 Ω). Rumus scaling linier:

Nilai = (ADC − ADCmin) / (ADCmax − ADCmin) × (Rangemax − Rangemin) + Rangemin

Contoh 1–5 V untuk tekanan 0–10 bar: ADCmin ≈ 205 (1 V), ADCmax = 1023 (5 V). Nilai ADC 614 → (614 − 205) / (1023 − 205) × 10 ≈ 5,0 bar.

Analisis Hasil

  1. Apakah nilai ADC sesuai teori?
  2. Apakah resolusi 10-bit cukup untuk sensor analog?
  3. Bagaimana pengaruh sampling terhadap respons sistem?
  4. Mengapa Vref mempengaruhi akurasi?

Tugas Praktikum

Tugas 1 — Analisis Resolusi

  1. Hitung resolusi ADC Arduino Uno @5V
  2. Hitung resolusi jika Vref = 3.3V
  3. Bandingkan hasilnya

Tugas 2 — Simulasi Sensor

Ganti potensiometer dengan:

  • Sensor suhu (LM35) (simulasi)
  1. Hubungkan output sensor ke A0
  2. Tampilkan suhu dalam °C
  3. Gunakan rumus konversi

Tugas 3 — Sampling & Noise

  1. Gunakan delay:
    • 1000 ms
    • 100 ms
    • 10 ms
  2. Bandingkan fluktuasi data
  3. Jelaskan hubungan sampling & noise

Tugas 4 — Refleksi

Jawab singkat:

  1. Apakah resolusi ADC mempengaruhi sampling?
  2. Mengapa ADC penting dalam IoT dan PLC?
  3. Kapan Vref internal lebih baik digunakan?

Kesimpulan Praktikum

  • ADC mengubah tegangan analog → data digital
  • Resolusi ADC menentukan ketelitian
  • Sampling menentukan respons waktu
  • Proteus membantu memahami ADC tanpa hardware fisik
  • Konsep ADC sangat penting pada IoT, PLC, dan sistem kontrol

Pengembangan Lanjutan

  • ADC ESP32 (12-bit)
  • ADC PLC Analog Input
  • Filtering digital (moving average)
  • Interrupt-based ADC

 

Baca juga:
— Training ESP32 Berbasis IoT – Pelatihan Praktis & Bersertifikat

Baca juga: Ingin Jadi Ahli IoT & Otomasi? Semua Bisa Dimulai dari Arduino! untuk memahami roadmap lengkap belajar Arduino dari dasar hingga proyek IoT.

Related Articles

Chat Langsung dengan Kami
Staff bisaioti 1 — +62 823-3306-4821 E-Course, Offline Course, Hardware & Teknis IoT/OT Staff bisaioti 2 — +62 823-3306-4821 Training Korporat & Toko Hardware