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 VRef - R1 ADC Port + Program Vin R2 Clock AVR ATmega16 LCD 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 Data ADC .Vref ADC Data ADC .5 Vin 10 A.2 5.1024 Pemilihan Referensi ARef 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 Semua secara manual Agar lebih mudah Program Volt Meter 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 Timer/Counter 0 Sebagai Fast PWM ADC Mode Free Running Dan Interupsi ADSC (SOC) Pertama manual Sistem kontrol tegangan (motor) dengan pembacaan secara free running menggunakan interupsi Program utama Dapat diisi lain-lain Contoh Sistem Kontrol Menggunakan Free Running Rutin interupsi ADIF Baca tegangan dan Hitung nilainya Proses kontrol Cara ini hanya dapat digunakan jika program pemroses memiliki kecepatan lebih tinggi dari kecepatan konversi ADC – Sampling ADC harus lebih rendah dari proses ADC Menggunakan delay Time-sampling: Sederhana PWM Tidak diperlukan waktu sampling yang akurat Time-sampling: Interupsi Menggunakan timer interupsi Menggunakan Polling Rutin read_adc() Tidak ditampilkan Lebih aman Menggunakan timer interupsi Time-sampling: Interupsi Rutin read_adc() Tidak ditampilkan Harus diletakkan Di atas interupsi timer Awas ! Berbahaya kalau salah Membuat program (Hung/Macet/Dsb) 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