Selasa, 28 September 2010

RPM Motor DC : Pengaturan Timer 16 bit

.
Setelah merancang dan membuat alat dengan sempurna selanjutnya mengatur timer agar selalu mengupdate nilai PWM setiap 1 detik.
Seperti yang saya katakan sebelumnya, update setiap 1 detik sebenarnya cukup lama tetapi agar mudah memahami penggunaan timer maka digunakan nilai 1 detik

Perhitungan Nilai Counting Timer

Mikrokontroller AVR memiliki jantung berupa clock internal ataupun external dengan satuan MHz dan clock ini juga digunakan oleh Timer sebagai pemicu counting yang menyebabkan Value Timer bertambah hingga terjadi Overflow.
Pada AVR Timer/Counter : Introduction saya umpamakan seperti menaiki tangga dan frekuensi menaiki tangga tersebut maksimum senilai dengan nilai Clock kristalnya.

Clock yang akan saya gunakan pada mikrokokntroller AVR adalah 11,0592 MHz sehingga nilai Clock timer maksimum 11,0592 MHz dan ini sangat cepat.
Oleh sebab itu gunakan prescaler yaitu faktor pembagi clock, prescaler ini menjadi faktor pembagi sumber clock sehingga nilai clock yang ke timer menjadi lebih kecil. (Datasheet ATmega8535 hal 85/321)

Pada CodeWizzardAVR telah dibuat faktor pembaginya (prescaler) sehingga kita hanya tinggal menggunakan saja. Nilai frekeunsi yang akan digunakan pada sumber clock dibawah nanti adalah nilai clock terendah yaitu 10,8 kHz atau 10.800 Hz.

1 detik adalah 1 Hz sehingga jika ingin update nilai RPM setiap 1 detik maka interupsi timer diatur setiap 1 Hz / 1 detik. Yaitu clock timer 10.800 Hz dibagi dengan nilai tertentu sehingga didapatkan 1Hz maka:

10.800 Hz / 10.800 = 1 Hz artinya overflow yang akan mengaktifkan interupsi terjadi ketika Timer Value telah mengcounting 10.800 hitungan.

Pengaturan Timer 1 / 16 bit Timer
Timer 1 pada AVR (ATmega8535) adalah timer 16 bit sehingga mempunya Counting Value dari 0 - 65535 atau 0x0000 - 0xffff.
Pertama kali saya mencoba membahas timer 16 bit karena lebih mudah dipahami akan tetapi timer yang digunakan pada perancangan nanti adalah timer 8 bit. Alasannya karena menggunakan timer 8 bit agak sulit akan tetapi output PWM OC1A dan PWM OC1B lebih sering digunakan khususnya pada aplikasi mobil robot yang harus mengatur kecepatan motor DC kedua rodanya, sehingga sebisa mungkin gunakan timer 0 terlebih dahulu.

Langkah-langkah pengaturan timer :

  • Diatas kertas tentukan nilai counting yaitu 10.800 counting maka :
65.535 - 10.800 = 54.735
54.735 = 0xD5CF dalam nilai heksadesimal.
Nilai 0xD5CF adalah nilai awal timer (Start Value)
  • Buka aplikasi CoViAVR dan buat Project baru.
  • Gunakan CodeWizzardAVR dan tentukan jenis Chip serta Clocknya. Saya gunakan ATmega8535 dengan clock 11.059.200 Hz atau 11,0592 MHz.
  • Pada Tab timer sub tab Timer 1 dan atur seperti pada gambar.










  • Berikan nilai awal timer (Value) 0xD5CF agar didapatkan counting sebanyak 10.800 counting.
  • Untuk mengecek benar tidaknya, gunakan coding berikut yang akan mematikan dan menyalakan LED pada PORTC setiap 1 Hz / 1 detik.
  • Jika nyala led telah sesuai, selesai dah.

Next : RPM Motor DC : Pengaturan Timer 8 bit

Semoga Manfaat ;)

Topik yang Populer