Kuliah Mikrokontroler AVR Quis Tachometer AVR ATmega16 Eru©Oktober 2009 PENS
Quis Buat program untuk pengukuran kecepatan putaran motor Kecepatan sampai dengan 2500 rpm Sensor menggunakan rotary encoder dengan resolusi antara 1 sampai dengan 1024 Gunakan misalkan, #define ROTARY 1024 Pengukuran dilakukan per 100 ms atau 1000 ms (bisa dipilih) Gunakan misalkan, #define INTERVAL 1000 Hasil ditampilkan ke LCD Misalkan, Speed: 1005 rpm
Petunjuk Gunakan Timer/Counter 0 dengan mode CTC untuk generator Time-base 100 ms atau 1000 ms Lengkapi dengan counter software untuk memperpanjang waktu hitungan Gunakan Timer/Counter 1 dengan mode normal dan input dari T1 untuk penghitung jumlah pulsa yang masuk
Konfigurasi Hardware AVR ATmega16 TCNT1 Software T1 LCD Timer/Counter 1 (Mode Normal) Baca Counter1 Konversi Port Rotary Encoder 100 ms atau 1000 ms Interupsi OC0 Rutin Interupsi dan Generator Time-base Timer/Counter 0 (Mode CTC) Max 2500 rpm Clock 4MHz Prescaller
Perhitungan/Persiapan Generator Time-base (Counter/Timer 0) TimeBase 100 ms atau 1000 ms N Prescaller OCR0 isi register OCR0 S Counter Software Counter (Counter/Timer 1) Mode Normal dengan input T1 Perhitungan Interval dalam detik, jika dalam ms, perlu dikalikan 1000
Inisialisasi/Software Timer/Counter 0 Timer/Counter 1 Software Time-base Software Penghitung
TCCR0 – Timer/Counter Control Register Force Output Compare 0 Isi dengan 0
Timer/Counter 0 Isi dengan Generator Time-base dan pembaca isi counter 1 Isi dengan nilai OCR0 Hasil perencanaan
Timer/Counter 1
Struktur Lengkap Lengkapi dengan Generator Time-base Isi dengan Generator Time-base dan pembaca isi counter 1 Lengkapi dengan Generator Time-base Pembaca isi Counter 1 Menghitung kecepatan Menampilkan hasil pengukuran kecepatan ke LCD Isi dengan penghitung dan penampil hasil, sebagai rutin interupsi atau dalam program utama
Penyelesaian Perhitungan Timer/Counter 0 N = 64 OCR0+1 = 250 OCR0 = 249 = F9H S = 250 untuk 1 detik, 25 untuk 100 ms Inisialisasi TCCR0 = 0BH
Program – Cara Paling Gampang Apa ini ? Memasukkan program pengolah pada interupsi timer Proses reclear harus secepatnya Why seperti ini ?
Program – Lebih Baik Memindahkan program pengolah di luar interupsi Dual task Generator Time-base dan pembaca counter sebagai task #2 Pada program utama void main(void) sebagai task #1
Program – Lebih Baik Lagi Memindahkan program pengolah di luar interupsi Pembacaan counter berdasar selisih TCNT1 Why ? Apa ini ?
Contoh : Kontrol Kecepatan Alat ukur kecepatan Kontrol PID Pembangkit PWM