Konversi Analog ke Digital (ADC)

Mempelajari cara mengubah sinyal analog dunia nyata menjadi data digital yang bisa dipahami Arduino, termasuk membaca sensor kelembaban tanah untuk sistem penyiraman otomatis.

90 Menit
Modul 1 & 2: Review & Eksplorasi Sensor Tingkat Lanjut
Pertemuan 5

TPTujuan Pembelajaran

  1. Peserta didik dapat menjelaskan konsep ADC (Analog-to-Digital Converter) dan resolusinya
  2. Peserta didik dapat menghitung tegangan dari nilai ADC menggunakan rumus konversi
  3. Peserta didik dapat membaca sensor kelembaban tanah (soil moisture) sebagai sensor analog
  4. Peserta didik dapat membangun sistem penyiraman otomatis berbasis pembacaan ADC

Konsep ADC

Dunia nyata bersifat analog. Suhu ruangan tidak tiba-tiba meloncat dari 25°C ke 26°C, melainkan naik secara perlahan (25.1, 25.2, dst). Sinyal ini berupa kurva halus.

Di sisi lain, mikrokontroler seperti Arduino adalah perangkat digital yang hanya mengerti 0 dan 1 (tegangan LOW atau HIGH). Untuk menjembatani perbedaan ini, Arduino membutuhkan ADC (Analog-to-Digital Converter).

Proses konversi sinyal oleh ADC

Resolusi 10-bit Arduino

Pin analog Arduino Uno (A0 - A5) memiliki ADC dengan resolusi 10-bit. Apa maksud dari 10-bit?

Angka 10-bit berarti Arduino bisa membedakan tegangan masuk ke dalam 2 pangkat 10 tingkat yang berbeda.
210 = 1024 tingkat (dimulai dari 0 hingga 1023).

  • Tegangan 0V akan dibaca sebagai angka 0
  • Tegangan 5V akan dibaca sebagai angka 1023

Rumus Konversi Tegangan

Terkadang kita perlu mengetahui berapa Volt sebenarnya tegangan yang masuk ke pin analog berdasarkan angka yang kita baca menggunakan analogRead().

Contoh: Jika kita membaca nilai ADC 512 (sekitar setengah dari 1023), maka tegangannya adalah:
(512 / 1023.0) × 5.0 ≈ 2.5V

Sensor Kelembaban Tanah

Salah satu sensor analog yang paling umum adalah Soil Moisture Sensor. Sensor ini menggunakan dua buah probe berlapis konduktor untuk mengalirkan arus listrik kecil ke dalam tanah.

  • Tanah Basah: Air menghantarkan listrik dengan baik. Resistansi (hambatan) rendah, tegangan yang terbaca oleh Arduino akan rendah (nilai ADC kecil).
  • Tanah Kering: Hambatan tinggi, tegangan yang terbaca akan lebih tinggi (nilai ADC besar).

Sistem Penyiraman Otomatis

Mari kita terapkan konsep ADC ini untuk membuat sistem penyiraman tanaman otomatis! Sistem akan membaca kelembaban tanah. Jika tanah kering (kelembaban di bawah 30%), sistem akan menyalakan pompa air selama 3 detik.

PenyiramanOtomatis.ino
cpp
const int SOIL_PIN    = A0;
const int POMPA_PIN   = 7;  // Relay/LED sebagai simulasi pompa
const int LED_BIRU    = 13; // Indikator sedang menyiram

// Kalibrasi sensor (sesuaikan dengan sensor Anda)
const int KERING      = 850; // nilai ADC saat tanah kering
const int BASAH       = 350; // nilai ADC saat tanah basah

// Threshold: siram jika kelembaban di bawah 30%
const float BATAS_SIRAM = 30.0;

float hitungPersen(int nilaiADC) {
  // Map dari rentang sensor ke 0-100%
  float persen = map(nilaiADC, KERING, BASAH, 0, 100);
  // constrain agar nilai tidak lebih dari 100% atau kurang dari 0%
  return constrain(persen, 0, 100);
}

void setup() {
  pinMode(POMPA_PIN, OUTPUT);
  pinMode(LED_BIRU, OUTPUT);
  Serial.begin(9600);
  Serial.println("=== Sistem Penyiraman Otomatis ===");
}

void loop() {
  int nilaiADC = analogRead(SOIL_PIN);
  float kelembaban = hitungPersen(nilaiADC);
  float tegangan = nilaiADC * (5.0 / 1023.0);
  
  Serial.print("ADC: "); Serial.print(nilaiADC);
  Serial.print(" | Tegangan: "); Serial.print(tegangan, 2); Serial.print("V");
  Serial.print(" | Kelembaban: "); Serial.print(kelembaban, 1); Serial.println("%");
  
  if (kelembaban < BATAS_SIRAM) {
    digitalWrite(POMPA_PIN, HIGH);
    digitalWrite(LED_BIRU, HIGH);
    Serial.println("⬇ Menyiram tanaman...");
    delay(3000); // Siram selama 3 detik
    digitalWrite(POMPA_PIN, LOW);
    digitalWrite(LED_BIRU, LOW);
    Serial.println("✓ Selesai menyiram.");
  }
  
  delay(5000); // Cek setiap 5 detik
}
Serial Monitor Output
=== Sistem Penyiraman Otomatis === ADC: 800 | Tegangan: 3.91V | Kelembaban: 10.0% ⬇ Menyiram tanaman... ✓ Selesai menyiram. ADC: 600 | Tegangan: 2.93V | Kelembaban: 50.0% ADC: 400 | Tegangan: 1.96V | Kelembaban: 90.0%

Troubleshooting

Masalah:Nilai persentase selalu minus atau lebih dari 100%

Solusi:Nilai kalibrasi KERING dan BASAH terbalik, atau lupa menggunakan fungsi constrain(). Pastikan KERING memegang nilai ADC tertinggi.


Masalah:Pompa menyala terus dan serial monitor macet

Solusi:Pompa mungkin menarik arus terlalu besar dari Arduino. Gunakan relay atau transistor untuk pompa (kita akan pelajari di pertemuan berikutnya). Untuk praktik awal, gunakan LED sebagai pengganti pompa.

Kuis Evaluasi

Berapakah nilai analog yang dihasilkan ketika pin A0 membaca tegangan sebesar 5 Volt pada Arduino Uno?

Mudah

Fungsi manakah yang digunakan untuk membatasi sebuah nilai agar tidak melebihi rentang tertentu (misal: 0 sampai 100)?

Sedang

Latihan Praktik

Merakit dan Kalibrasi Smart Pot

Tugas kelompok (2-3 siswa):

  1. Rangkailah sensor Soil Moisture ke pin A0 Arduino.
  2. Pasang 2 LED (Biru = tanda pompa menyala, Merah = tanda butuh air).
  3. Celupkan sensor pada tanah kering, catat nilai ADC. Celupkan ke gelas isi air, catat nilai ADC. Ganti nilai KERING dan BASAH pada kodemu.
  4. Ubah program agar LED Merah menyala JIKA kelembaban di bawah 40%.
Kesimpulan Pertemuan 5
  • ADC (Analog to Digital Converter) menerjemahkan tegangan analog menjadi angka digital yang dimengerti mikrokontroler.
  • Arduino Uno memiliki ADC 10-bit, memetakan tegangan 0-5V ke nilai 0-1023.
  • Fungsi map() sangat berguna mengkonversi rentang nilai ADC (misal: 850 - 350) ke persentase (0% - 100%).
  • Data dari sensor bisa dijadikan syarat atau trigger untuk mengambil tindakan, seperti menyalakan pompa penyiram tanaman.

RRefleksi Belajar

Luangkan 2–3 menit untuk menjawab pertanyaan di bawah secara jujur.

Kejutan & Penemuan

Apa yang paling mengejutkan atau menarik hari ini?

Konsep baru apa yang membuatmu tertarik tentang ADC hari ini?

Masih Membingungkan

Apa yang masih membingungkan atau ingin kamu pahami lebih dalam?

Bagian mana dari rumus konversi atau fungsi map yang membingungkanmu?

Rencana Selanjutnya

Apa yang ingin kamu coba atau pelajari minggu depan?

Selain kelembaban tanah, sensor analog apa lagi yang bisa dimanfaatkan dengan konsep yang sama?

Refleksi tidak dinilai — ini adalah ruang jujurmu untuk berpikir.