Penerapan ADC pada Arduino Uno Menggunakan Proteus

Tujuan Praktikum
Setelah praktikum ini, mahasiswa mampu:
- Memahami prinsip kerja ADC pada Arduino Uno
- Menjelaskan hubungan tegangan analog – nilai digital ADC
- Memahami pengaruh resolusi ADC dan sampling
- Mengimplementasikan pembacaan ADC menggunakan Proteus
- 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:

Rumus Konversi:

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:
📌 Potensiometer = sumber sinyal analog variabel
Langkah Praktikum
Langkah 1 — Buat Rangkaian di Proteus
- Buka Proteus
- Buat rangkaian sesuai konfigurasi
- 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 ADC | Tegangan Terhitung (V) |
Contoh Hasil Pengamatan
Contoh pengisian tabel pengamatan dengan Vref 5 V (nilai teoretis ADC = V × 1023 / 5):
| Tegangan Voltmeter (V) | Nilai ADC | Tegangan Terhitung (V) |
|---|---|---|
| 0,00 | 0 | 0,00 |
| 1,25 | 256 | 1,25 |
| 2,50 | 512 | 2,50 |
| 3,75 | 767 | 3,75 |
| 5,00 | 1023 | 5,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
- Apakah nilai ADC sesuai teori?
- Apakah resolusi 10-bit cukup untuk sensor analog?
- Bagaimana pengaruh sampling terhadap respons sistem?
- Mengapa Vref mempengaruhi akurasi?
Tugas Praktikum
Tugas 1 — Analisis Resolusi
- Hitung resolusi ADC Arduino Uno @5V
- Hitung resolusi jika Vref = 3.3V
- Bandingkan hasilnya
Tugas 2 — Simulasi Sensor
Ganti potensiometer dengan:
- Sensor suhu (LM35) (simulasi)
- Hubungkan output sensor ke A0
- Tampilkan suhu dalam °C
- Gunakan rumus konversi
Tugas 3 — Sampling & Noise
- Gunakan delay:
- 1000 ms
- 100 ms
- 10 ms
- Bandingkan fluktuasi data
- Jelaskan hubungan sampling & noise
Tugas 4 — Refleksi
Jawab singkat:
- Apakah resolusi ADC mempengaruhi sampling?
- Mengapa ADC penting dalam IoT dan PLC?
- 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.




