Anda di halaman 1dari 15

Kuliah Mikrokontroler AVR Quis Tachometer AVR ATmega16

EruOktober 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
Rotary Encoder TCNT1 Timer/Counter 1 (Mode Normal) Baca Counter1 Port

T1

Konversi

LCD

Interupsi OC0
Timer/Counter 0 (Mode CTC) Prescaller

100 ms atau 1000 ms Rutin Interupsi dan Generator Time-base

Max 2500 rpm Clock 4MHz

Software

Hardware AVR ATmega16

Perhitungan/Persiapan
Generator Time-base (Counter/Timer 0)
TimeBase 100 ms atau 1000 ms N . (OCR 0 1) . S TimeBase Frek Clock
N Prescaller OCR0 isi register OCR0 S Counter Software

Counter (Counter/Timer 1)
Mode Normal dengan input T1

Perhitungan
TCNT1. 60 Speed (rpm) ROTARY.INTERVAL 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 Timebase Pembaca isi Counter 1 Menghitung kecepatan Menampilkan hasil pengukuran kecepatan ke LCD
Isi dengan Generator Time-base dan pembaca isi counter 1

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

Anda mungkin juga menyukai