Kuliah Mikrokontroler AVR Contoh Comparator, ADC, DAC AVR Eru©September 2009 PENS
Bagian-bagian ADC Sampling and Hold (S/H) Frekuensi/Time Sampling Referensi Multiplexer Analog SAR ADC SOC (ADSC) EOC (ADIF)
Beberapa Teknik Pengukuran Pooling Interupsi EOC (ADIF) Free Running Auto Scanning Multi Channel Time Sampling
Pooling Tidak bergantung dengan sampling tertentu
Interupsi EOC (ADIF) Jika tidak ingin kehilangan waktu sedikitpun untuk menunggu sampai ADC selesai melakukan konversi Tidak ada gunanya dalam sistem, single task
Free Running Jika tidak ingin direpotkan dengan aktifitas SOC dan EOC Biasanya berpasangan dengan interupsi SOC awal dilakukan secara manual ADSC 1 SOC berikutnya otomatis dilakukan saat EOC (ADIF) Raising edge dari sinyal ADIF (EOC) akan men-trigger SOC kembali
Auto Scanning Jika tidak ingin diributkan dengan membaca satu-per-satu tegangan tiap channel Data akan tersimpan pada variable array Multi Channel ADC menggunakan Multiplexer Analog untuk memilih input tegangan yang akan dibaca Dalam keadaan tertentu, proses untuk mengubah dari satu channel ke channel lainnya bisa gagal Artinya saat membaca suatu channel, ternyata yang terbaca adalah channel sebelumnya Sebaiknya setiap channel dibaca dua kali
Time Sampling Jika dikehendaki pembacaan ADC dilakukan secara terus-menerus dan periodik dengan interval waktu yang selalu sama) Misalkan Real-time Digital Control System Real-time Digital Sinyal Processing Akurasi interval bervariasi tergantung aplikasi yang ingin dibangun
Contoh Aplikasi Volt Meter Sederhana Alat Ukur Suhu Pengukuran Multi-channel Time-sampling Sederhana Interupsi Presisi Per Frame Filter
Volt Meter Sederhana Mengukur tegangan 1 Volt dc dengan ketelitian 1 mV Kecepatan pembacaan 500 ms AVR ATmega16 VRef Vin ADC Program Port LCD + - R2 R1 Clock
Perancangan Volt Meter VrefADC = 5 volt dc VinADC = 5 volt dc Vin = 1 volt penguatan A = 5x R1= 1K, R2 = 4K Ketelitian = 1 mV resolusi = 1V/1mV=1000 Resolusi ADC 2Log(1000) 10 bit Perhitungan
Pemilihan Referensi ARef pin AVCC pin Tegangan referensi dari sumber luar Nilai dapat disesuaikan dengan kebutuhan AVCC pin Tegangan referensi dari VCC analog Internal dengan Kapasitor pada ARef pin Tegangan 2,56 volt Harus ada kapasitor filter pada pin ARef
Program Volt Meter Semua secara manual Agar lebih mudah
Alat Ukur Suhu Buat alat ukur suhu menggunakan LM35 dengan batas pengukuran sekitar 60 derajat Catatan: LM35 memiliki ketelitian 3 °C, sehingga meskipun resolusi ADC ditingkatkan, tetapi ketelitian pembacaan suhu tetap maksimal 3 °C.
Pengukuran Multi-channel Usahakan untuk melakukan pembacaan pada channel yang sama dua kali Sering terjadi, karena cepatnya proses pembacaan ADC (karena clock terlalu tinggi), pembacaan pada suatu channel akan salah. Hal ini disebabkan MUX ADC ternyata masih membaca channel sebelumnya.
Contoh Multi Channel Umumnya … Sebaiknya …
Free Running ADATE = 1 ADTS = 0 Free Running ADIF Start pertama harus manual ADSC=1 Start berikutnya saat ADIF = 1 (EOC) Perhitungan sampling tergantung kecepatan konversi dari ADC Hanya efektif saat menggunakan interupsi Masalah waktu sampling tidak dipentingkan
Contoh Sistem Kontrol Menggunakan Free Running Sistem kontrol tegangan (motor) dengan pembacaan secara free running menggunakan interupsi Timer/Counter 0 Sebagai Fast PWM ADC Mode Free Running Dan Interupsi ADSC (SOC) Pertama manual Program utama Dapat diisi lain-lain
Contoh Sistem Kontrol Menggunakan Free Running Cara ini hanya dapat digunakan jika program pemroses memiliki kecepatan lebih tinggi dari kecepatan konversi ADC Sampling ADC harus lebih rendah dari proses Rutin interupsi ADIF Baca tegangan dan Hitung nilainya Proses kontrol
Time-sampling: Sederhana PWM ADC Menggunakan delay Time-sampling: Sederhana Tidak diperlukan waktu sampling yang akurat
Time-sampling: Interupsi Menggunakan timer interupsi Menggunakan Polling Rutin read_adc() Tidak ditampilkan Lebih aman
Time-sampling: Interupsi Rutin read_adc() Tidak ditampilkan Harus diletakkan Di atas interupsi timer Awas ! Berbahaya kalau salah Membuat program (Hung/Macet/Dsb) Menggunakan timer interupsi Time-sampling: Interupsi
Time-sampling: Per Frame Membaca beberapa sampling sekaligus dan disimpan pada variable array Cara sederhana (dengan delay) Lebih presisi (dengan timer mode CTC)
Filter Membuang variasi pembacaan, yang dapat disebabkan oleh Noise Ketelitian/error ADC/device konversi/input lain